diff --git a/.gitignore b/.gitignore index fce9d34f..49569275 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ GRTAGS .dir-locals.el .projectile +lefdef/src/lef/lef/lef.tab.h man/ rtf/ diff --git a/bootstrap/build.conf b/bootstrap/build.conf index 88bf54f1..58401b91 100644 --- a/bootstrap/build.conf +++ b/bootstrap/build.conf @@ -17,9 +17,6 @@ projects = [ , "vlsisapd" , "hurricane" , "crlcore" - #, "nimbus" - #, "metis" - #, "mauka" , "anabatic" , "katana" , "knik" @@ -29,6 +26,7 @@ projects = [ , "etesian" , "equinox" , "solstice" + , "oroshi" , "unicorn" , "tutorial" #, "testbench" @@ -38,21 +36,6 @@ projects = [ , "documentation" ] , 'repository': 'ssh://asim-t/users/largo2/git/coriolis.git' } - - , { 'name' : "chams" - , 'tools' : [ "hurricaneAMS" - , "amsCore" - , "opSim" - #, "scribe" - , "graph" - , "pharos" - , "isis" - , "horus" - #, "schematic" - , "solver" - , "autoDTR" - ] - , 'repository':"ssh://melon-t/users/outil/chams/chams.git" } ] package = { 'name' : 'coriolis2' diff --git a/bootstrap/ccb.py b/bootstrap/ccb.py index b3e99667..45faceb8 100755 --- a/bootstrap/ccb.py +++ b/bootstrap/ccb.py @@ -159,12 +159,8 @@ def autoLocate (): locations = [ os.path.abspath(os.path.dirname(sys.argv[0])) , os.environ['HOME']+'/coriolis-2.x/src/coriolis/bootstrap' , os.environ['HOME']+'/coriolis/src/coriolis/bootstrap' - , os.environ['HOME']+'/chams-1.x/src/coriolis/bootstrap' - , os.environ['HOME']+'/chams/src/coriolis/bootstrap' , '/users/outil/coriolis/coriolis-2.x/src/coriolis/bootstrap' , os.environ['HOME']+'/coriolis-2.x/'+osType+'/Release.Shared/install/'+libDir+'/'+sitePackage - , os.environ['HOME']+'/chams-1.x/'+osType+'/Release.Shared/install/'+libDir+'/'+sitePackage - , os.environ['HOME']+'/chams/'+osType+'/Release.Shared/install/'+libDir+'/'+sitePackage , '/users/outil/coriolis/coriolis-2.x/'+osType+'/Release.Shared/install/'+libDir+'/'+sitePackage ] diff --git a/bootstrap/coriolisEnv.py b/bootstrap/coriolisEnv.py index 0a3c8502..037e09f0 100755 --- a/bootstrap/coriolisEnv.py +++ b/bootstrap/coriolisEnv.py @@ -185,7 +185,6 @@ if __name__ == "__main__": parser.add_option ( "--devel" , action="store_true" , dest="devel" ) parser.add_option ( "--static" , action="store_true" , dest="static" ) parser.add_option ( "--shared" , action="store_true" , dest="shared" ) - parser.add_option ( "--chams" , action="store_true" , dest="chams" ) parser.add_option ( "--no-python" , action="store_true" , dest="nopython" ) parser.add_option ( "--root" , action="store" , type="string", dest="rootDir" ) ( options, args ) = parser.parse_args () diff --git a/bootstrap/socInstaller.py b/bootstrap/socInstaller.py index 17aaedee..9ef2bbd3 100755 --- a/bootstrap/socInstaller.py +++ b/bootstrap/socInstaller.py @@ -220,7 +220,7 @@ class Configuration ( object ): PrimaryNames = \ [ 'sender' , 'receivers' - , 'coriolisRepo', 'chamsRepo' , 'benchsRepo', 'supportRepos' + , 'coriolisRepo', 'benchsRepo', 'supportRepos' , 'homeDir' , 'masterHost' , 'debugArg' , 'nightlyMode' , 'rmSource' , 'rmBuild', 'doGit', 'doBuild', 'doBenchs', 'doSendReport' @@ -235,7 +235,6 @@ class Configuration ( object ): self._receivers = [ 'Jean-Paul.Chaput@lip6.fr', 'Eric.Lao@lip6.fr' ] self._supportRepos = [ 'http://github.com/miloyip/rapidjson' ] self._coriolisRepo = 'https://www-soc.lip6.fr/git/coriolis.git' - self._chamsRepo = 'file:///users/outil/chams/chams.git' self._benchsRepo = 'https://www-soc.lip6.fr/git/alliance-check-toolkit.git' self._homeDir = os.environ['HOME'] self._debugArg = '' @@ -458,7 +457,6 @@ try: for supportRepo in conf.supportRepos: gitSupports.append( GitRepository( supportRepo, conf.srcDir+'/support' ) ) gitCoriolis = GitRepository( conf.coriolisRepo, conf.srcDir, conf.fds['build'] ) - gitChams = GitRepository( conf.chamsRepo , conf.srcDir, conf.fds['build'] ) gitBenchs = GitRepository( conf.benchsRepo , conf.srcDir, conf.fds['build'] ) if conf.doGit: @@ -492,7 +490,7 @@ try: , ' <%s>' % ccbBin ] ) - buildCommand = '%s --root=%s --project=support --project=coriolis --project=chams --make="-j%%d install" %%s' \ + buildCommand = '%s --root=%s --project=support --project=coriolis --make="-j%%d install" %%s' \ % (ccbBin,conf.rootDir) benchsCommand = 'cd %s/benchs && ./bin/go.sh clean && ./bin/go.sh lvx' \ % (gitBenchs.localRepoDir) diff --git a/crlcore/doc/crlcore/html/AcmSigda_8h_source.html b/crlcore/doc/crlcore/html/AcmSigda_8h_source.html index 3bd49a3f..53d871fa 100644 --- a/crlcore/doc/crlcore/html/AcmSigda_8h_source.html +++ b/crlcore/doc/crlcore/html/AcmSigda_8h_source.html @@ -100,7 +100,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4e85bf5d..30c9bd51 100644 --- a/crlcore/doc/crlcore/html/AllianceFramework_8h_source.html +++ b/crlcore/doc/crlcore/html/AllianceFramework_8h_source.html @@ -301,7 +301,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c6dc3fc4..de27d217 100644 --- a/crlcore/doc/crlcore/html/AllianceLibrary_8h_source.html +++ b/crlcore/doc/crlcore/html/AllianceLibrary_8h_source.html @@ -159,7 +159,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7caa8beb..347a23d6 100644 --- a/crlcore/doc/crlcore/html/Banner_8h_source.html +++ b/crlcore/doc/crlcore/html/Banner_8h_source.html @@ -265,7 +265,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6916e19b..19fbb1a2 100644 --- a/crlcore/doc/crlcore/html/Catalog_8h_source.html +++ b/crlcore/doc/crlcore/html/Catalog_8h_source.html @@ -563,7 +563,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 369d8ad6..8494fee2 100644 --- a/crlcore/doc/crlcore/html/Environment_8h_source.html +++ b/crlcore/doc/crlcore/html/Environment_8h_source.html @@ -267,7 +267,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f5b6e8d4..9e8507ea 100644 --- a/crlcore/doc/crlcore/html/GraphicToolEngine_8h_source.html +++ b/crlcore/doc/crlcore/html/GraphicToolEngine_8h_source.html @@ -174,7 +174,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9f2c6dd4..f3c8e910 100644 --- a/crlcore/doc/crlcore/html/RoutingGauge_8h_source.html +++ b/crlcore/doc/crlcore/html/RoutingGauge_8h_source.html @@ -231,7 +231,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6be72a19..b4908cca 100644 --- a/crlcore/doc/crlcore/html/RoutingLayerGauge_8h_source.html +++ b/crlcore/doc/crlcore/html/RoutingLayerGauge_8h_source.html @@ -401,7 +401,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4fc3a0cd..af0a3e35 100644 --- a/crlcore/doc/crlcore/html/SearchPath_8h_source.html +++ b/crlcore/doc/crlcore/html/SearchPath_8h_source.html @@ -189,7 +189,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b397897e..b3a16722 100644 --- a/crlcore/doc/crlcore/html/ToolEngine_8h_source.html +++ b/crlcore/doc/crlcore/html/ToolEngine_8h_source.html @@ -166,7 +166,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bf4ea18f..fe24b17d 100644 --- a/crlcore/doc/crlcore/html/ToolEngines_8h_source.html +++ b/crlcore/doc/crlcore/html/ToolEngines_8h_source.html @@ -127,7 +127,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/annotated.html b/crlcore/doc/crlcore/html/annotated.html index 06ec7312..d04c5c25 100644 --- a/crlcore/doc/crlcore/html/annotated.html +++ b/crlcore/doc/crlcore/html/annotated.html @@ -73,7 +73,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fa9c75a4..c8a3d627 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda-members.html @@ -61,7 +61,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2ee22b6a..0ef81255 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AcmSigda.html @@ -125,7 +125,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f824b5ff..7cb36032 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework-members.html @@ -95,7 +95,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 92d6d1b1..5dfcb0ea 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceFramework.html @@ -873,7 +873,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d7241d6f..74d42edf 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1AllianceLibrary-members.html @@ -64,7 +64,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2f579928..585f9771 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e1acb1b8..20e4c157 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Banner-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Banner-members.html @@ -75,7 +75,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e7c733a0..321a3e40 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Banner.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Banner.html @@ -474,7 +474,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5cad9309..294dec67 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog-members.html @@ -68,7 +68,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4e0a6c6e..e6cd5042 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog.html @@ -284,7 +284,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b72a375b..fdc31e02 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension-members.html @@ -79,7 +79,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3f3daea7..53b7a26b 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1CatalogExtension.html @@ -733,7 +733,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7c4e6708..71c9e04a 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 @@ -94,7 +94,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7fbfc264..7b6f0019 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Catalog_1_1State.html @@ -813,7 +813,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b4c6b527..96718cc7 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Environment-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Environment-members.html @@ -104,7 +104,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 83df9bd3..2fd758f2 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1Environment.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1Environment.html @@ -1075,7 +1075,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0c2909fb..9b1f923b 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool-members.html @@ -62,7 +62,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bbb0bed2..0f5f3cbb 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1GraphicTool.html @@ -131,7 +131,7 @@ Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d84a8c43..c3c31c4e 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge-members.html @@ -76,7 +76,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fb7222f7..64da52cc 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingGauge.html @@ -428,7 +428,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fd4dad9c..04e99f74 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge-members.html @@ -79,7 +79,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a7d8c4c9..a832a1c4 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1RoutingLayerGauge.html @@ -683,7 +683,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 396594c8..dd09bc4a 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath-members.html @@ -72,7 +72,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1fb2a310..2cc86886 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1SearchPath.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1SearchPath.html @@ -438,7 +438,7 @@ Static Public Member Functions
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2d0354e8..37d14511 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 @@ -64,7 +64,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 dcdeb706..d84874c4 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a2f74418..fec3a8d8 100644 --- a/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine-members.html +++ b/crlcore/doc/crlcore/html/classCRL_1_1ToolEngine-members.html @@ -72,7 +72,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fd99c10e..32a55332 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/classes.html b/crlcore/doc/crlcore/html/classes.html index 7d5e3a0d..fb0758da 100644 --- a/crlcore/doc/crlcore/html/classes.html +++ b/crlcore/doc/crlcore/html/classes.html @@ -81,7 +81,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html b/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html index 952d9d6d..3729fbb7 100644 --- a/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html +++ b/crlcore/doc/crlcore/html/dir_1d3beb215ce2defdb52d6dee9d41bc7a.html @@ -55,7 +55,7 @@ Directories
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index de9c6538..320be0c3 100644 --- a/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/crlcore/doc/crlcore/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -55,7 +55,7 @@ Directories
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html b/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html index e11d7ed4..010f6cdc 100644 --- a/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html +++ b/crlcore/doc/crlcore/html/dir_d23e13494685c82fafa9ef5abb5746af.html @@ -77,7 +77,7 @@ Files
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/files.html b/crlcore/doc/crlcore/html/files.html index a18f63ee..bfcb37ef 100644 --- a/crlcore/doc/crlcore/html/files.html +++ b/crlcore/doc/crlcore/html/files.html @@ -66,7 +66,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions.html b/crlcore/doc/crlcore/html/functions.html index 3f4a738a..4a31984c 100644 --- a/crlcore/doc/crlcore/html/functions.html +++ b/crlcore/doc/crlcore/html/functions.html @@ -109,7 +109,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x62.html b/crlcore/doc/crlcore/html/functions_0x62.html index c11d90da..437f5230 100644 --- a/crlcore/doc/crlcore/html/functions_0x62.html +++ b/crlcore/doc/crlcore/html/functions_0x62.html @@ -85,7 +85,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x63.html b/crlcore/doc/crlcore/html/functions_0x63.html index a8b7ae76..01d258d5 100644 --- a/crlcore/doc/crlcore/html/functions_0x63.html +++ b/crlcore/doc/crlcore/html/functions_0x63.html @@ -105,7 +105,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x64.html b/crlcore/doc/crlcore/html/functions_0x64.html index 47d8ef4c..ea151402 100644 --- a/crlcore/doc/crlcore/html/functions_0x64.html +++ b/crlcore/doc/crlcore/html/functions_0x64.html @@ -99,7 +99,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x65.html b/crlcore/doc/crlcore/html/functions_0x65.html index b9c55ef0..516a7cdb 100644 --- a/crlcore/doc/crlcore/html/functions_0x65.html +++ b/crlcore/doc/crlcore/html/functions_0x65.html @@ -94,7 +94,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x66.html b/crlcore/doc/crlcore/html/functions_0x66.html index 254376ad..02f6073f 100644 --- a/crlcore/doc/crlcore/html/functions_0x66.html +++ b/crlcore/doc/crlcore/html/functions_0x66.html @@ -91,7 +91,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x67.html b/crlcore/doc/crlcore/html/functions_0x67.html index 790f5d51..81b73517 100644 --- a/crlcore/doc/crlcore/html/functions_0x67.html +++ b/crlcore/doc/crlcore/html/functions_0x67.html @@ -298,7 +298,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x68.html b/crlcore/doc/crlcore/html/functions_0x68.html index 256562f9..584ce19f 100644 --- a/crlcore/doc/crlcore/html/functions_0x68.html +++ b/crlcore/doc/crlcore/html/functions_0x68.html @@ -91,7 +91,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x69.html b/crlcore/doc/crlcore/html/functions_0x69.html index 8d9665f8..2c514f6f 100644 --- a/crlcore/doc/crlcore/html/functions_0x69.html +++ b/crlcore/doc/crlcore/html/functions_0x69.html @@ -137,7 +137,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x6c.html b/crlcore/doc/crlcore/html/functions_0x6c.html index e6352522..76062544 100644 --- a/crlcore/doc/crlcore/html/functions_0x6c.html +++ b/crlcore/doc/crlcore/html/functions_0x6c.html @@ -100,7 +100,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x6d.html b/crlcore/doc/crlcore/html/functions_0x6d.html index 646858d5..b19c595c 100644 --- a/crlcore/doc/crlcore/html/functions_0x6d.html +++ b/crlcore/doc/crlcore/html/functions_0x6d.html @@ -88,7 +88,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x6f.html b/crlcore/doc/crlcore/html/functions_0x6f.html index 39418823..0edd787d 100644 --- a/crlcore/doc/crlcore/html/functions_0x6f.html +++ b/crlcore/doc/crlcore/html/functions_0x6f.html @@ -85,7 +85,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x70.html b/crlcore/doc/crlcore/html/functions_0x70.html index 682bb768..8c93d967 100644 --- a/crlcore/doc/crlcore/html/functions_0x70.html +++ b/crlcore/doc/crlcore/html/functions_0x70.html @@ -94,7 +94,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x72.html b/crlcore/doc/crlcore/html/functions_0x72.html index 3520a855..3afece67 100644 --- a/crlcore/doc/crlcore/html/functions_0x72.html +++ b/crlcore/doc/crlcore/html/functions_0x72.html @@ -94,7 +94,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x73.html b/crlcore/doc/crlcore/html/functions_0x73.html index 014a01b9..3200be29 100644 --- a/crlcore/doc/crlcore/html/functions_0x73.html +++ b/crlcore/doc/crlcore/html/functions_0x73.html @@ -191,7 +191,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x76.html b/crlcore/doc/crlcore/html/functions_0x76.html index 3f4157c3..56584345 100644 --- a/crlcore/doc/crlcore/html/functions_0x76.html +++ b/crlcore/doc/crlcore/html/functions_0x76.html @@ -88,7 +88,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_0x7e.html b/crlcore/doc/crlcore/html/functions_0x7e.html index c6339745..ab92d2ec 100644 --- a/crlcore/doc/crlcore/html/functions_0x7e.html +++ b/crlcore/doc/crlcore/html/functions_0x7e.html @@ -91,7 +91,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_enum.html b/crlcore/doc/crlcore/html/functions_enum.html index b8fdafc9..cd4addb2 100644 --- a/crlcore/doc/crlcore/html/functions_enum.html +++ b/crlcore/doc/crlcore/html/functions_enum.html @@ -71,7 +71,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_eval.html b/crlcore/doc/crlcore/html/functions_eval.html index fcdb5884..2629019a 100644 --- a/crlcore/doc/crlcore/html/functions_eval.html +++ b/crlcore/doc/crlcore/html/functions_eval.html @@ -107,7 +107,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/functions_func.html b/crlcore/doc/crlcore/html/functions_func.html index 03a64bf0..8d39d4b6 100644 --- a/crlcore/doc/crlcore/html/functions_func.html +++ b/crlcore/doc/crlcore/html/functions_func.html @@ -627,7 +627,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/hierarchy.html b/crlcore/doc/crlcore/html/hierarchy.html index 427a15f0..cb6658f9 100644 --- a/crlcore/doc/crlcore/html/hierarchy.html +++ b/crlcore/doc/crlcore/html/hierarchy.html @@ -72,7 +72,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/index.html b/crlcore/doc/crlcore/html/index.html index b8f04e38..ab6f8019 100644 --- a/crlcore/doc/crlcore/html/index.html +++ b/crlcore/doc/crlcore/html/index.html @@ -45,7 +45,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespaceCRL.html b/crlcore/doc/crlcore/html/namespaceCRL.html index 9eb44359..75d8e04a 100644 --- a/crlcore/doc/crlcore/html/namespaceCRL.html +++ b/crlcore/doc/crlcore/html/namespaceCRL.html @@ -158,7 +158,7 @@ Typedefs
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespaceConstant.html b/crlcore/doc/crlcore/html/namespaceConstant.html index 325b11d7..44e5091e 100644 --- a/crlcore/doc/crlcore/html/namespaceConstant.html +++ b/crlcore/doc/crlcore/html/namespaceConstant.html @@ -157,7 +157,7 @@ Enumerations
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers.html b/crlcore/doc/crlcore/html/namespacemembers.html index 66c08c57..2fe7d7ee 100644 --- a/crlcore/doc/crlcore/html/namespacemembers.html +++ b/crlcore/doc/crlcore/html/namespacemembers.html @@ -99,7 +99,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers_enum.html b/crlcore/doc/crlcore/html/namespacemembers_enum.html index 11ac0477..86cff800 100644 --- a/crlcore/doc/crlcore/html/namespacemembers_enum.html +++ b/crlcore/doc/crlcore/html/namespacemembers_enum.html @@ -66,7 +66,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers_eval.html b/crlcore/doc/crlcore/html/namespacemembers_eval.html index 71f59174..ec87817d 100644 --- a/crlcore/doc/crlcore/html/namespacemembers_eval.html +++ b/crlcore/doc/crlcore/html/namespacemembers_eval.html @@ -81,7 +81,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespacemembers_type.html b/crlcore/doc/crlcore/html/namespacemembers_type.html index affb05ec..12238dbb 100644 --- a/crlcore/doc/crlcore/html/namespacemembers_type.html +++ b/crlcore/doc/crlcore/html/namespacemembers_type.html @@ -66,7 +66,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/namespaces.html b/crlcore/doc/crlcore/html/namespaces.html index 54bc88fa..b29dc75d 100644 --- a/crlcore/doc/crlcore/html/namespaces.html +++ b/crlcore/doc/crlcore/html/namespaces.html @@ -57,7 +57,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/html/pages.html b/crlcore/doc/crlcore/html/pages.html index 96e8abed..45cd13c3 100644 --- a/crlcore/doc/crlcore/html/pages.html +++ b/crlcore/doc/crlcore/html/pages.html @@ -50,7 +50,7 @@
- +
Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
diff --git a/crlcore/doc/crlcore/latex/refman.tex b/crlcore/doc/crlcore/latex/refman.tex index 42ab9cde..438a22f0 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.5}\\ \vspace*{0.5cm} - {\small Sat Aug 18 2018 22:39:38}\\ + {\small Mon Oct 1 2018 14:29:07}\\ \end{center} \end{titlepage} diff --git a/crlcore/etc/180/scn6m_deep_09/analog.conf b/crlcore/etc/180/scn6m_deep_09/analog.conf new file mode 100644 index 00000000..cad99757 --- /dev/null +++ b/crlcore/etc/180/scn6m_deep_09/analog.conf @@ -0,0 +1,6 @@ +# -*- Mode:Python; explicit-buffer-name: "analog.conf" -*- + +import helpers + + +execfile( helpers.ndaConfDir+'/common/analog.conf' ) diff --git a/crlcore/etc/180/scn6m_deep_09/devices.conf b/crlcore/etc/180/scn6m_deep_09/devices.conf new file mode 100644 index 00000000..f5e40c7e --- /dev/null +++ b/crlcore/etc/180/scn6m_deep_09/devices.conf @@ -0,0 +1,6 @@ +# -*- Mode:Python; explicit-buffer-name: "devices.conf" -*- + +import helpers + + +execfile( helpers.ndaConfDir+'/common/devices.conf' ) diff --git a/crlcore/etc/180/scn6m_deep_09/dtr_scn6m_deep_09.py b/crlcore/etc/180/scn6m_deep_09/dtr_scn6m_deep_09.py new file mode 100644 index 00000000..24f2ee9f --- /dev/null +++ b/crlcore/etc/180/scn6m_deep_09/dtr_scn6m_deep_09.py @@ -0,0 +1,164 @@ + +# 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 + + +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') + ) + diff --git a/crlcore/etc/45/freepdk_45/analog.conf b/crlcore/etc/45/freepdk_45/analog.conf new file mode 100644 index 00000000..33cdd8d7 --- /dev/null +++ b/crlcore/etc/45/freepdk_45/analog.conf @@ -0,0 +1,10 @@ +# -*- Mode:Python; explicit-buffer-name: "analog.conf" -*- + +import helpers + + +parametersTable = \ + ( ('analog.techno' , TypeString, 'Analog_technology_is_disabled', + { 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } ) + , ('analog.devices', TypeString, helpers.technoDir+'/devices.conf' ) + ) diff --git a/crlcore/etc/common/analog.conf b/crlcore/etc/common/analog.conf new file mode 100644 index 00000000..bb02b287 --- /dev/null +++ b/crlcore/etc/common/analog.conf @@ -0,0 +1,10 @@ +# -*- Mode:Python; explicit-buffer-name: "analog.conf" -*- + +import helpers + + +parametersTable = \ + ( ('analog.techno' , TypeString, 'Analog_technology_has_not_been_set', + { 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } ) + , ('analog.devices', TypeString, helpers.technoDir+'/devices.conf' ) + ) diff --git a/crlcore/etc/common/devices.conf b/crlcore/etc/common/devices.conf new file mode 100644 index 00000000..c9914576 --- /dev/null +++ b/crlcore/etc/common/devices.conf @@ -0,0 +1,117 @@ +# -*- Mode:Python; explicit-buffer-name: "devices.conf" -*- + +import helpers + + +analogDir = helpers.sysConfDir + '/share/coriolis2/analog' +spiceDir = analogDir + 'spice/' + + +devicesTable = \ + ( { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { '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' ) + ) + } + , { 'name' : 'MIMCapacitor' + , 'spice' : spiceDir+'MIMCapacitor.spi' + , 'connectors' : ( 'P1', 'P2' ) + , 'layouts' : ( ('SimpleMatrix' , 'MIM_simpleMatrix.py' ) + , + ) + } + ) diff --git a/crlcore/etc/symbolic/cmos/analog.conf b/crlcore/etc/symbolic/cmos/analog.conf new file mode 100644 index 00000000..33cdd8d7 --- /dev/null +++ b/crlcore/etc/symbolic/cmos/analog.conf @@ -0,0 +1,10 @@ +# -*- Mode:Python; explicit-buffer-name: "analog.conf" -*- + +import helpers + + +parametersTable = \ + ( ('analog.techno' , TypeString, 'Analog_technology_is_disabled', + { 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } ) + , ('analog.devices', TypeString, helpers.technoDir+'/devices.conf' ) + ) diff --git a/crlcore/python/CMakeLists.txt b/crlcore/python/CMakeLists.txt index 1d4681c6..6c7f86e1 100644 --- a/crlcore/python/CMakeLists.txt +++ b/crlcore/python/CMakeLists.txt @@ -7,3 +7,5 @@ install( FILES helpers/Patterns.py DESTINATION ${PYTHON_SITE_PACKAGES}/crlcore/helpers ) install( FILES helpers/Technology.py DESTINATION ${PYTHON_SITE_PACKAGES}/crlcore/helpers ) install( FILES helpers/Debug.py DESTINATION ${PYTHON_SITE_PACKAGES}/crlcore/helpers ) + install( FILES helpers/Devices.py DESTINATION ${PYTHON_SITE_PACKAGES}/crlcore/helpers ) + install( FILES helpers/AnalogTechno.py DESTINATION ${PYTHON_SITE_PACKAGES}/crlcore/helpers ) diff --git a/crlcore/python/coriolisInit.py b/crlcore/python/coriolisInit.py index e6b91d25..1385e0f6 100644 --- a/crlcore/python/coriolisInit.py +++ b/crlcore/python/coriolisInit.py @@ -13,6 +13,7 @@ try: from helpers import Configuration from helpers import ErrorMessage from helpers import WarningMessage + #from helpers import Devices from helpers.Configuration import TypeBool from helpers.Configuration import TypeInt from helpers.Configuration import TypeEnumerate @@ -33,6 +34,8 @@ try: from helpers.Display import Drawing from helpers import Alliance from helpers import Technology + from helpers import AnalogTechno + from helpers import Devices import helpers.Display except ImportError, e: serror = str(e) @@ -106,11 +109,12 @@ def coriolisConfigure(): , (helpers.technoDir+'/kite.conf' , SystemFile|ConfigurationHelper|KiteHelper) , (helpers.technoDir+'/stratus1.conf' , SystemFile|ConfigurationHelper) , (helpers.technoDir+'/plugins.conf' , SystemFile|ConfigurationHelper) + , (helpers.technoDir+'/analog.conf' , SystemFile|ConfigurationHelper) ] if os.getenv('HOME'): confFiles += [ (os.getenv('HOME')+'/.coriolis2/settings.py', 0) ] else: - w = WarningMessage(['The environment variable is not defined, this is most unusual.' + w = WarningMessage(['The "HOME" environment variable is not defined, this is most unusual.' ,'It prevents the loading of ${HOME}/.coriolis2/settings.py']) print w @@ -123,11 +127,11 @@ def coriolisConfigure(): if not os.path.isfile(confFile): if confFlags & SystemFile: print '[ERROR] Missing mandatory Coriolis2 system file:' - print ' <%s>' % confFile + print ' "%s"' % helpers.truncPath(confFile) print ' Your installation may be broken. Trying to continue anyway...' continue - print ' - Loading \"%s\".' % helpers.truncPath(confFile) + print ' - Loading "%s".' % helpers.truncPath(confFile) execfile(confFile,moduleGlobals) except Exception, e: helpers.showPythonTrace( confFile, e ) @@ -139,8 +143,8 @@ def coriolisConfigure(): else: if confFlags & loaderFlags & HelpersMask: if confFlags & SystemFile and loaderFlags & SystemMandatory: - print '[ERROR] Mandatory symbol <%s> is missing in system configuration file:' % symbol - print ' <%s>' % confFile + print '[ERROR] Mandatory symbol "%s" is missing in system configuration file:' % symbol + print ' "%s"' % helpers.truncPath(confFile) print ' Trying to continue anyway...' if confFile.endswith('settings.py'): @@ -160,4 +164,56 @@ def coriolisConfigure(): parameter.setString( mappingFile ) parameter.flags = Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist + confFile = None + if Cfg.hasParameter('analog.techno'): + confFile = Cfg.getParamString('analog.techno').asString() + if confFile == 'Analog_technology_has_not_been_set': confFile = None + if confFile == 'Analog_technology_is_disabled': return + + if not confFile: + vendorTech = helpers.techno.split('/')[-1] + confFile = os.path.join( helpers.technoDir, 'dtr_%s.py'%vendorTech ) + Cfg.getParamString('analog.techno').setString( confFile ) + + if not os.path.isfile(confFile): + print '[WARNING] Analog technology file (aka DTR) has not been found:' + print ' "%s"' % helpers.truncPath(confFile) + print ' Use of Coriolis analog is disabled.' + return + + try: + if not helpers.quiet: print ' - Loading \"%s\".' % helpers.truncPath(confFile) + execfile(confFile,moduleGlobals) + except Exception, e: + showPythonTrace( confFile, e ) + + if moduleGlobals.has_key('analogTechnologyTable'): + AnalogTechno.loadAnalogTechno( moduleGlobals['analogTechnologyTable'], confFile ) + del moduleGlobals['analogTechnologyTable'] + else: + print '[ERROR] Mandatory symbol <%s> is missing in technology configuration file:' % 'analogTechnologyTable' + print ' "%s"' % helpers.truncPath(confFile) + sys.exit( 1 ) + + confFile = Cfg.getParamString('analog.devices').asString() + if not os.path.isfile(confFile): + print '[ERROR] Missing mandatory analog devices description file:' + print ' "%s"' % helpers.truncPath(confFile) + print ' Please look for the "analog.devices" parameter in configuration files.' + sys.exit( 1 ) + + try: + if not helpers.quiet: print ' - Loading \"%s\".' % helpers.truncPath(confFile) + execfile(confFile,moduleGlobals) + except Exception, e: + showPythonTrace( confFile, e ) + + if moduleGlobals.has_key('devicesTable'): + Devices.loadDevices( moduleGlobals['devicesTable'], confFile ) + del moduleGlobals['devicesTable'] + else: + print '[ERROR] Mandatory symbol "%s" is missing in technology configuration file:' % 'devicesTable' + print ' "%s"' % helpers.truncPath(confFile) + sys.exit( 1 ) + return diff --git a/crlcore/python/helpers/AnalogTechno.py b/crlcore/python/helpers/AnalogTechno.py new file mode 100644 index 00000000..bb14270c --- /dev/null +++ b/crlcore/python/helpers/AnalogTechno.py @@ -0,0 +1,118 @@ +# -*- Mode:Python; explicit-buffer-name: "AnalogTechno.py" -*- +# +# This file is part of the Coriolis Software. +# Copyright (c) UPMC 2015-2018, 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 : "./crlcore/python/helpers/AnalogTechno.py" | +# +-----------------------------------------------------------------+ + + +import os +import os.path +import sys +import Hurricane +from Hurricane import DbU +from Hurricane import DataBase +from Hurricane import Layer +from helpers import ErrorMessage +from helpers import Debug + + +technoFile = '' + + +Length = 0x0001 +Area = 0x0002 +Asymmetric = 0x0004 +Unit = 0x0008 + + +def valueToDbU ( value, unit, lengthType ): + length = DbU.fromPhysical( value, unit ) + if lengthType & Length: return length + + area = DbU.fromPhysical( float(length), unit ) + return area + + +def checkEntry ( entry, entryNo ): + if not isinstance(entry,tuple): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Not a tuple (a, b, c, ...) or (a,).' + , str(entry) + ] ) + if not len(entry) in (4, 5, 6): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Tuple must have *4*, *5* or *6* items only.' + , str(entry) + ] ) + if not entry[-2] in (Length, Length|Asymmetric, Area, Unit): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Beforelast item is neither Length, Length|Asymmetric nor Area.' + , str(entry) + ] ) + return + + +def _loadAnalogTechno ( techno, ruleTable ): + unit = None + entryNo = 0 + for entry in ruleTable: + entryNo += 1 + + try: + if entryNo > 1: + checkEntry( entry, entryNo ) + + if entry[0] == 'Header': + unit = entry[2] + techno.setName( entry[1] ) + continue + + # Zero-layer rule. + if len(entry) == 4: + if entry[2] & Unit: + techno.addUnitRule( entry[0], entry[1], entry[3] ) + else: + techno.addPhysicalRule( entry[0] + , valueToDbU( entry[1], unit, entry[2] ) + , entry[3] + ) + # One-layer rule. + if len(entry) == 5: + techno.addPhysicalRule( entry[0] + , entry[1] + , valueToDbU( entry[2], unit, entry[3] ) + , entry[4] + ) + # Two-layer rule. + if len(entry) == 6: + symmetric = True + if entry[4] & Asymmetric: symmetric = False + + techno.addPhysicalRule( entry[0] + , entry[1] + , entry[2] + , symmetric + , valueToDbU( entry[3], unit, entry[4] ) + , entry[5] + ) + except Exception, e: + ErrorMessage.wrapPrint(e,'In %s: at index %d.' % (technoFile,entryNo)) + return + + +def loadAnalogTechno ( table, fromFile ): + global technoFile + technoFile = fromFile + techno = DataBase.getDB().getTechnology() + + _loadAnalogTechno( techno, table ) + return diff --git a/crlcore/python/helpers/Devices.py b/crlcore/python/helpers/Devices.py new file mode 100644 index 00000000..d6b224f3 --- /dev/null +++ b/crlcore/python/helpers/Devices.py @@ -0,0 +1,102 @@ +# -*- Mode:Python; explicit-buffer-name: "Devices.py" -*- +# +# This file is part of the Coriolis Software. +# Copyright (c) UPMC 2015-2018, 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 : "./crlcore/python/helpers/Devices.py" | +# +-----------------------------------------------------------------+ + + +import os +import os.path +import sys +from Hurricane import DataBase +from helpers import ErrorMessage +from helpers import Debug + + +devicesFile = '' + + +def checkEntry ( entry, entryNo ): + if not isinstance(entry,dict): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Not a dictionnary { key1:value1, key2:value2 }.' + , str(entry) + ] ) + if not entry.has_key('name'): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Dictionnary is missing the key/value pair.' + , str(entry) + ] ) + if not entry.has_key('spice'): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Dictionnary is missing the key/value pair.' + , str(entry) + ] ) + if not entry.has_key('connectors'): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Dictionnary is missing the key/value pair.' + , str(entry) + ] ) + if not entry.has_key('layouts'): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'Dictionnary is missing the key/value pair.' + , str(entry) + ] ) + if not isinstance(entry['connectors'],tuple): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'The value is not a *tuple*.' + , str(entry) + ] ) + layouts = entry['layouts'] + if not isinstance(layouts,tuple): + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'The value is not a *tuple*.' + , str(entry) + ] ) + for layout in layouts: + if not isinstance(layout,tuple) or len(layout) != 2: + raise ErrorMessage( 1, [ 'Entry %d is malformed in .' % entryNo + , 'One item is not a two element *tuple*.' + , str(entry) + ] ) + return + + +def _loadDevices ( techno, ruleTable ): + unit = None + entryNo = 0 + for entry in ruleTable: + entryNo += 1 + + try: + checkEntry( entry, entryNo ) + + devDesc = techno.addDeviceDescriptor( entry['name'] ) + devDesc.setSpiceFilePath( entry['spice'] ) + + for connector in entry['connectors']: + devDesc.addConnector( connector ) + + for layout in entry['layouts']: + devDesc.addLayout( layout[0], layout[1] ) + except Exception, e: + ErrorMessage.wrapPrint(e,'In %s: at index %d.' % (devicesFile,entryNo)) + return + + +def loadDevices ( table, fromFile ): + global devicesFile + devicesFile = fromFile + techno = DataBase.getDB().getTechnology() + + _loadDevices( techno, table ) + return diff --git a/crlcore/python/helpers/__init__.py b/crlcore/python/helpers/__init__.py index 6df1e186..4a518f80 100644 --- a/crlcore/python/helpers/__init__.py +++ b/crlcore/python/helpers/__init__.py @@ -46,9 +46,16 @@ def isderived ( derived, base ): return False -def truncPath ( path, maxlength=70 ): +def truncPath ( path, maxlength=80 ): if len(path) < maxlength: return path - return '.../'+os.sep.join(path.split(os.sep)[-4:]) + components = path.split(os.sep) + trunc = '' + for i in range(-1,-len(components),-1): + if len(trunc)+len(components[i]) >= maxlength: break + if not len(trunc): trunc = components[i] + else: trunc = os.path.join( components[i], trunc ) + + return '...' + os.sep + trunc def showPythonTrace ( scriptPath=None, e=None, tryContinue=True ): diff --git a/crlcore/src/ccore/Utilities.cpp b/crlcore/src/ccore/Utilities.cpp index bfad2bbf..96adbf35 100644 --- a/crlcore/src/ccore/Utilities.cpp +++ b/crlcore/src/ccore/Utilities.cpp @@ -318,14 +318,14 @@ namespace CRL { Utilities::Path crlcoreDir = pythonSitePackages / "crlcore"; Utilities::Path stratusDir = pythonSitePackages / "stratus"; Utilities::Path cumulusDir = pythonSitePackages / "cumulus"; - Utilities::Path pharosDir = pythonSitePackages / "pharos"; + Utilities::Path oroshiDir = pythonSitePackages / "oroshi"; Isobar::Script::addPath ( sysConfDir.toString() ); Isobar::Script::addPath ( pythonSitePackages.toString() ); Isobar::Script::addPath ( crlcoreDir.toString() ); Isobar::Script::addPath ( stratusDir.toString() ); Isobar::Script::addPath ( cumulusDir.toString() ); - Isobar::Script::addPath ( pharosDir.toString() ); + Isobar::Script::addPath ( oroshiDir.toString() ); // Triggers Configuration singleton creation. Cfg::Configuration::get (); diff --git a/documentation/Analog/Analog.rst b/documentation/Analog/Analog.rst new file mode 100644 index 00000000..27927665 --- /dev/null +++ b/documentation/Analog/Analog.rst @@ -0,0 +1,11 @@ +.. -*- Mode: rst -*- + +.. include:: ../etc/definitions.rst + + +========================== +Hurricane/Analog Reference +========================== + +The Viewer C++ API reference is generated by Doxygen_ and is +available here: `Hurricane/Analog `_ diff --git a/documentation/Oroshi/Oroshi.rst b/documentation/Oroshi/Oroshi.rst new file mode 100644 index 00000000..f8edd57a --- /dev/null +++ b/documentation/Oroshi/Oroshi.rst @@ -0,0 +1,11 @@ +.. -*- Mode: rst -*- + +.. include:: ../etc/definitions.rst + + +================ +Oroshi Reference +================ + +The Oroshi Python API reference is generated by Doxygen_ and is +available here: `Oroshi `_ diff --git a/documentation/PythonCpp/PythonCpp.pdf b/documentation/PythonCpp/PythonCpp.pdf index 30896179..fea97c8d 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 11ef8db9..c1e9a09c 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 e14edebd..866a2137 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 372dbfc6..45db55c1 100644 Binary files a/documentation/Stratus/Stratus.pdf and b/documentation/Stratus/Stratus.pdf differ diff --git a/documentation/UsersGuide/UsersGuide.pdf b/documentation/UsersGuide/UsersGuide.pdf index adc118d3..3e8d93d8 100644 Binary files a/documentation/UsersGuide/UsersGuide.pdf and b/documentation/UsersGuide/UsersGuide.pdf differ diff --git a/documentation/_build/doctrees/Analog/Analog.doctree b/documentation/_build/doctrees/Analog/Analog.doctree new file mode 100644 index 00000000..ecae7d83 Binary files /dev/null and b/documentation/_build/doctrees/Analog/Analog.doctree differ diff --git a/documentation/_build/doctrees/Contents.doctree b/documentation/_build/doctrees/Contents.doctree index 73b14028..0a149a0f 100644 Binary files a/documentation/_build/doctrees/Contents.doctree and b/documentation/_build/doctrees/Contents.doctree differ diff --git a/documentation/_build/doctrees/CrlCore/CrlCore.doctree b/documentation/_build/doctrees/CrlCore/CrlCore.doctree index 562928d2..721eb25a 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 3f5dd61e..90c44943 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 9d46ca50..67f029f1 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 4e09e245..755bead0 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 new file mode 100644 index 00000000..96467b30 Binary files /dev/null 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 c2a54e02..4a47fa86 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 76444566..1d09129c 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 aae48cd6..32a97c42 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 ff6ab7be..185d33be 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 4a2ebd7c..48135ac5 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 66b8e85d..cba9ed93 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 7538bdce..0c010f87 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 c1be49f5..dd906f9e 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 e4436737..9d3bd976 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 7a1c2a7c..2a83b05d 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 4b1e9a02..c6274606 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 43dfc464..ca28596d 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 002c1ced..a10fbb4e 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 cc4a6576..aa84f027 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 48068e24..5ea63019 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 f1bafdd0..298c6991 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 3eec1793..7e13a1f6 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 5e2caf86..87481c4f 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 2f63dfac..19cb4cee 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 1a46ad46..6dd7c110 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 cd2d7c5d..c28579b3 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 8b63745e..a9b28674 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 25249305..1b38bfe7 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 ffac3c0b..20ee5970 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/Installation.doctree b/documentation/_build/doctrees/UsersGuide/Installation.doctree index 08801643..5510df00 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 fa164198..f0999765 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 c66509b9..44ac17e4 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 614b0f22..3bf49d01 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 55b1b765..17f49257 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 8c366092..187fa7ec 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 d24f1cda..1b7cbc19 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 98d5db1a..de34a476 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 551b4a38..f27c0db7 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 3fa6a211..8ebbbc78 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 705a60df..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 6eb21ed5..b05f8ccf 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 9b5ca96e..ab1c31fb 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/Contents.html b/documentation/_build/html/Contents.html index f8bbc735..58b9e629 100644 --- a/documentation/_build/html/Contents.html +++ b/documentation/_build/html/Contents.html @@ -447,6 +447,8 @@ +
  • Hurricane/Analog Reference
  • +
  • Oroshi Reference
  • LEF API Reference
    • Implementation Notes
      • Understanding Units
      • @@ -1117,7 +1119,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/CrlCore/CrlCore.html b/documentation/_build/html/CrlCore/CrlCore.html index 15bee972..794c90c1 100644 --- a/documentation/_build/html/CrlCore/CrlCore.html +++ b/documentation/_build/html/CrlCore/CrlCore.html @@ -449,6 +449,8 @@
    • +
    • Hurricane/Analog Reference
    • +
    • Oroshi Reference
    • LEF API Reference
      • Implementation Notes
        • Understanding Units
        • @@ -521,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/Hurricane/Hurricane.html b/documentation/_build/html/Hurricane/Hurricane.html index 8220e16a..b8df04eb 100644 --- a/documentation/_build/html/Hurricane/Hurricane.html +++ b/documentation/_build/html/Hurricane/Hurricane.html @@ -449,6 +449,8 @@
      • +
      • Hurricane/Analog Reference
      • +
      • Oroshi Reference
      • LEF API Reference
        • Implementation Notes
          • Understanding Units
          • @@ -521,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/Katabatic/Katabatic.html b/documentation/_build/html/Katabatic/Katabatic.html index ad58e2f4..6792a90e 100644 --- a/documentation/_build/html/Katabatic/Katabatic.html +++ b/documentation/_build/html/Katabatic/Katabatic.html @@ -449,6 +449,8 @@
        • +
        • Hurricane/Analog Reference
        • +
        • Oroshi Reference
        • LEF API Reference
          • Implementation Notes
            • Understanding Units
            • @@ -526,7 +528,7 @@ mixed signal conterpart Anabatic.

              Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/Kite/Kite.html b/documentation/_build/html/Kite/Kite.html index 384e0afc..fb06bb58 100644 --- a/documentation/_build/html/Kite/Kite.html +++ b/documentation/_build/html/Kite/Kite.html @@ -449,6 +449,8 @@
          • +
          • Hurricane/Analog Reference
          • +
          • Oroshi Reference
          • LEF API Reference
            • Implementation Notes
              • Understanding Units
              • @@ -526,7 +528,7 @@ mixed-signal conterpart Katana (Kit[e]-Ana[logic]).

                Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/Configuration.html b/documentation/_build/html/PythonCpp/Configuration.html index defb4e52..eaa8811b 100644 --- a/documentation/_build/html/PythonCpp/Configuration.html +++ b/documentation/_build/html/PythonCpp/Configuration.html @@ -450,6 +450,8 @@
            • +
            • Hurricane/Analog Reference
            • +
            • Oroshi Reference
            • LEF API Reference
              • Implementation Notes
                • Understanding Units
                • @@ -554,7 +556,7 @@ associated C++ namespace. Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/DBoHierarchy.html b/documentation/_build/html/PythonCpp/DBoHierarchy.html index 13c2a87f..edf13516 100644 --- a/documentation/_build/html/PythonCpp/DBoHierarchy.html +++ b/documentation/_build/html/PythonCpp/DBoHierarchy.html @@ -450,6 +450,8 @@
              • +
              • Hurricane/Analog Reference
              • +
              • Oroshi Reference
              • LEF API Reference
                • Implementation Notes
                  • Understanding Units
                  • @@ -926,7 +928,7 @@ terminal or not. Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/DBoStandalone.html b/documentation/_build/html/PythonCpp/DBoStandalone.html index 59fb7916..89ac9da2 100644 --- a/documentation/_build/html/PythonCpp/DBoStandalone.html +++ b/documentation/_build/html/PythonCpp/DBoStandalone.html @@ -450,6 +450,8 @@
                • +
                • Hurricane/Analog Reference
                • +
                • Oroshi Reference
                • LEF API Reference
                  • Implementation Notes
                    • Understanding Units
                    • @@ -856,7 +858,7 @@ the module itself. This allow to mimic closely the C++ syntax:

                      Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/DbU.html b/documentation/_build/html/PythonCpp/DbU.html index ae066e04..903d0ef3 100644 --- a/documentation/_build/html/PythonCpp/DbU.html +++ b/documentation/_build/html/PythonCpp/DbU.html @@ -450,6 +450,8 @@
                  • +
                  • Hurricane/Analog Reference
                  • +
                  • Oroshi Reference
                  • LEF API Reference
                    • Implementation Notes
                      • Understanding Units
                      • @@ -570,7 +572,7 @@ the DbU::Unit  Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/Introduction.html b/documentation/_build/html/PythonCpp/Introduction.html index b20c0fd9..daa120e0 100644 --- a/documentation/_build/html/PythonCpp/Introduction.html +++ b/documentation/_build/html/PythonCpp/Introduction.html @@ -450,6 +450,8 @@
                    • +
                    • Hurricane/Analog Reference
                    • +
                    • Oroshi Reference
                    • LEF API Reference
                      • Implementation Notes
                        • Understanding Units
                        • @@ -684,7 +686,7 @@ like in the code below:

                          Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/Name.html b/documentation/_build/html/PythonCpp/Name.html index 1af26333..a109d7ef 100644 --- a/documentation/_build/html/PythonCpp/Name.html +++ b/documentation/_build/html/PythonCpp/Name.html @@ -450,6 +450,8 @@
                      • +
                      • Hurricane/Analog Reference
                      • +
                      • Oroshi Reference
                      • LEF API Reference
                        • Implementation Notes
                          • Understanding Units
                          • @@ -523,7 +525,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/NonDBo.html b/documentation/_build/html/PythonCpp/NonDBo.html index b54518f5..e489aa0f 100644 --- a/documentation/_build/html/PythonCpp/NonDBo.html +++ b/documentation/_build/html/PythonCpp/NonDBo.html @@ -450,6 +450,8 @@
                        • +
                        • Hurricane/Analog Reference
                        • +
                        • Oroshi Reference
                        • LEF API Reference
                          • Implementation Notes
                            • Understanding Units
                            • @@ -673,7 +675,7 @@ a standalone DBo Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonCpp/index.html b/documentation/_build/html/PythonCpp/index.html index 4f801e70..9f631268 100644 --- a/documentation/_build/html/PythonCpp/index.html +++ b/documentation/_build/html/PythonCpp/index.html @@ -449,6 +449,8 @@
                          • +
                          • Hurricane/Analog Reference
                          • +
                          • Oroshi Reference
                          • LEF API Reference
                            • Implementation Notes
                              • Understanding Units
                              • @@ -555,7 +557,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/AdvancedTopics.html b/documentation/_build/html/PythonTutorial/AdvancedTopics.html index b0d9125e..e2172130 100644 --- a/documentation/_build/html/PythonTutorial/AdvancedTopics.html +++ b/documentation/_build/html/PythonTutorial/AdvancedTopics.html @@ -450,6 +450,8 @@
                            • +
                            • Hurricane/Analog Reference
                            • +
                            • Oroshi Reference
                            • LEF API Reference
                              • Implementation Notes
                                • Understanding Units
                                • @@ -542,7 +544,7 @@ go through all the components of a trans-hierarchical net.

                                  Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/CellNetComponent.html b/documentation/_build/html/PythonTutorial/CellNetComponent.html index 38d3fbd8..f0e48048 100644 --- a/documentation/_build/html/PythonTutorial/CellNetComponent.html +++ b/documentation/_build/html/PythonTutorial/CellNetComponent.html @@ -450,6 +450,8 @@
                              • +
                              • Hurricane/Analog Reference
                              • +
                              • Oroshi Reference
                              • LEF API Reference
                                • Implementation Notes
                                  • Understanding Units
                                  • @@ -833,7 +835,7 @@ explanation of that part of the code, refer to Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/CgtScript.html b/documentation/_build/html/PythonTutorial/CgtScript.html index e74eabaa..e2f65ce1 100644 --- a/documentation/_build/html/PythonTutorial/CgtScript.html +++ b/documentation/_build/html/PythonTutorial/CgtScript.html @@ -450,6 +450,8 @@
                                • +
                                • Hurricane/Analog Reference
                                • +
                                • Oroshi Reference
                                • LEF API Reference
                                  • Implementation Notes
                                    • Understanding Units
                                    • @@ -592,7 +594,7 @@ The Breakpoint.stop() Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/Collections.html b/documentation/_build/html/PythonTutorial/Collections.html index 999869a4..ad22aa00 100644 --- a/documentation/_build/html/PythonTutorial/Collections.html +++ b/documentation/_build/html/PythonTutorial/Collections.html @@ -450,6 +450,8 @@
                                  • +
                                  • Hurricane/Analog Reference
                                  • +
                                  • Oroshi Reference
                                  • LEF API Reference
                                    • Implementation Notes
                                      • Understanding Units
                                      • @@ -593,7 +595,7 @@ they may unexpectedly shadow cells from the libraries.

                                        Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/Environment.html b/documentation/_build/html/PythonTutorial/Environment.html index 67f9e56b..caa290f8 100644 --- a/documentation/_build/html/PythonTutorial/Environment.html +++ b/documentation/_build/html/PythonTutorial/Environment.html @@ -450,6 +450,8 @@
                                    • +
                                    • Hurricane/Analog Reference
                                    • +
                                    • Oroshi Reference
                                    • LEF API Reference
                                      • Implementation Notes
                                        • Understanding Units
                                        • @@ -598,7 +600,7 @@ in CGT - The Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/Introduction.html b/documentation/_build/html/PythonTutorial/Introduction.html index aa0f52e2..fac04da2 100644 --- a/documentation/_build/html/PythonTutorial/Introduction.html +++ b/documentation/_build/html/PythonTutorial/Introduction.html @@ -450,6 +450,8 @@
                                      • +
                                      • Hurricane/Analog Reference
                                      • +
                                      • Oroshi Reference
                                      • LEF API Reference
                                        • Implementation Notes
                                          • Understanding Units
                                          • @@ -655,7 +657,7 @@ to be explicitly deleted.

                                            Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/Netlist.html b/documentation/_build/html/PythonTutorial/Netlist.html index 004c2510..015abd39 100644 --- a/documentation/_build/html/PythonTutorial/Netlist.html +++ b/documentation/_build/html/PythonTutorial/Netlist.html @@ -450,6 +450,8 @@
                                        • +
                                        • Hurricane/Analog Reference
                                        • +
                                        • Oroshi Reference
                                        • LEF API Reference
                                          • Implementation Notes
                                            • Understanding Units
                                            • @@ -881,7 +883,7 @@ directory (under the the root of the Coriolis installati Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/RealDesigns.html b/documentation/_build/html/PythonTutorial/RealDesigns.html index a2a6f190..45497ca5 100644 --- a/documentation/_build/html/PythonTutorial/RealDesigns.html +++ b/documentation/_build/html/PythonTutorial/RealDesigns.html @@ -450,6 +450,8 @@
                                          • +
                                          • Hurricane/Analog Reference
                                          • +
                                          • Oroshi Reference
                                          • LEF API Reference
                                            • Implementation Notes
                                              • Understanding Units
                                              • @@ -559,7 +561,7 @@ the one of the FreePDK45, you must load it prior to calling the Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/ToolEngines.html b/documentation/_build/html/PythonTutorial/ToolEngines.html index 26f290f7..fd37ca79 100644 --- a/documentation/_build/html/PythonTutorial/ToolEngines.html +++ b/documentation/_build/html/PythonTutorial/ToolEngines.html @@ -450,6 +450,8 @@
                                            • +
                                            • Hurricane/Analog Reference
                                            • +
                                            • Oroshi Reference
                                            • LEF API Reference
                                              • Implementation Notes
                                                • Understanding Units
                                                • @@ -722,7 +724,7 @@ case it is around 3% Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/definitions.html b/documentation/_build/html/PythonTutorial/definitions.html index 106edb6b..7514ce01 100644 --- a/documentation/_build/html/PythonTutorial/definitions.html +++ b/documentation/_build/html/PythonTutorial/definitions.html @@ -447,6 +447,8 @@
                                              • +
                                              • Hurricane/Analog Reference
                                              • +
                                              • Oroshi Reference
                                              • LEF API Reference
                                                • Implementation Notes
                                                  • Understanding Units
                                                  • @@ -505,7 +507,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/index.html b/documentation/_build/html/PythonTutorial/index.html index f48ffc8a..ea3e3f44 100644 --- a/documentation/_build/html/PythonTutorial/index.html +++ b/documentation/_build/html/PythonTutorial/index.html @@ -449,6 +449,8 @@
                                                • +
                                                • Hurricane/Analog Reference
                                                • +
                                                • Oroshi Reference
                                                • LEF API Reference
                                                  • Implementation Notes
                                                    • Understanding Units
                                                    • @@ -584,7 +586,7 @@ and hierarchical design.

                                                      Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/PythonTutorial/pdfHeader.html b/documentation/_build/html/PythonTutorial/pdfHeader.html index 1430c7de..a31646bc 100644 --- a/documentation/_build/html/PythonTutorial/pdfHeader.html +++ b/documentation/_build/html/PythonTutorial/pdfHeader.html @@ -447,6 +447,8 @@
                                                  • +
                                                  • Hurricane/Analog Reference
                                                  • +
                                                  • Oroshi Reference
                                                  • LEF API Reference
                                                    • Implementation Notes
                                                      • Understanding Units
                                                      • @@ -520,7 +522,7 @@ and hierarchical design.

                                                        Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/RDS/RDSpage.html b/documentation/_build/html/RDS/RDSpage.html index 1a9a46a9..344f2d36 100644 --- a/documentation/_build/html/RDS/RDSpage.html +++ b/documentation/_build/html/RDS/RDSpage.html @@ -35,7 +35,7 @@ - + @@ -450,6 +450,8 @@
                                                    • +
                                                    • Hurricane/Analog Reference
                                                    • +
                                                    • Oroshi Reference
                                                    • LEF API Reference
                                                      • Implementation Notes
                                                        • Understanding Units
                                                        • @@ -965,7 +967,7 @@ wire width and minimal spacing for the routers. They are patly redundant.

                                                      • +
                                                      • Hurricane/Analog Reference
                                                      • +
                                                      • Oroshi Reference
                                                      • LEF API Reference
                                                        • Implementation Notes
                                                          • Understanding Units
                                                          • @@ -539,7 +541,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/Unicorn/Unicorn.html b/documentation/_build/html/Unicorn/Unicorn.html index 8d2eda40..def7a2b6 100644 --- a/documentation/_build/html/Unicorn/Unicorn.html +++ b/documentation/_build/html/Unicorn/Unicorn.html @@ -449,6 +449,8 @@
                                                        • +
                                                        • Hurricane/Analog Reference
                                                        • +
                                                        • Oroshi Reference
                                                        • LEF API Reference
                                                          • Implementation Notes
                                                            • Understanding Units
                                                            • @@ -521,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/Configuration.html b/documentation/_build/html/UsersGuide/Configuration.html index 4cefa0df..b6517553 100644 --- a/documentation/_build/html/UsersGuide/Configuration.html +++ b/documentation/_build/html/UsersGuide/Configuration.html @@ -450,6 +450,8 @@
                                                          • +
                                                          • Hurricane/Analog Reference
                                                          • +
                                                          • Oroshi Reference
                                                          • LEF API Reference
                                                            • Implementation Notes
                                                              • Understanding Units
                                                              • @@ -863,7 +865,7 @@ in <CWD>/.coriolis2/settings.py (that is, written Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/Installation.html b/documentation/_build/html/UsersGuide/Installation.html index 801e4055..c6d39bed 100644 --- a/documentation/_build/html/UsersGuide/Installation.html +++ b/documentation/_build/html/UsersGuide/Installation.html @@ -450,6 +450,8 @@
                                                            • +
                                                            • Hurricane/Analog Reference
                                                            • +
                                                            • Oroshi Reference
                                                            • LEF API Reference
                                                              • Implementation Notes
                                                                • Understanding Units
                                                                • @@ -771,7 +773,7 @@ infinite loop if it’s called again in, say ~/.bashrc Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/LicenseCredits.html b/documentation/_build/html/UsersGuide/LicenseCredits.html index 82be8e9d..50f31433 100644 --- a/documentation/_build/html/UsersGuide/LicenseCredits.html +++ b/documentation/_build/html/UsersGuide/LicenseCredits.html @@ -450,6 +450,8 @@
                                                              • +
                                                              • Hurricane/Analog Reference
                                                              • +
                                                              • Oroshi Reference
                                                              • LEF API Reference
                                                                • Implementation Notes
                                                                  • Understanding Units
                                                                  • @@ -548,7 +550,7 @@ copyright© Chris C. N. Chu from the Iowa State Universi Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/Releases.html b/documentation/_build/html/UsersGuide/Releases.html index 83513427..462dbde7 100644 --- a/documentation/_build/html/UsersGuide/Releases.html +++ b/documentation/_build/html/UsersGuide/Releases.html @@ -450,6 +450,8 @@
                                                                • +
                                                                • Hurricane/Analog Reference
                                                                • +
                                                                • Oroshi Reference
                                                                • LEF API Reference
                                                                  • Implementation Notes
                                                                    • Understanding Units
                                                                    • @@ -605,7 +607,7 @@ whole design down and including the standard cells. Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/ScriptsPlugins.html b/documentation/_build/html/UsersGuide/ScriptsPlugins.html index 703dd085..e23f13df 100644 --- a/documentation/_build/html/UsersGuide/ScriptsPlugins.html +++ b/documentation/_build/html/UsersGuide/ScriptsPlugins.html @@ -450,6 +450,8 @@
                                                                  • +
                                                                  • Hurricane/Analog Reference
                                                                  • +
                                                                  • Oroshi Reference
                                                                  • LEF API Reference
                                                                    • Implementation Notes
                                                                      • Understanding Units
                                                                      • @@ -903,7 +905,7 @@ then run the Python script doChip.py Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/ViewerTools.html b/documentation/_build/html/UsersGuide/ViewerTools.html index 6ec8ab8d..636851c7 100644 --- a/documentation/_build/html/UsersGuide/ViewerTools.html +++ b/documentation/_build/html/UsersGuide/ViewerTools.html @@ -450,6 +450,8 @@
                                                                    • +
                                                                    • Hurricane/Analog Reference
                                                                    • +
                                                                    • Oroshi Reference
                                                                    • LEF API Reference
                                                                      • Implementation Notes
                                                                        • Understanding Units
                                                                        • @@ -1395,7 +1397,7 @@ is deleted, you will crash the application...

                                                                          Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/UsersGuide/index.html b/documentation/_build/html/UsersGuide/index.html index 048ab1ea..5d60fbbc 100644 --- a/documentation/_build/html/UsersGuide/index.html +++ b/documentation/_build/html/UsersGuide/index.html @@ -449,6 +449,8 @@
                                                                      • +
                                                                      • Hurricane/Analog Reference
                                                                      • +
                                                                      • Oroshi Reference
                                                                      • LEF API Reference
                                                                        • Implementation Notes
                                                                          • Understanding Units
                                                                          • @@ -560,7 +562,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/Viewer/Viewer.html b/documentation/_build/html/Viewer/Viewer.html index 6b62adf9..a6743e60 100644 --- a/documentation/_build/html/Viewer/Viewer.html +++ b/documentation/_build/html/Viewer/Viewer.html @@ -449,6 +449,8 @@
                                                                        • +
                                                                        • Hurricane/Analog Reference
                                                                        • +
                                                                        • Oroshi Reference
                                                                        • LEF API Reference
                                                                          • Implementation Notes
                                                                            • Understanding Units
                                                                            • @@ -521,7 +523,7 @@ available here: Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/_sources/etc/definitions.txt b/documentation/_build/html/_sources/etc/definitions.txt index f15293f2..013d3088 100644 --- a/documentation/_build/html/_sources/etc/definitions.txt +++ b/documentation/_build/html/_sources/etc/definitions.txt @@ -68,7 +68,6 @@ .. |MIPS| replace:: :sc:`mips` .. |Am2901| replace:: :sc:`Am2901` .. |Hurricane| replace:: :sc:`Hurricane` -.. |HurricaneAMS| replace:: :sc:`HurricaneAMS` .. |CRL| replace:: :sc:`crl` .. |Alliance| replace:: :sc:`Alliance` .. |Yosys| replace:: :sc:`Yosys` @@ -98,7 +97,6 @@ .. |cgt| replace:: :cb:`cgt` .. |Chams| replace:: :sc:`Chams` .. |OpenChams| replace:: :sc:`OpenChams` -.. |Pharos| replace:: :cb:`Pharos` .. |API| replace:: :sc:`api` .. |STL| replace:: :sc:`stl` .. |XML| replace:: :sc:`xml` diff --git a/documentation/_build/html/_sources/index.txt b/documentation/_build/html/_sources/index.txt index a690b796..dfb158f6 100644 --- a/documentation/_build/html/_sources/index.txt +++ b/documentation/_build/html/_sources/index.txt @@ -23,12 +23,13 @@ Contents: Unicorn/Unicorn.rst PythonCpp/index.rst RDS/index.rst + Analog/Analog.rst + Oroshi/Oroshi.rst lefapi/lefapi.rst defapi/defapi.rst lefdef/lefdef.rst - Indices and tables ================== diff --git a/documentation/_build/html/defapi/defapi.html b/documentation/_build/html/defapi/defapi.html index 87bd0ddc..38681ee6 100644 --- a/documentation/_build/html/defapi/defapi.html +++ b/documentation/_build/html/defapi/defapi.html @@ -449,6 +449,8 @@
                                                                          • +
                                                                          • Hurricane/Analog Reference
                                                                          • +
                                                                          • Oroshi Reference
                                                                          • LEF API Reference
                                                                            • Implementation Notes
                                                                              • Understanding Units
                                                                              • @@ -522,7 +524,7 @@ under the Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/etc/definitions.html b/documentation/_build/html/etc/definitions.html index acb22749..0b061fd4 100644 --- a/documentation/_build/html/etc/definitions.html +++ b/documentation/_build/html/etc/definitions.html @@ -447,6 +447,8 @@
                                                                            • +
                                                                            • Hurricane/Analog Reference
                                                                            • +
                                                                            • Oroshi Reference
                                                                            • LEF API Reference
                                                                              • Implementation Notes
                                                                                • Understanding Units
                                                                                • @@ -505,7 +507,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/genindex.html b/documentation/_build/html/genindex.html index 149878c1..f10b7b19 100644 --- a/documentation/_build/html/genindex.html +++ b/documentation/_build/html/genindex.html @@ -448,6 +448,8 @@
                                                                              • +
                                                                              • Hurricane/Analog Reference
                                                                              • +
                                                                              • Oroshi Reference
                                                                              • LEF API Reference
                                                                                • Implementation Notes
                                                                                  • Understanding Units
                                                                                  • @@ -512,7 +514,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/index.html b/documentation/_build/html/index.html index fce82475..12dfa7ec 100644 --- a/documentation/_build/html/index.html +++ b/documentation/_build/html/index.html @@ -448,6 +448,8 @@
                                                                                • +
                                                                                • Hurricane/Analog Reference
                                                                                • +
                                                                                • Oroshi Reference
                                                                                • LEF API Reference
                                                                                  • Implementation Notes
                                                                                    • Understanding Units
                                                                                    • @@ -496,7 +498,7 @@

                                                                                      Coriolis 2 documentation

                                                                                      - Documentation generated on Aug 19, 2018. + Documentation generated on Oct 01, 2018.

                                                                                      Documentation Topics

                                                                                      @@ -594,7 +596,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/lefapi/lefapi.html b/documentation/_build/html/lefapi/lefapi.html index 9930b1c1..1e3b0dbe 100644 --- a/documentation/_build/html/lefapi/lefapi.html +++ b/documentation/_build/html/lefapi/lefapi.html @@ -35,7 +35,7 @@ - + @@ -449,6 +449,8 @@
                                                                                  • +
                                                                                  • Hurricane/Analog Reference
                                                                                  • +
                                                                                  • Oroshi Reference
                                                                                  • LEF API Reference
                                                                                    • Implementation Notes
                                                                                      • Understanding Units
                                                                                      • @@ -541,7 +543,7 @@ and configured when the subsequent Next - Previous + Previous @@ -553,7 +555,7 @@ and configured when the subsequent Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/lefdef/lefdef.html b/documentation/_build/html/lefdef/lefdef.html index 4f84a75f..2ef2c4c9 100644 --- a/documentation/_build/html/lefdef/lefdef.html +++ b/documentation/_build/html/lefdef/lefdef.html @@ -448,6 +448,8 @@
                                                                                    • +
                                                                                    • Hurricane/Analog Reference
                                                                                    • +
                                                                                    • Oroshi Reference
                                                                                    • LEF API Reference
                                                                                      • Implementation Notes
                                                                                        • Understanding Units
                                                                                        • @@ -519,7 +521,7 @@ under the Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/objects.inv b/documentation/_build/html/objects.inv index 8ac62854..63cb1e71 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 22c86ced..837861a3 100644 --- a/documentation/_build/html/search.html +++ b/documentation/_build/html/search.html @@ -447,6 +447,8 @@
                                                                                      • +
                                                                                      • Hurricane/Analog Reference
                                                                                      • +
                                                                                      • Oroshi Reference
                                                                                      • LEF API Reference
                                                                                        • Implementation Notes
                                                                                          • Understanding Units
                                                                                          • @@ -515,7 +517,7 @@ Generated by Sphinx - using a RTD theme on Aug 19, 2018. + using a RTD theme on Oct 01, 2018. diff --git a/documentation/_build/html/searchindex.js b/documentation/_build/html/searchindex.js index d87ae880..fd166bf4 100644 --- a/documentation/_build/html/searchindex.js +++ b/documentation/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:49,filenames:["Contents","CrlCore/CrlCore","Hurricane/Hurricane","Katabatic/Katabatic","Kite/Kite","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/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":25,"01\u00b5m":44,"09\u00b5m":25,"0b0001":28,"0b000111":28,"0b0010":29,"0b0110":29,"0b10":29,"0b1001":29,"0b1010":28,"0b1100":28,"0b1110":29,"0b1111":28,"0x0000ffff":28,"0x14":29,"100k":38,"150k":38,"180nm":33,"18\u00b5m":25,"1\u00b5m":25,"2\u00b5m":25,"32b":34,"32x32":38,"45nm":[17,20],"64b":34,"abstract":6,"boolean":[0,7,27],"case":0,"catch":7,"char":7,"class":[0,5],"const":[28,29],"default":[6,17,25,27,28,29,30,33,34,37,38,44],"else":28,"export":[5,6,7,18,34,36,37],"final":[14,25,34,38],"float":[14,30,33],"function":[0,5,6,7,8,9,11],"goto":38,"import":[6,7,9,14,18,19,20,21,28,29,33,35,36,37,38],"int":11,"long":[8,18,38],"new":[6,7,11],"null":[6,7,8,9,11,28],"public":[18,36],"r\u00e9my":35,"return":[6,7,8,9,11,14,15,16,18,19,21,28,29,33,37,38],"short":9,"static":[6,7,8,9,11,18,20,28,34],"supp\u00e9rior":37,"transient":[14,44],"true":[14,15,17,19,21,25,27,28,29,33,37,38],"try":[14,29,33,38],"void":[6,7,11,18],"while":[8,14,16,18,19,38,44],__add__:27,__and__:27,__c:[6,7,9,11],__div__:27,__geslice__:27,__getitem__:27,__init__:27,__invert__:27,__le__:27,__main__:37,__mul__:27,__name__:37,__or__:27,__python_module:9,__python_module__:[6,9,11],__str__:18,__xor__:27,_add:27,_alia:27,_and:27,_ariti:27,_baseobject:6,_bl:37,_br:37,_buff:27,_chip:37,_clock:[33,37],_comp:27,_db:27,_direct:27,_div:27,_ext:27,_h_type:27,_hur_cel:27,_hur_inst:27,_hur_mastercel:27,_hur_net:27,_ind:27,_insref:27,_lib0:27,_map:27,_model:27,_mult:27,_mux:27,_name:[27,30],_nb_alims_vertical:27,_nb_inst:27,_nb_pin:27,_nb_vdd_pin:27,_nb_vss_pin:27,_not:27,_object:[6,7,8,11],_or:27,_param:27,_plac:27,_px:33,_pyobject:6,_real_model:27,_real_net:27,_reg:27,_shift:27,_st_cell:27,_st_ck:27,_st_inst:27,_st_mastercel:27,_st_merg:27,_st_port:27,_st_sig:27,_st_vdd:27,_st_vsss:27,_stim:29,_sym:27,_tab_nets_cat:27,_tab_nets_out:27,_tl:37,_to_cat:27,_to_merg:27,_tr:37,_type:27,_undercel:27,_xor:27,a2_1:[19,21],a2_2:[19,21],a2_x2:[19,21,29],abc:36,abil:29,abl:[9,15,18,20],about:[0,7],abov:[7,14,15,29,33,34,38],absolut:[11,14,30],abtument:29,abut:[14,19,21,29,37,38],abutmentbox:29,accept:[30,38],access:[6,16,19,29,30,34,36,38],access_class:6,access_object:6,accessor:7,accomod:37,accord:[25,33,37,38],accordingli:9,account:38,accross:9,accumul:30,accur:36,accuraci:38,achiev:36,acknowledg:28,across:[25,33,38],act:5,action:38,activ:[15,25,38],actual:[25,28,30,38],adapt:[17,37],add:[0,7,15,19],add_python_modul:[5,9],add_sub:28,addaccu:0,addd:29,added:36,adder:[28,29],adder_8:28,adding:7,addit:[17,28,29,33,38],addition:29,additionn:0,addmode:33,addpat:0,address:28,addtyp:[6,7],adjac:[13,37],adopt:14,adr:28,advis:38,adw:28,affect:0,affect_ani:0,affect_fix:0,affect_int:0,affili:36,after:[7,14,15,19,20,21,27,29,30,34,37,38],afterward:28,again:[6,7,17,20,34],against:[7,9,20,34,38],ago:9,aim:[18,36],alc_env:34,alexandr:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],algorithm:[16,36,38],alia:[17,27,29,34],alias:38,alim:29,alimconnector:29,aliment:[0,27],alimhorizontalrail:29,alimverticalrail:29,all:[7,9,13,14,16,18,19,21,25,27,29,30,33,34,35,36,37,38],allianc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25],alliance_top:33,allianceconfig:33,alliancetop:33,alloc:[7,18,38],allow:[7,13,14,16,19,25,28,29,30,33,38],almost:[6,17,33,37,38],alon:14,along:[11,38],alpha:36,alphanumer:29,alreadi:[9,16,23,24,29,33,38],also:[4,14,16,18,19,20,25,29,34,38],altern:[33,36,38],alternat:34,although:[25,36,38],alu1:[25,29],alu2:29,alu3:29,alu4:29,alu5:29,alu6:29,alu:29,alux:25,alwai:[7,9,19,28,29,30,38,44],am2901:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36],amd2901:37,amd2901_crl:37,amd2901_crl_chip:37,amd64:34,amend:33,among:14,amount:[28,44],amp:35,ana:4,anabat:[3,21],analog:21,analysi:38,analyt:[36,38],and2:[28,29],and2_8:28,and3:28,and3_16:28,and4:28,and4_2:28,anded:28,ani:[9,11,14,15,16,17,18,19,20,25,29,30,34,37,38],anneal:[36,37],anonym:16,anoth:[0,9,20,27],another:9,ansi:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],anti:38,any:38,anymor:25,anyth:[33,37,38],anywher:38,apach:[41,44,45],api:[0,1,2,3,4,5,6,7,8,9,10,11],appart:38,appear:[7,19,38],append:[16,29,33,37],appertur:38,appli:[9,19,25,28,29,30,33],applic:38,appropri:[7,29],approx:38,architectur:0,archiv:20,area:[19,21,25,33,38],arg0:[7,8,11],arg1:[7,11],arg:[6,7,8,9,11,29],argument:[0,6,7,8,14,15,19,27,28],arith:29,arithmet:[0,27,28],ariti:[27,29,30],army:38,around:[8,21,29,37,38],arrow:38,art:38,articul:[14,19],aside:[33,37],asign:30,asim:[29,34],asimut:29,ask:[19,25],aspect:[9,21,33,38],aspectratio:[21,33,38],assembl:33,assign:38,assignment:38,associ:[5,6,7,9,11,19,25,38],associat:[0,6],assum:[20,23,24,38],assume:19,asymetr:25,attempt:8,attribut:[0,6,11,18],author:29,autocmd:29,automat:[17,21,27,29,30,34,37,38],automaticali:29,autotool:34,auxsc35:38,avail:[1,2,3,4,9,14,17,29,32,33,34,36,40,41,44,45],avala:[36,38],avoid:[19,25,38,44],avot:30,awar:[19,25,28,34,38],axi:25,back:[29,36],background:38,backquot:17,bad:6,balanc:38,base:[0,3,4],bashrc:[17,34],basi:28,basic:0,basiclay:38,bdo:11,becaus:[6,15,21,25,34,36,38],becom:[6,18,29,37,38],bee:[29,38],been:[7,9,14,15,16,18,19,27,28,29,33,36,37,38],befor:[15,19,27,29,30,34,38,44],before:30,beforehand:38,begin:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,45],behav:28,behavior:[7,9,11,27,28,29],behaviour:38,belloeil:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],belong:[14,29,33,44],below:[7,9,18,19,21,25,27,29,33,34,37,38],benchmark:38,bend:25,best:[11,38],better:19,between:[9,13,18,19,25,28,29,30,33,37,38],bewteen:19,big:[25,29,38],bigger:38,biggest:19,biggestarea:19,bigvia:25,biject:19,bin:[14,19,21,29,34],binari:[29,30,34,38],bind:33,bit:[25,27,28,29,38],black:[17,33],blif:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],blink:38,blob:36,block:[9,18,28,37],blockag:[25,33],blockage:33,bluntli:11,blur:38,boil:25,bood:29,boost:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],booth:29,bootstrap:34,borrow:9,botch:0,both:[14,21,25,27,29,33,34,37,38],bother:7,bottom:[25,29,37],bound:[33,38],bourn:17,box:9,brace:18,branch:0,breakpoint:14,bring:9,brows:[33,38],buf:29,buf_x2:37,buff_32:28,buffer:[0,27,28],bufnewfil:29,bufread:29,bug:[17,33,36,38],build:[0,5,7,9,14,19,25,33],buildfulladd:[19,21],buildinvertor:[14,15],bull:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],bunch:7,bundl:34,buri:13,buse:[27,29],buse_8:28,buss:28,button:38,bzip2:34,c2r:[17,34],c30:28,c31:28,c_temp:29,c_x_n:25,c_x_p:25,ca2:[29,30],cach:37,cad:29,cadenc:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],calcul:[29,30],call:[6,7,8,9,11,14,15,16,17,18,19,20,21,27,28,29,30,34,37,38,43],callback:43,calu1:29,calu2:29,calu3:29,calu4:29,calu5:29,calu6:29,calu:29,calux:25,camel:7,can:[6,9,13,14,15,16,17,18,19,20,21,25,28,29,30,33,34,36,37,38,44],candid:19,cannot:[9,14,18,19,25,28,38],capabl:[9,33,34,37,38],capac:38,capacitor:28,capit:7,captur:0,care:[9,21,29,37,38],carry_1:[19,21],carry_2:[19,21],cast:[6,7],cat:29,catal:33,catalog:[14,16,19,21,33],catchcor:[17,33,38],categori:38,caus:[17,34],cbug:38,ccb:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],cdebug:38,ceil:28,cell:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],cell_1:29,cellnet:16,cellstop:33,cellview:[15,38],center:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],centerend:25,cerr:[6,7],certain:[11,30],cfg:33,cgt:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ch_htree_bl_tl:37,cham:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],chang:[6,11,18,19,28,29,33,36,37,38],chaput:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],charact:[28,33],check:[20,28,29,38],checkbox:38,checker:25,checkout:34,chip:[0,29],chmod:29,choic:0,choos:[7,29,38],chosen:[27,29],chotin:30,chri:35,christian:35,christoph:35,chu:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],cif:25,cin:[19,21,29],cinfo:38,circuit:0,circular:29,circumv:38,ck_htree:37,ck_htree_bl:37,ck_htree_bl_bl:37,ckin:[27,29,30],ckok:28,clariti:[6,14],class_nam:29,classic:[9,17,33],clean:33,cleaner:19,cleanli:7,clear:[11,37,38],clearer:29,clement:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],click:38,clock:[0,27,28,29,33],clocktre:[33,37],clone:[17,34,38],close:[7,14,15,18,19,21,33,37,38],closer:29,clue:9,cluster:38,cmake:[0,1,2,3,4],cmd0:29,cmd1:29,cmd2:29,cmd:[28,29],cmo:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],cnchu:35,cobject:8,code:[6,7,9,11,14,17,18,19,33,36,37],coher:[18,38],collect:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],collector:18,coloquint:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],color:29,com:[34,41,44,45],combin:[19,34],come:38,command:[0,29,34,37],commit:34,common:[7,9,25,28,29,33,36,37,38],commpos:38,commun:[7,9,11],comp:6,compar:30,comparaison:29,comparison:[0,27],compat:34,compatibilti:36,compil:[9,34,38],complement:[28,30],complet:[5,7,9],completli:[9,14,36,38],complex:[9,25],compliant:34,compnent:38,compon:[0,6,9,13],compos:[19,38],compris:38,comput:[9,14,19,28,29,30,33,37,38],concaten:29,concept:[14,18,19,23,24],conceptor:[27,29],concret:[6,29],conditionn:28,conf:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],configur:0,confus:19,congest:38,conjunct:38,connect:[14,18],connectmap:29,connector:[0,14,25],connexion:[13,18,19,27,29],consecut:37,consequ:[6,19,25,36,44],consid:[5,19,25],consist:34,const_0x0000ffff:28,constant:[0,25,28],construct:[11,18,19,29],constructor:[7,9,11],constructorerror:[7,9,11],constval0:28,constval1:28,constval2:28,constval3:28,constval:28,cont_body_n:[25,29],cont_body_p:[25,29],cont_dif_n:[14,25,29],cont_dif_p:[14,25,29],cont_poly:[14,25,29],cont_turn1:29,cont_turn2:29,cont_turn3:29,cont_turn4:29,cont_turn5:29,cont_turn6:29,cont_via2:25,cont_via3:25,cont_via4:25,cont_via5:25,cont_via:25,cont_viax:25,contact1:19,contact2:19,contact:[6,9,14,19,25,29,38],contain:[5,9,14,15,16,17,18,20,25,29,30,33,34,36,37,38],contdifn:14,contdifp:14,conterpart:[3,4,25],contest:38,context:37,contpoli:14,contributor:35,control:[0,9,18,19,25,28,29],conveni:7,convent:[9,14],convers:[0,7,14,16],convert:[7,8,11,14,18,25,30],coodin:29,coordin:[14,18,19,25,27,29,38],copi:[11,18,29,34,38],copuupseg:29,copyright:[35,41,44,45],copyupseg:0,copyupsegmentseccopi:29,cordin:29,core:0,corioli:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32],coriolis2:[5,14,17,19,21,33,34,36,37],coriolis_install:17,coriolis_top:17,coriolisconfigur:33,coriolisenv:[0,17],coriolisinit:33,corner:[14,19,25,29],correct:[29,38],correctli:[21,29],correspond:[27,29,30,38],corrioli:34,cost:38,cougar:25,could:[16,18,29,33,37,38],count:[9,37,38],coupl:38,cours:18,cout:[16,19,21,29],cover:25,cpp:[5,7,9],craft:37,crash:[34,38],creat:[5,6,7,9,11],createcel:[14,15,19,21],creation:[0,14,18,19,21,27],credit:0,crl:0,crl_cata_lib:29,crlcore:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],crude:38,csh:34,ctrl:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],cumbersom:9,current:[14,21,29,30,33,34,37,38],cursor:38,cwd:33,cycl:30,cyclop:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],cygwin:34,damien:35,dangl:9,darwin:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],data:[0,28],databas:[7,9,14,16,18,19,27,36,38,44],database:44,datain0:28,datain1:28,datain:28,dataout:28,date:30,dbit:29,dbo:0,dbodeletemethod:[6,7],dbodestroyattribut:[6,7],dbolinkcreatemethod:[6,7,11],dbu:0,debian:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],debug:[15,34,38],decim:29,declar:[0,7,14],declar_interfac:0,decod:28,decor:38,decreas:38,dedic:[6,18,29],deep:36,deeper:6,deepli:[13,38],def:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40],defab:0,defaultstyl:[17,33],defaultvalu:33,defin:[5,6,7,9,11,14,25,27,28,29,30,33,36,37,38],define:25,definit:[5,6,7,17],degre:29,delet:[7,9,11,16,18,27,33,38],delta:[25,29],demot:25,denser:38,densiti:[33,38],depend:[5,25,29,34,36,37],deplib:5,depth:38,deriv:0,derivedobject:6,describ:[20,25,29,30,33,37],descript:[0,6],descrob:29,design:0,design_kit:38,desir:29,despit:33,destroi:[6,7,11,16,18],detail:[0,14,17,19,21,33,36],detector:28,deterior:29,determin:7,determinist:38,devel:0,develop:[21,34,38],developp:0,devic:38,devtoolset2:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],devtoolset:34,dff:37,dff_4:28,dfft_4:28,dialog:38,dict:[16,29],dictionari:[7,16],dictionnari:[7,15,27,29,37],did:[9,20,38],differ:[6,11,16,19,25,27,28,29,33,38],differenti:38,diffus:25,digit:[21,29],digitalinit:21,dimens:[25,29,38],direct:[6,7,9,11,25,27,29,30,33,38],directdeletemethod:11,directdestroymethod:11,directgetlongattribut:[6,8,11],directionn:11,directli:[9,15,18,20,21,30,37,38],directori:[0,14,17,19,20,21,29,33],directsetlongattribut:[8,11],disabl:[18,30,38],disambigu:25,disclaim:0,disconnect:19,discrep:20,diseappear:25,displac:38,displai:[7,19,33,38],display:38,distanc:[20,25,44],distinguish:[25,38],distribut:[34,36],disturb:37,ditch:38,divid:30,divis:29,dksdir:20,dl_export:[6,7],dobreak:[14,15,19,21],doc:[11,14,19,21,29,34],dochip:37,document:[9,12,13,18,19,23,26,29,31,33,34,36,37,38,39],docutil:34,doe:[7,29],doesn:[29,38],dogleg:38,don:[7,17,18,34,37],done:[7,14,29,33,38],dosometh:[18,37],dot:[36,38],dotfil:35,doubl:9,down:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],download:38,doxygen:[1,2,3,4,32,34,37,40],dozen:38,dp_sxlib:33,dpgen:0,dpgenadsb2f:0,dpgenand2:0,dpgenand3:0,dpgenand4:0,dpgenbuff:0,dpgenbus:0,dpgenconst:0,dpgendff:0,dpgendfft:0,dpgenfifo:0,dpgeninv:0,dpgenmux2:0,dpgennand2:0,dpgennand2mask:0,dpgennand3:0,dpgennand4:0,dpgennbus:0,dpgennmux2:0,dpgennor2:0,dpgennor2mask:0,dpgennor3:0,dpgennor4:0,dpgennul:0,dpgenor2:0,dpgenor3:0,dpgenor4:0,dpgenram:0,dpgenrf1:0,dpgenrf1d:0,dpgenrf1dr0:28,dpgenrf1r0:28,dpgenrom2:0,dpgenrom4:0,dpgensff:0,dpgensfft:0,dpgenshift:0,dpgenshrot:0,dpgenxnor2:0,dpgenxnor2mask:0,dpgenxor2:0,dpi:38,drain:25,draw:[14,25,38],drawn:38,drc:25,drive:[28,37],driven:33,drop:[34,36],druc:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],due:[33,38],dumb:33,dummi:[17,33,34,37],dump:[16,36,38],duplic:29,dupui:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],dure:[30,38],durole:35,dx1:29,dx2:29,dy1:29,dy2:29,dyld_framework_path:34,dyld_library_path:17,dynam:[9,18,28,34],dynamic_cast:6,each:[7,9,11,19,25,27,28,29,30,33,37,38],eas:[15,33],easi:29,easier:[25,27,29],easiest:34,easili:[18,33,38],east:[29,37],ec322005072076ef53984462fb4a1075c27c7dfd:34,edg:[25,37,38],editor:[0,14,15,19,21,25,27],edu:35,effect:[28,30,38],effort:[21,33,38],egin:30,ego:15,eight:29,either:[7,25,28,29,30,34,37,38],el7_64:34,electr:18,electric:25,element:[14,16,27,38],elif:29,els:[6,7,9,11,29,33],emit:7,empti:[28,38],emul:[7,34],enabl:[28,38],encapsul:[0,6,7],encompass:9,encount:[34,44],end:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,45],endif:[6,7,9,11],endl:[6,7,16],endswith:[16,33],enforc:19,eng:35,engin:21,engineloadgrbynet:21,enginenonetlayerassign:21,enough:[19,29,37],enrich:18,ent:6,enter:38,entir:9,entiti:6,entitycast:6,entri:[17,33,37,38],enumer:[29,33],env:29,envelop:29,envenli:38,environ:[0,14],eplac:38,eponym:38,equal:[28,29,38],equival:[18,19,29,38,44],eras:[37,38],error:[0,6,7,9,21,28],esc:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],escap:38,escassut:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],especi:14,essai:29,etc:[14,17,29,33,34,37],etesian:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],etesianengin:21,eval:[17,34],even:[19,25,28,36,37],evenli:38,event:[30,34,38],eventslimit:38,ever:16,everi:[7,27,29,33,38],everybodi:21,everyth:[7,33,38],evolv:34,exacltli:25,exact:[14,34,37],exactli:[15,25,34,37,38],exampl:[0,5,6,7,8],except:[7,14,27,29],excess:38,execut:0,exempl:[27,29,38],exist:[16,17,29,33,38,44],exit:[37,38],expand:25,expansion:29,expect:[8,19,33,37],expens:8,experi:38,explain:19,explan:[14,38],explanat:25,explanatori:[7,18],explicit:[8,14,19],explicitli:18,expor:38,expos:[7,9,16],exposur:9,express:[14,18,20,25,29,33,38,44],ext:25,extand:29,extend:[25,27,29],extens:[0,14,15],extent:[33,37,38],extern:[6,7,9,11,14,18,19,27,29,37],extra:[33,38],extract:[7,30],extractor:25,extreme:33,face:29,facil:0,fact:[6,9],factor:[36,38,44],fail:[6,7],failsaf:38,failur:38,fairli:38,fals:[6,7,17,27,28,29,33,38],familiar:[9,23,24],fanci:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],far:[9,26],fashion:9,fast:[33,34,38],fc13:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],fc_64:34,featur:38,fedora:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],feedthru:38,feel:18,fgr:38,fhs:34,field:[6,7,11,38],fifo:28,fifo_4_16:28,figur:[25,29,38],file:0,file_nam:29,filenam:[29,30,33],fillcel:0,filler:19,filler_1:19,filler_2:19,filter:[0,19],find:[19,29,33,34],fine:38,finger:38,finish:[14,27,29],first:[0,5,7],fit:[14,15,19,21,29,38],five:25,fix:[0,14,25,30],flag:[14,18,19,21,25,28,38],flatten:[13,37,38],flavor:[7,11],flip:28,flop:28,flow:[29,38],flute:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],fly:19,follow:[5,6,7,9,14,18,25,28,29,30,33,34,37,38],fonction:29,footprint:38,forc:[7,30,37,38],forget:17,forgotten:29,form:[29,33,38],format:[20,29,30,36,38],found:[9,14,19,21,29,33,34],founder:25,foundri:[14,25],four:[7,25,28,37,38],fourth:28,framework:[14,16,19,21,34,36],franck:25,free:[21,38],freebsd:34,freed:18,freedpk:17,freepdk45:20,freepdk:20,freepdk_45:17,from:[6,7,8,9,11,14,16,18],fromlambda:[14,18,19,21],full:28,fulladd:[19,21,29],fulli:[14,21],fuse:[14,18],futur:9,gabriel:35,gap:38,garbag:18,gate:[25,28,38],gaug:[25,33,38],gcell:38,gdb:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],gdsii:38,gener:[0,1,2,3,4],generic_method_head:[6,7,11],genlib:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],geometr:[25,29,37],get:[7,8,9,13],get_cata_lib:27,getcel:[6,7,16,19,21],getcompon:16,getdb:[14,19],getenv:33,getheight:6,getlay:[14,19],getmasternet:19,getnam:16,getnet:[6,16,19,21],getobjectid:[7,11],getplug:[19,21],getrefxy:0,getstr:[18,38],gettechnolog:[14,19],getwidth:6,getx:[6,8,11],gety:[6,11],ghdl:29,gigant:9,git:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],github:34,give:[5,6,14,25,27,28,29,36,38],given:[6,7,9,14,15,19,25,27,28,29,30,33,34,38],global:[0,7,19,25,33,36],globallengththreshold:38,globalripuplimit:38,gnu:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],goal:18,goe:9,good:[5,38],gouvin:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],gpl:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],graal:25,graphic:[0,17,33,34,36,37],great:37,greater:[29,36],grew:38,grid:[0,14],ground:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,31,32,33,34,35,36,37,38,39,40,41,42,44,45],group:[18,36],gscl45nm:20,guarded:28,gui:34,guid:0,hack:0,had:25,halfadd:29,hand:25,handl:[14,29],hard:[28,33],has_kei:[14,15,19,21,33,37],hasn:38,have:[6,7,9,11,14,16,18,19,21,25,27,28,29,30,33,34,36,37,38,44],haven:29,hcatch:[6,7,8,9,11],head:0,header:0,hecadecim:29,height:[6,9,25,29,38],help:[15,34],helper:[0,7,17],here:[1,2,3,4,7,9,19,20,25,30,32,33,34,38,40,41,44,45],herit:27,hesit:37,hexa:29,hexadecim:[29,30],hidden:36,hide:38,hierach:29,hierarchi:0,high:[21,33,38],highest:38,highlight:0,highlit:38,himself:[27,29],histor:25,hmeti:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],hoc:[36,38],hold:[6,9,14,38],holder:13,hole:25,home:[15,20,29,33,34,35],homedir:33,hook:[0,7],hope:9,horizont:[6,14,18,19,25,29,37,38],how:[0,13,14,16,18,19,25,28],howev:[33,38],hspace:37,html:[29,34],htracksreservedloc:38,htry:[6,7,8,9,11],http:[34,35,41,44,45],hugo:35,hundredth:14,hur_techno_name:29,hurrican:[0,1],hurricaneams:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],hurricaneerror:6,hurricaneplug:27,hwidth:37,hypernet:[1,2,3,4,5,6,7,8,9,10,11,12],i0_20:29,i386:34,iastat:35,ident:[6,29,33,38],identifi:[33,37,38],ifndef:[6,7,11],illegal:29,illustr:[14,19,20,37],imag:38,imcomplet:36,immediatli:38,implant:25,implement:[7,9,18,21,33,36,38,43],implemet:33,impli:[11,18],imposs:29,improv:38,in0:29,in1:[28,29],in2:[28,29],in3:[28,29],in4:28,in_lo:33,in_ph:33,includ:[5,6,7,9,11,18,29,34,36,38],include:34,inclus:38,incompat:29,incompatibilit:34,increas:[25,38],inde:38,indeed:[27,29],indent:18,index:[25,29,43],indic:[27,29],indirect:6,individu:[25,38],infinit:[17,34,38],info:[17,33,38],inform:[9,14,15,25,38,44],inherit:[7,27],init:[7,11],inithurrican:[6,7],initi:[6,7,30,33,38],initialis:[0,7,17,27,29,30],innov:36,inout:[27,29],input:[27,28,29,30,36],insert:[14,33,37],insid:[7,14,15,21,25,38],inspect:38,inspector:0,inst:[27,28,29],inst_adsb2f:28,inst_and2:28,inst_and3:28,inst_and4:28,inst_buff:28,inst_bus:28,inst_const:28,inst_dff:28,inst_dfft:28,inst_fifo:28,inst_inv:28,inst_mux2:28,inst_nand2:28,inst_nand2mask:28,inst_nand3:28,inst_nand4:28,inst_nbus:28,inst_nmux2:28,inst_nor2:28,inst_nor2mask:28,inst_nor3:28,inst_nor4:28,inst_nul:28,inst_or2:28,inst_or3:28,inst_or4:28,inst_ram:28,inst_rf1:28,inst_rf1d:28,inst_rom2:28,inst_rom4:28,inst_sff:28,inst_sfft:28,inst_shift:28,inst_shrot:28,inst_xnor2:28,inst_xnor2mask:28,inst_xor2:28,instal:[5,14,17,19,20,21,33,34,38],install:34,installat:0,instanc:[0,9,14,18],instanci:[0,6,27],instanciat:[0,27],instanti:0,instantiat:[27,29],instead:[6,9,11,17,20,29,34,38],instens:33,insti:28,insto:28,instop:28,instruct:[29,34,38],instshamt:28,insul:7,integ:[14,30,33],integer_word_length:30,integr:[7,37],intend:38,interact:15,interfac:[0,7,9,14,17,18,19,27,28,29,30,33,36],intermedi:0,intern:[27,29,30,37],interpret:[17,37],interrupt:7,intersect:25,intert:28,interv:29,introduc:[14,34,38],introduct:0,inv:29,inv_54:28,inv_x1:16,invalid:[6,7,9,11],inversor:29,invert:[25,28],inverter:28,invertor:[14,15],invok:29,iowa:35,isdir:33,isn:[29,30],isobar:[5,6,7,8,9,11],isobar_py_component_h:6,isobar_py_contact_h:6,isobar_py_entity_h:6,isobar_py_point_h:11,ispd:38,ispycompon:6,ispycontact:6,ispyentiti:6,ispyhorizont:6,ispylibrari:7,ispypoint:11,ispyvert:6,issu:[9,21],istself:5,ital:38,item:38,iter:[16,38],itself:[7,25],iwl:30,jean:35,json:36,just:[8,9,15,16,19,20,25,29,33,34,38],katabat:[1,2],katana:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],katanaengin:21,keep:[11,21],kei:[7,27,29,37,38],kept:25,keyword:15,kgr:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],kind:[14,16,17],kit:4,kite:[0,1,2,3],knife:38,knik:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37],know:[7,34,37],known:[19,38,44],kwarg:11,lambda:[0,14,20],lanch:17,languag:[0,29,30],larg:38,last:[7,30,33,34,38],lastli:[7,11],latch:28,later:[11,14,19,36,38],latest:[29,34],latex2html:34,latex:34,lauch:37,launch:[15,17,34,37],layer:0,layerassign:21,layout:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],layoutt:33,lbd:14,lcw:25,ld_library_path:17,lead:38,leaf:[13,37,38],least:[33,37],lef:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],lefconvertfactor:44,lefdef:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],lefimport:20,lefimporttmpcel:44,left:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,28,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],legal:[29,30,36],leght:29,lenght:29,length:[14,25,30],lepka:[17,34,37],less:[9,25,38],let:[11,38],letter:29,level:[6,7,8,9,13,14,15,19,25,33,34,37,38],lex:34,lgpl:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],lib:[7,20,34,38],liberti:38,libisobar:9,librari:[0,5,6],libxml2:34,licens:0,life:[11,25],like:[6,7,9,15,16,17,18,21,27,28,29,33,34],limit:[18,19,38],line:[0,34,37],linear:38,linebreak:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],link:0,linker:9,linux:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],lip6:34,list:[0,5,16,19,27],listdir:33,littl:[15,25,38],live:[9,38],load:[0,14,15],loader:[20,36],loadglobalrout:21,local:[33,34,38],localripuplimit:38,locat:[29,37,38],lofig:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],log2:28,log:38,logic:[4,14,18,19,20,29,30,36,38],logicin:27,logicinout:27,logicout:27,logicunknown:27,logmod:[17,33,38],longer:[9,38],longglobalripuplimit:38,look:[0,7,11,14,20,33,34],loop:[16,17,28,29,34,38],lot:[19,44],low:38,lower:[14,19,28,29,33,38],lowercas:[7,14],lsb:[27,29],lybrari:7,maco:34,macos:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33],macport:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],macro:[5,6,7,9,11,28,38,44],made:[9,19,21,25,27,28,29,37,38],mai:[9,11,14,15,16,17,18,19,25,29,33,34,37,38],main:[18,34,36,38],mainli:[33,36,38],maintain:38,make:[7,13],makefil:34,manag:[9,14,18,20],mandatori:[7,14,17,27,28,29,33],mani:[9,18,25,29],manipul:8,manual:[0,9],map:[0,16,27,28],marek:35,margin:[21,33],mark:30,mask:28,masson:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],master:[9,19,21,27,34,38],mastercel:[27,29],masterlibrari:7,masternet:19,match:[16,29,33,38],materi:38,matrix:25,mauka:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],max:33,maxim:38,maximum:38,maxtracelevel:[33,38],mayb:29,mbk:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],mbk_:14,mbk_to_rds_bigvia_hole:0,mbk_to_rds_bigvia_metal:0,mbk_to_rds_segment:0,mbk_to_rds_via:0,mbk_wiresetting:0,mean:[9,16,18,20,25,29,33,34,38,44],meaning:[25,28,29],mechan:[7,9,11,13],medskip:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],member:36,memento:0,memori:[14,16,18,37,38],menu:[15,38],merg:27,messag:[14,15,19,38],metal1:[14,25],metal2:[19,25],metal3:19,metal5:38,metal:[25,38],meth_noargs:[6,7,11],meth_static:[6,7],meth_varargs:[6,7,11],method:[0,7,8,9,11,18,25],method_head:[6,7,11],micromet:[25,44],micron:20,microns:44,middl:29,migrat:36,million:38,miloyip:34,mimic:[7,33],min:33,minim:25,minimum:[37,38],minimumsid:37,minipag:35,minor:[33,38],mintracelevel:[33,38],minut:38,mip:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],mirror:37,misc:[17,33,38],miscellan:0,miss:38,mistak:[7,14,29],mistral:29,mix:[3,4,9,21,34],mkdir:34,mode:0,model:[0,14,18,19,25],modelnam:[28,29],modif:[14,16,29,37,38],modifi:[11,16,17,29,38],modul:[0,5],modular:9,modules_stratu:29,mofic:15,monolith:9,more:[6,14,16,18,25,29,33,36,38],moreov:9,mosi:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],most:[29,33,38],mostli:[5,18,38],mous:38,movabl:38,move:38,msb:[27,29],much:[9,27,29,33,38],multipl:[20,25,29,36,38,44],multiplex:28,multiplexor:[0,27],multipli:[25,29],must:[5,6,7,9,14,15,17,18,19,20,25,29,30,33,34,37,38],mutat:7,mux2_8:28,mux:[27,29],mx2:29,my_addaccu_:29,my_and2_4bit:29,my_dpgen_and2:29,my_inv:14,myclass:[27,29],myfunc:18,myinst1:29,myinst2:29,myinst3:29,myinst:29,mylib:33,mymap:27,mynet:29,myparam:27,myref:29,myself:13,na2:29,na3:29,na4:29,name:[0,5,6,7,9],namespac:[0,5,6],nand2:28,nand2_8:28,nand2mask_0x0000ffff:28,nand3:28,nand3_20:28,nand4:28,nand4_9:28,nand:28,narrow:38,navig:16,nbit:[28,29],nbit_cmd:28,nbsp:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],nbuse29:28,nck:33,ncsu:20,ndif:[14,25,29],nearest:37,need:[5,6,7,9,11,14,17,18,19,21,25,29,33,34,37,38],neg:29,neither:[7,29],nero:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],net8:29,net:[0,6,9,13],neta:29,netb:29,netc:29,netck:29,netcmd:29,netcout:29,netexternalcompon:[14,19],neti0:29,neti1:29,netin:29,netinput:27,netlist:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],netnam:29,neton:29,netout:29,netq:29,nets:29,netv:29,netvdd:29,netvss:29,never:16,nevertheless:29,newer:34,newli:[14,29],newnet:29,newpag:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],next:[29,30,34],nimbu:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],nmux2_5:28,nmx2:29,no2:29,no3:29,no4:29,noflag:21,noindent:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],non:[0,7,9],none:[14,15,19,21,27,33,37,38],nor2:28,nor2_8:28,nor2mask_000111:28,nor3:28,nor3_3:28,nor4:28,nor4_15:28,nor:[7,28,29],normal:[21,38],north:[29,37],nosym:[28,29],notat:[27,29,38],note:[0,6,7,25,28,29,34],now:[6,19,36,38],nterfac:30,ntie:[14,25,29],ntran:[14,29],ntrans:[14,25,29],nul:28,nul_4:28,number:[7,9,11,14,25,27,28,29,30,37,38],nutshel:34,nwell:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],nword:[28,29],nxr2:29,nymous_:16,o2_1:[19,21],o2_x2:[19,21],ob_typ:[6,7,11],object:[6,7,8,9,11,14,15,16,18,19,25,29,33,38],observ:30,obsolet:36,obtain:[25,29,38],obviou:[11,38],obvious:[9,34,37],obviousli:[9,19,25,37],occur:[9,14,28,29],occurr:6,ocp:25,octal:30,odd:[25,37],off:[9,25,29],offset:[25,29],offsetx:29,offsety:29,often:[25,38],old:[9,21,36],older:[34,38],ommit:38,onc:[7,9,29],once:[14,37,38],one:[6,19,28,29,37,38],onli:[6,8,9,13,14,15,16,18,19,20,21,25,27,28,29,30,33,34,36,37,38],only:[7,27,28,29,34],open:[14,15,18,19,21,27,29,38],opencham:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],oper:[0,9,18,19,27,28],operand:28,operat:28,opt:34,optim:[28,34],option:[0,7,15,17,27,28,29,30],optional:[30,34],optionn:[28,29],or2:[28,29],or2_8:28,or3:28,or3_5:28,or4:28,or4_16:28,order:[16,19,27,28,29,33,34,38,43],ordere:37,ordinari:[19,33,37],ored:28,organ:[7,16],orient:25,orientat:19,origin:[9,25,38],osu_soc:20,other:[7,8,9,14,15,18,19,25,29,30,33,34,35,37,38],otherwis:[9,27,28,29,38],ouput:28,our:[7,9,18,33],out:[9,27,28,29],out_lo:33,out_ph:33,outad:34,outil:29,outlin:38,output:[27,28,29,30,36,38],outsid:[5,14,16],over:[8,16,19,21,25],overflow:28,overhang:25,overlap:[25,38],overload:[7,14],overloard:[27,29],overrid:17,overwritten:38,own:[6,29,33,34,38],owner:14,p_a0:37,p_a1:37,p_a2:37,p_a3:37,p_b0:37,p_b1:37,p_b2:37,p_b3:37,p_cin:[29,37],p_ck:37,p_cout:[29,37],p_d0:37,p_d1:37,p_d2:37,p_d3:37,p_f3:37,p_i0:37,p_i1:37,p_i2:37,p_i3:37,p_i4:37,p_i5:37,p_i6:37,p_i7:37,p_i8:37,p_ng:[29,37],p_noe:37,p_np:[29,37],p_ovr:37,p_q0:37,p_q3:37,p_r0:37,p_r3:37,p_vddeck0:[29,37],p_vddeck1:[29,37],p_vddick0:37,p_vsseck0:37,p_vsseck1:[29,37],p_vssick0:[29,37],p_y0:37,p_y1:37,p_y2:37,p_y3:37,p_y:29,p_zero:37,packag:0,pad:[0,14],pad_east:27,pad_north:27,pad_south:27,pad_west:27,padeast:29,padlib:33,padnorth:29,padsouth:29,padwest:29,page:[19,43],pair:[14,29,37],paper:38,para:29,paradigm:33,parallel:34,param:[0,27,28],paramet:[0,7,9,11,19,21],parameterst:[17,21,33],parametertyp:33,paramid:33,paranoid:[17,33],parent:7,pars:[6,29],parser:[25,36],part:[0,6],partial:[6,9,36],particular:[7,15,18],partit:37,paseast:29,pass:[9,19,37],paswest:29,pat:30,patamet:29,path:0,pathnam:29,patli:25,pattern:[0,27],pattern_begin:0,pattern_end:0,patwrit:0,paul:35,pck:37,pck_px:37,pdf:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],pdif:[14,25,29],peopl:9,per:29,percentag:33,perform:[7,28,29,33,34,37,38],perhap:38,peripheri:29,permit:[28,29],persist:9,pharo:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],phfig:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],phseg:25,phvia:25,physic:[0,14,18],physical:29,physical_grid:25,pictur:[29,38],piec:29,pin:[18,19,29,44],pitch:[25,29],pixel:38,pixmap:38,place:[0,9,13,14,18],placeandrout:21,placebottom:0,placecentr:0,placecontact:0,placed:19,placeglu:0,placeleft:0,placement:[0,19,21,27,29,33,36],placementstatu:19,placepin:0,placer:0,placeref:0,placerengin:37,placeright:0,placeseg:0,placetop:0,plain:8,plane:37,pleas:[14,29],plot:29,plu:29,plug:[13,14,18],plugin:0,point1:29,point2:29,point:[7,8,9,11,14,18,19,25,29,30,33,37,38],pointer:[6,7,9,11],poli:[14,25,29],polici:33,poly:[14,25,29],polysilicium:25,pop:28,popup:38,port:[27,29,30,34,36],posit:[14,25,29,37,38],possibl:[7,15,18,19,25,29,33,37,38],postfix:37,power:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],powerr:0,practic:[5,25],pre:38,preced:30,precis:[9,14,29,44],predic:7,prefix:[25,37,38],preliminari:36,prepend:33,prerequisit:34,presenc:6,present:[6,16,18,34,38],press:38,pretti:[20,33],previou:[25,29,33,38],previous:[6,7,21,37],price:38,print:[0,16,18,33],printabl:[12,23,26,31,39],printer:38,prior:[14,20,21,38],problem:34,proce:34,procedur:[29,30,31,38],process:[16,17,19,29,33,36,38],produc:30,profil:34,progess:18,program:[7,9,29],programm:28,progress:15,project:34,propag:[37,38],properti:[7,30],proprieti:30,protocol:16,provid:[0,7,8,9,14,17],proxyerror:8,ptie:[25,29],ptran:[14,29],ptrans:[14,25,29],pub:34,pull:34,pure:[17,18,33,38],purist:25,purpos:[15,29,38],push:28,pust:29,put:[7,9,11,25,29,33,37,38],pvddeck:37,pvddeck_px:37,pvddick:37,pvddick_px:37,pvsseck:37,pvsseck_px:37,pvssick:37,pvssick_px:37,pwell:[25,29],pxlib:33,py_incref:[6,7],py_initmodul:[6,7],py_library_h:7,py_return_none:[6,8],pyany_aslong:[8,11],pyarg_parsetupl:[7,8,9,11],pycel:[6,7],pycell_link:[6,7],pycfunct:[6,7,11],pycompon:[6,9],pycomponent:6,pycomponent_destroi:6,pycomponent_getnet:6,pycomponent_getx:6,pycomponent_gety:6,pycomponent_link:6,pycomponent_linkpytyp:6,pycomponent_method:6,pycomponent_o:[6,9],pycontact:6,pycontact_cr:[6,9],pycontact_destroi:6,pycontact_getheight:6,pycontact_getwidth:6,pycontact_link:[6,9],pycontact_linkpytyp:6,pycontact_method:6,pycontact_o:6,pycpp:5,pydatabas:7,pydatabase_o:7,pydatabse_o:7,pydbu_fromlong:8,pyentiti:6,pyentity:6,pyentity_destroi:6,pyentity_getcel:6,pyentity_link:6,pyentity_linkpytyp:6,pyentity_method:6,pyentity_new:6,pyentity_o:6,pyerr_clear:9,pyerr_setstr:[6,7,8,9,11],pyhorizont:6,pyhorizontal_link:6,pyhorizontal_o:6,pyhurrican:[5,6,7,11],pyhurricane_method:[6,7],pyinclud:5,pyinstanc:9,pyinstance_link:9,pylay:9,pylayer_o:9,pylibrari:[5,7,9],pylibrary:7,pylibrary_cr:7,pylibrary_dealloc:7,pylibrary_destroi:7,pylibrary_getcel:7,pylibrary_link:7,pylibrary_linkpytyp:7,pylibrary_method:7,pylibrary_o:7,pymethoddef:[6,7,11],pymodule_addobject:[6,7],pynet:[6,9],pynet_link:6,pynet_o:9,pyobject:[6,7,8,9,11],pyobject_head:[6,7,11],pyobject_new:11,pypoint:[8,11],pypoint_dealloc:11,pypoint_getx:[8,11],pypoint_gety:11,pypoint_init:11,pypoint_link:11,pypoint_linkpytyp:11,pypoint_method:11,pypoint_new:11,pypoint_o:11,pypoint_setx:[8,11],pypoint_sety:11,pyseg:6,pystring_asstr:7,python27:34,python2:34,python:[0,1,2,3,4,5],pythoncpp:12,pythonpath:[17,38],pythontutori:23,pytype_ready:[6,7],pytype_ready_sub:6,pytypecompon:[6,9],pytypecontact:6,pytypeent:6,pytypeinheritedobjectdefinit:6,pytypelay:9,pytypelibrari:[5,7],pytypenet:9,pytypeobject:[6,7,11],pytypeobjectdefinit:[7,11],pytypeobjectlinkpytyp:[6,7],pytypeobjectlinkpytypenewinit:11,pytypepoint:11,pytyperootobjectdefinit:6,pyvert:6,pyvertical_link:6,pyvertical_o:6,qt5:34,quadri:37,quadruplet:33,quadtre:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],qualiti:38,quarter:37,queri:14,quit:[27,38],rail:0,ram:[28,37],ram_32_32:28,ram_clock:37,ramlib:33,rang:[29,30],rapidjson:34,rather:38,ratio:[21,33,38],rcw:25,rds:0,rds_activ:25,rds_alu1:25,rds_alu2:25,rds_alu3:25,rds_alu4:25,rds_alu5:25,rds_alu6:25,rds_cont:25,rds_gate:25,rds_ndif:25,rds_nimp:25,rds_pdif:25,rds_pimp:25,rds_poly:25,rds_via1:25,rds_via2:25,rds_via3:25,rds_via4:25,rds_via5:25,reach:[9,38],reachabl:38,read:[7,28,33,36,44],readabl:38,readi:14,real:[0,7,14,16],realli:38,reason:25,recent:[25,29],recommand:38,recommended:30,record:38,rectang:25,rectangl:25,recurs:0,red:38,redefin:[6,33],redefinit:6,redhat:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],redirect:38,redraw:38,redund:25,ref:28,refer:0,refin:7,reflect:38,refnam:29,refresh:[27,29,38],reg:[27,29],regard:[18,29],regexp:33,regist:[0,5,7,27,28],regnumb:28,rel:[14,25,29,30,34],relat:[6,11,19,30,33,38],releas:[0,34,35],relev:[6,7,37],reli:[9,25,34,38],reload:38,remain:[6,7,11,16,38],remark:[6,33,38],rememb:6,remind:13,remov:[16,37,38],ren:28,renam:[37,44],render:38,reopen:15,reorganis:37,repeatedli:38,replac:[18,33,36,38],replic:7,repositori:[34,36],repres:[19,25,29,30,38,44],represent:38,request:[16,28,37],requir:[0,9,27,33],reserv:38,reset:[7,28,38],resizeab:0,resolut:[18,38],respect:[9,33,38],respons:[7,38],rest:[15,21],restart:[37,38],restructuredtext:34,result:[7,9,15,16,18,19,28,33,38],retain:9,retir:37,revers:[6,9],rewrit:[9,36],rewritten:36,rf1_4_16:28,rf1d_4_16:28,rf2lib:33,rflib:33,rhel6:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],rhel7:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],right:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,28,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],ring:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],rip:38,ripup:38,ripupcost:38,rise:[25,29],risk:25,rok:28,rom2_0b1010_0b1100:28,rom4_0b1010_0b1100_0b1111_0b0001:28,rom:28,romlib:33,root:[7,9,14,19,21,33,34],roselyn:30,rot_m:29,rot_p:29,rotat:[19,28,29],rotop:28,rout:[0,18,21,25,27],routabl:38,routag:38,routageck:29,routeck:0,router:[0,14],routingdriven:[33,38],row:19,rowend_x0:19,rp1:19,rp2:19,rpm:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],rsave:0,rubber:38,rule:[25,37,38],ruler:38,run:[14,15,17,20,21,29,33,34,37,38],runglobalrout:21,runnabl:14,runnegoci:21,runtim:38,s2r:25,safeti:38,sai:[9,17,19,34,37],said:14,sake:[6,14],same:[5,6,9,14,16,19,25,27,29,30,33,38],sarri:28,satur:38,saturateratio:38,saturaterp:38,save:[0,6,7],savecel:[14,19,21],scan:28,scarri:38,scheme:[37,38],scientif:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],scin:28,scn6m_deep_09:33,scope:18,scout:28,screen:38,script:[0,14],scriptmain:[14,15,19,21,37,38],scrub:7,search:[16,33,43],second:[0,9,14,19,25,28,29],section:[33,34,44],secur:33,see:[7,9,14,15,18,19,25,27,29,30,33,34,37,38],seem:[25,29,34,44],seen:[7,21],sefl:29,segment:[0,14,19],sel0:28,sel1:28,sel:28,select:[0,19,28],self:[6,7,8,11,18,27,28,29,30,33],selr:28,selram:28,selw:28,semant:18,send:25,sensit:29,sentinel:[6,7,11],separ:[7,9,25,27,34,37,38],sequenc:[21,29,38],sequenti:33,serv:[3,4],set:[0,5,7,8],setabutmentbox:[14,15,19],setadd:29,setand:29,setbuff:29,setcel:[14,15,19,21],setcomp:29,setdiv:29,seteditor:37,setextern:[14,19,21],setglob:[14,19,21],setmult:29,setmux:29,setnet:[19,21],setnot:29,setor:29,setplacementstatu:19,setrefin:0,setreg:29,setshift:29,settermin:[14,15],settransform:19,setup:[7,14,17,21,33,34],setx:[8,11],setxor:29,sety:11,seven:38,sever:[9,27,29,38],sff2:29,sff3:29,sff:29,sff_4:28,sfft_4:28,shadow:16,shamt:28,shape:[21,25],share:[0,5,6],she:6,shelf:9,shell:[17,29,34],shellsuccess:37,shift:[27,28,29,38],shifter:[0,27,28],shifter_4:28,ship:36,shortcut:0,should:[9,11,17,29,30,34,38],shouldn:25,show:[9,14,16,25,33,38],shown:[7,25,29,33,37],shrot_4:28,si2:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],side:[25,29,37,38],sig:27,sign:[28,29,33],signal:[0,3,4,19,27,28],signalin:[28,29,30],signalinout:[28,29,30],signalout:[28,29,30],signalunknown:29,signatur:[6,7,9],silli:25,similar:[6,38],similarli:30,simpl:[0,20,25,33],simplest:[14,33],simpli:[14,16,25,29],simplif:[19,34],simplifi:[17,29,34],simul:[29,30,36,37],sinc:16,singl:38,site:33,size:[25,28,29,30,37,38],skip:16,slanski:29,slice:29,slight:18,sligthli:34,slot:38,slow:38,slsoc6x:34,slsoc6x_64:34,small:[21,23,24,25,29,33,37,38],smallest:[28,44],smallskip:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],snapshot:0,snx:20,soc:[33,34],socket:38,softwar:0,sole:15,solut:38,solv:38,some:[0,9,14,16,18,25,27],someth:[14,18],sometim:19,somewhat:19,soon:37,sophi:[27,28,29,35],sourc:[14,25,29,34,36,38],sout:[19,21,29],sout_1:[19,21],south:[29,37],space:[21,25,29,33,37,38],spacemargin:[21,33,38],span:11,spec:34,special:[7,17,18],specif:[7,18,33,37,38],specifi:[28,29,38],speed:38,speedup:36,spl1:29,split:[9,37,38],spread:[21,38],squar:[21,25],src:34,sroka:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],st_config:29,stabl:34,stack:7,stage:0,stai:25,stamp:30,stand:38,standalon:0,standard:[7,9,11],standard_instances_list:27,standart:37,standpoint:25,start:[18,25,29,38],starter:13,state:[14,16,18,19,21,35,38],statement:44,static_cast:[6,8],statu:19,stechno:37,step:[6,7,25,29,33,34,37,38,44],still:[6,11,26,34,36,38],stimuli:0,stimulu:30,stl:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],stop:[14,15,19,21,37,38],storag:44,store:[7,8,14,18,28,38],straightforward:20,straigthforward:19,strap:38,strapripuplimit:38,strategi:37,stratu:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26],stratus1:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],stratus2:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],stratus:29,stratus_mapping_name:29,stream:38,strict:[19,25],string:[7,14,18,28,29,30,33],stroke:38,strongli:38,strongly:30,struct:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],structur:0,stuck:[25,28],stuff:27,style:[7,38],sub:[17,29,30,37],subject:38,subsequ:44,substract:[28,29],substractor:28,subtli:16,success:37,successful:38,successfulli:[34,38],suffer:38,suffic:[19,38],suffix:37,suit:38,summar:18,summari:37,superpos:38,supli:28,suppl:37,suppli:[7,14],support:[5,7,9,11,18,21,30,34,36,38],suppress:38,sure:37,svn:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],swig:9,swiss:38,sxlib:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],sy_rm:29,sy_rp:29,sym:29,sym_x:29,sym_y:29,symbol:[0,7,14,17,20],symetr:29,symetri:[27,29],symmetri:19,symxy:29,sync:38,synch:38,synonym:21,synopsi:0,syntact:33,syntax:[0,7,18],synthesi:[0,20],synthet:[0,20,36,37],system:[19,29,33,34],system_library:33,tab:[0,19,27,29,33],table:25,tailor:7,take:[7,14,15,21,29,30,38],taken:[9,29,30],talu1:29,talu2:29,talu3:29,talu4:29,talu5:29,talu6:29,talux:25,target:[14,25],task:[6,17,34],taxonomi:33,team:34,technic:0,technolog:[0,14,17,19,20,29],tediou:[17,19,34],tee:38,tell:[7,14,17,25,27,28,33,34,37],temp:29,temp_ext:29,tempext:29,templat:9,temporari:[38,44],ten:9,term:[29,35],termin:0,terminolog:14,test:[0,27],testbench:29,text:[29,37,38],textwidth:35,than:[9,25,29,36,38],thank:[9,27,29,37,38],thei:[7,9,14,16,17,18,25,27,29,33,36,37,38],them:[7,9,18,21,25,34,37,38],therefor:[19,28],thesi:38,thi:[6,7,9,11,12,13,14,16,17,18,19,21,23,24,25,26,27,28,29,30,31,33,34,36,37,38,39,44],thing:30,third:[19,25,28,34],thispagestyl:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],those:[6,7,16,17,19,25,27,28,29,33,34,37,38],though:9,three:[5,7,19,25,28,38],through:[7,9,13,14],througout:25,thu:[7,18,33,38],tie:25,tie_x0:19,time:[6,9,29,30,38],tmp:18,todai:14,todbu:[14,15,19,21],togeth:[28,36],toggl:38,tolambda:14,too:[9,21,25,29,38],tool:[0,9,15,17,18],toolchain:38,toolengin:21,top:[29,34,37,38],topolog:38,toproutinglay:38,total:38,toward:[9,17,29],tp_compar:7,tp_dealloc:7,tp_hash:7,tp_init:11,tp_method:7,tp_new:11,tp_repr:7,tp_str:7,trace:[7,38],track:38,track_spacing_alu1:25,track_spacing_alu2:25,track_spacing_alu3:25,track_spacing_alu4:25,track_spacing_alu5:25,track_spacing_alu6:25,track_spacing_alu7:25,track_spacing_alu8:25,track_width_alu1:25,track_width_alu2:25,track_width_alu3:25,track_width_alu4:25,track_width_alu5:25,track_width_alu6:25,track_width_alu7:25,track_width_alu8:25,transform:[7,18],transistor:25,transit:30,translat:[19,25],transmiss:9,transpar:25,tree:[0,6,9,29],tricki:9,trigger:[33,38],tristat:[27,28,29,30],tristate:27,trough:37,trought:33,truli:33,trunk:33,tty:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],tupl:33,turn:[14,19,38],tutori:0,tweak:38,twenti:29,twentu:29,twice:[9,16,29],two:[6,9,13,14,15,17,18,19,21,25,27,28,29,30,33,34,36,37,38],type:[0,5,6],typebool:[17,21,33,38],typedef:[6,7,8,11],typedoubl:33,typeenumer:[21,33],typeint:[33,37,38],typeopt:33,typepercentag:[21,33,38],typerul:33,typestr:[33,37,38],typetab:33,typetitl:33,typic:[7,33,37],ubuntu:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],uint64_t:8,unabl:34,unbound:8,uncheck:19,undef:[6,29],undefined:29,under:[0,7,9,14,15,17,19,20,21,25,33],underli:9,underscor:29,understand:[9,34,43],uneed:19,unexpectedli:16,unicorn:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31],unifi:38,uniform:[21,33],uniformdens:[21,33,38],uniquif:38,unit:[8,9],units:44,univers:35,unknown:27,unlik:34,unlike:[13,14,36],unlink:33,unmov:38,unplaced:27,unpredict:16,unrout:38,unselect:38,unsign:28,unsupport:38,until:[19,21,38],unzoom:38,updat:7,updatesess:[14,15,18,19,21],upmc:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],upon:[9,29,31],upper:[14,25,28,29,38],uppercas:14,usabl:[11,14,25],usage:[25,38],use:[17,29,30,34],used:[28,38],useful:[0,27],user:0,usersguid:39,using:14,usr:[14,19,21,29],usual:[6,7,14,18],utf:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],val0:28,val1:28,val2:28,val3:28,valid:[7,9,28,37],valu:[0,6,7,11,17],variabl:[7,14,17,25,29,33],variant:28,variou:[7,9,14],vbe:[27,38],vdd:[14,19,21,27,28,29,30,33],vdde:37,vddi:37,vddin:[27,28,29,30],vector:[16,29,30],verbos:38,verboselevel1:[17,33,38],verboselevel2:[17,33,38],veri:[21,33,37,38],version:[5,12,23,26,31,34,38,39,41,44,45],vertic:[6,14,19,25,29,37,38],vertiv:29,vhdl:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],via12:[19,29],via1:29,via23:[19,29],via24:29,via25:29,via26:29,via2:29,via34:29,via35:29,via36:29,via3:29,via45:29,via46:29,via4:29,via56:29,via5:29,via:25,view:[7,14,16,18],viewer:[0,14,15,19,33,36,37],vim:29,vimrc:29,violet:38,virtual:[0,13],visibl:[14,38],visual:[25,38],visualis:14,vlsi:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],vlsisapd:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],vspace:37,vss:[14,19,21,27,28,29,30,33],vsse:37,vssi:37,vssin:[27,28,29,30],vst:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],vtracksreservedloc:38,vwidth:37,w7_64:34,w8_64:34,wai:[7,8,9,14,18,21,25,29,34,37,38],walk:38,walkthrough:16,wallac:29,want:[6,7,9,14,15,16,17,19,27,29,33,34,38],warn:9,weak:38,weakli:14,weari:16,weekli:19,well:[13,14,16,19,25,27,29,37,38],wen:28,were:38,west:[29,37],wether:29,what:[7,9,15,19,25,29,38],whatev:[33,34,38],when:[8,9,17,25,27,28,29,33,34,37,38,44],where:[5,19,20,30,33,38],whether:[6,16,37,38],which:[5,6,7,11,14,15,17,18,19,25,27,29,30,33,34,35,36,37,38,44],white:38,whitespac:38,whithout:[33,37],whitout:38,whole:[6,25,28,36,37,38,44],whose:[18,33],why:[7,9],wich:29,wide:33,wider:38,width:[6,9,14,25,28,29,38],width_vdd:25,width_vss:25,wil:16,window:[33,34,38],wirelength:38,witch:15,within:[29,38],without:[14,15,25,27,28,29,38],wok:28,won:9,word:[28,29,30],word_length:30,work:[7,14,15,18],work_dir:14,work_lib:16,workhors:13,working_library:33,worklib:33,world:14,wors:38,would:[8,9,16,29,33],wrap:[5,7,9],wrapper:[7,9,21,33],write:[9,13,16,28,29,30,33,37,38],written:[7,9,10,11,14,16,18,33],wrong:29,www:[34,41,44,45],wysiwyg:38,x_grid:25,xml:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,29,31,32,33,34,35,36,37,38,39,40,41,42,44,45],xnor2:28,xnor2_8:28,xnor2mask_0b000111:28,xnor:28,xor2:[28,29],xor2_8:28,xor:28,xored:28,xoring:28,xr2:29,xr2_1:[19,21],xr2_2:[19,21],xr2_x1:[19,21],xr2_x2:[19,21],xxxx:34,y_grid:25,y_slice:25,yacc:34,year:[9,38],yet:[6,29,34,38],yield:29,yifei:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,35,36,37,38,39,40,41,42,44,45],yosi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],you:[9,14,15,16,17,18,19,20,21,23,24,25,28,29,30,33,34,37,38],your:[0,9,14,15,17,20],zero:[9,25,28,29],zoom:38},titles:["Comprenhensive Table of Contents","CRL Core Reference","Hurricane Reference","Katabatic Reference","Kite 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","Hurricane+Python Tutorial","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","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":29,"case":[6,7,11,19],"class":[6,7,11,27],"function":[13,29],"new":14,about:[9,16],abutment:14,add:29,addaccu:29,adding:14,additionn:34,addpat:30,advanc:13,affect:29,affect_ani:30,affect_fix:30,affect_int:30,aliment:29,allianc:[26,33,34,38],allianceframework:[14,16],am2901:37,anoth:29,api:[12,41,44],architectur:33,argument:29,arithmet:29,associat:7,attribut:27,base:[6,38],basic:5,blif:20,botch:9,box:14,branch:34,breakpoint:15,buffer:29,build:34,call:44,callback:44,captur:[31,38],cell:[14,16,19,29],cgt:[15,38],chip:37,choic:9,circuit:29,clock:37,cmake:5,collect:16,command:38,comparison:29,complet:[14,19,21],compon:[14,16,25],comprenhens:0,configur:[5,17,29,33,38],connect:19,connector:29,constant:29,constructor:18,content:[0,24],control:38,convers:26,copyupseg:29,core:[1,14,21],corioli:[33,34,37,39,43],coriolisenv:34,creat:[14,19],creation:29,credit:35,crl:[1,14,21],data:[29,38],dbo:[6,7,11],dbu:[8,14],declar:30,declar_interfac:30,def:[41,45],defab:29,deriv:[6,7],descript:[27,29,30],design:[9,38],detail:38,devel:34,developp:27,directori:34,disclaim:9,disk:14,document:43,dpgen:[28,29],dpgenadsb2f:28,dpgenand2:28,dpgenand3:28,dpgenand4:28,dpgenbuff:28,dpgenbus:28,dpgenconst:28,dpgendff:28,dpgendfft:28,dpgenfifo:28,dpgeninv:28,dpgenmux2:28,dpgennand2:28,dpgennand2mask:28,dpgennand3:28,dpgennand4:28,dpgennbus:28,dpgennmux2:28,dpgennor2:28,dpgennor2mask:28,dpgennor3:28,dpgennor4:28,dpgennul:28,dpgenor2:28,dpgenor3:28,dpgenor4:28,dpgenram:28,dpgenrf1:28,dpgenrf1d:28,dpgenrom2:28,dpgenrom4:28,dpgensff:28,dpgensfft:28,dpgenshift:28,dpgenshrot:28,dpgenxnor2:28,dpgenxnor2mask:28,dpgenxor2:28,editor:29,encapsul:[8,10],engine:21,environ:[17,34],error:29,etesian:[21,38],exampl:[14,19,21,29,30,37],execut:[29,38],extens:29,facil:29,file:[5,6,7,11,14,17,19,20,25,29,33],fillcel:29,filter:38,first:[9,33],fix:34,from:19,gener:[18,28,29,33],get:14,getrefxy:29,global:38,graphic:38,grid:25,guid:[27,29,30,39],hack:33,head:7,header:[6,7,11],helper:33,hierarch:[13,19],hierarchi:6,highlight:29,hook:34,how:29,hurrican:[2,10,12,14,16,23,24,37,38],hypernet:13,implement:44,indice:43,initialis:33,inspector:38,installat:34,instanc:[19,27,29],instanci:29,instanciat:29,instanti:29,interfac:[37,38],intermedi:6,introduct:[9,18,29],katabat:3,katana:21,kind:18,kite:[4,38],knik:38,lambda:25,languag:[31,45],layer:[14,38],layout:[14,25,29],lef:[20,44,45],librari:[7,29],licens:35,line:38,link:[7,29],list:29,load:[16,20,33,38],look:38,macos:34,make:[14,15,19],manipul:16,manual:28,map:29,mbk_to_rds_bigvia_hole:25,mbk_to_rds_bigvia_metal:25,mbk_to_rds_segment:25,mbk_to_rds_via:25,mbk_wiresetting:25,measur:14,mechan:14,memento:38,method:[27,29,30],miscella:13,miscellan:38,mode:[20,38],model:27,modul:[6,7,29,30],multiplexor:29,name:[10,29],namespac:7,net:[14,16,19,27,29],netlist:[19,29,31,38],non:11,note:[36,44],occurrenc:13,oper:29,option:38,order:44,packag:[29,34],pad:29,param:29,paramet:[27,29,30,38],part:[7,30],path:[17,29],pattern:[29,30],pattern_begin:30,pattern_end:30,patwrit:30,physic:[19,25],place:[19,29],placebottom:29,placecentr:29,placecontact:29,placeglu:29,placeleft:29,placement:37,placepin:29,placer:[21,38],placeref:29,placeright:29,placeseg:29,placetop:29,plug:19,plugin:37,power:19,powerr:29,print:38,provid:29,python:[6,7,12,23,24,37,38],rail:29,rds:[25,26],real:[20,26],recurs:37,refer:[1,2,3,4,32,40,41,44,45],regist:29,regular:19,releas:36,requir:34,resizeab:29,restrict:16,rout:29,routeck:29,router:[21,38],routingpad:[13,19],rsave:37,runnabl:15,save:[14,37],script:[15,38],second:33,segment:25,select:[33,38],session:14,set:[14,17,34,38],setrefin:29,share:7,shifter:29,shortcut:38,signal:29,simpl:37,snapshot:38,softwar:33,some:29,special:19,stage:33,standalon:[7,11],standard:14,stimuli:29,stratu:[27,29,31,38],structur:5,suppli:19,symbol:[25,26],synopsi:[27,29],syntax:[29,30],synthesi:38,synthet:38,tab:38,tabl:[0,25,43],technic:9,techno:17,technolog:33,termin:6,terminolog:18,test:29,through:15,tool:[21,33,38],topic:13,tran:13,transform:19,tree:[34,37],tutori:[12,23,24],type:7,under:[34,38],understand:44,unicorn:32,unit:[14,44],useful:29,user:[17,29,30,39],using:15,valu:[25,29],variou:18,view:19,viewer:[38,40],virtual:29,welcom:43,wire:19,work:20,yosi:[20,38],your:29}}) \ 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/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":46,"09\u00b5m":27,"0b0001":30,"0b000111":30,"0b0010":31,"0b0110":31,"0b10":31,"0b1001":31,"0b1010":30,"0b1100":30,"0b1110":31,"0b1111":30,"0x0000ffff":30,"0x14":31,"100k":40,"150k":40,"180nm":35,"18\u00b5m":27,"1\u00b5m":27,"2\u00b5m":27,"32b":36,"32x32":40,"45nm":[19,22],"64b":36,"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,36,39,40,46],"else":30,"export":[7,8,9,20,36,38,39],"final":[16,27,36,40],"float":[16,32,35],"function":[1,7,8,9,10,11,13],"goto":40,"import":[8,9,11,16,20,21,22,23,30,31,35,37,38,39,40],"int":13,"long":[10,20,40],"new":[8,9,13],"null":[8,9,10,11,13,30],"public":[20,38],"r\u00e9my":37,"return":[8,9,10,11,13,16,17,18,20,21,23,30,31,35,39,40],"short":11,"static":[8,9,10,11,13,20,22,30,36],"supp\u00e9rior":39,"transient":[16,46],"true":[16,17,19,21,23,27,29,30,31,35,39,40],"try":[16,31,35,40],"void":[8,9,13,20],"while":[10,16,18,20,21,40,46],__add__:29,__and__:29,__c:[8,9,11,13],__div__:29,__geslice__:29,__getitem__:29,__init__:29,__invert__:29,__le__:29,__main__:39,__mul__:29,__name__:39,__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:39,_br:39,_buff:29,_chip:39,_clock:[35,39],_comp:29,_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,_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,_px:35,_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:39,_to_cat:29,_to_merg:29,_tr:39,_type:29,_undercel:29,_xor:29,a2_1:[21,23],a2_2:[21,23],a2_x2:[21,23,31],abc:38,abil:31,abl:[11,17,20,22],about:[1,9],abov:[9,16,17,31,35,36,40],absolut:[13,16,32],abtument:31,abut:[16,21,23,31,39,40],abutmentbox:31,accept:[32,40],access:[8,18,21,31,32,36,38,40],access_class:8,access_object:8,accessor:9,accomod:39,accord:[27,35,39,40],accordingli:11,account:40,accross:11,accumul:32,accur:38,accuraci:40,achiev:38,acknowledg:30,across:[27,35,40],act:7,action:40,activ:[17,27,40],actual:[27,30,32,40],adapt:[19,39],add:[1,9,17,21],add_python_modul:[7,11],add_sub:30,addaccu:1,addd:31,added:38,adder:[30,31],adder_8:30,adding:9,addit:[19,30,31,35,40],addition:31,additionn:1,addmode:35,addpat:1,address:30,addtyp:[8,9],adjac:[15,39],adopt:16,adr:30,advis:40,adw:30,affect:1,affect_ani:1,affect_fix:1,affect_int:1,affili:38,after:[9,16,17,21,22,23,29,31,32,36,39,40],afterward:30,again:[8,9,19,22,36],against:[9,11,22,36,40],ago:11,aim:[20,38],alc_env:36,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,46,47],algorithm:[18,38,40],alia:[19,29,31,36],alias:40,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,36,37,38,39,40],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,allianceconfig:35,alliancetop:35,alloc:[9,20,40],allow:[9,15,16,18,21,27,30,31,32,35,40],almost:[8,19,35,39,40],alon:16,along:[13,40],alpha:38,alphanumer:31,alreadi:[11,18,25,26,31,35,40],also:[5,16,18,20,21,22,27,31,36,40],altern:[35,38,40],alternat:36,although:[27,38,40],alu1:[27,31],alu2:31,alu3:31,alu4:31,alu5:31,alu6:31,alu:31,alux:27,alwai:[9,11,21,30,31,32,40,46],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],amd2901:39,amd2901_crl:39,amd2901_crl_chip:39,amd64:36,amend:35,among:16,amount:[30,46],amp:37,ana:5,anabat:[4,23],analysi:40,analyt:[38,40],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,36,39,40],anneal:[38,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,46,47],anti:40,any:40,anymor:27,anyth:[35,39,40],anywher:40,apach:[43,46,47],api:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],appart:40,appear:[9,21,40],append:[18,31,35,39],appertur:40,appli:[11,21,27,30,31,32,35],applic:40,appropri:[9,31],approx:40,architectur:1,archiv:22,area:[21,23,27,35,40],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:40,around:[10,23,31,39,40],arrow:40,art:40,articul:[16,21],aside:[35,39],asign:32,asim:[31,36],asimut:31,ask:[21,27],aspect:[11,23,35,40],aspectratio:[23,35,40],assembl:35,assign:40,assignment:40,associ:[7,8,9,11,13,21,27,40],associat:[1,8],assum:[22,25,26,40],assume:21,asymetr:27,attempt:10,attribut:[1,8,13,20],author:31,autocmd:31,automat:[19,23,29,31,32,36,39,40],automaticali:31,autotool:36,auxsc35:40,avail:[0,2,3,4,5,6,11,16,19,31,34,35,36,38,42,43,46,47],avala:[38,40],avoid:[21,27,40,46],avot:32,awar:[21,27,30,36,40],axi:27,back:[31,38],background:40,backquot:19,bad:8,balanc:40,base:[1,4,5],bashrc:[19,36],basi:30,basic:1,basiclay:40,bdo:13,becaus:[8,17,23,27,36,38,40],becom:[8,20,31,39,40],bee:[31,40],been:[9,11,16,17,18,20,21,29,30,31,35,38,39,40],befor:[17,21,29,31,32,36,40,46],before:32,beforehand:40,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,46,47],behav:30,behavior:[9,11,13,29,30,31],behaviour:40,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,46,47],belong:[16,31,35,46],below:[9,11,20,21,23,27,29,31,35,36,39,40],benchmark:40,bend:27,best:[13,40],better:21,between:[11,15,20,21,27,30,31,32,35,39,40],bewteen:21,big:[27,31,40],bigger:40,biggest:21,biggestarea:21,bigvia:27,biject:21,bin:[16,21,23,31,36],binari:[31,32,36,40],bind:35,bit:[27,29,30,31,40],black:[19,35],blif:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],blink:40,blob:38,block:[11,20,30,39],blockag:[27,35],blockage:35,bluntli:13,blur:40,boil:27,bood:31,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,46,47],booth:31,bootstrap:36,borrow:11,botch:1,both:[16,23,27,29,31,35,36,39,40],bother:9,bottom:[27,31,39],bound:[35,40],bourn:19,box:11,brace:20,branch:1,breakpoint:16,bring:11,brows:[35,40],buf:31,buf_x2:39,buff_32:30,buffer:[1,29,30],bufnewfil:31,bufread:31,bug:[19,35,38,40],build:[1,7,9,11,16,21,27,35],buildfulladd:[21,23],buildinvertor:[16,17],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,46,47],bunch:9,bundl:36,buri:15,buse:[29,31],buse_8:30,buss:30,button:40,bzip2:36,c2r:[19,36],c30:30,c31:30,c_temp:31,c_x_n:27,c_x_p:27,ca2:[31,32],cach:39,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,46,47],calcul:[31,32],call:[8,9,10,11,13,16,17,18,19,20,21,22,23,29,30,31,32,36,39,40,45],callback:45,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,38,39,40,46],candid:21,cannot:[11,16,20,21,27,30,40],capabl:[11,35,36,39,40],capac:40,capacitor:30,capit:9,captur:1,care:[11,23,31,39,40],carry_1:[21,23],carry_2:[21,23],cast:[8,9],cat:31,catal:35,catalog:[16,18,21,23,35],catchcor:[19,35,40],categori:40,caus:[19,36],cbug:40,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,46,47],cdebug:40,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,40],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,46,47],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:39,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,46,47],chang:[8,13,20,21,30,31,35,38,39,40],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,46,47],charact:[30,35],check:[22,30,31,40],checkbox:40,checker:27,checkout:36,chip:[1,31],chmod:31,choic:1,choos:[9,31,40],chosen:[29,31],chotin:32,chri:37,christian:37,christoph:37,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,46,47],cif:27,cin:[21,23,31],cinfo:40,circuit:1,circular:31,circumv:40,ck_htree:39,ck_htree_bl:39,ck_htree_bl_bl:39,ckin:[29,31,32],ckok:30,clariti:[8,16],class_nam:31,classic:[11,19,35],clean:35,cleaner:21,cleanli:9,clear:[13,39,40],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,46,47],click:40,clock:[1,29,30,31,35],clocktre:[35,39],clone:[19,36,40],close:[9,16,17,20,21,23,35,39,40],closer:31,clue:11,cluster:40,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,46,47],cnchu:37,cobject:10,code:[8,9,11,13,16,19,20,21,35,38,39],coher:[20,40],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,46,47],color:31,com:[36,43,46,47],combin:[21,36],come:40,command:[1,31,36,39],commit:36,common:[9,11,27,30,31,35,38,39,40],commpos:40,commun:[9,11,13],comp:8,compar:32,comparaison:31,comparison:[1,29],compat:36,compatibilti:38,compil:[11,36,40],complement:[30,32],complet:[7,9,11],completli:[11,16,38,40],complex:[11,27],compliant:36,compnent:40,compon:[1,8,11,15],compos:[21,40],compris:40,comput:[11,16,21,30,31,32,35,39,40],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,46,47],configur:1,confus:21,congest:40,conjunct:40,connect:[16,20],connectmap:31,connector:[1,16,27],connexion:[15,20,21,29,31],consecut:39,consequ:[8,21,27,38,46],consid:[7,21,27],consist:36,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,40],contain:[7,11,16,17,18,19,20,22,27,31,32,35,36,38,39,40],contdifn:16,contdifp:16,conterpart:[4,5,27],contest:40,context:39,contpoli:16,contributor:37,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,40],copi:[13,20,31,36,40],copuupseg:31,copyright:[37,43,46,47],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:[7,16,19,21,23,35,36,38,39],coriolis_install:19,coriolis_top:19,coriolisconfigur:35,coriolisenv:[1,19],coriolisinit:35,corner:[16,21,27,31],correct:[31,40],correctli:[23,31],correspond:[29,31,32,40],corrioli:36,cost:40,cougar:27,could:[18,20,31,35,39,40],count:[11,39,40],coupl:40,cours:20,cout:[18,21,23,31],cover:27,cpp:[7,9,11],craft:39,crash:[36,40],creat:[7,8,9,11,13],createcel:[16,17,21,23],creation:[1,16,20,21,23,29],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,46,47],crude:40,csh:36,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,46,47],cumbersom:11,current:[16,23,31,32,35,36,39,40],cursor:40,cwd:35,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,46,47],cygwin:36,damien:37,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,46,47],data:[1,30],databas:[9,11,16,18,20,21,29,38,40,46],database:46,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,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,46,47],debug:[17,36,40],decim:31,declar:[1,9,16],declar_interfac:1,decod:30,decor:40,decreas:40,dedic:[8,20,31],deep:38,deeper:8,deepli:[15,40],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],defab:1,defaultstyl:[19,35],defaultvalu:35,defin:[7,8,9,11,13,16,27,29,30,31,32,35,38,39,40],define:27,definit:[7,8,9,19],degre:31,delet:[9,11,13,18,20,29,35,40],delta:[27,31],demot:27,denser:40,densiti:[35,40],depend:[7,27,31,36,38,39],deplib:7,depth:40,deriv:1,derivedobject:8,describ:[22,27,31,32,35,39],descript:[1,8],descrob:31,design:1,design_kit:40,desir:31,despit:35,destroi:[8,9,13,18,20],detail:[1,16,19,21,23,35,38],detector:30,deterior:31,determin:9,determinist:40,devel:1,develop:[23,36,40],developp:1,devic:40,devtoolset2:[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,46,47],devtoolset:36,dff:39,dff_4:30,dfft_4:30,dialog:40,dict:[18,31],dictionari:[9,18],dictionnari:[9,17,29,31,39],did:[11,22,40],differ:[8,13,18,21,27,29,30,31,35,40],differenti:40,diffus:27,digit:[23,31],digitalinit:23,dimens:[27,31,40],direct:[8,9,11,13,27,29,31,32,35,40],directdeletemethod:13,directdestroymethod:13,directgetlongattribut:[8,10,13],directionn:13,directli:[11,17,20,22,23,32,39,40],directori:[1,16,19,21,22,23,31,35],directsetlongattribut:[10,13],disabl:[20,32,40],disambigu:27,disclaim:1,disconnect:21,discrep:22,diseappear:27,displac:40,displai:[9,21,35,40],display:40,distanc:[22,27,46],distinguish:[27,40],distribut:[36,38],disturb:39,ditch:40,divid:32,divis:31,dksdir:22,dl_export:[8,9],dobreak:[16,17,21,23],doc:[13,16,21,23,31,36],dochip:39,document:[11,14,15,20,21,25,28,31,33,35,36,38,39,40,41],docutil:36,doe:[9,31],doesn:[31,40],dogleg:40,don:[9,19,20,36,39],done:[9,16,31,35,40],dosometh:[20,39],dot:[38,40],dotfil:37,doubl:11,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,46,47],download:40,doxygen:[0,2,3,4,5,6,34,36,39,42],dozen:40,dp_sxlib:35,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:40,drain:27,draw:[16,27,40],drawn:40,drc:27,drive:[30,39],driven:35,drop:[36,38],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,46,47],due:[35,40],dumb:35,dummi:[19,35,36,39],dump:[18,38,40],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,46,47],dure:[32,40],durole:37,dx1:31,dx2:31,dy1:31,dy2:31,dyld_framework_path:36,dyld_library_path:19,dynam:[11,20,30,36],dynamic_cast:8,each:[9,11,13,21,27,29,30,31,32,35,39,40],eas:[17,35],easi:31,easier:[27,29,31],easiest:36,easili:[20,35,40],east:[31,39],ec322005072076ef53984462fb4a1075c27c7dfd:36,edg:[27,39,40],editor:[1,16,17,21,23,27,29],edu:37,effect:[30,32,40],effort:[23,35,40],egin:32,ego:17,eight:31,either:[9,27,30,31,32,36,39,40],el7_64:36,electr:20,electric:27,element:[16,18,29,40],elif:31,els:[8,9,11,13,31,35],emit:9,empti:[30,40],emul:[9,36],enabl:[30,40],encapsul:[1,8,9],encompass:11,encount:[36,46],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,46,47],endif:[8,9,11,13],endl:[8,9,18],endswith:[18,35],enforc:21,eng:37,engin:23,engineloadgrbynet:23,enginenonetlayerassign:23,enough:[21,31,39],enrich:20,ent:8,enter:40,entir:11,entiti:8,entitycast:8,entri:[19,35,39,40],enumer:[31,35],env:31,envelop:31,envenli:40,environ:[1,16],eplac:40,eponym:40,equal:[30,31,40],equival:[20,21,31,40,46],eras:[39,40],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,46,47],escap:40,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,46,47],especi:16,essai:31,etc:[16,19,31,35,36,39],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,36],even:[21,27,30,38,39],evenli:40,event:[32,36,40],eventslimit:40,ever:18,everi:[9,29,31,35,40],everybodi:23,everyth:[9,35,40],evolv:36,exacltli:27,exact:[16,36,39],exactli:[17,27,36,39,40],exampl:[1,7,8,9,10],except:[9,16,29,31],excess:40,execut:1,exempl:[29,31,40],exist:[18,19,31,35,40,46],exit:[39,40],expand:27,expansion:31,expect:[10,21,35,39],expens:10,experi:40,explain:21,explan:[16,40],explanat:27,explanatori:[9,20],explicit:[10,16,21],explicitli:20,expor:40,expos:[9,11,18],exposur:11,express:[16,20,22,27,31,35,40,46],ext:27,extand:31,extend:[27,29,31],extens:[1,16,17],extent:[35,39,40],extern:[8,9,11,13,16,20,21,29,31,39],extra:[35,40],extract:[9,32],extractor:27,extreme:35,face:31,facil:1,fact:[8,11],factor:[38,40,46],fail:[8,9],failsaf:40,failur:40,fairli:40,fals:[8,9,19,29,30,31,35,40],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,46,47],far:[11,28],fashion:11,fast:[35,36,40],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,46,47],fc_64:36,featur:40,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,46,47],feedthru:40,feel:20,fgr:40,fhs:36,field:[8,9,13,40],fifo:30,fifo_4_16:30,figur:[27,31,40],file:1,file_nam:31,filenam:[31,32,35],fillcel:1,filler:21,filler_1:21,filler_2:21,filter:[1,21],find:[21,31,35,36],fine:40,finger:40,finish:[16,29,31],first:[1,7,9],fit:[16,17,21,23,31,40],five:27,fix:[1,16,27,32],flag:[16,20,21,23,27,30,40],flatten:[15,39,40],flavor:[9,13],flip:30,flop:30,flow:[31,40],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,46,47],fly:21,follow:[7,8,9,11,16,20,27,30,31,32,35,36,39,40],fonction:31,footprint:40,forc:[9,32,39,40],forget:19,forgotten:31,form:[31,35,40],format:[22,31,32,38,40],found:[11,16,21,23,31,35,36],founder:27,foundri:[16,27],four:[9,27,30,39,40],fourth:30,framework:[16,18,21,23,36,38],franck:27,free:[23,40],freebsd:36,freed:20,freedpk:19,freepdk45:22,freepdk:22,freepdk_45:19,from:[8,9,10,11,13,16,18,20],fromlambda:[16,20,21,23],full:30,fulladd:[21,23,31],fulli:[16,23],fuse:[16,20],futur:11,gabriel:37,gap:40,garbag:20,gate:[27,30,40],gaug:[27,35,40],gcell:40,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,46,47],gdsii:40,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,46,47],geometr:[27,31,39],get:[9,10,11,15],get_cata_lib:29,getcel:[8,9,18,21,23],getcompon:18,getdb:[16,21],getenv:35,getheight:8,getlay:[16,21],getmasternet:21,getnam:18,getnet:[8,18,21,23],getobjectid:[9,13],getplug:[21,23],getrefxy:1,getstr:[20,40],gettechnolog:[16,21],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,46,47],github:36,give:[7,8,16,27,29,30,31,38,40],given:[8,9,11,16,17,21,27,29,30,31,32,35,36,40],global:[1,9,21,27,35,38],globallengththreshold:40,globalripuplimit:40,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,46,47],goal:20,goe:11,good:[7,40],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,46,47],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,46,47],graal:27,graphic:[1,19,35,36,38,39],great:39,greater:[31,38],grew:40,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,46,47],group:[20,38],gscl45nm:22,guarded:30,gui:36,guid:1,hack:1,had:27,halfadd:31,hand:27,handl:[16,31],hard:[30,35],has_kei:[16,17,21,23,35,39],hasn:40,have:[8,9,11,13,16,18,20,21,23,27,29,30,31,32,35,36,38,39,40,46],haven:31,hcatch:[8,9,10,11,13],head:1,header:1,hecadecim:31,height:[8,11,27,31,40],help:[17,36],helper:[1,9,19],here:[0,2,3,4,5,6,9,11,21,22,27,32,34,35,36,40,42,43,46,47],herit:29,hesit:39,hexa:31,hexadecim:[31,32],hidden:38,hide:40,hierach:31,hierarchi:1,high:[23,35,40],highest:40,highlight:1,highlit:40,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,46,47],hoc:[38,40],hold:[8,11,16,40],holder:15,hole:27,home:[17,22,31,35,36,37],homedir:35,hook:[1,9],hope:11,horizont:[8,16,20,21,27,31,39,40],how:[1,15,16,18,20,21,27,30],howev:[35,40],hspace:39,html:[31,36],htracksreservedloc:40,htry:[8,9,10,11,13],http:[36,37,43,46,47],hugo:37,hundredth:16,hur_techno_name:31,hurricaneerror:8,hurricaneplug:29,hwidth:39,hypernet:[0,2,3,4,5,6,7,8,9,10,11,12,13,14],i0_20:31,i386:36,iastat:37,ident:[8,31,35,40],identifi:[35,39,40],ifndef:[8,9,13],illegal:31,illustr:[16,21,22,39],imag:40,imcomplet:38,immediatli:40,implant:27,implement:[9,11,20,23,35,38,40,45],implemet:35,impli:[13,20],imposs:31,improv:40,in0:31,in1:[30,31],in2:[30,31],in3:[30,31],in4:30,in_lo:35,in_ph:35,includ:[7,8,9,11,13,20,31,36,38,40],include:36,inclus:40,incompat:31,incompatibilit:36,increas:[27,40],inde:40,indeed:[29,31],indent:20,index:[27,31,45],indic:[29,31],indirect:8,individu:[27,40],infinit:[19,36,40],info:[19,35,40],inform:[11,16,17,27,40,46],inherit:[9,29],init:[9,13],inithurrican:[8,9],initi:[8,9,32,35,40],initialis:[1,9,19,29,31,32],innov:38,inout:[29,31],input:[29,30,31,32,38],insert:[16,35,39],insid:[9,16,17,23,27,40],inspect:40,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,35,36,40],install:36,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,36,40],instens:35,insti:30,insto:30,instop:30,instruct:[31,36,40],instshamt:30,insul:9,integ:[16,32,35],integer_word_length:32,integr:[9,39],intend:40,interact:17,interfac:[1,9,11,16,19,20,21,29,30,31,32,35,38],intermedi:1,intern:[29,31,32,39],interpret:[19,39],interrupt:9,intersect:27,intert:30,interv:31,introduc:[16,36,40],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,iowa:37,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:40,ispycompon:8,ispycontact:8,ispyentiti:8,ispyhorizont:8,ispylibrari:9,ispypoint:13,ispyvert:8,issu:[11,23],istself:7,ital:40,item:40,iter:[18,40],itself:[9,27],iwl:32,jean:37,json:38,just:[10,11,17,18,21,22,27,31,35,36,40],katabat:[0,2,3],katana:[0,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,39,40],kept:27,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,46,47],kind:[16,18,19],kit:5,kite:[0,1,2,3,4],knife:40,knik:[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],know:[9,36,39],known:[21,40,46],kwarg:13,lambda:[1,16,22],lanch:19,languag:[1,31,32],larg:40,last:[9,32,35,36,40],lastli:[9,13],latch:30,later:[13,16,21,38,40],latest:[31,36],latex2html:36,latex:36,lauch:39,launch:[17,19,36,39],layer:1,layerassign:23,layout:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],layoutt:35,lbd:16,lcw:27,ld_library_path:19,lead:40,leaf:[15,39,40],least:[35,39],lef:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],lefconvertfactor:46,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,46,47],lefimport:22,lefimporttmpcel:46,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,46,47],legal:[31,32,38],leght:31,lenght:31,length:[16,27,32],lepka:[19,36,39],less:[11,27,40],let:[13,40],letter:31,level:[8,9,10,11,15,16,17,21,27,35,36,39,40],lex:36,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,46,47],lib:[9,22,36,40],liberti:40,libisobar:11,librari:[1,7,8],libxml2:36,licens:1,life:[13,27],like:[8,9,11,17,18,19,20,23,29,30,31,35,36],limit:[20,21,40],line:[1,36,39],linear:40,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,46,47],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,46,47],lip6:36,list:[1,7,18,21,29],listdir:35,littl:[17,27,40],live:[11,40],load:[1,16,17],loader:[22,38],loadglobalrout:23,local:[35,36,40],localripuplimit:40,locat:[31,39,40],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,46,47],log2:30,log:40,logic:[5,16,20,21,22,31,32,38,40],logicin:29,logicinout:29,logicout:29,logicunknown:29,logmod:[19,35,40],longer:[11,40],longglobalripuplimit:40,look:[1,9,13,16,22,35,36],loop:[18,19,30,31,36,40],lot:[21,46],low:40,lower:[16,21,30,31,35,40],lowercas:[9,16],lsb:[29,31],lybrari:9,maco:36,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],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,46,47],macro:[7,8,9,11,13,30,40,46],made:[11,21,23,27,29,30,31,39,40],mai:[11,13,16,17,18,19,20,21,27,31,35,36,39,40],main:[20,36,38,40],mainli:[35,38,40],maintain:40,make:[9,15],makefil:36,manag:[11,16,20,22],mandatori:[9,16,19,29,30,31,35],mani:[11,20,27,31],manipul:10,manual:[1,11],map:[1,18,29,30],marek:37,margin:[23,35],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,46,47],master:[11,21,23,29,36,40],mastercel:[29,31],masterlibrari:9,masternet:21,match:[18,31,35,40],materi:40,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,46,47],max:35,maxim:40,maximum:40,maxtracelevel:[35,40],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,46,47],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,36,40,46],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,46,47],member:38,memento:1,memori:[16,18,20,39,40],menu:[17,40],merg:29,messag:[16,17,21,40],metal1:[16,27],metal2:[21,27],metal3:21,metal5:40,metal:[27,40],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,46],micron:22,microns:46,middl:31,migrat:38,million:40,miloyip:36,mimic:[9,35],min:35,minim:27,minimum:[39,40],minimumsid:39,minipag:37,minor:[35,40],mintracelevel:[35,40],minut:40,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,46,47],mirror:39,misc:[19,35,40],miscellan:1,miss:40,mistak:[9,16,31],mistral:31,mix:[4,5,11,23,36],mkdir:36,mode:1,model:[1,16,20,21,27],modelnam:[30,31],modif:[16,18,31,39,40],modifi:[13,18,19,31,40],modul:[1,7],modular:11,modules_stratu:31,mofic:17,monolith:11,more:[8,16,18,20,27,31,35,38,40],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,46,47],most:[31,35,40],mostli:[7,20,40],mous:40,movabl:40,move:40,msb:[29,31],much:[11,29,31,35,40],multipl:[22,27,31,38,40,46],multiplex:30,multiplexor:[1,29],multipli:[27,31],must:[7,8,9,11,16,17,19,20,21,22,27,31,32,35,36,39,40],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,mylib:35,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:40,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,46,47],nbuse29:30,nck:35,ncsu:22,ndif:[16,27,31],nearest:39,need:[7,8,9,11,13,16,19,20,21,23,27,31,35,36,39,40],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,46,47],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,newer:36,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,46,47],next:[31,32,36],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,46,47],nmux2_5:30,nmx2:31,no2:31,no3:31,no4:31,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,46,47],non:[1,9,11],none:[16,17,21,23,29,35,39,40],nor2:30,nor2_8:30,nor2mask_000111:30,nor3:30,nor3_3:30,nor4:30,nor4_15:30,nor:[9,30,31],normal:[23,40],north:[31,39],nosym:[30,31],notat:[29,31,40],note:[1,8,9,27,30,31,36],now:[8,21,38,40],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],nutshel:36,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,46,47],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,40],observ:32,obsolet:38,obtain:[27,31,40],obviou:[13,40],obvious:[11,36,39],obviousli:[11,21,27,39],occur:[11,16,30,31],occurr:8,ocp:27,octal:32,odd:[27,39],off:[11,27,31],offset:[27,31],offsetx:31,offsety:31,often:[27,40],old:[11,23,38],older:[36,40],ommit:40,onc:[9,11,31],once:[16,39,40],one:[8,21,30,31,39,40],onli:[8,10,11,15,16,17,18,20,21,22,23,27,29,30,31,32,35,36,38,39,40],only:[9,29,30,31,36],open:[16,17,20,21,23,29,31,40],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,46,47],oper:[1,11,20,21,29,30],operand:30,operat:30,opt:36,optim:[30,36],option:[1,9,17,19,29,30,31,32],optional:[32,36],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,36,40,45],ordere:39,ordinari:[21,35,39],ored:30,organ:[9,18],orient:27,orientat:21,origin:[11,27,40],osu_soc:22,other:[9,10,11,16,17,20,21,27,31,32,35,36,37,39,40],otherwis:[11,29,30,31,40],ouput:30,our:[9,11,20,35],out:[11,29,30,31],out_lo:35,out_ph:35,outad:36,outil:31,outlin:40,output:[29,30,31,32,38,40],outsid:[7,16,18],over:[10,18,21,23,27],overflow:30,overhang:27,overlap:[27,40],overload:[9,16],overloard:[29,31],overrid:19,overwritten:40,own:[8,31,35,36,40],owner:16,p_a0:39,p_a1:39,p_a2:39,p_a3:39,p_b0:39,p_b1:39,p_b2:39,p_b3:39,p_cin:[31,39],p_ck:39,p_cout:[31,39],p_d0:39,p_d1:39,p_d2:39,p_d3:39,p_f3:39,p_i0:39,p_i1:39,p_i2:39,p_i3:39,p_i4:39,p_i5:39,p_i6:39,p_i7:39,p_i8:39,p_ng:[31,39],p_noe:39,p_np:[31,39],p_ovr:39,p_q0:39,p_q3:39,p_r0:39,p_r3:39,p_vddeck0:[31,39],p_vddeck1:[31,39],p_vddick0:39,p_vsseck0:39,p_vsseck1:[31,39],p_vssick0:[31,39],p_y0:39,p_y1:39,p_y2:39,p_y3:39,p_y:31,p_zero:39,packag:1,pad:[1,16],pad_east:29,pad_north:29,pad_south:29,pad_west:29,padeast:31,padlib:35,padnorth:31,padsouth:31,padwest:31,page:[21,45],pair:[16,31,39],paper:40,para:31,paradigm:35,parallel:36,param:[1,29,30],paramet:[1,9,11,13,21,23],parameterst:[19,23,35],parametertyp:35,paramid:35,paranoid:[19,35],parent:9,pars:[8,31],parser:[27,38],part:[1,8],partial:[8,11,38],particular:[9,17,20],partit:39,paseast:31,pass:[11,21,39],paswest:31,pat:32,patamet:31,path:1,pathnam:31,patli:27,pattern:[1,29],pattern_begin:1,pattern_end:1,patwrit:1,paul:37,pck:39,pck_px:39,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,46,47],pdif:[16,27,31],peopl:11,per:31,percentag:35,perform:[9,30,31,35,36,39,40],perhap:40,peripheri:31,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,46,47],phseg:27,phvia:27,physic:[1,16,20],physical:31,physical_grid:27,pictur:[31,40],piec:31,pin:[20,21,31,46],pitch:[27,31],pixel:40,pixmap:40,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,35,38],placementstatu:21,placepin:1,placer:1,placeref:1,placerengin:39,placeright:1,placeseg:1,placetop:1,plain:10,plane:39,pleas:[16,31],plot:31,plu:31,plug:[15,16,20],plugin:1,point1:31,point2:31,point:[9,10,11,13,16,20,21,27,31,32,35,39,40],pointer:[8,9,11,13],poli:[16,27,31],polici:35,poly:[16,27,31],polysilicium:27,pop:30,popup:40,port:[29,31,32,36,38],posit:[16,27,31,39,40],possibl:[9,17,20,21,27,31,35,39,40],postfix:39,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:40,preced:32,precis:[11,16,31,46],predic:9,prefix:[27,39,40],preliminari:38,prepend:35,prerequisit:36,presenc:8,present:[8,18,20,36,40],press:40,pretti:[22,35],previou:[27,31,35,40],previous:[8,9,23,39],price:40,print:[1,18,20,35],printabl:[14,25,28,33,41],printer:40,prior:[16,22,23,40],problem:36,proce:36,procedur:[31,32,33,40],process:[18,19,21,31,35,38,40],produc:32,profil:36,progess:20,program:[9,11,31],programm:30,progress:17,project:36,propag:[39,40],properti:[9,32],proprieti:32,protocol:18,provid:[1,9,10,11,16,19],proxyerror:10,ptie:[27,31],ptran:[16,31],ptrans:[16,27,31],pub:36,pull:36,pure:[19,20,35,40],purist:27,purpos:[17,31,40],push:30,pust:31,put:[9,11,13,27,31,35,39,40],pvddeck:39,pvddeck_px:39,pvddick:39,pvddick_px:39,pvsseck:39,pvsseck_px:39,pvssick:39,pvssick_px:39,pwell:[27,31],pxlib:35,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,pyseg:8,pystring_asstr:9,python27:36,python2:36,python:[0,1,2,3,4,5,6,7],pythoncpp:14,pythonpath:[19,40],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,qt5:36,quadri:39,quadruplet:35,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,46,47],qualiti:40,quarter:39,queri:16,quit:[29,40],rail:1,ram:[30,39],ram_32_32:30,ram_clock:39,ramlib:35,rang:[31,32],rapidjson:36,rather:40,ratio:[23,35,40],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,40],reachabl:40,read:[9,30,35,38,46],readabl:40,readi:16,real:[1,9,16,18],realli:40,reason:27,recent:[27,31],recommand:40,recommended:32,record:40,rectang:27,rectangl:27,recurs:1,red:40,redefin:[8,35],redefinit:8,redhat:[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,46,47],redirect:40,redraw:40,redund:27,ref:30,refin:9,reflect:40,refnam:31,refresh:[29,31,40],reg:[29,31],regard:[20,31],regexp:35,regist:[1,7,9,29,30],regnumb:30,rel:[16,27,31,32,36],relat:[8,13,21,32,35,40],releas:[1,36,37],relev:[8,9,39],reli:[11,27,36,40],reload:40,remain:[8,9,13,18,40],remark:[8,35,40],rememb:8,remind:15,remov:[18,39,40],ren:30,renam:[39,46],render:40,reopen:17,reorganis:39,repeatedli:40,replac:[20,35,38,40],replic:9,repositori:[36,38],repres:[21,27,31,32,40,46],represent:40,request:[18,30,39],requir:[1,11,29,35],reserv:40,reset:[9,30,40],resizeab:1,resolut:[20,40],respect:[11,35,40],respons:[9,40],rest:[17,23],restart:[39,40],restructuredtext:36,result:[9,11,17,18,20,21,30,35,40],retain:11,retir:39,revers:[8,11],rewrit:[11,38],rewritten:38,rf1_4_16:30,rf1d_4_16:30,rf2lib:35,rflib:35,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,46,47],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,46,47],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,46,47],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,46,47],rip:40,ripup:40,ripupcost:40,rise:[27,31],risk:27,rok:30,rom2_0b1010_0b1100:30,rom4_0b1010_0b1100_0b1111_0b0001:30,rom:30,romlib:35,root:[9,11,16,21,23,35,36],roselyn:32,rot_m:31,rot_p:31,rotat:[21,30,31],rotop:30,rout:[1,20,23,27,29],routabl:40,routag:40,routageck:31,routeck:1,router:[1,16],routingdriven:[35,40],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,46,47],rsave:1,rubber:40,rule:[27,39,40],ruler:40,run:[16,17,19,22,23,31,35,36,39,40],runglobalrout:23,runnabl:16,runnegoci:23,runtim:40,s2r:27,safeti:40,sai:[11,19,21,36,39],said:16,sake:[8,16],same:[7,8,11,16,18,21,27,29,31,32,35,40],sarri:30,satur:40,saturateratio:40,saturaterp:40,save:[1,8,9],savecel:[16,21,23],scan:30,scarri:40,scheme:[39,40],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,46,47],scin:30,scn6m_deep_09:35,scope:20,scout:30,screen:40,script:[1,16],scriptmain:[16,17,21,23,39,40],scrub:9,search:[18,35,45],second:[1,11,16,21,27,30,31],section:[35,36,46],secur:35,see:[9,11,16,17,20,21,27,29,31,32,35,36,39,40],seem:[27,31,36,46],seen:[9,23],sefl:31,segment:[1,16,21],sel0:30,sel1:30,sel:30,select:[1,21,30],self:[8,9,10,13,20,29,30,31,32,35],selr:30,selram:30,selw:30,semant:20,send:27,sensit:31,sentinel:[8,9,13],separ:[9,11,27,29,36,39,40],sequenc:[23,31,40],sequenti:35,serv:[4,5],set:[1,7,9,10],setabutmentbox:[16,17,21],setadd:31,setand:31,setbuff:31,setcel:[16,17,21,23],setcomp:31,setdiv:31,seteditor:39,setextern:[16,21,23],setglob:[16,21,23],setmult:31,setmux:31,setnet:[21,23],setnot:31,setor:31,setplacementstatu:21,setrefin:1,setreg:31,setshift:31,settermin:[16,17],settransform:21,setup:[9,16,19,23,35,36],setx:[10,13],setxor:31,sety:13,seven:40,sever:[11,29,31,40],sff2:31,sff3:31,sff:31,sff_4:30,sfft_4:30,shadow:18,shamt:30,shape:[23,27],share:[1,7,8],she:8,shelf:11,shell:[19,31,36],shellsuccess:39,shift:[29,30,31,40],shifter:[1,29,30],shifter_4:30,ship:38,shortcut:1,should:[11,13,19,31,32,36,40],shouldn:27,show:[11,16,18,27,35,40],shown:[9,27,31,35,39],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,46,47],side:[27,31,39,40],sig:29,sign:[30,31,35],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,40],similarli:32,simpl:[1,22,27,35],simplest:[16,35],simpli:[16,18,27,31],simplif:[21,36],simplifi:[19,31,36],simul:[31,32,38,39],sinc:18,singl:40,site:35,size:[27,30,31,32,39,40],skip:18,slanski:31,slice:31,slight:20,sligthli:36,slot:40,slow:40,slsoc6x:36,slsoc6x_64:36,small:[23,25,26,27,31,35,39,40],smallest:[30,46],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,46,47],snapshot:1,snx:22,soc:[35,36],socket:40,softwar:1,sole:17,solut:40,solv:40,some:[1,11,16,18,20,27,29],someth:[16,20],sometim:21,somewhat:21,soon:39,sophi:[29,30,31,37],sourc:[16,27,31,36,38,40],sout:[21,23,31],sout_1:[21,23],south:[31,39],space:[23,27,31,35,39,40],spacemargin:[23,35,40],span:13,spec:36,special:[9,19,20],specif:[9,20,35,39,40],specifi:[30,31,40],speed:40,speedup:38,spl1:31,split:[11,39,40],spread:[23,40],squar:[23,27],src:36,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,46,47],st_config:31,stabl:36,stack:9,stage:1,stai:27,stamp:32,stand:40,standalon:1,standard:[9,11,13],standard_instances_list:29,standart:39,standpoint:27,start:[20,27,31,40],starter:15,state:[16,18,20,21,23,37,40],statement:46,static_cast:[8,10],statu:21,stechno:39,step:[8,9,27,31,35,36,39,40,46],still:[8,13,28,36,38,40],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,46,47],stop:[16,17,21,23,39,40],storag:46,store:[9,10,16,20,30,40],straightforward:22,straigthforward:21,strap:40,strapripuplimit:40,strategi:39,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,46,47],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,46,47],stratus:31,stratus_mapping_name:31,stream:40,strict:[21,27],string:[9,16,20,30,31,32,35],stroke:40,strongli:40,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,46,47],structur:1,stuck:[27,30],stuff:29,style:[9,40],sub:[19,31,32,39],subject:40,subsequ:46,substract:[30,31],substractor:30,subtli:18,success:39,successful:40,successfulli:[36,40],suffer:40,suffic:[21,40],suffix:39,suit:40,summar:20,summari:39,superpos:40,supli:30,suppl:39,suppli:[9,16],support:[7,9,11,13,20,23,32,36,38,40],suppress:40,sure:39,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,46,47],swig:11,swiss:40,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,46,47],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:40,synch:40,synonym:23,synopsi:1,syntact:35,syntax:[1,9,20],synthesi:[1,22],synthet:[1,22,38,39],system:[21,31,35,36],system_library:35,tab:[1,21,29,31,35],table:27,tailor:9,take:[9,16,17,23,31,32,40],taken:[11,31,32],talu1:31,talu2:31,talu3:31,talu4:31,talu5:31,talu6:31,talux:27,target:[16,27],task:[8,19,36],taxonomi:35,team:36,technic:1,technolog:[1,16,19,21,22,31],tediou:[19,21,36],tee:40,tell:[9,16,19,27,29,30,35,36,39],temp:31,temp_ext:31,tempext:31,templat:11,temporari:[40,46],ten:11,term:[31,37],termin:1,terminolog:16,test:[1,29],testbench:31,text:[31,39,40],textwidth:37,than:[11,27,31,38,40],thank:[11,29,31,39,40],thei:[9,11,16,18,19,20,27,29,31,35,38,39,40],them:[9,11,20,23,27,36,39,40],therefor:[21,30],thesi:40,thi:[8,9,11,13,14,15,16,18,19,20,21,23,25,26,27,28,29,30,31,32,33,35,36,38,39,40,41,46],thing:32,third:[21,27,30,36],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,46,47],those:[8,9,18,19,21,27,29,30,31,35,36,39,40],though:11,three:[7,9,21,27,30,40],through:[9,11,15,16],througout:27,thu:[9,20,35,40],tie:27,tie_x0:21,time:[8,11,31,32,40],tmp:20,todai:16,todbu:[16,17,21,23],togeth:[30,38],toggl:40,tolambda:16,too:[11,23,27,31,40],tool:[1,11,17,19,20],toolchain:40,toolengin:23,top:[31,36,39,40],topolog:40,toproutinglay:40,total:40,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,40],track:40,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:[35,40],tristat:[29,30,31,32],tristate:29,trough:39,trought:35,truli:35,trunk:35,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,46,47],tupl:35,turn:[16,21,40],tutori:1,tweak:40,twenti:31,twentu:31,twice:[11,18,31],two:[8,11,15,16,17,19,20,21,23,27,29,30,31,32,35,36,38,39,40],type:[1,7,8],typebool:[19,23,35,40],typedef:[8,9,10,13],typedoubl:35,typeenumer:[23,35],typeint:[35,39,40],typeopt:35,typepercentag:[23,35,40],typerul:35,typestr:[35,39,40],typetab:35,typetitl:35,typic:[9,35,39],ubuntu:[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,46,47],uint64_t:10,unabl:36,unbound:10,uncheck:21,undef:[8,31],undefined:31,under:[1,9,11,16,17,19,21,22,23,27,35],underli:11,underscor:31,understand:[11,36,45],uneed:21,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:40,uniform:[23,35],uniformdens:[23,35,40],uniquif:40,unit:[10,11],units:46,univers:37,unknown:29,unlik:36,unlike:[15,16,38],unlink:35,unmov:40,unplaced:29,unpredict:18,unrout:40,unselect:40,unsign:30,unsupport:40,until:[21,23,40],unzoom:40,updat:9,updatesess:[16,17,20,21,23],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,46,47],upon:[11,31,33],upper:[16,27,30,31,40],uppercas:16,usabl:[13,16,27],usage:[27,40],use:[19,31,32,36],used:[30,40],useful:[1,29],user:1,usersguid:41,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,46,47],val0:30,val1:30,val2:30,val3:30,valid:[9,11,30,39],valu:[1,8,9,13,19],variabl:[9,16,19,27,31,35],variant:30,variou:[9,11,16],vbe:[29,40],vdd:[16,21,23,29,30,31,32,35],vdde:39,vddi:39,vddin:[29,30,31,32],vector:[18,31,32],verbos:40,verboselevel1:[19,35,40],verboselevel2:[19,35,40],veri:[23,35,39,40],version:[7,14,25,28,33,36,40,41,43,46,47],vertic:[8,16,21,27,31,39,40],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,46,47],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,38,39],vim:31,vimrc:31,violet:40,virtual:[1,15],visibl:[16,40],visual:[27,40],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,46,47],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,46,47],vspace:39,vss:[16,21,23,29,30,31,32,35],vsse:39,vssi:39,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,46,47],vtracksreservedloc:40,vwidth:39,w7_64:36,w8_64:36,wai:[9,10,11,16,20,23,27,31,36,39,40],walk:40,walkthrough:18,wallac:31,want:[8,9,11,16,17,18,19,21,29,31,35,36,40],warn:11,weak:40,weakli:16,weari:18,weekli:21,well:[15,16,18,21,27,29,31,39,40],wen:30,were:40,west:[31,39],wether:31,what:[9,11,17,21,27,31,40],whatev:[35,36,40],when:[10,11,19,27,29,30,31,35,36,39,40,46],where:[7,21,22,32,35,40],whether:[8,18,39,40],which:[7,8,9,13,16,17,19,20,21,27,29,31,32,35,36,37,38,39,40,46],white:40,whitespac:40,whithout:[35,39],whitout:40,whole:[8,27,30,38,39,40,46],whose:[20,35],why:[9,11],wich:31,wide:35,wider:40,width:[8,11,16,27,30,31,40],width_vdd:27,width_vss:27,wil:18,window:[35,36,40],wirelength:40,witch:17,within:[31,40],without:[16,17,27,29,30,31,40],wok:30,won:11,word:[30,31,32],word_length:32,work:[9,16,17,20],work_dir:16,work_lib:18,workhors:15,working_library:35,worklib:35,world:16,wors:40,would:[10,11,18,31,35],wrap:[7,9,11],wrapper:[9,11,23,35],write:[11,15,18,30,31,32,35,39,40],written:[9,11,12,13,16,18,20,35],wrong:31,www:[36,43,46,47],wysiwyg:40,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,46,47],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:36,y_grid:27,y_slice:27,yacc:36,year:[11,40],yet:[8,31,36,40],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,46,47],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,36,39,40],your:[1,11,16,17,19,22],zero:[11,27,30,31],zoom:40},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","Hurricane+Python Tutorial","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","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,add:31,addaccu:31,adding:16,additionn:36,addpat:32,advanc:15,affect:31,affect_ani:32,affect_fix:32,affect_int:32,aliment:31,allianc:[28,35,36,40],allianceframework:[16,18],am2901:39,analog:0,anoth:31,api:[14,43,46],architectur:35,argument:31,arithmet:31,associat:9,attribut:29,base:[8,40],basic:7,blif:22,botch:11,box:16,branch:36,breakpoint:17,buffer:31,build:36,call:46,callback:46,captur:[33,40],cell:[16,18,21,31],cgt:[17,40],chip:39,choic:11,circuit:31,clock:39,cmake:7,collect:18,command:40,comparison:31,complet:[16,21,23],compon:[16,18,27],comprenhens:1,configur:[7,19,31,35,40],connect:21,connector:31,constant:31,constructor:20,content:[1,26],control:40,convers:28,copyupseg:31,core:[2,16,23],corioli:[35,36,39,41,45],coriolisenv:36,creat:[16,21],creation:31,credit:37,crl:[2,16,23],data:[31,40],dbo:[8,9,13],dbu:[10,16],declar:32,declar_interfac:32,def:[43,47],defab:31,deriv:[8,9],descript:[29,31,32],design:[11,40],detail:40,devel:36,developp:29,directori:36,disclaim:11,disk:16,document:45,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,encapsul:[10,12],engine:23,environ:[19,36],error:31,etesian:[23,40],exampl:[16,21,23,31,32,39],execut:[31,40],extens:31,facil:31,file:[7,8,9,13,16,19,21,22,27,31,35],fillcel:31,filter:40,first:[11,35],fix:36,from:21,gener:[20,30,31,35],get:16,getrefxy:31,global:40,graphic:40,grid:27,guid:[29,31,32,41],hack:35,head:9,header:[8,9,13],helper:35,hierarch:[15,21],hierarchi:8,highlight:31,hook:36,how:31,hurrican:[0,3,12,14,16,18,25,26,39,40],hypernet:15,implement:46,indice:45,initialis:35,inspector:40,installat:36,instanc:[21,29,31],instanci:31,instanciat:31,instanti:31,interfac:[39,40],intermedi:8,introduct:[11,20,31],katabat:4,katana:23,kind:20,kite:[5,40],knik:40,lambda:27,languag:[33,47],layer:[16,40],layout:[16,27,31],lef:[22,46,47],librari:[9,31],licens:37,line:40,link:[9,31],list:31,load:[18,22,35,40],look:40,macos:36,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:40,method:[29,31,32],miscella:15,miscellan:40,mode:[22,40],model:29,modul:[8,9,31,32],multiplexor:31,name:[12,31],namespac:9,net:[16,18,21,29,31],netlist:[21,31,33,40],non:13,note:[38,46],occurrenc:15,oper:31,option:40,order:46,oroshi:6,packag:[31,36],pad:31,param:31,paramet:[29,31,32,40],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:39,placepin:31,placer:[23,40],placeref:31,placeright:31,placeseg:31,placetop:31,plug:21,plugin:39,power:21,powerr:31,print:40,provid:31,python:[8,9,14,25,26,39,40],rail:31,rds:[27,28],real:[22,28],recurs:39,refer:[0,2,3,4,5,6,34,42,43,46,47],regist:31,regular:21,releas:38,requir:36,resizeab:31,restrict:18,rout:31,routeck:31,router:[23,40],routingpad:[15,21],rsave:39,runnabl:17,save:[16,39],script:[17,40],second:35,segment:27,select:[35,40],session:16,set:[16,19,36,40],setrefin:31,share:9,shifter:31,shortcut:40,signal:31,simpl:39,snapshot:40,softwar:35,some:31,special:21,stage:35,standalon:[9,13],standard:16,stimuli:31,stratu:[29,31,33,40],structur:7,suppli:21,symbol:[27,28],synopsi:[29,31],syntax:[31,32],synthesi:40,synthet:40,tab:40,tabl:[1,27,45],technic:11,techno:19,technolog:35,termin:8,terminolog:20,test:31,through:17,tool:[23,35,40],topic:15,tran:15,transform:21,tree:[36,39],tutori:[14,25,26],type:9,under:[36,40],understand:46,unicorn:34,unit:[16,46],useful:31,user:[19,31,32,41],using:17,valu:[27,31],variou:20,view:21,viewer:[40,42],virtual:31,welcom:45,wire:21,work:22,yosi:[22,40],your:31}}) \ No newline at end of file diff --git a/documentation/etc/definitions.rst b/documentation/etc/definitions.rst index f15293f2..013d3088 100644 --- a/documentation/etc/definitions.rst +++ b/documentation/etc/definitions.rst @@ -68,7 +68,6 @@ .. |MIPS| replace:: :sc:`mips` .. |Am2901| replace:: :sc:`Am2901` .. |Hurricane| replace:: :sc:`Hurricane` -.. |HurricaneAMS| replace:: :sc:`HurricaneAMS` .. |CRL| replace:: :sc:`crl` .. |Alliance| replace:: :sc:`Alliance` .. |Yosys| replace:: :sc:`Yosys` @@ -98,7 +97,6 @@ .. |cgt| replace:: :cb:`cgt` .. |Chams| replace:: :sc:`Chams` .. |OpenChams| replace:: :sc:`OpenChams` -.. |Pharos| replace:: :cb:`Pharos` .. |API| replace:: :sc:`api` .. |STL| replace:: :sc:`stl` .. |XML| replace:: :sc:`xml` diff --git a/documentation/examples/scripts/fulladder.ap b/documentation/examples/scripts/fulladder.ap new file mode 100644 index 00000000..164a59e9 --- /dev/null +++ b/documentation/examples/scripts/fulladder.ap @@ -0,0 +1,16 @@ +V ALLIANCE : 6 +H fulladder,P,11/7/2018,100 +A 0,0,9000,10000 +I 6000,0,rowend_x0,filler_2,NOSYM +I 5000,0,tie_x0,filler_1,NOSYM +I 6500,0,o2_x2,o2_1,NOSYM +I 4500,5000,xr2_x1,xr2_2,SYM_Y +I 0,5000,xr2_x1,xr2_1,SYM_Y +I 2500,0,a2_x2,a2_2,NOSYM +I 0,0,a2_x2,a2_1,NOSYM +S 1000,3500,1000,6000,200,a,UP,ALU3 +S 500,3500,1000,3500,200,a,RIGHT,ALU2 +V 1000,3500,CONT_VIA2,a +V 500,3500,CONT_VIA,a +V 1000,6000,CONT_VIA,a +EOF diff --git a/documentation/examples/scripts/fulladder.gds b/documentation/examples/scripts/fulladder.gds new file mode 100644 index 00000000..3a519c55 Binary files /dev/null and b/documentation/examples/scripts/fulladder.gds differ diff --git a/documentation/examples/scripts/fulladder.vst b/documentation/examples/scripts/fulladder.vst new file mode 100644 index 00000000..2b1fdde6 --- /dev/null +++ b/documentation/examples/scripts/fulladder.vst @@ -0,0 +1,120 @@ + +-- ======================================================================= +-- Coriolis Structural VHDL Driver +-- Generated on Jul 11, 2018, 11:23 +-- +-- To be interoperable with Alliance, it uses it's special VHDL subset. +-- ("man vhdl" under Alliance for more informations) +-- ======================================================================= + +entity fulladder is + port ( a : linkage bit + ; b : linkage bit + ; cin : linkage bit + ; cout : linkage bit + ; sout : linkage bit + ; vdd : linkage bit + ; vss : linkage bit + ); +end fulladder; + +architecture structural of fulladder is + + component xr2_x1 + port ( i0 : in bit + ; i1 : in bit + ; q : out bit + ; vdd : in bit + ; vss : in bit + ); + end component; + + component a2_x2 + port ( i0 : in bit + ; i1 : in bit + ; q : out bit + ; vdd : in bit + ; vss : in bit + ); + end component; + + component o2_x2 + port ( i0 : in bit + ; i1 : in bit + ; q : out bit + ; vdd : in bit + ; vss : in bit + ); + end component; + + component tie_x0 + port ( vdd : in bit + ; vss : in bit + ); + end component; + + component rowend_x0 + port ( vdd : in bit + ; vss : in bit + ); + end component; + + signal carry_1 : bit; + signal carry_2 : bit; + signal sout_1 : bit; + + +begin + + filler_2 : rowend_x0 + port map ( vdd => vdd + , vss => vss + ); + + filler_1 : tie_x0 + port map ( vdd => vdd + , vss => vss + ); + + o2_1 : o2_x2 + port map ( i0 => carry_2 + , i1 => carry_1 + , q => cout + , vdd => vdd + , vss => vss + ); + + xr2_2 : xr2_x1 + port map ( i0 => cin + , i1 => sout_1 + , q => sout + , vdd => vdd + , vss => vss + ); + + xr2_1 : xr2_x1 + port map ( i0 => a + , i1 => b + , q => sout_1 + , vdd => vdd + , vss => vss + ); + + a2_2 : a2_x2 + port map ( i0 => cin + , i1 => sout_1 + , q => carry_2 + , vdd => vdd + , vss => vss + ); + + a2_1 : a2_x2 + port map ( i0 => a + , i1 => b + , q => carry_1 + , vdd => vdd + , vss => vss + ); + +end structural; + diff --git a/documentation/examples/scripts/invertor.ap b/documentation/examples/scripts/invertor.ap new file mode 100644 index 00000000..edb0a1fb --- /dev/null +++ b/documentation/examples/scripts/invertor.ap @@ -0,0 +1,25 @@ +V ALLIANCE : 6 +H invertor,P,11/7/2018,100 +A 0,0,1500,5000 +S 1000,800,1000,1200,300,nq,UP,NDIF +S 1000,2800,1000,3700,300,nq,UP,PDIF +S 1000,1000,1000,4000,200,nq,UP,CALU1 +S 400,2000,700,2000,300,i,RIGHT,POLY +S 700,1400,700,2600,100,i,UP,POLY +S 700,600,700,1400,100,i,UP,NTRANS +S 700,2600,700,3900,100,i,UP,PTRANS +S 500,1000,500,4000,200,i,UP,CALU1 +S 350,400,350,1200,400,vss,UP,NDIF +S 0,300,1500,300,600,vss,RIGHT,CALU1 +S 1000,4300,1000,4800,300,vdd,UP,NTIE +S 350,2800,350,4600,400,vdd,UP,PDIF +S 0,4700,1500,4700,600,vdd,RIGHT,CALU1 +S 750,2700,750,5100,1500,nwell,UP,NWELL +V 1000,1000,CONT_DIF_N,nq +V 1000,3050,CONT_DIF_P,nq +V 1000,3500,CONT_DIF_P,nq +V 500,2000,CONT_POLY,i +V 400,500,CONT_DIF_N,vss +V 400,4500,CONT_DIF_P,vdd +V 1000,4700,CONT_DIF_N,vdd +EOF diff --git a/documentation/examples/scripts/invertor.vst b/documentation/examples/scripts/invertor.vst new file mode 100644 index 00000000..29e592f2 --- /dev/null +++ b/documentation/examples/scripts/invertor.vst @@ -0,0 +1,26 @@ + +-- ======================================================================= +-- Coriolis Structural VHDL Driver +-- Generated on Jul 11, 2018, 16:03 +-- +-- To be interoperable with Alliance, it uses it's special VHDL subset. +-- ("man vhdl" under Alliance for more informations) +-- ======================================================================= + +entity invertor is + port ( i : linkage bit + ; nq : linkage bit + ; vdd : linkage bit + ; vss : linkage bit + ); +end invertor; + +architecture structural of invertor is + + signal nwell : bit; + + +begin + +end structural; + diff --git a/documentation/index.rst b/documentation/index.rst index a690b796..dfb158f6 100644 --- a/documentation/index.rst +++ b/documentation/index.rst @@ -23,12 +23,13 @@ Contents: Unicorn/Unicorn.rst PythonCpp/index.rst RDS/index.rst + Analog/Analog.rst + Oroshi/Oroshi.rst lefapi/lefapi.rst defapi/defapi.rst lefdef/lefdef.rst - Indices and tables ================== diff --git a/hurricane/doc/CMakeLists.txt b/hurricane/doc/CMakeLists.txt index 7bcc2744..5f5417a9 100644 --- a/hurricane/doc/CMakeLists.txt +++ b/hurricane/doc/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(hurricane) add_subdirectory(viewer) +add_subdirectory(analog) diff --git a/hurricane/doc/analog/CMakeLists.txt b/hurricane/doc/analog/CMakeLists.txt new file mode 100644 index 00000000..3481667f --- /dev/null +++ b/hurricane/doc/analog/CMakeLists.txt @@ -0,0 +1,20 @@ +# -*- mode: CMAKE; explicit-buffer-name: "CMakeLists.txt" -*- + + set ( htmlInstallDir share/doc/coriolis2/en/html/analog ) + set ( latexInstallDir share/doc/coriolis2/en/latex/analog ) + set ( doxExtras closed.png + open.png + tabs.css + ) + + if(BUILD_DOC AND DOXYGEN_FOUND) + add_custom_target ( analogDoc ALL + cd ${HURRICANE_SOURCE_DIR}/doc/analog + && ${DOXYGEN_EXECUTABLE} doxyfile + && cp -f ${doxExtras} html + ) + endif() + + install ( DIRECTORY html/ DESTINATION ${htmlInstallDir} ) + install ( DIRECTORY latex/ DESTINATION ${latexInstallDir} ) + install ( FILES asimbook.cls DESTINATION ${latexInstallDir} ) diff --git a/hurricane/doc/analog/MainPage.dox b/hurricane/doc/analog/MainPage.dox new file mode 100644 index 00000000..1d3d8ba1 --- /dev/null +++ b/hurricane/doc/analog/MainPage.dox @@ -0,0 +1,101 @@ +// -*- C++ -*- + +/*! \mainpage + * + * \section secMainDoc Software Architecture + * + * + * \subsection ssecUniqueInstance Unique Instance-Cell Relationship + * + * MetaTransistor and Device are derived classes of Cell and are the + * building blocks of all analogic designs. + * - MetaTransistor(s) are used to build the Devices, and \e only them. + * - Device(s) are then assembled into more complex design. + * + * The important point to remember is that Device and MetaTransistor + * \b are Cell(s). + * + * \note An analogy can be made between the Devices and the Standard Cells + * in the numeric world. + * + * In Analog designs, Devices and MetaTransistors are all parametriseds + * in such a way that each one become effectively unique. So any + * Device or MetaTransistor is only instanciated once with it's specific + * set of parameter's values, thus there is a \b unique relationship between + * a Device and it's instance. We can keep tab of only one of the two. + * As the Cell contains more information, this is the one we choose. + * But we still need the Instance to perform (store) the placement + * informations. So, how to get the Instance from one Device. + * + * Method 1: name matching. + * + * For the sake of clarity, we impose that the Device name must be identical + * to the instance name. This way we can lookup for an Instance in the + * top device with the same name as the current model. We assume that we + * indeed have the containing Cell in handy: + * +\code +Instance* instance = parentCell->getInstance( cell->getName() ); +\endcode + * + * Method 2: Slave instance. + * + * In the Hurricane data structure, every Device (Cell) keep track of the + * Instances pointing to it. Since there should be only one in analogic, + * we can do the following: + * +\code +Instance* instance = cell->getSlaveInstances().getFirst(); +\endcode + * + * + * \subsection ssecWhyMetaTrans Why Meta-Transistor + * + * The Hurricane database does not have true support for transistor + * as Cell(s), only a dedicated layer for Segment. Hence the + * implementation of the MetaTransistor in Hurricane/Analog. It provides + * a Cell derived class with four connectors (\c G , \c S , \c D , + * \c B ) and a comprenhensive set of electrical parameters. + * + * It is meant to represent a complete transistor, not a finger + * of a larger one, it \b is the larger one... + * + * + * \subsection ssecClassOrg Class Organization + * + * Almost UML schema of the Device related classes. + * + * \image html device_schema_1_uml.png + * + * For the Transistor device: + * + * -# The netlist is fixed and generated (in C++) in the Transistor, by + * instanciating one MetaTransistor. + * -# The layout is generated on the fly by calling the relevant + * python sceript. + * -# The parameters, which are commons to all the Transistor based + * devices are created in TransistorFamily. The parameters are created + * through the Device parameter factory and stored at the Device level. + * A pointer to the concrete type of Parameter is also kept at the + * TransistorFamily level. + * -# The Device::getParameters() method is implemented at this level + * and returns a TransistorArguments pointer. + * -# Parameters are used to set up the Device characteristics, either + * programmatically or through the Pharos graphical + * interface. + * -# Arguments, on the other hand, are mostly used to + * transmit the setting of a Device (i.e. it's Parameters values) + * to the Python script in charge of the layout generation. + * Arguments have Python wrapper PyArguments, and it is copies of + * the values that are transmitted. + * + * + * \subsection ssecOpenQuestions Open questions + * + * -# As Arguments are used to transmit parameters, why not simply + * encapsulate Parameters in a Python wrapper? Thus completly + * suppressing Arguments. And by the way, using pointers to + * to make the relationship bi-directionnal (event if it's not + * needed now). + */ + diff --git a/hurricane/doc/analog/SoC.css b/hurricane/doc/analog/SoC.css new file mode 100644 index 00000000..44bae898 --- /dev/null +++ b/hurricane/doc/analog/SoC.css @@ -0,0 +1,872 @@ + + +/* + * +-----------------------------------------------------------------+ + * | HTML Standart Tags | + * +-----------------------------------------------------------------+ + */ + + html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 { + font-size: 11pt; + /* The Open Sans font family is supplied by TexLive. */ + font-family: "Open Sans", Verdana, sans-serif;; + } + + html { + background: #dddddd; + } + + body { + color: black; + background: white; + background-color: white; + background-position: top left; + background-attachment: fixed; + background-repeat: no-repeat; + margin-top: 2em; + width: 600pt; + margin-right: auto; + margin-left: auto; + padding: 30pt; + /* + margin-right: 12%; + margin-left: 12%; + */ + } + + hr { + height: 1px; + border: 0; + color: #004400; + background-color: #004400; + } + + + h1, h2, h3, h4, h5, h6 { + /*font-family: "URW Bookman L", "Liberation Serif", sans-serif;*/ + font-family: "URW Bookman L"; + } + + h1.header { text-align: center; } + h1 { text-align: left; } + h2, h3, h4, h5, h6 { text-align: left; + padding-top: 11pt; + } + h1, h2, h3 { /*font-family: "Liberation Serif", sans-serif; */ + /*color: #09550B;*/ + } + h1 { font-weight: bold; font-size: 170%; /*letter-spacing:0.2em; word-spacing:0.4em;*/ } + h2 { font-weight: bold; font-size: 140%; /*letter-spacing:0.2em; word-spacing:0.4em;*/ } + h3 { font-weight: bold; font-size: 118%; /*letter-spacing:0.2em; word-spacing:0.4em;*/ } + h4 { font-weight: bold; font-size: 100%; } + h5 { font-style: italic; font-size: 100%; } + h6 { font-variant: small-caps; font-size: 100%; } + + h2.classHierarchy { + /*border: 1px none #008500;*/ + border: 1px none #000000; + border-top-width: 1px; + border-top-style: dotted; + padding-top: 1em; + } + + + .hide { + display: none; + color: white; + } + + + p { + margin-top: 0.6em; + margin-bottom: 0.6em; + margin-left: 0.0em; + margin-right: 0.0em; + } + + + address { + text-align: right; + font-weight: bold; + font-style: italic; + font-size: 80%; + } + + + caption { font-weight: bold } + + + blockquote { + margin-left: 4em; + margin-right: 4em; + margin-top: 0.8em; + margin-bottom: 0.8em; + font-style: italic; + color: #003300; + } + + blockquote p { + margin-bottom: 0; + } + + blockquote address { + margin: 0; + } + + + table { + border-collapse: collapse; + } + + dt, dd { margin-top: 0; margin-bottom: 0; } + dt { font-weight: bold; } + + + pre, tt, code { + /*font-family: "andale mono", monospace;*/ + font-size: 100%; + white-space: pre; + } + + pre { + font-size: 80%; + /*border: dashed;*/ + border-width: thin; + border-color: #003300; + /*background-color: #EEEEEE;*/ + background-color: #FCFCE1; + padding: 0.5em; + margin-left: 2em; + margin-right: 2em + } + +/* + tt { color: green; } + */ + em { font-style: italic; + font-weight: normal; } + strong { font-weight: bold; } + + span.textit { font-style: italic; } + span.textbf { font-weight: bold; } + + .small { font-size: 90%; } + .white { color: #FFFFFF; } + + + ul.toc { + list-style: disc; + list-style: none; + } + + + a:link img, a:visited img { border-style: none; } + a img { color: white; } + + a { + color: black; + border-bottom: 1px solid black; + text-decoration: none; + } + + a:link, a:active, a:visited { + /*color: #09550B;*/ + /*text-decoration: none;*/ + } + + a:hover, a:focus { + /*color: #FF9900; */ + border-bottom: 2px solid black; + } + + +/* + * +-----------------------------------------------------------------+ + * | Doxygen Specific Classes | + * +-----------------------------------------------------------------+ + */ + + +/* ------------------------------------------------------------------- + * Header & Footer Classes (customized top page navigation bar). + */ + + h1.header { + font-size: 200%; + /*font-family: times, verdana, sans-serif;*/ + } + + h2.memtitle { + display: none; + } + + center.header { + background-color: #CCE6CA; + } + + table.header { + /*width: 100%;*/ + /*background-color: #EEEEEE;*/ + background-color: #CCE6CA; + } + + div.header { + text-align: center; + margin: 14pt 0pt 0pt 0pt; + } + + div.summary { + color: white; + background-color: black; + border: 4px solid black; + } + + div.summary a { + font-size: 90%; + color: white; + padding: 2px 0px; + text-align: center; + background-color: black; + border-bottom: none; + } + + table.header td { + padding: 2px 14px; + text-align: center; + font-weight: bold; + /*font-family: verdana, sans-serif;*/ + font-size: 110%; + } + + table.UserDefined { + border: 1px solid; + } + + table.UserDefined th { + border: 1px solid; + } + + table.UserDefined td { + padding: 0px 5px; + } + + table.DoxUser td, table.DoxUser th { + padding: 0px 5px; + border: 0px; + } + + table.DoxUser th { + background-color: #CCE6CA; + } + + table.footer1, table.footer2 { width: 100%; } + td.LFooter { text-align: left; } + td.RFooter { text-align: right; } + td.CFooter { text-align: center;} + table.footer2 td.RFooter { font-weight: bold; width: 35% } + table.footer2 td.CFooter { width: 30% } + table.footer2 td.LFooter { font-weight: bold; width: 35%; /*font-family: time;*/ } + + table.classHierarchy { + border-collapse: separate; + border-spacing: 5px; + font-size: 110%; + } + + table.classHierarchy a { + border-style: none; + border-bottom: none; + } + + table.classHierarchy tr { + border: 1px solid blue; + } + + table.classHierarchy td.normal { + border: 1px solid #dddddd; + width: 140pt; + text-align: center; + font-weight: bold; + background-color: #dddddd; + } + + table.classHierarchy td.virtual { + border: 1px solid black; + width: 140pt; + text-align: center; + font-weight: bold; + } + + table.classHierarchy td.wnormal { + border: 1px solid #dddddd; + width: 240pt; + text-align: center; + font-weight: bold; + background-color: #dddddd; + } + + table.classHierarchy td.wvirtual { + border: 1px solid black; + width: 240pt; + text-align: center; + font-weight: bold; + } + + div.ah, span.ah { + font-family: Times; + font-size: 300%; + font-weight: bold; + padding: 20px; + } + + div.title { + text-align: center; + font-size: 200%; + font-weight: bold; + padding: 20px; + border: 2px solid black; + } + + div.center, div.image { + text-align: center; + } + + +/* ------------------------------------------------------------------- + * Top navigation lists. + */ + + span.mlabels { + font-size: 90%; + font-style: italic; + padding-left: 10pt; + margin: 10pt; + border-left: 1px solid black + } + + div.contents { + padding-top: 20pt; + } + + div.tabs { + border-top: 1px solid black; + } + + div.tabs, div.tabs1, div.tabs2, div.tabs3, div.tabs4 { + border-left: 1px solid black; + } + + ul.tablist { + /* + padding: 5pt; + background-color: red; + */ + margin: 0pt; + padding: 0pt; + border-top: none; + border-bottom: none; + border-left: none; + border-right: none; + } + + ul.tablist li { + /* + margin-left: auto; + margin-right: auto; + overflow: auto; + display: inline; + background-color: yellow; + */ + font-size: 90%; + border-top: none; + border-bottom: 1px solid black; + border-left: none; + border-right: 1px solid black; + display: table-cell; + text-align: center; + padding: 2pt; + width: 5%; + } + + ul.tablist li:hover { + background-color: black; + color: white; + } + + ul.tablist li:hover a { + background-color: black; + color: white; + } + + ul.tablist * a { border-bottom: none; } + + ul.tablist * a:link img, ul.tablist * a:visited img { border-style: none; border-bottom: none; } + + ul.tablist * a:link, ul.tablist * a:visited { + color: black; + text-decoration: none; + } + + ul.tablist * a:hover, ul.tablist * a:focus, ul.tablist * a:active { + color: white; + text-decoration: underline; + } + + div.navpath { + padding: 5pt 0pt 0pt 0pt; + } + + .navpath ul { + text-align: center; + } + + .navpath ul li { + display: inline; + list-style-type: none; + padding-left: 20px; + padding-right: 10px; + background-image: url('closed.png'); + background-repeat: no-repeat; + background-position: left; + color: #364D7C; + } + + .navpath ul li a { + border: 2px solid black; + padding-left: 10px; + padding-right: 10px; + font-weight: bold; + color: black; + } + + +/* ------------------------------------------------------------------- + * Quick Index Class (top page navigation bar). + */ + + div.qindex, div.nav { + width: 100%-4px; + /*background-color: #DADAEF;*/ + /*background-color: #eeeeff;*/ + background-color: #cccccc; + /*background-color: #CCE6CA;*/ + border: 0px solid #003300; + text-align: center; + margin: 0px; + padding: 2px; + line-height: 140%; + } + + a.qindex, a.qindex:visited, a.qindex:hover, a.qindexHL, a.el, a.elRef { + text-decoration: none; + /*font-family: Courier;*/ + font-weight: normal; + /*font-size: 110%;*/ + } + + a.qindex, a.qindex:visited { + /*color: #09550B;*/ + color: black; + border: 2px solid #cccccc; + padding: 2px 2px; + border-bottom: none; + } + + a.qindex:hover { + /*background-color: #ddddff;*/ + font-weight: bold; + padding: 2px 2px; + border: 2px solid black; + } + + a.qindexHL, a.qindexHL:hover, a.qindexHL:visited { + background-color: #0c780c; + color: #ffffff; + border: 1px double #9295C2; + } + + a.code:link, a.code:visited, a.codeRef:link, a.codeRef:visited { + text-decoration: none; + font-weight: normal; + color: #0000ff; + } + + .indexkey { + background-color: #eeeeff; + border: 1px solid #b0b0b0; + padding: 2px 15px; + } + + .indexkey, .indexvalue { + background-color: #eeeeff; + border: 1px solid #b0b0b0; + padding: 2px 15px; + } + + .indexkey { + width: 40%; + } + + .indexvalue { + width: 80%; + } + + h3 a[name="index__"], + h3 a[name="index_a"], + h3 a[name="index_b"], + h3 a[name="index_c"], + h3 a[name="index_d"], + h3 a[name="index_e"], + h3 a[name="index_f"], + h3 a[name="index_g"], + h3 a[name="index_h"], + h3 a[name="index_i"], + h3 a[name="index_j"], + h3 a[name="index_k"], + h3 a[name="index_l"], + h3 a[name="index_m"], + h3 a[name="index_n"], + h3 a[name="index_o"], + h3 a[name="index_p"], + h3 a[name="index_q"], + h3 a[name="index_r"], + h3 a[name="index_s"], + h3 a[name="index_t"], + h3 a[name="index_u"], + h3 a[name="index_v"], + h3 a[name="index_w"], + h3 a[name="index_x"], + h3 a[name="index_y"], + h3 a[name="index_z"], + h3 a[name="index_0"], + h3 a[name="index_1"], + h3 a[name="index_2"], + h3 a[name="index_3"], + h3 a[name="index_4"], + h3 a[name="index_5"], + h3 a[name="index_6"], + h3 a[name="index_7"], + h3 a[name="index_8"], + h3 a[name="index_9"] + h3 a[id="index__"], + h3 a#index_a, + h3 a#index_b, + h3 a#index_c, + h3 a#index_d, + h3 a#index_e, + h3 a#index_f, + h3 a#index_g, + h3 a#index_h, + h3 a#index_i, + h3 a#index_j, + h3 a#index_k, + h3 a#index_l, + h3 a#index_m, + h3 a#index_n, + h3 a#index_o, + h3 a#index_p, + h3 a#index_q, + h3 a#index_r, + h3 a#index_s, + h3 a#index_t, + h3 a#index_u, + h3 a#index_v, + h3 a#index_w, + h3 a#index_x, + h3 a#index_y, + h3 a#index_z, + h3 a#index_0, + h3 a#index_1, + h3 a#index_2, + h3 a#index_3, + h3 a#index_4, + h3 a#index_5, + h3 a#index_6, + h3 a#index_7, + h3 a#index_8, + h3 a#index_9, + h3 a#index_0x7e + { + font-family: time; + font-size: 250%; + text-align: center; + } + + +/* ------------------------------------------------------------------- + * Verbatim Source Code / Examples. + */ + + div.fragment { + font-family: "Monospace"; + font-size: 80%; + border: none; + /*border-width: thin; */ + /*border-color: #003300;*/ + /*background-color: #FCFCE1;*/ + background-color: #fefefe; + padding: 0.5em; + margin-left: 5%; + margin-right: 5% + } + + div.line { + white-space: pre; + padding: 0pt; + margin: 0pt; + } + + span.keyword { color: #008000 } + span.keywordtype { color: #604020 } + span.keywordflow { color: #e08000 } + span.comment { color: #800000 } + span.preprocessor { color: #806020 } + span.stringliteral { color: #002080 } + span.charliteral { color: #008080 } + span.red { color: red } + + +/* ------------------------------------------------------------------- + * Attributes Listing. + */ + + a.el, a.elRef { + font-family: Courier; + font-weight: bold; + font-size: 110%; + color: black; + border-bottom: none; + } + + p.formulaDsp { + text-align: center; + } + + .mdTable { + /*border: 1px solid #868686;*/ + /*background-color: #DADAEF;*/ + /*background-color: #F4F4FB;*/ + border: 1px none #008500; + border-left-width: 1px; + border-left-style: solid; + /*background-color: #B8E6B8;*/ + /*background-color: #CCE6CA;*/ + margin-top: 25px; + font-size: 105%; + } + + .mdRow { + padding: 5px 10px; + } + + /* This Mozilla/Firefox bug has been corrected from v1.5. + * .mdname1 { + * padding: 3px 0px 0px 0px; + * } + */ + + .mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + font-size: 11px; + font-style: italic; + /*background-color: #FAFAFA;*/ + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; + } + + .memitem { + margin-bottom: 30px; + border: 1px none #008500; + } + + .memproto { + /*background-color: #CCE6CA;*/ + background-color: #cccccc; + border-left-width: 4px; + border-left-style: solid; + /*border-color: #008500;*/ + border-color: black; + } + + .memname { + white-space: nowrap; + padding-left: 5px; + font-size: 105%; + } + + table.memname * { + font-family: "Monospace"; + } + + + .memdoc{ + padding-left: 5px; + /*margin-top: -8px;*/ + border-left-width: 1px; + border-left-style: solid; + /*border-color: #008500;*/ + border-color: black; + } + + div.contents * table tr { + padding: 3px 3px 3px 8px; + } + + .memSeparator { + font-size: 1pt; + } + + .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight { + vertical-align: top; + /*padding: 1px 0px 0px 8px;*/ + padding: 3px 3px 3px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + /* + border-top-color: #0c0c0c; + border-right-color: #0c0c0c; + border-bottom-color: #0c0c0c; + border-left-color: #0c0c0c; + */ + border-top-style: none; + border-right-style: none; +/* + border-bottom-style: dotted; +*/ + border-left-style: none; + /*background-color: #DADAEF;*/ + /*background-color: #eeeeff;*/ + /*background-color: #EEEEEE;*/ + /*background-color: #CCE6CA;*/ + font-family: "Monospace"; + } + + .memTemplItemLeft, .memTemplItemRight { + border-bottom-width: 2px; + border-bottom-style: solid; + font-weight: bold; + } + + .memItemLeft { font-size: 11px; width: 35%; } + .memItemRight { font-size: 12px; } + .memTemplItemLeft { font-size: 11px; } + .memTemplItemRight { font-size: 12px; } + + .memTemplParams { + color: #FFFFFF; + background-color: #000000; + font-size: 11px; + font-weight: bold; + } + + .groupText, .groupHeader { + color: #09550B; + font-size: 130%; + font-weight: bold; + margin-top: 15px; + } + + .groupHeader { + margin-bottom: -30pt; + } + + .inherit { + display: none; + } + + +/* ------------------------------------------------------------------- + * General Classes Index. + */ + + span.icona { + margin-right: 10pt; + } + + div.toc li.level1 { + margin-left: 0px; + } + + div.toc li.level2 { + margin-left: 15px; + display: none; + } + + div.toc li.level3 { + margin-left: 30px; + display: none; + } + + div.toc li.level4 { + margin-left: 45px; + display: none; + } + + .directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; + } + + .directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; + } + + + div.directory { + margin: 10px 0px; + border-top: 2px solid black; + border-bottom: 2px solid black; + width: 100%; + } + + .directory table { + border-collapse: collapse; + } + + .directory td { + margin: 0px; + padding: 0px; + vertical-align: top; + } + + .directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; + } + + .directory td.entry a { + outline: none; + } + + .directory td.entry a img { + border: none; + } + + .directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); + } + + .directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; + } + + .directory img { + vertical-align: -30%; + } diff --git a/hurricane/doc/analog/asimbook.cls b/hurricane/doc/analog/asimbook.cls new file mode 100644 index 00000000..54270780 --- /dev/null +++ b/hurricane/doc/analog/asimbook.cls @@ -0,0 +1,798 @@ +%% +%% This is file `book.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% classes.dtx (with options: `book') +%% +%% This is a generated file. +%% +%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the LaTeX base system. +%% -------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% base system. You may however distribute the LaTeX base system without +%% such generated files. +%% +%% The list of all files belonging to the LaTeX base distribution is +%% given in the file `manifest.txt'. See also `legal.txt' for additional +%% information. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{asimbook} + [2005/11/21 v1.0 + ASIM LaTeX document class] +\newcommand\@ptsize{} +\newif\if@restonecol +\newif\if@titlepage +\@titlepagetrue +\newif\if@openright +\newif\if@mainmatter \@mainmattertrue +\if@compatibility\else +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}} +\DeclareOption{a5paper} + {\setlength\paperheight {210mm}% + \setlength\paperwidth {148mm}} +\DeclareOption{b5paper} + {\setlength\paperheight {250mm}% + \setlength\paperwidth {176mm}} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +\DeclareOption{landscape} + {\setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima}} +\fi +\if@compatibility + \renewcommand\@ptsize{0} +\else +\DeclareOption{10pt}{\renewcommand\@ptsize{0}} +\fi +\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +\DeclareOption{12pt}{\renewcommand\@ptsize{2}} +\if@compatibility\else +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +\fi +\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\if@compatibility\else +\DeclareOption{final}{\setlength\overfullrule{0pt}} +\fi +\DeclareOption{titlepage}{\@titlepagetrue} +\if@compatibility\else +\DeclareOption{notitlepage}{\@titlepagefalse} +\fi +\if@compatibility +\@openrighttrue +\else +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +\fi +\if@compatibility\else +\DeclareOption{onecolumn}{\@twocolumnfalse} +\fi +\DeclareOption{twocolumn}{\@twocolumntrue} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\DeclareOption{openbib}{% + \AtEndOfPackage{% + \renewcommand\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand\newblock{\par}}% +} +\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright} +\ProcessOptions +\input{bk1\@ptsize.clo} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand\baselinestretch{} +\setlength\parskip{0\p@ \@plus \p@} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\setcounter{topnumber}{2} +\renewcommand\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand\textfraction{.2} +\renewcommand\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand\dbltopfraction{.7} +\renewcommand\dblfloatpagefraction{.5} +%%%% Select Chapter font. +\newcommand \textchapter [1] {\textsf{\textbf{#1}}} +\newcommand \fontchapter {\sffamily \bfseries} +\if@twoside + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter. \ % + \fi + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection. \ % + \fi + ##1}}}} +\else + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter. \ % + \fi + \fi + ##1}}}} +\fi +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\@gobbletwo + \let\chaptermark\@gobble + \let\sectionmark\@gobble + } + \if@titlepage + \newcommand\maketitle{\begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \let \footnote \thanks + \null\vfil + \vskip 60\p@ + \begin{center}% + {\LARGE \@title \par}% + \vskip 3em% + {\large + \lineskip .75em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1.5em% + {\large \@date \par}% % Set date in \large size. + \end{center}\par + \@thanks + \vfil\null + \end{titlepage}% + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\else +\newcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{plain}\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\def\@maketitle{% + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\LARGE \@title \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \@date}% + \end{center}% + \par + \vskip 1.5em} +\fi +\newcommand*\chaptermark[1]{} +\setcounter{secnumdepth}{2} +\newcounter {part} +\newcounter {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +\renewcommand \thepart {\@Roman\c@part} +\renewcommand \thechapter {\@arabic\c@chapter} +\renewcommand \thesection {\thechapter.\@arabic\c@section} +\renewcommand\thesubsection {\thesection.\@arabic\c@subsection} +\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection} +\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph} +\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} +\newcommand\@chapapp{\chaptername} +\newcommand\frontmatter{% + \cleardoublepage + \@mainmatterfalse + \pagenumbering{roman}} +\newcommand\mainmatter{% + \cleardoublepage + \@mainmattertrue + \pagenumbering{arabic}} +\newcommand\backmatter{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \@mainmatterfalse} +\newcommand\part{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \thispagestyle{plain}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname\nobreakspace\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \if@openright + \null + \thispagestyle{empty}% + \newpage + \fi + \fi + \if@tempswa + \twocolumn + \fi} +\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +%%%%\def\@makechapterhead#1{% +%%%% \vspace*{50\p@}% +%%%% {\parindent \z@ \raggedright \normalfont +%%%% \ifnum \c@secnumdepth >\m@ne +%%%% \if@mainmatter +%%%% \huge\bfseries \@chapapp\space \thechapter +%%%% \par\nobreak +%%%% \vskip 20\p@ +%%%% \fi +%%%% \fi +%%%% \interlinepenalty\@M +%%%% \Huge \bfseries #1\par\nobreak +%%%% \vskip 40\p@ +%%%% }} + \newlength \titlewidth + \setlength \titlewidth {\textwidth} + \addtolength \titlewidth {\marginparwidth} + \addtolength \titlewidth {\marginparsep} + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedleft \fontchapter + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \huge \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \hsize=\titlewidth + \Huge #1 \par\nobreak + \hsize=\textwidth + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +%%%%\def\@makeschapterhead#1{% +%%%% \vspace*{50\p@}% +%%%% {\parindent \z@ \raggedright +%%%% \normalfont +%%%% \interlinepenalty\@M +%%%% \Huge \bfseries #1\par\nobreak +%%%% \vskip 40\p@ +%%%% }} + \def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \hsize=\titlewidth + \flushright + \Huge \bfseries #1\par\nobreak + \hsize=\textwidth + \vskip 40\p@ + }} +\newcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}} +\newcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\bfseries}} +\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} +\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} +\if@twocolumn + \setlength\leftmargini {2em} +\else + \setlength\leftmargini {2.5em} +\fi +\leftmargin \leftmargini +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\if@twocolumn + \setlength\leftmarginv {.5em} + \setlength\leftmarginvi {.5em} +\else + \setlength\leftmarginv {1em} + \setlength\leftmarginvi {1em} +\fi +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\renewcommand\theenumi{\@arabic\c@enumi} +\renewcommand\theenumii{\@alph\c@enumii} +\renewcommand\theenumiii{\@roman\c@enumiii} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +\newcommand\labelitemi{\textbullet} +\newcommand\labelitemii{\normalfont\bfseries \textendash} +\newcommand\labelitemiii{\textasteriskcentered} +\newcommand\labelitemiv{\textperiodcentered} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} +\newenvironment{verse} + {\let\\\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item\relax} + {\endlist} +\newenvironment{quotation} + {\list{}{\listparindent 1.5em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@}% + \item\relax} + {\endlist} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item\relax} + {\endlist} +\if@compatibility +\newenvironment{titlepage} + {% + \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \setcounter{page}\z@ + }% + {\if@restonecol\twocolumn \else \newpage \fi + } +\else +\newenvironment{titlepage} + {% + \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \setcounter{page}\@ne + }% + {\if@restonecol\twocolumn \else \newpage \fi + \if@twoside\else + \setcounter{page}\@ne + \fi + } +\fi +\newcommand\appendix{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \gdef\@chapapp{\appendixname}% + \gdef\thechapter{\@Alph\c@chapter}} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\@addtoreset {equation}{chapter} +\renewcommand\theequation + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation} +\newcounter{figure}[chapter] +\renewcommand \thefigure + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +\newcounter{table}[chapter] +\renewcommand \thetable + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +\newcommand\@pnumwidth{1.55em} +\newcommand\@tocrmarg{2.55em} +\newcommand\@dotsep{4.5} +\setcounter{tocdepth}{2} +\newcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\contentsname + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +\newcommand*\l@part[2]{% + \ifnum \c@tocdepth >-2\relax + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + \setlength\@tempdima{3em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + {\leavevmode + \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par + \nobreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}}% + \endgroup + \fi} +%%%%\newcommand*\l@chapter[2]{% +%%%% \ifnum \c@tocdepth >\m@ne +%%%% \addpenalty{-\@highpenalty}% +%%%% \vskip 1.0em \@plus\p@ +%%%% \setlength\@tempdima{1.5em}% +%%%% \begingroup +%%%% \parindent \z@ \rightskip \@pnumwidth +%%%% \parfillskip -\@pnumwidth +%%%% \leavevmode \bfseries +%%%% \advance\leftskip\@tempdima +%%%% \hskip -\leftskip +%%%% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par +%%%% \penalty\@highpenalty +%%%% \endgroup +%%%% \fi} +\newcommand\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \fontchapter + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} +\newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} +\newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}} +\newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}} +\newcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listfigurename}% + \@mkboth{\MakeUppercase\listfigurename}% + {\MakeUppercase\listfigurename}% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi + } +\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand\listoftables{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listtablename}% + \@mkboth{% + \MakeUppercase\listtablename}% + {\MakeUppercase\listtablename}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +\let\l@table\l@figure +\newdimen\bibindent +\setlength\bibindent{1.5em} +\newenvironment{thebibliography}[1] + {\chapter*{\bibname}% + \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\@makeschapterhead{\indexname}]% + \@mkboth{\MakeUppercase\indexname}% + {\MakeUppercase\indexname}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width.4\columnwidth + \kern2.6\p@} +\@addtoreset{footnote}{chapter} +\newcommand\@makefntext[1]{% + \parindent 1em% + \noindent + \hb@xt@1.8em{\hss\@makefnmark}#1} +\newcommand\contentsname{Contents} +\newcommand\listfigurename{List of Figures} +\newcommand\listtablename{List of Tables} +\newcommand\bibname{Bibliography} +\newcommand\indexname{Index} +\newcommand\figurename{Figure} +\newcommand\tablename{Table} +\newcommand\partname{Part} +\newcommand\chaptername{Chapter} +\newcommand\appendixname{Appendix} +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\setlength\columnsep{10\p@} +\setlength\columnseprule{0\p@} +\pagestyle{headings} +\pagenumbering{arabic} +\if@twoside +\else + \raggedbottom +\fi +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +\else + \onecolumn +\fi +\endinput +%% +%% End of file `book.cls'. diff --git a/hurricane/doc/analog/closed.png b/hurricane/doc/analog/closed.png new file mode 100644 index 00000000..e4e2b25a Binary files /dev/null and b/hurricane/doc/analog/closed.png differ diff --git a/hurricane/doc/analog/doxyfile b/hurricane/doc/analog/doxyfile new file mode 100644 index 00000000..4a85a94f --- /dev/null +++ b/hurricane/doc/analog/doxyfile @@ -0,0 +1,1497 @@ +# Doxyfile 1.5.7.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +MARKDOWN_SUPPORT = NO + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "Hurricane Analog" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 3.0 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, +# Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = NO + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 2 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = "function=\fn " \ + "important=\par Important:\n " \ + "caution=\par Caution:\n " \ + "remark=\par Remark:\n " \ + "sample=\par Sample:\n " \ + "Return=Returns: " \ + "unsigned=\c unsigned " \ + "POD=\c POD " \ + "True=\b True " \ + "true=\b true " \ + "False=\b False " \ + "false=\b false " \ + "public=\c public " \ + "protected=\c protected " \ + "private=\c private " \ + "static=\c static " \ + "virtual=\c virtual " \ + "this=\c this " \ + "VERTICAL=\b VERTICAL " \ + "HORIZONTAL=\b HORIZONTAL " \ + "NULL=\c NULL " \ + "stream=\c stream " \ + "iostream=\c iostream " \ + "stdin=\c stdin " \ + "stdout=\c stdout " \ + "stderr=\c stderr " \ + "string=\c string " \ + "vector=\c vector " \ + "list=\c list " \ + "map=\c map " \ + "set=\c set " \ + "STL=STL " + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +#SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 1 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +#SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = NO + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = doxygen.warn.log + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = MainPage.dox + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.h \ + *.cpp \ + *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = . + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = images + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 2 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = header.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = footer.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +#HTML_EXTRA_STYLESHEET = SoC.css +HTML_STYLESHEET = SoC.css + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +#HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Namespace. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# Qt Help Project / Virtual Folders. + +QHP_VIRTUAL_FOLDER = doc + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file . + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 1 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = header.tex + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = __DOXYGEN_PROCESSOR__ + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = html/hurricane.tag + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = NO + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +#DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = NO + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = NO + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/hurricane/doc/analog/footer.html b/hurricane/doc/analog/footer.html new file mode 100644 index 00000000..d1f33d69 --- /dev/null +++ b/hurricane/doc/analog/footer.html @@ -0,0 +1,16 @@ +
                                                                                            +
                                                                                            + + + + + +
                                                                                            Generated by doxygen $doxygenversion on $dateReturn to top of page
                                                                                            + + + + + +
                                                                                            Hurricane VLSI DatabaseCopyright © 2000-2016 Bull S.A. All rights reserved
                                                                                            + + diff --git a/hurricane/doc/analog/header.html b/hurricane/doc/analog/header.html new file mode 100644 index 00000000..96993947 --- /dev/null +++ b/hurricane/doc/analog/header.html @@ -0,0 +1,26 @@ + + + + + Hurricane Documentation + + + + + +

                                                                                            Hurricane VLSI Database

                                                                                            + +
                                                                                            + diff --git a/hurricane/doc/analog/header.tex b/hurricane/doc/analog/header.tex new file mode 100644 index 00000000..ec779312 --- /dev/null +++ b/hurricane/doc/analog/header.tex @@ -0,0 +1,47 @@ + + + \documentclass[a4paper]{asimbook} + + \usepackage{a4wide} + \usepackage{makeidx} + \usepackage{fancyhdr} + \usepackage{graphicx} + \usepackage{multicol} + \usepackage{float} + \usepackage{textcomp} + \usepackage{alltt} + \usepackage{times} + \ifx\pdfoutput\undefined + \usepackage[ps2pdf,pagebackref=true,colorlinks=true,linkcolor=blue]{hyperref} + \usepackage{pspicture} + \else + \usepackage[pdftex,pagebackref=true,colorlinks=true,linkcolor=blue]{hyperref} + \fi + \usepackage{doxygen} + + \makeindex + \setcounter{tocdepth}{1} + \renewcommand{\footrulewidth}{0.4pt} + \raggedbottom + + + \begin{document} + + \begin{titlepage} + \vspace*{7cm} + \begin{center} + {\Large $projectname Reference Manual\\[1ex]\large $projectnumber }\\ + \vspace*{1cm} + {\large Generated by Doxygen $doxygenversion}\\ + \vspace*{0.5cm} + {\small $datetime}\\ + \end{center} + \end{titlepage} + + \clearemptydoublepage + \pagenumbering{roman} + + \tableofcontents + \clearemptydoublepage + + \pagenumbering{arabic} diff --git a/hurricane/doc/analog/images/device_schema_1_uml.pdf b/hurricane/doc/analog/images/device_schema_1_uml.pdf new file mode 100644 index 00000000..08143502 Binary files /dev/null and b/hurricane/doc/analog/images/device_schema_1_uml.pdf differ diff --git a/hurricane/doc/analog/images/device_schema_1_uml.png b/hurricane/doc/analog/images/device_schema_1_uml.png new file mode 100644 index 00000000..6226af2a Binary files /dev/null and b/hurricane/doc/analog/images/device_schema_1_uml.png differ diff --git a/hurricane/doc/analog/images/device_schema_1_uml.xfig b/hurricane/doc/analog/images/device_schema_1_uml.xfig new file mode 100644 index 00000000..757ba5fc --- /dev/null +++ b/hurricane/doc/analog/images/device_schema_1_uml.xfig @@ -0,0 +1,287 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +110.00 +Single +-2 +1200 2 +0 32 #ffeb6b +6 2700 2475 4590 3150 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2745 2700 4545 2700 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2745 2790 4545 2790 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 2745 2475 4545 2475 4545 3150 2745 3150 2745 2475 +4 1 0 50 -1 18 10 0.0000 4 150 1485 3645 2655 map\001 +-6 +6 -450 2475 2250 3150 +2 1 0 1 0 0 50 -1 -1 0.000 0 0 -1 0 0 3 + 2025 2475 2025 2700 2250 2700 +2 1 0 1 0 30 60 -1 20 0.000 0 0 8 0 0 6 + -450 3150 -450 2475 2025 2475 2250 2700 2250 3150 -450 3150 +4 0 0 50 -1 12 8 0.0000 4 105 975 -405 3060 Python script\001 +4 0 0 50 -1 14 8 0.0000 4 120 1050 -405 2610 Map to layout:\001 +4 0 0 50 -1 12 8 0.0000 4 105 2325 -405 2790 The map from a layout type name\001 +4 0 0 50 -1 12 8 0.0000 4 105 2025 -405 2925 to a path of the associated\001 +-6 +6 6255 4950 8280 5625 +2 1 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 + 8100 5535 8190 5490 8280 5535 8190 5580 8100 5535 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 5175 8100 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 5400 8100 5400 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 6300 4950 8100 4950 8100 5625 6300 5625 6300 4950 +4 1 0 50 -1 18 10 0.0000 4 120 810 7200 5130 Transistor\001 +-6 +6 855 4950 2745 6300 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 900 5175 2700 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 900 6075 2700 6075 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 900 4950 2700 4950 2700 6300 900 6300 900 4950 +4 0 0 50 -1 12 10 0.0000 4 105 315 945 5355 -_w\001 +4 0 0 50 -1 12 10 0.0000 4 135 315 945 5580 -_l\001 +4 0 0 50 -1 12 10 0.0000 4 135 1365 945 6030 -_sourceFirst\001 +4 0 0 50 -1 12 10 0.0000 4 105 315 945 5805 -_m\001 +4 1 0 50 -1 18 10 0.0000 4 150 1185 1845 5130 TransistorArgs\001 +-6 +6 855 6750 2745 7425 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 900 6975 2700 6975 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 900 7200 2700 7200 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 900 6750 2700 6750 2700 7425 900 7425 900 6750 +4 0 0 50 -1 12 10 0.0000 4 135 630 945 7155 -_mint\001 +4 1 0 50 -1 18 10 0.0000 4 150 1575 1845 6930 TransistorMultiArgs\001 +-6 +6 3555 6750 5580 7425 +2 1 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 + 5400 7335 5490 7290 5580 7335 5490 7380 5400 7335 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 7200 5400 7200 +2 4 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 5400 7425 3600 7425 3600 6750 5400 6750 5400 7425 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 6975 5400 6975 +4 1 0 50 -1 18 10 0.0000 4 120 1110 4500 6930 TransistorPair\001 +-6 +6 5625 6075 8325 6750 +2 1 0 1 0 0 50 -1 -1 0.000 0 0 -1 0 0 3 + 8100 6075 8100 6300 8325 6300 +2 1 0 1 0 30 60 -1 20 0.000 0 0 8 0 0 6 + 5625 6750 5625 6075 8100 6075 8325 6300 8325 6750 5625 6750 +4 0 0 50 -1 14 8 0.0000 4 120 1575 5670 6210 Unique cell-instance:\001 +4 0 0 50 -1 12 8 0.0000 4 75 2100 5670 6390 One Instance of the MetaT is\001 +4 0 0 50 -1 12 8 0.0000 4 90 2475 5670 6525 created in the Transistor, but no\001 +4 0 0 50 -1 12 8 0.0000 4 105 2400 5670 6660 pointer is kept (through _metaT)\001 +-6 +6 3555 8325 5445 8775 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 8550 5400 8550 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 8640 5400 8640 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 3600 8325 5400 8325 5400 8775 3600 8775 3600 8325 +4 1 0 50 -1 18 10 0.0000 4 120 1170 4500 8505 DifferentialPair\001 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 0 1.00 90.00 180.00 + 7200 450 7200 -450 +2 1 0 1 0 0 50 -1 -1 4.000 0 0 -1 0 0 4 + 5895 810 5625 810 5625 -990 3150 -990 +2 1 0 1 0 0 50 -1 -1 4.000 0 0 -1 0 0 4 + 6120 3735 5400 3735 5400 810 4500 810 +2 1 0 1 0 0 50 -1 -1 0.000 0 0 -1 0 0 6 + 6120 3960 5175 3960 5175 1800 2475 1800 2475 810 1800 810 +2 1 1 1 0 0 50 -1 -1 4.000 0 0 -1 0 0 4 + 900 675 900 225 3600 225 3600 675 +2 1 1 1 0 0 50 -1 -1 4.000 0 0 -1 1 0 2 + 1 0 1.00 90.00 180.00 + 2250 225 2250 -225 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 0 900 1800 900 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 0 1800 1800 1800 +2 1 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 + 5895 810 5985 765 6075 810 5985 855 5895 810 +2 1 0 1 0 0 60 -1 -1 0.000 0 0 -1 0 0 4 + 8280 3735 9000 3735 9000 5085 9900 5085 +2 1 0 1 0 0 60 -1 -1 0.000 0 0 -1 0 0 3 + 10800 4275 10800 0 7200 0 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 8460 -225 8640 -225 8640 225 8460 225 8460 -225 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 1350 -450 3150 -450 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 1350 -900 3150 -900 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 900 4500 900 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 1350 4500 1350 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6075 675 8325 675 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6075 900 8325 900 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 -675 8100 -675 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 -585 8100 -585 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9900 4500 11700 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9900 8100 11700 8100 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9000 -675 10800 -675 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9000 -585 10800 -585 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 6300 -900 8100 -900 8100 -450 6300 -450 6300 -900 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 9000 -900 10800 -900 10800 -450 9000 -450 9000 -900 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 2700 675 4500 675 4500 1575 2700 1575 2700 675 +2 4 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 3150 -225 1350 -225 1350 -1125 3150 -1125 3150 -225 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 0 675 1800 675 1800 2025 0 2025 0 675 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 9900 4275 11700 4275 11700 8325 9900 8325 9900 4275 +2 1 0 1 0 0 60 -1 20 0.000 0 0 -1 0 0 2 + 8280 5535 9900 5535 +2 1 1 1 0 0 50 -1 -1 4.000 0 0 -1 0 0 2 + 9045 5085 9045 5535 +2 1 0 1 0 0 50 -1 -1 4.000 0 0 -1 0 0 4 + 8100 5085 8550 5085 8550 -765 9000 -765 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 8460 3465 8640 3465 8640 3915 8460 3915 8460 3465 +2 1 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5 + 5895 1035 5985 990 6075 1035 5985 1080 5895 1035 +2 1 0 1 0 32 60 -1 -1 0.000 0 0 -1 0 0 4 + 5895 1035 5625 1035 5625 2610 4545 2610 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 5310 2385 5490 2385 5490 2835 5310 2835 5310 2385 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 5085 2385 5265 2385 5265 2835 5085 2835 5085 2385 +2 1 1 1 0 0 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 5625 6525 6075 +2 1 1 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 2 + 2250 2835 2745 2835 +2 1 0 1 0 0 50 -1 -1 0.000 0 0 -1 0 0 5 + 6120 3735 6210 3690 6300 3735 6210 3780 6120 3735 +2 1 0 1 0 0 50 -1 -1 0.000 0 0 -1 0 0 5 + 6120 3960 6210 3915 6300 3960 6210 4005 6120 3960 +2 1 0 1 0 0 50 -1 -1 0.000 0 0 -1 0 0 5 + 8100 3735 8190 3690 8280 3735 8190 3780 8100 3735 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 3600 8100 3600 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 3690 8100 3690 +2 4 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 8325 1575 6075 1575 6075 450 8325 450 8325 1575 +2 4 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 8100 4050 6300 4050 6300 3375 8100 3375 8100 4050 +2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 + 1 0 1.00 90.00 180.00 + 7200 3375 7200 1575 +2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 + 1 0 1.00 90.00 180.00 + 7200 4950 7200 4050 +2 1 1 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 2 + 9135 5085 9135 7335 +2 1 1 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 3 + 4500 6750 4500 4500 7200 4500 +2 1 0 1 0 0 60 -1 -1 0.000 0 0 -1 0 0 2 + 2700 5085 6300 5085 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 4410 4860 4590 4860 4590 5310 4410 5310 4410 4860 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + -450 3825 1350 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + -450 3915 1350 3915 +2 1 1 1 0 0 50 -1 -1 4.000 0 0 -1 1 0 4 + 1 0 1.00 90.00 180.00 + 1800 4950 1800 4500 450 4500 450 4185 +2 4 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 1350 4185 -450 4185 -450 3600 1350 3600 1350 4185 +2 1 0 1 0 32 50 -1 -1 4.000 0 0 -1 1 0 2 + 1 0 1.00 90.00 180.00 + 1800 6750 1800 6300 +2 1 1 1 0 32 50 -1 -1 4.000 0 0 -1 1 0 2 + 1 0 1.00 90.00 180.00 + 4500 8325 4500 7425 +2 1 0 1 0 32 60 -1 -1 0.000 0 0 -1 0 0 2 + 5580 7335 9900 7335 +2 1 0 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 2 + 2700 6930 3600 6930 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 8460 5310 8640 5310 8640 5760 8460 5760 8460 5310 +2 2 0 0 0 0 55 -1 0 2.000 0 0 -1 0 0 5 + 8460 7110 8640 7110 8640 7560 8460 7560 8460 7110 +2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 1125 8550 2925 8550 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 1125 8640 2925 8640 +2 2 0 1 0 32 60 -1 20 4.000 0 0 8 0 0 5 + 1125 8325 2925 8325 2925 8775 1125 8775 1125 8325 +2 1 1 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 3 + 2025 8325 2025 7875 4500 7875 +2 1 0 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 3 + 5400 8460 5625 8460 5625 9000 +2 1 0 1 0 32 50 -1 -1 4.000 0 0 -1 0 0 5 + 2925 8415 3150 8415 3150 9000 8550 9000 8550 5085 +4 0 0 50 -1 12 8 0.0000 4 105 975 3240 -1080 _parameterSet\001 +4 0 0 50 -1 12 8 0.0000 4 90 600 1845 765 _w,_l,_m\001 +4 0 0 50 -1 12 8 0.0000 4 90 900 4545 765 _sourceFirst\001 +4 0 0 50 -1 12 10 0.0000 4 135 525 45 1080 -_min\001 +4 0 0 50 -1 12 10 0.0000 4 105 525 45 1305 -_max\001 +4 0 0 50 -1 12 10 0.0000 4 120 630 45 1530 -_step\001 +4 0 0 50 -1 12 10 0.0000 4 135 735 45 1755 -_value\001 +4 0 0 50 -1 12 10 0.0000 4 105 630 1395 -720 -_name\001 +4 0 0 50 -1 12 10 0.0000 4 135 735 1395 -495 -_index\001 +4 1 0 50 -1 18 10 0.0000 4 120 795 2250 -945 Parameter\001 +4 0 0 50 -1 12 10 0.0000 4 135 735 2745 1305 -_value\001 +4 0 0 50 -1 12 10 0.0000 4 135 945 2745 1080 -_choices\001 +4 0 0 50 -1 12 10 0.0000 4 135 2205 6120 1080 +getParameter(string)\001 +4 0 0 50 -1 12 10 0.0000 4 135 1680 6120 1305 +getParameters()\001 +4 0 0 50 -1 12 10 0.0000 4 135 1575 6120 1530 +getArguments()\001 +4 1 0 50 -1 18 10 0.0000 4 120 300 7200 -720 Cell\001 +4 1 0 50 -1 18 10 0.0000 4 120 525 7200 630 Device\001 +4 1 0 50 -1 18 10 0.0000 4 120 1440 3600 855 MCheckBoxParam\001 +4 1 0 50 -1 18 10 0.0000 4 150 1155 900 855 StepParameter\001 +4 0 0 50 -1 12 10 0.0000 4 105 315 9990 4680 -_m\001 +4 0 0 50 -1 12 10 0.0000 4 135 420 9990 5085 -_le\001 +4 0 0 50 -1 12 10 0.0000 4 135 525 9990 5310 -_ids\001 +4 0 0 50 -1 12 10 0.0000 4 105 525 9990 5535 -_vgs\001 +4 0 0 50 -1 12 10 0.0000 4 135 525 9990 5760 -_vds\001 +4 0 0 50 -1 12 10 0.0000 4 135 525 9990 5985 -_vbs\001 +4 0 0 50 -1 12 10 0.0000 4 105 420 9990 6210 -_vg\001 +4 0 0 50 -1 12 10 0.0000 4 135 420 9990 6435 -_vd\001 +4 0 0 50 -1 12 10 0.0000 4 105 420 9990 6660 -_vs\001 +4 0 0 50 -1 12 10 0.0000 4 105 525 9990 7110 -_veg\001 +4 0 0 50 -1 12 10 0.0000 4 135 525 9990 7335 -_vth\001 +4 0 0 50 -1 12 10 0.0000 4 105 630 9990 7785 -_vmax\001 +4 0 0 50 -1 12 10 0.0000 4 135 630 9990 7560 -_vmin\001 +4 0 0 50 -1 12 10 0.0000 4 135 420 9990 6885 -_vb\001 +4 0 0 50 -1 12 10 0.0000 4 135 735 9990 8010 -_nfing\001 +4 0 0 50 -1 12 10 0.0000 4 105 420 9990 4860 -_we\001 +4 1 0 50 -1 18 10 0.0000 4 120 1185 10800 4455 MetaTransistor\001 +4 1 0 50 -1 18 10 0.0000 4 120 675 9900 -720 Instance\001 +4 0 0 50 -1 12 8 0.0000 4 90 450 9405 5670 _metaT\001 +4 0 0 50 -1 12 8 0.0000 4 90 675 9180 5040 _refTrans\001 +4 1 0 50 -1 18 10 0.0000 4 150 1335 7200 3555 TransistorFamily\001 +4 0 0 50 -1 12 8 0.0000 4 90 375 9225 5310 {ref}\001 +4 0 0 50 -1 12 10 0.0000 4 135 1680 -405 4095 +_setM(unsigned)\001 +4 1 0 50 -1 18 10 0.0000 4 150 885 450 3780 Arguments\001 +4 0 0 50 -1 12 8 0.0000 4 105 525 9315 7470 _m1,_m2\001 +4 2 0 50 -1 14 8 0.0000 4 90 75 9855 7290 2\001 +4 2 0 50 -1 14 8 0.0000 4 90 75 9855 5490 1\001 +4 2 0 50 -1 14 8 0.0000 4 90 75 8325 5490 1\001 +4 2 0 50 -1 14 8 0.0000 4 90 75 5625 7290 1\001 +4 1 0 50 -1 18 10 0.0000 4 120 945 2025 8505 LevelShifter\001 diff --git a/hurricane/doc/analog/open.png b/hurricane/doc/analog/open.png new file mode 100644 index 00000000..7e740cc4 Binary files /dev/null and b/hurricane/doc/analog/open.png differ diff --git a/hurricane/doc/analog/tabs.css b/hurricane/doc/analog/tabs.css new file mode 100644 index 00000000..e081c18f --- /dev/null +++ b/hurricane/doc/analog/tabs.css @@ -0,0 +1,558 @@ + +.sm +{ + position:relative; + z-index:9999 +} +.sm,.sm ul,.sm li +{ + display:block; + list-style:none; + margin:0; + padding:2pt 7pt; + line-height:normal; + direction:ltr; + text-align:left; + -webkit-tap-highlight-color:rgba(0,0,0,0) +} +.sm-rtl,.sm-rtl ul,.sm-rtl li +{ + direction:rtl; + text-align:right +} +.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6 +{ + margin:0; + padding:0 +} +.sm ul +{ + display:none +} + +.sm li,.sm a +{ + position:relative +} +.sm a +{ + display:block +} +.sm a.disabled +{ + cursor:not-allowed +} +.sm:after +{ + content:"\00a0"; + display:block; + height:0; + font:0/0 serif; + clear:both; + visibility:hidden; + overflow:hidden +} +.sm,.sm *,.sm *:before,.sm *:after +{ + -moz-box-sizing:border-box; + -webkit-box-sizing:border-box; + box-sizing:border-box +} +#doc-content +{ + overflow:auto; + display:block; + padding:0; + margin:0; + -webkit-overflow-scrolling:touch +} +/* +.sm-dox +{ + background-image:url("tab_b.png") +} +*/ +/* +.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active +{ + padding:0 12px; + padding-right:43px; + font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif; + font-size:13px; + font-weight:bold; + line-height:36px; + text-decoration:none; + text-shadow:0 1px 1px rgba(255,255,255,0.9); + color:#283a5d; + outline:0 +} +*/ +/* +.sm-dox a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ +.sm-dox a.current +{ + color:#d23600 +} +.sm-dox a.disabled +{ + color:#bbb +} +.sm-dox a span.sub-arrow +{ + position:absolute; + top:50%; + margin-top:-14px; + left:auto; + right:3px; + width:28px; + height:28px; + overflow:hidden; + font:bold 12px/28px monospace!important; + text-align:center; + text-shadow:none; + background:rgba(255,255,255,0.5); + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px +} +.sm-dox a.highlighted span.sub-arrow:before +{ + display:block; + content:'-' +} +/* +.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a +{ + -moz-border-radius:5px 5px 0 0; + -webkit-border-radius:5px; + border-radius:5px 5px 0 0 +} +.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul +{ + -moz-border-radius:0 0 5px 5px; + -webkit-border-radius:0; + border-radius:0 0 5px 5px +} +.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted +{ + -moz-border-radius:0; + -webkit-border-radius:0; + border-radius:0 +} +*/ +/* +.sm-dox ul +{ + background:rgba(162,162,162,0.1) +} +*/ +/* +.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active +{ + font-size:12px; + border-left:8px solid transparent; + line-height:36px; + text-shadow:none; + background-color:white; + background-image:none +} +*/ +/* +.sm-dox ul a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ + + +.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active +{ + border-left:16px solid transparent +} +.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active +{ + border-left:24px solid transparent +} +.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active +{ + border-left:32px solid transparent +} +.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active +{ + border-left:40px solid transparent +} + +.sm-dox ul +{ + position:absolute; + width:12em +} +/* +.sm-dox li +{ + float:left +} +.sm-dox.sm-rtl li +{ + float:right +} +.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li +{ + float:none +} +*/ +.sm-dox a +{ + white-space:nowrap +} +.sm-dox ul a,.sm-dox.sm-vertical a +{ + white-space:normal +} +.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a +{ + white-space:nowrap +} + +/* +.sm-dox +{ + padding:0 10px; + background-image:url("tab_b.png"); + line-height:36px +} +*/ + +.sm-dox a span.sub-arrow +{ + top:50%; + margin-top:-2px; + right:12px; + width:0; + height:0; + border-width:4px; + border-style:solid dashed dashed dashed; + border-color:#283a5d transparent transparent transparent; + background:transparent; + -moz-border-radius:0; + -webkit-border-radius:0; + border-radius:0 +} +/* +.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted +{ + padding:0 12px; + background-image:url("tab_s.png"); + background-repeat:no-repeat; + background-position:right; + -moz-border-radius:0!important; + -webkit-border-radius:0; + border-radius:0!important +} +.sm-dox a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ +.sm-dox a:hover span.sub-arrow +{ + border-color:white transparent transparent transparent +} +.sm-dox a.has-submenu +{ + padding-right:24px +} +.sm-dox li +{ + border-top:0 +} +.sm-dox>li>ul:before,.sm-dox>li>ul:after +{ + content:''; + position:absolute; + top:-18px; + left:30px; + width:0; + height:0; + overflow:hidden; + border-width:9px; + border-style:dashed dashed solid dashed; + border-color:transparent transparent #bbb transparent +} +.sm-dox>li>ul:after +{ + top:-16px; + left:31px; + border-width:8px; + border-color:transparent transparent #fff transparent +} +.sm-dox ul +{ + border:1px solid #bbb; + padding:5px 0; + background:#fff; +/* + -moz-border-radius:5px!important; + -webkit-border-radius:5px; + border-radius:5px!important; +*/ + -moz-box-shadow:0 5px 9px rgba(0,0,0,0.2); + -webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2); + box-shadow:0 5px 9px rgba(0,0,0,0.2) +} +.sm-dox ul a span.sub-arrow +{ + right:8px; + top:50%; + margin-top:-5px; + border-width:5px; + border-color:transparent transparent transparent #555; + border-style:dashed dashed dashed solid +} +.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted +{ + color:#555; + background-image:none; + border:0!important; + color:#555; + background-image:none +} +/* +.sm-dox ul a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ +.sm-dox ul a:hover span.sub-arrow +{ + border-color:transparent transparent transparent white +} +.sm-dox span.scroll-up,.sm-dox span.scroll-down +{ + position:absolute; + display:none; + visibility:hidden; + overflow:hidden; + background:#fff; + height:36px +} +.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover +{ + background:#eee +} +.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow +{ + border-color:transparent transparent #d23600 transparent +} +.sm-dox span.scroll-down:hover span.scroll-down-arrow +{ + border-color:#d23600 transparent transparent transparent +} +.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow +{ + position:absolute; + top:0; + left:50%; + margin-left:-6px; + width:0; + height:0; + overflow:hidden; + border-width:6px; + border-style:dashed dashed solid dashed; + border-color:transparent transparent #555 transparent +} +.sm-dox span.scroll-down-arrow +{ + top:8px; + border-style:solid dashed dashed dashed; + border-color:#555 transparent transparent transparent +} +.sm-dox.sm-rtl a.has-submenu +{ + padding-right:12px; + padding-left:24px +} +.sm-dox.sm-rtl a span.sub-arrow +{ + right:auto; + left:12px +} +.sm-dox.sm-rtl.sm-vertical a.has-submenu +{ + padding:10px 20px +} +.sm-dox.sm-rtl.sm-vertical a span.sub-arrow +{ + right:auto; + left:8px; + border-style:dashed solid dashed dashed; + border-color:transparent #555 transparent transparent +} +.sm-dox.sm-rtl>li>ul:before +{ + left:auto; + right:30px +} +.sm-dox.sm-rtl>li>ul:after +{ + left:auto; + right:31px +} +.sm-dox.sm-rtl ul a.has-submenu +{ + padding:10px 20px!important +} +.sm-dox.sm-rtl ul a span.sub-arrow +{ + right:auto; + left:8px; + border-style:dashed solid dashed dashed; + border-color:transparent #555 transparent transparent +} +.sm-dox.sm-vertical +{ + padding:10px 0; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px +} +.sm-dox.sm-vertical a +{ + padding:10px 20px +} +.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted +{ + background:#fff +} +.sm-dox.sm-vertical a.disabled +{ + background-image:url("tab_b.png") +} +.sm-dox.sm-vertical a span.sub-arrow +{ + right:8px; + top:50%; + margin-top:-5px; + border-width:5px; + border-style:dashed dashed dashed solid; + border-color:transparent transparent transparent #555 +} +.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after +{ + display:none +} +.sm-dox.sm-vertical ul a +{ + padding:10px 20px +} +.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted +{ + background:#eee +} +.sm-dox.sm-vertical ul a.disabled +{ + background:#fff +} + +/* SoC Customisation. */ + +div#main-nav { + margin: 0pt; + border: 0pt; + padding: 0pt; +} + +div ul#main-menu { + margin: 0pt; + border: 0pt; + padding: 0pt; +} + +/* +.sm ul { + visibility: hidden; + overflow: hidden; + height: 0; + width: 0; +} +*/ + +.sm li { + list-style: none; +} + +ul#main-menu { + display: table; + width: 100%; +} + +ul#main-menu > li { + display: table-cell; + text-align: center; +/*width: 20%;*/ + border-top: 1px solid black; + border-bottom: 1px solid black; + border-left: none; + border-right: 1px solid black; + padding: 2pt; + font-size: 90%; +} + +ul#main-menu > li:first-child { + border-left: 1px solid black; +} + +ul#main-menu > li > a { + border-bottom: none; +} + +ul#main-menu > li:hover, ul#main-menu > li:hover > a, ul#main-menu > li > a:hover { + background-color: black; + color: white; +} + +/* +.sm li { + margin: 0pt; + list-style: none; + font-size: 90%; + border-top: 1px solid black; + border-bottom: 1px solid black; + border-left: none; + border-right: 1px solid black; + display: table-cell; + text-align: center; + padding: 2pt; + width: 5%; +} +.sm li:first-child { + border-left: 1px solid black; +} +.sm li a { + border-style: none; + border-bottom: none; +} + +.sm li:hover, .sm li:hover a, .sm li a:hover { + background-color: black; + color: white; +} +*/ + + diff --git a/hurricane/doc/hurricane/DebugSession.dox b/hurricane/doc/hurricane/DebugSession.dox index f6a2e1ee..799c31ff 100644 --- a/hurricane/doc/hurricane/DebugSession.dox +++ b/hurricane/doc/hurricane/DebugSession.dox @@ -50,13 +50,10 @@ * Solstice \c 160 \c 170 * Equinox \c 170 \c 180 * Unicorn \c 180 \c 190 - * \b C++ / CHAMS + * \b C++ / Analog * \b Tool/Library \b Minimum \b Maximum - * HurricaneAMS \c 500 \c 510 - * amsCore \c 510 \c 520 - * Pharos \c 520 \c 530 - * Isis \c 530 \c 540 - * Horus \c 530 \c 540 + * Analog \c 500 \c 510 + * oroshi \c 510 \c 520 * \b Python Wrappers / Coriolis * \b Tool/Library \b Minimum \b Maximum * Isobar \c 20 \c 30 @@ -69,13 +66,10 @@ * Solstice/Python \c 42 \c 44 * Equinox/Python \c 44 \c 46 * Unicorn/Python \c 46 \c 48 - * \b Python Wrappers / CHAMS + * \b Python Wrappers / Analog * \b Tool/Library \b Minimum \b Maximum - * isobarAMS \c 48 \c 50 - * amsCore \c 50 \c 51 - * Pharos/Python \c 52 \c 60 - * Isis/Python \c 60 \c 61 - * Horus/Python \c 61 \c 62 + * Analog \c 48 \c 50 + oroshi/ÿthon \c 50 \c 51 * \b Special levels * Determinim check \c 9000 \c 9001 * JSON parsers/drivers\c 19 \c 20 diff --git a/hurricane/doc/hurricane/html/BasicLayer_8h_source.html b/hurricane/doc/hurricane/html/BasicLayer_8h_source.html index 5b96342b..cae0baf3 100644 --- a/hurricane/doc/hurricane/html/BasicLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/BasicLayer_8h_source.html @@ -277,13 +277,13 @@
                                                                                            Definition: BasicLayer.h:60
                                                                                            void setBlockageLayer(BasicLayer *layer)
                                                                                            Definition: BasicLayer.h:143
                                                                                            Definition: BasicLayer.h:57
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 05e03059..ed371358 100644 --- a/hurricane/doc/hurricane/html/Box_8h_source.html +++ b/hurricane/doc/hurricane/html/Box_8h_source.html @@ -240,7 +240,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6e2b0ce9..8c3ee047 100644 --- a/hurricane/doc/hurricane/html/Boxes_8h_source.html +++ b/hurricane/doc/hurricane/html/Boxes_8h_source.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6cb9b788..507c9aa2 100644 --- a/hurricane/doc/hurricane/html/Cell_8h_source.html +++ b/hurricane/doc/hurricane/html/Cell_8h_source.html @@ -713,7 +713,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 eb543558..65831a27 100644 --- a/hurricane/doc/hurricane/html/Cells_8h_source.html +++ b/hurricane/doc/hurricane/html/Cells_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2d50352c..71306916 100644 --- a/hurricane/doc/hurricane/html/Collection_8h_source.html +++ b/hurricane/doc/hurricane/html/Collection_8h_source.html @@ -1218,7 +1218,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e0afdc05..2f72e43e 100644 --- a/hurricane/doc/hurricane/html/Commons_8h_source.html +++ b/hurricane/doc/hurricane/html/Commons_8h_source.html @@ -1144,7 +1144,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7179e5a9..077a1bda 100644 --- a/hurricane/doc/hurricane/html/Component_8h_source.html +++ b/hurricane/doc/hurricane/html/Component_8h_source.html @@ -264,7 +264,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7c0c734a..23664df0 100644 --- a/hurricane/doc/hurricane/html/Components_8h_source.html +++ b/hurricane/doc/hurricane/html/Components_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4896025c..9c7bf19b 100644 --- a/hurricane/doc/hurricane/html/ContactLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/ContactLayer_8h_source.html @@ -168,13 +168,13 @@
                                                                                            DataBase object root class (API).
                                                                                            Definition: DBo.h:46
                                                                                            JSON Parser Stack.
                                                                                            Definition: JsonObject.h:249
                                                                                            Layer description (API)
                                                                                            Definition: Layer.h:52
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ea0fc053..619b59e3 100644 --- a/hurricane/doc/hurricane/html/Contact_8h_source.html +++ b/hurricane/doc/hurricane/html/Contact_8h_source.html @@ -259,7 +259,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 56bbba05..9de854da 100644 --- a/hurricane/doc/hurricane/html/Contacts_8h_source.html +++ b/hurricane/doc/hurricane/html/Contacts_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0f343f48..98f1907a 100644 --- a/hurricane/doc/hurricane/html/DBo_8h_source.html +++ b/hurricane/doc/hurricane/html/DBo_8h_source.html @@ -175,7 +175,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 27174101..7e4fcdb7 100644 --- a/hurricane/doc/hurricane/html/DBos_8h_source.html +++ b/hurricane/doc/hurricane/html/DBos_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ed85ddea..a2e6c99c 100644 --- a/hurricane/doc/hurricane/html/DataBase_8h_source.html +++ b/hurricane/doc/hurricane/html/DataBase_8h_source.html @@ -179,13 +179,13 @@
                                                                                            The whole DataBase (API).
                                                                                            Definition: DataBase.h:40
                                                                                            static DataBase * getDB()
                                                                                            Technology * getTechnology() const
                                                                                            Definition: DataBase.h:85
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 75159a4b..02d6d0b4 100644 --- a/hurricane/doc/hurricane/html/DbU_8h_source.html +++ b/hurricane/doc/hurricane/html/DbU_8h_source.html @@ -362,7 +362,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8aaaedd6..c93281b2 100644 --- a/hurricane/doc/hurricane/html/DebugSession_8h_source.html +++ b/hurricane/doc/hurricane/html/DebugSession_8h_source.html @@ -224,7 +224,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 aff50ba7..bd66cede 100644 --- a/hurricane/doc/hurricane/html/Diagonal_8h_source.html +++ b/hurricane/doc/hurricane/html/Diagonal_8h_source.html @@ -175,7 +175,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9eb02d0c..e8311947 100644 --- a/hurricane/doc/hurricane/html/DiffusionLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/DiffusionLayer_8h_source.html @@ -169,13 +169,13 @@
                                                                                            JSON Parser Stack.
                                                                                            Definition: JsonObject.h:249
                                                                                            Layer description (API)
                                                                                            Definition: Layer.h:52
                                                                                            static DiffusionLayer * create(Technology *technology, const Name &name, BasicLayer *activeLayer, BasicLayer *diffusionLayer, BasicLayer *wellLayer)
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0dc2c771..77a04969 100644 --- a/hurricane/doc/hurricane/html/Entities_8h_source.html +++ b/hurricane/doc/hurricane/html/Entities_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ff68b5cf..bf1c86fa 100644 --- a/hurricane/doc/hurricane/html/Entity_8h_source.html +++ b/hurricane/doc/hurricane/html/Entity_8h_source.html @@ -192,7 +192,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ae31ad85..727f103a 100644 --- a/hurricane/doc/hurricane/html/Error_8h_source.html +++ b/hurricane/doc/hurricane/html/Error_8h_source.html @@ -142,7 +142,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 717dfd2b..9340c3d2 100644 --- a/hurricane/doc/hurricane/html/Exception_8h_source.html +++ b/hurricane/doc/hurricane/html/Exception_8h_source.html @@ -145,7 +145,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0eb05197..04a46651 100644 --- a/hurricane/doc/hurricane/html/Filter_8h_source.html +++ b/hurricane/doc/hurricane/html/Filter_8h_source.html @@ -376,7 +376,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3963c480..1859eb92 100644 --- a/hurricane/doc/hurricane/html/Go_8h_source.html +++ b/hurricane/doc/hurricane/html/Go_8h_source.html @@ -175,7 +175,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a472d214..202a9324 100644 --- a/hurricane/doc/hurricane/html/Gos_8h_source.html +++ b/hurricane/doc/hurricane/html/Gos_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 68fd2f45..50801080 100644 --- a/hurricane/doc/hurricane/html/Hook_8h_source.html +++ b/hurricane/doc/hurricane/html/Hook_8h_source.html @@ -193,7 +193,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f3cbb48d..b3aaaf71 100644 --- a/hurricane/doc/hurricane/html/Hooks_8h_source.html +++ b/hurricane/doc/hurricane/html/Hooks_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4ffa6ffb..c8af131d 100644 --- a/hurricane/doc/hurricane/html/Horizontal_8h_source.html +++ b/hurricane/doc/hurricane/html/Horizontal_8h_source.html @@ -206,7 +206,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e9e3dbe9..f9ca651b 100644 --- a/hurricane/doc/hurricane/html/Horizontals_8h_source.html +++ b/hurricane/doc/hurricane/html/Horizontals_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 dfa87920..c8420292 100644 --- a/hurricane/doc/hurricane/html/HyperNet_8h_source.html +++ b/hurricane/doc/hurricane/html/HyperNet_8h_source.html @@ -168,7 +168,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9d8d7708..31609fa3 100644 --- a/hurricane/doc/hurricane/html/Initializer_8h_source.html +++ b/hurricane/doc/hurricane/html/Initializer_8h_source.html @@ -128,7 +128,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 dc8d1912..3c68f52b 100644 --- a/hurricane/doc/hurricane/html/Instance_8h_source.html +++ b/hurricane/doc/hurricane/html/Instance_8h_source.html @@ -362,7 +362,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1062d6de..8d184f55 100644 --- a/hurricane/doc/hurricane/html/Instances_8h_source.html +++ b/hurricane/doc/hurricane/html/Instances_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3bbaae7e..a360f325 100644 --- a/hurricane/doc/hurricane/html/Interruption_8h_source.html +++ b/hurricane/doc/hurricane/html/Interruption_8h_source.html @@ -141,7 +141,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7581aea8..2bc2ae56 100644 --- a/hurricane/doc/hurricane/html/Interval_8h_source.html +++ b/hurricane/doc/hurricane/html/Interval_8h_source.html @@ -213,7 +213,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0b146635..b4e70c67 100644 --- a/hurricane/doc/hurricane/html/Intervals_8h_source.html +++ b/hurricane/doc/hurricane/html/Intervals_8h_source.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e000eb86..b2b3a6c3 100644 --- a/hurricane/doc/hurricane/html/JsonObject_8h_source.html +++ b/hurricane/doc/hurricane/html/JsonObject_8h_source.html @@ -519,7 +519,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 baebda1a..2a773083 100644 --- a/hurricane/doc/hurricane/html/JsonReader_8h_source.html +++ b/hurricane/doc/hurricane/html/JsonReader_8h_source.html @@ -140,7 +140,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 21888be6..3840b60d 100644 --- a/hurricane/doc/hurricane/html/Layer_8h_source.html +++ b/hurricane/doc/hurricane/html/Layer_8h_source.html @@ -259,14 +259,14 @@
                                                                                            virtual const Layer * getBottom() const
                                                                                            bool above(const Layer *layer) const
                                                                                            Definition: Layer.h:146
                                                                                            virtual void setExtentionCap(const BasicLayer *layer, DbU::Unit)
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66
                                                                                            virtual const Layer * getTop() const


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ec6aed23..4e393c88 100644 --- a/hurricane/doc/hurricane/html/Layers_8h_source.html +++ b/hurricane/doc/hurricane/html/Layers_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e8f8e0e7..41a218ad 100644 --- a/hurricane/doc/hurricane/html/Libraries_8h_source.html +++ b/hurricane/doc/hurricane/html/Libraries_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 426b9cbe..778d9222 100644 --- a/hurricane/doc/hurricane/html/Library_8h_source.html +++ b/hurricane/doc/hurricane/html/Library_8h_source.html @@ -222,7 +222,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0e8db736..cb317e22 100644 --- a/hurricane/doc/hurricane/html/ListCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/ListCollection_8h_source.html @@ -277,7 +277,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f06e392d..a80ad700 100644 --- a/hurricane/doc/hurricane/html/Locator_8h_source.html +++ b/hurricane/doc/hurricane/html/Locator_8h_source.html @@ -335,7 +335,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 04822bef..55c916b9 100644 --- a/hurricane/doc/hurricane/html/MapCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/MapCollection_8h_source.html @@ -275,7 +275,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 704ca6ba..c8e5e854 100644 --- a/hurricane/doc/hurricane/html/Name_8h_source.html +++ b/hurricane/doc/hurricane/html/Name_8h_source.html @@ -176,7 +176,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d409a6c2..55188f39 100644 --- a/hurricane/doc/hurricane/html/Names_8h_source.html +++ b/hurricane/doc/hurricane/html/Names_8h_source.html @@ -127,7 +127,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e65e8c14..6ef1657f 100644 --- a/hurricane/doc/hurricane/html/Net_8h_source.html +++ b/hurricane/doc/hurricane/html/Net_8h_source.html @@ -579,7 +579,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d12df043..9f5becf3 100644 --- a/hurricane/doc/hurricane/html/Nets_8h_source.html +++ b/hurricane/doc/hurricane/html/Nets_8h_source.html @@ -140,7 +140,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7f407240..a55fc573 100644 --- a/hurricane/doc/hurricane/html/Occurrence_8h_source.html +++ b/hurricane/doc/hurricane/html/Occurrence_8h_source.html @@ -214,7 +214,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9cc038ce..009e56c7 100644 --- a/hurricane/doc/hurricane/html/Occurrences_8h_source.html +++ b/hurricane/doc/hurricane/html/Occurrences_8h_source.html @@ -145,7 +145,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e3e6e80a..327132d7 100644 --- a/hurricane/doc/hurricane/html/Pad_8h_source.html +++ b/hurricane/doc/hurricane/html/Pad_8h_source.html @@ -170,7 +170,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a5f76088..dd7d4c6d 100644 --- a/hurricane/doc/hurricane/html/Pads_8h_source.html +++ b/hurricane/doc/hurricane/html/Pads_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3f1b99b7..2730959e 100644 --- a/hurricane/doc/hurricane/html/Path_8h_source.html +++ b/hurricane/doc/hurricane/html/Path_8h_source.html @@ -200,7 +200,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 15edc909..f307b952 100644 --- a/hurricane/doc/hurricane/html/Pathes_8h_source.html +++ b/hurricane/doc/hurricane/html/Pathes_8h_source.html @@ -135,7 +135,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d7ef2cfe..31e04c5e 100644 --- a/hurricane/doc/hurricane/html/Pin_8h_source.html +++ b/hurricane/doc/hurricane/html/Pin_8h_source.html @@ -228,7 +228,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5a48120d..535aa7a6 100644 --- a/hurricane/doc/hurricane/html/Pins_8h_source.html +++ b/hurricane/doc/hurricane/html/Pins_8h_source.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bbe2d630..60e8ed0e 100644 --- a/hurricane/doc/hurricane/html/Plug_8h_source.html +++ b/hurricane/doc/hurricane/html/Plug_8h_source.html @@ -223,7 +223,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0b128161..60fdb9f6 100644 --- a/hurricane/doc/hurricane/html/Plugs_8h_source.html +++ b/hurricane/doc/hurricane/html/Plugs_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0c246dc5..a07b0c9e 100644 --- a/hurricane/doc/hurricane/html/Point_8h_source.html +++ b/hurricane/doc/hurricane/html/Point_8h_source.html @@ -174,7 +174,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fd14c292..475edf0b 100644 --- a/hurricane/doc/hurricane/html/Points_8h_source.html +++ b/hurricane/doc/hurricane/html/Points_8h_source.html @@ -113,7 +113,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5f437738..7af80710 100644 --- a/hurricane/doc/hurricane/html/Polygon_8h_source.html +++ b/hurricane/doc/hurricane/html/Polygon_8h_source.html @@ -255,7 +255,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d215b519..40e2a976 100644 --- a/hurricane/doc/hurricane/html/Properties_8h_source.html +++ b/hurricane/doc/hurricane/html/Properties_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 19692934..e04e1942 100644 --- a/hurricane/doc/hurricane/html/Property_8h_source.html +++ b/hurricane/doc/hurricane/html/Property_8h_source.html @@ -672,7 +672,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 17c807c3..8b70125b 100644 --- a/hurricane/doc/hurricane/html/QuadTree_8h_source.html +++ b/hurricane/doc/hurricane/html/QuadTree_8h_source.html @@ -204,7 +204,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9c71c471..292eac8c 100644 --- a/hurricane/doc/hurricane/html/Quark_8h_source.html +++ b/hurricane/doc/hurricane/html/Quark_8h_source.html @@ -146,7 +146,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6571dab1..bd7cabfc 100644 --- a/hurricane/doc/hurricane/html/Quarks_8h_source.html +++ b/hurricane/doc/hurricane/html/Quarks_8h_source.html @@ -130,7 +130,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 91436e3d..ba0103fc 100644 --- a/hurricane/doc/hurricane/html/Query_8h_source.html +++ b/hurricane/doc/hurricane/html/Query_8h_source.html @@ -485,7 +485,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b257ead4..d91e03e6 100644 --- a/hurricane/doc/hurricane/html/RegularLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/RegularLayer_8h_source.html @@ -174,13 +174,13 @@
                                                                                            static RegularLayer * create(Technology *technology, const Name &name)
                                                                                            Layer description (API)
                                                                                            Definition: Layer.h:52
                                                                                            BasicLayer * getBasicLayer() const
                                                                                            Definition: RegularLayer.h:95
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fb47f39d..3bb47dfb 100644 --- a/hurricane/doc/hurricane/html/Relation_8h_source.html +++ b/hurricane/doc/hurricane/html/Relation_8h_source.html @@ -183,7 +183,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 945af2a4..6cf6815e 100644 --- a/hurricane/doc/hurricane/html/RoutingPad_8h_source.html +++ b/hurricane/doc/hurricane/html/RoutingPad_8h_source.html @@ -217,7 +217,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 921b9e09..e892d6ca 100644 --- a/hurricane/doc/hurricane/html/Rubber_8h_source.html +++ b/hurricane/doc/hurricane/html/Rubber_8h_source.html @@ -188,7 +188,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 aa1646a3..3edc08b3 100644 --- a/hurricane/doc/hurricane/html/Rubbers_8h_source.html +++ b/hurricane/doc/hurricane/html/Rubbers_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4a7190a4..d7a3c99f 100644 --- a/hurricane/doc/hurricane/html/Segment_8h_source.html +++ b/hurricane/doc/hurricane/html/Segment_8h_source.html @@ -246,7 +246,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b342f2fe..7004143f 100644 --- a/hurricane/doc/hurricane/html/Segments_8h_source.html +++ b/hurricane/doc/hurricane/html/Segments_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9a07592a..d7cbf763 100644 --- a/hurricane/doc/hurricane/html/SetCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/SetCollection_8h_source.html @@ -285,7 +285,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b57d0004..f6032635 100644 --- a/hurricane/doc/hurricane/html/Slice_8h_source.html +++ b/hurricane/doc/hurricane/html/Slice_8h_source.html @@ -186,7 +186,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c8f5d160..ff316a02 100644 --- a/hurricane/doc/hurricane/html/Slices_8h_source.html +++ b/hurricane/doc/hurricane/html/Slices_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c599853b..d486d6e8 100644 --- a/hurricane/doc/hurricane/html/Tabulation_8h_source.html +++ b/hurricane/doc/hurricane/html/Tabulation_8h_source.html @@ -163,7 +163,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 410d8912..c7855729 100644 --- a/hurricane/doc/hurricane/html/Technology_8h_source.html +++ b/hurricane/doc/hurricane/html/Technology_8h_source.html @@ -83,144 +83,222 @@
                                                                                            32 #ifndef HURRICANE_TECHNOLOGY_H
                                                                                            33 #define HURRICANE_TECHNOLOGY_H
                                                                                            34 
                                                                                            -
                                                                                            35 #include <map>
                                                                                            -
                                                                                            36 #include "hurricane/Mask.h"
                                                                                            -
                                                                                            37 #include "hurricane/DBo.h"
                                                                                            -
                                                                                            38 #include "hurricane/Layer.h"
                                                                                            -
                                                                                            39 #include "hurricane/BasicLayers.h"
                                                                                            -
                                                                                            40 #include "hurricane/RegularLayers.h"
                                                                                            -
                                                                                            41 #include "hurricane/ViaLayers.h"
                                                                                            -
                                                                                            42 #include "hurricane/IntrusiveMap.h"
                                                                                            -
                                                                                            43 
                                                                                            -
                                                                                            44 
                                                                                            -
                                                                                            45 namespace Hurricane {
                                                                                            -
                                                                                            46 
                                                                                            -
                                                                                            47  using std::multimap;
                                                                                            +
                                                                                            35 #include <set>
                                                                                            +
                                                                                            36 #include <map>
                                                                                            +
                                                                                            37 #include "hurricane/Mask.h"
                                                                                            +
                                                                                            38 #include "hurricane/DBo.h"
                                                                                            +
                                                                                            39 #include "hurricane/Layer.h"
                                                                                            +
                                                                                            40 #include "hurricane/BasicLayers.h"
                                                                                            +
                                                                                            41 #include "hurricane/RegularLayers.h"
                                                                                            +
                                                                                            42 #include "hurricane/ViaLayers.h"
                                                                                            +
                                                                                            43 #include "hurricane/IntrusiveMap.h"
                                                                                            +
                                                                                            44 #include "hurricane/DeviceDescriptor.h"
                                                                                            +
                                                                                            45 #include "hurricane/ModelDescriptor.h"
                                                                                            +
                                                                                            46 #include "hurricane/Rule.h"
                                                                                            +
                                                                                            47 
                                                                                            48 
                                                                                            -
                                                                                            49  class DataBase;
                                                                                            -
                                                                                            50  class BasicLayer;
                                                                                            -
                                                                                            51  class RegularLayer;
                                                                                            -
                                                                                            52  class ViaLayer;
                                                                                            +
                                                                                            49 namespace Hurricane {
                                                                                            +
                                                                                            50 
                                                                                            +
                                                                                            51  using std::set;
                                                                                            +
                                                                                            52  using std::multimap;
                                                                                            53 
                                                                                            -
                                                                                            54 
                                                                                            -
                                                                                            55 // -------------------------------------------------------------------
                                                                                            -
                                                                                            56 // Class : "Hurricane::Technology".
                                                                                            -
                                                                                            57 
                                                                                            -
                                                                                            58  class Technology : public DBo {
                                                                                            -
                                                                                            59 
                                                                                            -
                                                                                            60  public:
                                                                                            -
                                                                                            61  typedef DBo Inherit;
                                                                                            -
                                                                                            62  typedef multimap<Layer::Mask,Layer*> LayerMaskMap;
                                                                                            -
                                                                                            63 
                                                                                            -
                                                                                            64  public:
                                                                                            -
                                                                                            65  // Sub-class : LayerMap.
                                                                                            -
                                                                                            66  class LayerMap : public IntrusiveMap<Name,Layer> {
                                                                                            -
                                                                                            67  public:
                                                                                            -
                                                                                            68  typedef IntrusiveMap<Name,Layer> Inherit;
                                                                                            -
                                                                                            69  public:
                                                                                            -
                                                                                            70  LayerMap ();
                                                                                            -
                                                                                            71  virtual Name _getKey ( Layer* ) const;
                                                                                            -
                                                                                            72  virtual unsigned _getHashValue ( Name ) const;
                                                                                            -
                                                                                            73  virtual Layer* _getNextElement ( Layer* ) const;
                                                                                            -
                                                                                            74  virtual void _setNextElement ( Layer* , Layer* nextLayer) const;
                                                                                            -
                                                                                            75  };
                                                                                            -
                                                                                            76 
                                                                                            -
                                                                                            77  public:
                                                                                            -
                                                                                            78  // Constructor.
                                                                                            -
                                                                                            79  static Technology* create ( DataBase* , const Name& );
                                                                                            -
                                                                                            80  // Accessors.
                                                                                            -
                                                                                            81  inline bool isMetal ( const Layer* ) const;
                                                                                            -
                                                                                            82  inline DataBase* getDataBase () const;
                                                                                            -
                                                                                            83  inline const Name& getName () const;
                                                                                            -
                                                                                            84  inline Layer* getLayer ( const Name& ) const;
                                                                                            -
                                                                                            85  BasicLayer* getBasicLayer ( const Name& ) const;
                                                                                            -
                                                                                            86  RegularLayer* getRegularLayer ( const Name& ) const;
                                                                                            -
                                                                                            87  ViaLayer* getViaLayer ( const Name& ) const;
                                                                                            -
                                                                                            88  inline Layers getLayers () const;
                                                                                            -
                                                                                            89  BasicLayers getBasicLayers () const;
                                                                                            -
                                                                                            90  BasicLayers getBasicLayers ( const Layer::Mask& ) const;
                                                                                            -
                                                                                            91  RegularLayers getRegularLayers () const;
                                                                                            -
                                                                                            92  ViaLayers getViaLayers () const;
                                                                                            -
                                                                                            93  Layer* getLayer ( const Layer::Mask&, bool useSymbolic=true ) const;
                                                                                            -
                                                                                            94  Layer* getMetalAbove ( const Layer*, bool useSymbolic=true ) const;
                                                                                            -
                                                                                            95  Layer* getMetalBelow ( const Layer*, bool useSymbolic=true ) const;
                                                                                            -
                                                                                            96  Layer* getCutAbove ( const Layer*, bool useSymbolic=true ) const;
                                                                                            -
                                                                                            97  Layer* getCutBelow ( const Layer*, bool useSymbolic=true ) const;
                                                                                            -
                                                                                            98  Layer* getViaBetween ( const Layer*, const Layer*, bool useSymbolic=true ) const;
                                                                                            -
                                                                                            99  Layer* getNthMetal ( int ) const;
                                                                                            -
                                                                                            100  Layer* getNthCut ( int ) const;
                                                                                            -
                                                                                            101  // Updators.
                                                                                            -
                                                                                            102  void setName ( const Name& );
                                                                                            -
                                                                                            103  bool setSymbolicLayer ( const Name& );
                                                                                            -
                                                                                            104  bool setSymbolicLayer ( const Layer* );
                                                                                            -
                                                                                            105  // Others.
                                                                                            -
                                                                                            106  inline LayerMap& _getLayerMap ();
                                                                                            -
                                                                                            107  inline LayerMaskMap& _getLayerMaskMap ();
                                                                                            -
                                                                                            108  void _insertInLayerMaskMap ( Layer* );
                                                                                            -
                                                                                            109  void _removeFromLayerMaskMap ( Layer* );
                                                                                            -
                                                                                            110  inline Layer::Mask& _getCutMask ();
                                                                                            -
                                                                                            111  inline Layer::Mask& _getMetalMask ();
                                                                                            -
                                                                                            112  void _onDbuChange ( float scale );
                                                                                            -
                                                                                            113  // Hurricane Managment.
                                                                                            -
                                                                                            114  virtual void _toJson ( JsonWriter* ) const;
                                                                                            -
                                                                                            115  virtual void _toJsonCollections ( JsonWriter* ) const;
                                                                                            -
                                                                                            116  virtual string _getTypeName () const;
                                                                                            -
                                                                                            117  virtual string _getString () const;
                                                                                            -
                                                                                            118  virtual Record* _getRecord () const;
                                                                                            -
                                                                                            119 
                                                                                            -
                                                                                            120  private:
                                                                                            -
                                                                                            121  // Internal: Attributes.
                                                                                            -
                                                                                            122  DataBase* _dataBase;
                                                                                            -
                                                                                            123  Name _name;
                                                                                            -
                                                                                            124  LayerMap _layerMap;
                                                                                            -
                                                                                            125  LayerMaskMap _layerMaskMap;
                                                                                            -
                                                                                            126  Layer::Mask _cutMask;
                                                                                            -
                                                                                            127  Layer::Mask _metalMask;
                                                                                            -
                                                                                            128 
                                                                                            -
                                                                                            129  protected:
                                                                                            -
                                                                                            130  // Constructors & Destructors.
                                                                                            -
                                                                                            131  Technology ( DataBase* , const Name& );
                                                                                            -
                                                                                            132  virtual void _postCreate ();
                                                                                            -
                                                                                            133  virtual void _preDestroy ();
                                                                                            -
                                                                                            134  };
                                                                                            -
                                                                                            135 
                                                                                            -
                                                                                            136 
                                                                                            -
                                                                                            137 // Inline Functions.
                                                                                            -
                                                                                            138  inline bool Technology::isMetal ( const Layer* layer ) const { return _metalMask.contains(layer->getMask()); }
                                                                                            -
                                                                                            139  inline DataBase* Technology::getDataBase () const { return _dataBase; }
                                                                                            -
                                                                                            140  inline const Name& Technology::getName () const { return _name; }
                                                                                            -
                                                                                            141  inline Layer* Technology::getLayer ( const Name& name ) const { return _layerMap.getElement(name); }
                                                                                            -
                                                                                            142  inline Layers Technology::getLayers () const { return getCollection(&_layerMaskMap); }
                                                                                            -
                                                                                            143  inline Technology::LayerMap& Technology::_getLayerMap () { return _layerMap; }
                                                                                            -
                                                                                            144  inline Technology::LayerMaskMap& Technology::_getLayerMaskMap () { return _layerMaskMap; }
                                                                                            -
                                                                                            145  inline Layer::Mask& Technology::_getCutMask () { return _cutMask; }
                                                                                            -
                                                                                            146  inline Layer::Mask& Technology::_getMetalMask () { return _metalMask; }
                                                                                            -
                                                                                            147 
                                                                                            -
                                                                                            148 
                                                                                            -
                                                                                            149 // -------------------------------------------------------------------
                                                                                            -
                                                                                            150 // Class : "Hurricane::JsonTechnology".
                                                                                            -
                                                                                            151 
                                                                                            -
                                                                                            152  class JsonTechnology : public JsonDBo {
                                                                                            -
                                                                                            153  public:
                                                                                            -
                                                                                            154  static void initialize ();
                                                                                            -
                                                                                            155  JsonTechnology ( unsigned long flags );
                                                                                            -
                                                                                            156  virtual ~JsonTechnology ();
                                                                                            -
                                                                                            157  virtual string getTypeName () const;
                                                                                            -
                                                                                            158  virtual JsonTechnology* clone ( unsigned long ) const;
                                                                                            -
                                                                                            159  virtual void toData ( JsonStack& );
                                                                                            -
                                                                                            160  void addBlockageRef ( const std::string&, BasicLayer* );
                                                                                            -
                                                                                            161  private:
                                                                                            -
                                                                                            162  std::map< string, vector<BasicLayer*> > _blockagesMap;
                                                                                            -
                                                                                            163  };
                                                                                            -
                                                                                            164 
                                                                                            -
                                                                                            165 
                                                                                            -
                                                                                            166 } // Hurricane namespace.
                                                                                            -
                                                                                            167 
                                                                                            -
                                                                                            168 
                                                                                            -
                                                                                            169 INSPECTOR_P_SUPPORT(Hurricane::Technology);
                                                                                            -
                                                                                            170 
                                                                                            -
                                                                                            171 
                                                                                            -
                                                                                            172 #endif // HURRICANE_TECHNOLOGY_H
                                                                                            +
                                                                                            54  class DataBase;
                                                                                            +
                                                                                            55  class BasicLayer;
                                                                                            +
                                                                                            56  class RegularLayer;
                                                                                            +
                                                                                            57  class ViaLayer;
                                                                                            +
                                                                                            58  class UnitRule;
                                                                                            +
                                                                                            59  class PhysicalRule;
                                                                                            +
                                                                                            60  class TwoLayersPhysicalRule;
                                                                                            +
                                                                                            61 
                                                                                            +
                                                                                            62 
                                                                                            +
                                                                                            63 // -------------------------------------------------------------------
                                                                                            +
                                                                                            64 // Class : "Hurricane::Technology".
                                                                                            +
                                                                                            65 
                                                                                            +
                                                                                            66  class Technology : public DBo {
                                                                                            +
                                                                                            67 
                                                                                            +
                                                                                            68  public:
                                                                                            +
                                                                                            69  typedef DBo Super;
                                                                                            +
                                                                                            70  typedef multimap<Layer::Mask,Layer*> LayerMaskMap;
                                                                                            +
                                                                                            71  typedef set<DeviceDescriptor*, DeviceDescriptor::DeviceDescriptorComp> DeviceDescriptors;
                                                                                            +
                                                                                            72  typedef set<ModelDescriptor* , ModelDescriptor::ModelDescriptorComp> ModelDescriptors;
                                                                                            +
                                                                                            73  public:
                                                                                            +
                                                                                            74  struct RuleNameCompare:
                                                                                            +
                                                                                            75  public std::binary_function<const Rule*, const Rule*, bool> {
                                                                                            +
                                                                                            76  bool operator() ( const Rule* rule1, const Rule* rule2 ) const
                                                                                            +
                                                                                            77  { return rule1->getName() < rule2->getName(); }
                                                                                            +
                                                                                            78  };
                                                                                            +
                                                                                            79  public:
                                                                                            +
                                                                                            80  typedef std::pair<const Hurricane::Layer*, const Hurricane::Layer*> LayerPair;
                                                                                            +
                                                                                            81  typedef std::set<UnitRule* , RuleNameCompare> UnitRules;
                                                                                            +
                                                                                            82  typedef std::set<PhysicalRule* , RuleNameCompare> PhysicalRules;
                                                                                            +
                                                                                            83  typedef std::set<TwoLayersPhysicalRule* , RuleNameCompare> TwoLayersRulesSet;
                                                                                            +
                                                                                            84  typedef std::map<const Hurricane::Layer* , PhysicalRules> OneLayerRules;
                                                                                            +
                                                                                            85  typedef std::map<LayerPair , TwoLayersRulesSet> TwoLayersRules;
                                                                                            +
                                                                                            86 
                                                                                            +
                                                                                            87  public:
                                                                                            +
                                                                                            88  // Sub-class : LayerMap.
                                                                                            +
                                                                                            89  class LayerMap : public IntrusiveMap<Name,Layer> {
                                                                                            +
                                                                                            90  public:
                                                                                            +
                                                                                            91  typedef IntrusiveMap<Name,Layer> Super;
                                                                                            +
                                                                                            92  public:
                                                                                            +
                                                                                            93  LayerMap ();
                                                                                            +
                                                                                            94  virtual Name _getKey ( Layer* ) const;
                                                                                            +
                                                                                            95  virtual unsigned _getHashValue ( Name ) const;
                                                                                            +
                                                                                            96  virtual Layer* _getNextElement ( Layer* ) const;
                                                                                            +
                                                                                            97  virtual void _setNextElement ( Layer* , Layer* nextLayer) const;
                                                                                            +
                                                                                            98  };
                                                                                            +
                                                                                            99 
                                                                                            +
                                                                                            100  public:
                                                                                            +
                                                                                            101  // Constructor.
                                                                                            +
                                                                                            102  static Technology* create ( DataBase* , const Name& );
                                                                                            +
                                                                                            103  // Accessors.
                                                                                            +
                                                                                            104  inline bool isMetal ( const Layer* ) const;
                                                                                            +
                                                                                            105  inline DataBase* getDataBase () const;
                                                                                            +
                                                                                            106  inline const Name& getName () const;
                                                                                            +
                                                                                            107  inline Layer* getLayer ( const Name& ) const;
                                                                                            +
                                                                                            108  BasicLayer* getBasicLayer ( const Name& ) const;
                                                                                            +
                                                                                            109  RegularLayer* getRegularLayer ( const Name& ) const;
                                                                                            +
                                                                                            110  ViaLayer* getViaLayer ( const Name& ) const;
                                                                                            +
                                                                                            111  inline Layers getLayers () const;
                                                                                            +
                                                                                            112  BasicLayers getBasicLayers () const;
                                                                                            +
                                                                                            113  BasicLayers getBasicLayers ( const Layer::Mask& ) const;
                                                                                            +
                                                                                            114  RegularLayers getRegularLayers () const;
                                                                                            +
                                                                                            115  ViaLayers getViaLayers () const;
                                                                                            +
                                                                                            116  Layer* getLayer ( const Layer::Mask&, bool useSymbolic=true ) const;
                                                                                            +
                                                                                            117  Layer* getMetalAbove ( const Layer*, bool useSymbolic=true ) const;
                                                                                            +
                                                                                            118  Layer* getMetalBelow ( const Layer*, bool useSymbolic=true ) const;
                                                                                            +
                                                                                            119  Layer* getCutAbove ( const Layer*, bool useSymbolic=true ) const;
                                                                                            +
                                                                                            120  Layer* getCutBelow ( const Layer*, bool useSymbolic=true ) const;
                                                                                            +
                                                                                            121  Layer* getViaBetween ( const Layer*, const Layer*, bool useSymbolic=true ) const;
                                                                                            +
                                                                                            122  Layer* getNthMetal ( int ) const;
                                                                                            +
                                                                                            123  Layer* getNthCut ( int ) const;
                                                                                            +
                                                                                            124  DeviceDescriptor* getDeviceDescriptor ( const Name& );
                                                                                            +
                                                                                            125  ModelDescriptor* getModelDescriptor (const Name& );
                                                                                            +
                                                                                            126  inline ModelDescriptors& getModelDescriptors ();
                                                                                            +
                                                                                            127  UnitRule getUnitRule ( const std::string& ruleName ) const;
                                                                                            +
                                                                                            128  PhysicalRule getPhysicalRule ( const std::string& ruleName ) const;
                                                                                            +
                                                                                            129  PhysicalRule getPhysicalRule ( const std::string& ruleName
                                                                                            +
                                                                                            130  , const std::string& layerName ) const;
                                                                                            +
                                                                                            131  PhysicalRule getPhysicalRule ( const std::string& ruleName
                                                                                            +
                                                                                            132  , const std::string& layer1Name
                                                                                            +
                                                                                            133  , const std::string& layer2Name ) const;
                                                                                            +
                                                                                            134  inline const UnitRules& getUnitRules () const;
                                                                                            +
                                                                                            135  inline const PhysicalRules& getNoLayerRules () const;
                                                                                            +
                                                                                            136  inline const OneLayerRules& getOneLayerRules () const;
                                                                                            +
                                                                                            137  inline const TwoLayersRules& getTwoLayersRules () const;
                                                                                            +
                                                                                            138  void toDtr ( std::ostream& );
                                                                                            +
                                                                                            139  inline void setName ( const std::string& name );
                                                                                            +
                                                                                            140  // Updators.
                                                                                            +
                                                                                            141  void setName ( const Name& );
                                                                                            +
                                                                                            142  bool setSymbolicLayer ( const Name& );
                                                                                            +
                                                                                            143  bool setSymbolicLayer ( const Layer* );
                                                                                            +
                                                                                            144  DeviceDescriptor* addDeviceDescriptor ( const Name& );
                                                                                            +
                                                                                            145  ModelDescriptor* addModelDescriptor ( const Name& name
                                                                                            +
                                                                                            146  , const Name& simul
                                                                                            +
                                                                                            147  , const Name& model
                                                                                            +
                                                                                            148  , std::string netlist
                                                                                            +
                                                                                            149  , const Name& name_n
                                                                                            +
                                                                                            150  , const Name& name_p
                                                                                            +
                                                                                            151  , bool precise );
                                                                                            +
                                                                                            152  void addUnitRule ( const std::string& ruleName
                                                                                            +
                                                                                            153  , double value
                                                                                            +
                                                                                            154  , const std::string& reference );
                                                                                            +
                                                                                            155  void addPhysicalRule ( const std::string& ruleName
                                                                                            +
                                                                                            156  , DbU::Unit value
                                                                                            +
                                                                                            157  , const std::string& reference );
                                                                                            +
                                                                                            158  void addPhysicalRule ( const std::string& ruleName
                                                                                            +
                                                                                            159  , const std::string& layerName
                                                                                            +
                                                                                            160  , DbU::Unit value
                                                                                            +
                                                                                            161  , const std::string& reference);
                                                                                            +
                                                                                            162  void addPhysicalRule ( const std::string& ruleName
                                                                                            +
                                                                                            163  , const std::string& layer1Name
                                                                                            +
                                                                                            164  , const std::string& layer2Name
                                                                                            +
                                                                                            165  , bool symetric
                                                                                            +
                                                                                            166  , DbU::Unit value
                                                                                            +
                                                                                            167  , const std::string& reference );
                                                                                            +
                                                                                            168  // Others.
                                                                                            +
                                                                                            169  inline LayerMap& _getLayerMap ();
                                                                                            +
                                                                                            170  inline LayerMaskMap& _getLayerMaskMap ();
                                                                                            +
                                                                                            171  void _insertInLayerMaskMap ( Layer* );
                                                                                            +
                                                                                            172  void _removeFromLayerMaskMap ( Layer* );
                                                                                            +
                                                                                            173  inline Layer::Mask& _getCutMask ();
                                                                                            +
                                                                                            174  inline Layer::Mask& _getMetalMask ();
                                                                                            +
                                                                                            175  void _onDbuChange ( float scale );
                                                                                            +
                                                                                            176  // Hurricane Managment.
                                                                                            +
                                                                                            177  virtual void _toJson ( JsonWriter* ) const;
                                                                                            +
                                                                                            178  virtual void _toJsonCollections ( JsonWriter* ) const;
                                                                                            +
                                                                                            179  virtual string _getTypeName () const;
                                                                                            +
                                                                                            180  virtual string _getString () const;
                                                                                            +
                                                                                            181  virtual Record* _getRecord () const;
                                                                                            +
                                                                                            182 
                                                                                            +
                                                                                            183  private:
                                                                                            +
                                                                                            184  // Internal: Attributes.
                                                                                            +
                                                                                            185  DataBase* _dataBase;
                                                                                            +
                                                                                            186  Name _name;
                                                                                            +
                                                                                            187  LayerMap _layerMap;
                                                                                            +
                                                                                            188  LayerMaskMap _layerMaskMap;
                                                                                            +
                                                                                            189  Layer::Mask _cutMask;
                                                                                            +
                                                                                            190  Layer::Mask _metalMask;
                                                                                            +
                                                                                            191  DeviceDescriptors _deviceDescriptors;
                                                                                            +
                                                                                            192  ModelDescriptors _modelDescriptors;
                                                                                            +
                                                                                            193  UnitRules _unitRules;
                                                                                            +
                                                                                            194  PhysicalRules _noLayerRules;
                                                                                            +
                                                                                            195  OneLayerRules _oneLayerRules;
                                                                                            +
                                                                                            196  TwoLayersRules _twoLayersRules;
                                                                                            +
                                                                                            197 
                                                                                            +
                                                                                            198  protected:
                                                                                            +
                                                                                            199  // Constructors & Destructors.
                                                                                            +
                                                                                            200  Technology ( DataBase* , const Name& );
                                                                                            +
                                                                                            201  virtual void _postCreate ();
                                                                                            +
                                                                                            202  virtual void _preDestroy ();
                                                                                            +
                                                                                            203  };
                                                                                            +
                                                                                            204 
                                                                                            +
                                                                                            205 
                                                                                            +
                                                                                            206 // Inline Functions.
                                                                                            +
                                                                                            207  inline bool Technology::isMetal ( const Layer* layer ) const { return _metalMask.contains(layer->getMask()); }
                                                                                            +
                                                                                            208  inline DataBase* Technology::getDataBase () const { return _dataBase; }
                                                                                            +
                                                                                            209  inline const Name& Technology::getName () const { return _name; }
                                                                                            +
                                                                                            210  inline Layer* Technology::getLayer ( const Name& name ) const { return _layerMap.getElement(name); }
                                                                                            +
                                                                                            211  inline Layers Technology::getLayers () const { return getCollection(&_layerMaskMap); }
                                                                                            +
                                                                                            212  inline Technology::ModelDescriptors& Technology::getModelDescriptors () { return _modelDescriptors; }
                                                                                            +
                                                                                            213  inline Technology::LayerMap& Technology::_getLayerMap () { return _layerMap; }
                                                                                            +
                                                                                            214  inline Technology::LayerMaskMap& Technology::_getLayerMaskMap () { return _layerMaskMap; }
                                                                                            +
                                                                                            215  inline Layer::Mask& Technology::_getCutMask () { return _cutMask; }
                                                                                            +
                                                                                            216  inline Layer::Mask& Technology::_getMetalMask () { return _metalMask; }
                                                                                            +
                                                                                            217 
                                                                                            +
                                                                                            218 
                                                                                            +
                                                                                            219 // -------------------------------------------------------------------
                                                                                            +
                                                                                            220 // Class : "Hurricane::JsonTechnology".
                                                                                            +
                                                                                            221 
                                                                                            +
                                                                                            222  class JsonTechnology : public JsonDBo {
                                                                                            +
                                                                                            223  public:
                                                                                            +
                                                                                            224  static void initialize ();
                                                                                            +
                                                                                            225  JsonTechnology ( unsigned long flags );
                                                                                            +
                                                                                            226  virtual ~JsonTechnology ();
                                                                                            +
                                                                                            227  virtual string getTypeName () const;
                                                                                            +
                                                                                            228  virtual JsonTechnology* clone ( unsigned long ) const;
                                                                                            +
                                                                                            229  virtual void toData ( JsonStack& );
                                                                                            +
                                                                                            230  void addBlockageRef ( const std::string&, BasicLayer* );
                                                                                            +
                                                                                            231  private:
                                                                                            +
                                                                                            232  std::map< string, vector<BasicLayer*> > _blockagesMap;
                                                                                            +
                                                                                            233  };
                                                                                            +
                                                                                            234 
                                                                                            +
                                                                                            235 
                                                                                            +
                                                                                            236 } // Hurricane namespace.
                                                                                            +
                                                                                            237 
                                                                                            +
                                                                                            238 
                                                                                            +
                                                                                            239 // -------------------------------------------------------------------
                                                                                            +
                                                                                            240 // Inspector Support for : Hurricane::Technology::LayerPair".
                                                                                            +
                                                                                            241 
                                                                                            +
                                                                                            242 template<>
                                                                                            +
                                                                                            243 inline std::string getString<Hurricane::Technology::LayerPair>( Hurricane::Technology::LayerPair lp )
                                                                                            +
                                                                                            244 { return "<LayerPair layer1=" + getString(lp.first) + ", layer2=" + getString(lp.second) + ">"; }
                                                                                            +
                                                                                            245 
                                                                                            +
                                                                                            246 
                                                                                            +
                                                                                            247 INSPECTOR_P_SUPPORT(Hurricane::Technology);
                                                                                            +
                                                                                            248 
                                                                                            +
                                                                                            249 
                                                                                            +
                                                                                            250 #endif // HURRICANE_TECHNOLOGY_H
                                                                                            Layer * getMetalAbove(const Layer *, bool useSymbolic=true) const
                                                                                            RegularLayer description (API)
                                                                                            Definition: RegularLayer.h:45
                                                                                            Layer * getNthMetal(int) const
                                                                                            @@ -229,34 +307,34 @@
                                                                                            BasicLayers getBasicLayers() const
                                                                                            const Mask & getMask() const
                                                                                            Definition: Layer.h:150
                                                                                            Name description (API)
                                                                                            Definition: Name.h:36
                                                                                            +
                                                                                            std::int64_t Unit
                                                                                            Definition: DbU.h:70
                                                                                            Layer * getMetalBelow(const Layer *, bool useSymbolic=true) const
                                                                                            -
                                                                                            const Name & getName() const
                                                                                            Definition: Technology.h:140
                                                                                            +
                                                                                            const Name & getName() const
                                                                                            Definition: Technology.h:209
                                                                                            DataBase object root class (API).
                                                                                            Definition: DBo.h:46
                                                                                            ViaLayers getViaLayers() const
                                                                                            Hurricane::Mask< unsigned long long > Mask
                                                                                            Definition: Layer.h:65
                                                                                            Layer * getCutAbove(const Layer *, bool useSymbolic=true) const
                                                                                            -
                                                                                            Layer * getLayer(const Name &) const
                                                                                            Definition: Technology.h:141
                                                                                            +
                                                                                            Layer * getLayer(const Name &) const
                                                                                            Definition: Technology.h:210
                                                                                            Generic Collection auto-pointer.
                                                                                            Definition: Collection.h:28
                                                                                            Layer * getCutBelow(const Layer *, bool useSymbolic=true) const
                                                                                            -
                                                                                            Layers getLayers() const
                                                                                            Definition: Technology.h:142
                                                                                            +
                                                                                            Layers getLayers() const
                                                                                            Definition: Technology.h:211
                                                                                            BasicLayer * getBasicLayer(const Name &) const
                                                                                            static Technology * create(DataBase *, const Name &)
                                                                                            The whole DataBase (API).
                                                                                            Definition: DataBase.h:40
                                                                                            Layer description (API)
                                                                                            Definition: Layer.h:52
                                                                                            ViaLayer * getViaLayer(const Name &) const
                                                                                            -
                                                                                            void setName(const Name &)
                                                                                            Layer * getViaBetween(const Layer *, const Layer *, bool useSymbolic=true) const
                                                                                            -
                                                                                            DataBase * getDataBase() const
                                                                                            Definition: Technology.h:139
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            DataBase * getDataBase() const
                                                                                            Definition: Technology.h:208
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66
                                                                                            RegularLayer * getRegularLayer(const Name &) const
                                                                                            ViaLayer description (API)
                                                                                            Definition: ViaLayer.h:46
                                                                                            -
                                                                                            bool isMetal(const Layer *) const
                                                                                            Definition: Technology.h:138
                                                                                            +
                                                                                            bool isMetal(const Layer *) const
                                                                                            Definition: Technology.h:207


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 cee8ea8a..682b8953 100644 --- a/hurricane/doc/hurricane/html/Transformation_8h_source.html +++ b/hurricane/doc/hurricane/html/Transformation_8h_source.html @@ -298,7 +298,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c3daf978..afca9566 100644 --- a/hurricane/doc/hurricane/html/TransistorLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/TransistorLayer_8h_source.html @@ -172,13 +172,13 @@
                                                                                            JSON Parser Stack.
                                                                                            Definition: JsonObject.h:249
                                                                                            static TransistorLayer * create(Technology *technology, const Name &name, BasicLayer *gateLayer, BasicLayer *activeLayer, BasicLayer *diffusionLayer, BasicLayer *wellLayer)
                                                                                            Layer description (API)
                                                                                            Definition: Layer.h:52
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66


                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5d539967..4ce9672c 100644 --- a/hurricane/doc/hurricane/html/UpdateSession_8h_source.html +++ b/hurricane/doc/hurricane/html/UpdateSession_8h_source.html @@ -159,7 +159,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3d0d03eb..0c8944a5 100644 --- a/hurricane/doc/hurricane/html/VectorCollection_8h_source.html +++ b/hurricane/doc/hurricane/html/VectorCollection_8h_source.html @@ -275,7 +275,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bd314aae..4b238048 100644 --- a/hurricane/doc/hurricane/html/Vertical_8h_source.html +++ b/hurricane/doc/hurricane/html/Vertical_8h_source.html @@ -207,7 +207,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 64261d23..2fd22986 100644 --- a/hurricane/doc/hurricane/html/Verticals_8h_source.html +++ b/hurricane/doc/hurricane/html/Verticals_8h_source.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 46a7a049..d9db9d93 100644 --- a/hurricane/doc/hurricane/html/ViaLayer_8h_source.html +++ b/hurricane/doc/hurricane/html/ViaLayer_8h_source.html @@ -168,7 +168,7 @@
                                                                                            DataBase object root class (API).
                                                                                            Definition: DBo.h:46
                                                                                            JSON Parser Stack.
                                                                                            Definition: JsonObject.h:249
                                                                                            Layer description (API)
                                                                                            Definition: Layer.h:52
                                                                                            -
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:58
                                                                                            +
                                                                                            Technological rules description (API).
                                                                                            Definition: Technology.h:66
                                                                                            ViaLayer description (API)
                                                                                            Definition: ViaLayer.h:46
                                                                                            static ViaLayer * create(Technology *technology, const Name &name, BasicLayer *bottomLayer, BasicLayer *cutLayer, BasicLayer *topLayer)
                                                                                            @@ -176,7 +176,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4e612ae9..347960b3 100644 --- a/hurricane/doc/hurricane/html/Warning_8h_source.html +++ b/hurricane/doc/hurricane/html/Warning_8h_source.html @@ -140,7 +140,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/annotated.html b/hurricane/doc/hurricane/html/annotated.html index 58d72127..0d6a16a9 100644 --- a/hurricane/doc/hurricane/html/annotated.html +++ b/hurricane/doc/hurricane/html/annotated.html @@ -141,7 +141,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 31ebf22a..d134be4e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer-members.html @@ -97,7 +97,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 18b79228..7d1fa7c4 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer.html @@ -339,7 +339,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 498b8f93..fa1d805d 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 @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c8617c63..85c8ba46 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1BasicLayer_1_1Material.html @@ -139,7 +139,7 @@ Public Types
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7c133d70..e0011c25 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Box-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Box-members.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 53f361c4..221dffeb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Box.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Box.html @@ -1041,7 +1041,7 @@ Remark on Modifiers
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0623a1df..621ffc79 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Cell-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Cell-members.html @@ -104,7 +104,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 825aec03..e5e050ac 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Cell.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Cell.html @@ -878,7 +878,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b4f9d0be..03236533 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Collection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Collection-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 124eb10d..592e0e17 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Collection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Collection.html @@ -463,7 +463,7 @@ template<class SubType >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 cda644a7..5a618024 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component-members.html @@ -87,7 +87,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 77683c93..3d38cc52 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component.html @@ -497,7 +497,7 @@ Predefined filters
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7f2e85c7..bd7eb31a 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 @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e5627d24..20acf4b3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Component_1_1BodyHook.html @@ -98,7 +98,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a41eecb9..00e73c17 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact-members.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 da90d586..570367f2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact.html @@ -730,7 +730,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1896d00a..eeff8f86 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer-members.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4e1d60a0..a4420c4d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ContactLayer.html @@ -231,7 +231,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 10145832..8cb00ad0 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 @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a0272524..ad023329 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Contact_1_1AnchorHook.html @@ -99,7 +99,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ac98b84b..64dd3e97 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DBo-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DBo-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7a61880a..aded3902 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DBo.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DBo.html @@ -374,7 +374,7 @@ Remark
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3001b3c2..eda5281b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DataBase-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DataBase-members.html @@ -72,7 +72,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ef373395..00e43ccc 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DataBase.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DataBase.html @@ -212,7 +212,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a7106f5f..eb6fe240 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DbU-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DbU-members.html @@ -106,7 +106,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 78e105f6..f1f560ab 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DbU.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DbU.html @@ -176,7 +176,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3a63d90a..0a3495a3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c897de58..d0fec020 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DebugSession.html @@ -112,19 +112,13 @@ Trace Levels Unicorn 180 190 -C++ / CHAMS +C++ / Analog Tool/Library Minimum Maximum -HurricaneAMS 500 510 +Analog 500 510 -amsCore 510 520 - -Pharos 520 530 - -Isis 530 540 - -Horus 530 540 +oroshi 510 520 Python Wrappers / Coriolis @@ -150,19 +144,13 @@ Trace Levels Unicorn/Python 46 48 -Python Wrappers / CHAMS +Python Wrappers / Analog Tool/Library Minimum Maximum -isobarAMS 48 50 +Analog 48 50 -amsCore 50 51 - -Pharos/Python 52 60 - -Isis/Python 60 61 - -Horus/Python 61 62 +oroshi/ÿthon 50 51 Special levels @@ -386,7 +374,7 @@ Trace Levels
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 cac9b8ca..37fa2d39 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal-members.html @@ -84,7 +84,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1b403ffb..dacbe8e3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Diagonal.html @@ -214,7 +214,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1edf2a2c..fddde8a0 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer-members.html @@ -91,7 +91,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 56cdb3b2..119bf736 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1DiffusionLayer.html @@ -217,7 +217,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 65cedc42..a9cb8801 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Entity-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Entity-members.html @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ae0630f1..c846ad5a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Entity.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Entity.html @@ -194,7 +194,7 @@ Unique Identifier
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/classHurricane_1_1Entity_1_1CompareById-members.html b/hurricane/doc/hurricane/html/classHurricane_1_1Entity_1_1CompareById-members.html index d9bb36b7..fac3cdcb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Entity_1_1CompareById-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Entity_1_1CompareById-members.html @@ -60,7 +60,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 182d55c0..9d85fcf7 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Error-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Error-members.html @@ -74,7 +74,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 57fd4821..5e4f0253 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Error.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Error.html @@ -364,7 +364,7 @@ Printing format
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9f4a387a..5404d909 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Exception-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Exception-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5f152589..4ac99e6b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Exception.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Exception.html @@ -243,7 +243,7 @@ Example
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 65e015a3..956fefa5 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Filter-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Filter-members.html @@ -63,7 +63,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 435e91ed..c6b12a80 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Filter.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Filter.html @@ -268,7 +268,7 @@ template<class Type>
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 42428384..3e12d258 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8f621766..534cc526 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericCollection.html @@ -189,7 +189,7 @@ template<class Type>
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 798219bc..9815fb14 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3615309d..c369bc3c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericFilter.html @@ -179,7 +179,7 @@ template<class Type >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8094b7c6..60cb2c2a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator-members.html @@ -63,7 +63,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e9a8159a..5f41a125 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1GenericLocator.html @@ -176,7 +176,7 @@ template<class Type>
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9d0e9c69..1844faa4 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Go-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Go-members.html @@ -79,7 +79,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 83737eb2..ea73f497 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Go.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Go.html @@ -430,7 +430,7 @@ Construction and destruction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 68eb6479..cfa66bb4 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Hook-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Hook-members.html @@ -73,7 +73,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 44eee9b6..a759f5fb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Hook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Hook.html @@ -399,7 +399,7 @@ Constructor and Destructor
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4ad66195..6b1ee18e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal-members.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f18426de..beb15a72 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Horizontal.html @@ -411,7 +411,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1b6815ed..229ea07a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 54db454a..eebc77fb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1HyperNet.html @@ -268,7 +268,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bedf169e..04988d56 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Initializer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Initializer-members.html @@ -61,7 +61,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2273692b..2f49938e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Initializer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Initializer.html @@ -111,7 +111,7 @@ template<typename T >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 15aacba6..a07b11df 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance-members.html @@ -91,7 +91,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7a763d07..3e044624 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance.html @@ -619,7 +619,7 @@ Instance Destruction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ac2e03f3..c5a39fba 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 @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 abcd1c73..ac244de2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Instance_1_1PlacementStatus.html @@ -211,7 +211,7 @@ Instance Placement Status
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c19343b1..bacf492b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interruption-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interruption-members.html @@ -69,7 +69,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6340dfa6..166d1f7c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interruption.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interruption.html @@ -187,7 +187,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fe64e3f7..a634b08f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interval-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interval-members.html @@ -87,7 +87,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 71b3c19b..cd52e1be 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Interval.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Interval.html @@ -686,7 +686,7 @@ Remark
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d4ff81ac..5b31be8d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject-members.html @@ -84,7 +84,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 11ee5be3..de77c53d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonObject.html @@ -881,7 +881,7 @@ template<typename T >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1a18c5ad..33ee199c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack-members.html @@ -73,7 +73,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d15ddf6b..82bd9626 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1JsonStack.html @@ -511,7 +511,7 @@ template<typename T >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7f6f65c7..4fefd2c4 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Layer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Layer-members.html @@ -93,7 +93,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 adce6e0c..2fd453aa 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Layer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Layer.html @@ -788,7 +788,7 @@ Looking Up a Layer from a Mask
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4b67d7f4..0597a479 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Library-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Library-members.html @@ -79,7 +79,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ac0d3954..aa06f46a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Library.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Library.html @@ -406,7 +406,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9aff7521..902ff4c1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9ea039ad..6dc51caf 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ListCollection.html @@ -114,7 +114,7 @@ template<class Element >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 65270bed..73a18811 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Locator-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Locator-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7f07edaf..d761387e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Locator.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Locator.html @@ -250,7 +250,7 @@ template<class Type>
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1209064f..72da5b28 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 16c56ad6..585054b8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1MapCollection.html @@ -114,7 +114,7 @@ template<class Key , class Element , class Compare = less<Key>> - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5a2daa86..d558b901 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Name-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Name-members.html @@ -74,7 +74,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2e4b7030..b451776c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Name.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Name.html @@ -369,7 +369,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b005171d..6c218ede 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net-members.html @@ -112,7 +112,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e00993ba..e1a041e6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net.html @@ -1090,7 +1090,7 @@ Predefined filters
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1506aa04..8d119650 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 @@ -74,7 +74,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ea79ba38..a46b524d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Direction.html @@ -154,7 +154,7 @@ Public Types
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0e9a8be7..23d593a9 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 @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 748c26ab..a4189c1c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Net_1_1Type.html @@ -114,7 +114,7 @@ Public Types
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2e240987..c15316b9 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter-members.html @@ -63,7 +63,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 96ac188c..2e68ffa8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1NotFilter.html @@ -149,7 +149,7 @@ template<class Type>
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d6c92f65..99bdf956 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence-members.html @@ -80,7 +80,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1b263cce..57de375f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Occurrence.html @@ -506,7 +506,7 @@ Remarks
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d2fd9fb9..b59c8109 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pad-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pad-members.html @@ -83,7 +83,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c9bc31ce..2c842841 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pad.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pad.html @@ -201,7 +201,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e9315564..6445751f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Path-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Path-members.html @@ -83,7 +83,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 169a7357..68fbd1e1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Path.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Path.html @@ -567,7 +567,7 @@ Remarks
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8f034166..f5f1d45f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pin-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pin-members.html @@ -100,7 +100,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 448f0181..3e4dcb49 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Pin.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Pin.html @@ -172,7 +172,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6bde64a7..9c359700 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Plug-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Plug-members.html @@ -86,7 +86,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f8351da0..76bef146 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Plug.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Plug.html @@ -320,7 +320,7 @@ Predefined filters
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ab8ac932..ee862e76 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Point-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Point-members.html @@ -69,7 +69,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 191eecd3..7ad36e0f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Point.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Point.html @@ -281,7 +281,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 04e0fc0a..ad59f896 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Polygon-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Polygon-members.html @@ -84,7 +84,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3d74601a..cdfc388f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Polygon.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Polygon.html @@ -202,7 +202,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 93a9d479..4ed9d1d1 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty-members.html @@ -63,7 +63,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ca1b06c5..cb15ad70 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1PrivateProperty.html @@ -125,7 +125,7 @@ Destruction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e11fdf5f..af1f40fb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Property-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Property-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2431135b..9272dcf7 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Property.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Property.html @@ -306,7 +306,7 @@ Remarks
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7eac9831..365473db 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 43810af7..7c1b9e31 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1QuadTree.html @@ -242,7 +242,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bc70befd..c0ba12c0 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Quark-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Quark-members.html @@ -69,7 +69,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9c8aede3..27866b24 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Quark.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Quark.html @@ -152,7 +152,7 @@ Example
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 314ae22c..6665fbde 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Query-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Query-members.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f90010d7..8941a251 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Query.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Query.html @@ -1003,7 +1003,7 @@ secQueryParameters
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f1357727..6a16ebd7 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer-members.html @@ -89,7 +89,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e21bf870..23c3071b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RegularLayer.html @@ -222,7 +222,7 @@ RegularLayer::getOpposite()
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e7681ef7..cf25cd69 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Relation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Relation-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6c040268..92ec4171 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Relation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Relation.html @@ -83,7 +83,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e97eed96..a7983103 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad-members.html @@ -107,7 +107,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8e9e947a..4d15718f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1RoutingPad.html @@ -689,7 +689,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 db6f043d..62f3631e 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Rubber-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Rubber-members.html @@ -78,7 +78,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fbd56b75..45695f6d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Rubber.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Rubber.html @@ -253,7 +253,7 @@ Constructors & Destructors
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 fa2a7911..a4fdc45d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment-members.html @@ -102,7 +102,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6b87965b..87d803fa 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment.html @@ -609,7 +609,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f3362286..9b09e7d7 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 @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f185a556..f9a545e4 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1SourceHook.html @@ -98,7 +98,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e2da8d00..c140e8db 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 @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 73d10f86..365084cf 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Segment_1_1TargetHook.html @@ -98,7 +98,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b57cb6e9..8c24e5c3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 72ceedfb..dd10b0f2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SetCollection.html @@ -114,7 +114,7 @@ template<class Element , class Compare = less<Element>>
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 334df79b..d149c141 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 576babb7..aa5fa9cc 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SharedProperty.html @@ -92,7 +92,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2113accc..004c3970 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Slice-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Slice-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 04996d56..a0ffdc77 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Slice.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Slice.html @@ -245,7 +245,7 @@ Example
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c27b3325..f8bed33c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d04498c0..3e4a46eb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardPrivateProperty.html @@ -90,7 +90,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 56f347d0..2cfc2ea8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation-members.html @@ -61,7 +61,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 da106eba..9119a8b2 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardRelation.html @@ -81,7 +81,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 46213644..38806e52 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty-members.html @@ -61,7 +61,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9e1b98f1..48f18d5c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1StandardSharedProperty.html @@ -87,7 +87,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 37fc4a9f..046ccb6f 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 390e2ae8..e6b8e266 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubSetCollection.html @@ -168,7 +168,7 @@ template<class Type >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2c794e45..c99dd082 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection-members.html @@ -69,7 +69,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 106ed6b0..2b797e2a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1SubTypeCollection.html @@ -172,7 +172,7 @@ template<class Type , class SubType >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8cf6a45a..96c7cefc 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 eac246b1..ef60f3f3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Tabulation.html @@ -292,7 +292,7 @@ Remark
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2ad43a1b..681b12dd 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Technology-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Technology-members.html @@ -89,7 +89,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 97788d05..ae03dc3b 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Technology.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Technology.html @@ -627,7 +627,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a7996673..bdf70b96 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation-members.html @@ -89,7 +89,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 53087e68..cdaf4f25 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation.html @@ -791,7 +791,7 @@ Transformers
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0a951db7..f4b270e2 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 @@ -60,7 +60,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d9cbfe9d..fe82f496 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Transformation_1_1Orientation.html @@ -114,7 +114,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2c54d33d..fdad6459 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer-members.html @@ -91,7 +91,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9c09f8ba..0d1bc5c8 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1TransistorLayer.html @@ -223,7 +223,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 409c262e..f373d9e3 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession-members.html @@ -60,7 +60,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 65cc3d26..667e383d 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1UpdateSession.html @@ -94,7 +94,7 @@ Update Session Mechanism
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 80bd50d4..bb1a48ba 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2cfe5906..016b9154 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1VectorCollection.html @@ -114,7 +114,7 @@ template<class Element >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ff36fa4d..20244cb6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Vertical-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Vertical-members.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6ae66bd8..a96d0d37 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Vertical.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Vertical.html @@ -412,7 +412,7 @@ Introduction
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c2576ae7..b411bca6 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer-members.html @@ -89,7 +89,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 286c2859..8363cdcb 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1ViaLayer.html @@ -213,7 +213,7 @@ ViaLayer::getOpposite()
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 12b1e350..9a5e458a 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Warning-members.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Warning-members.html @@ -73,7 +73,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 17ce749b..83b5209c 100644 --- a/hurricane/doc/hurricane/html/classHurricane_1_1Warning.html +++ b/hurricane/doc/hurricane/html/classHurricane_1_1Warning.html @@ -316,7 +316,7 @@ Remark
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/classes.html b/hurricane/doc/hurricane/html/classes.html index 2a64e3f5..52a21185 100644 --- a/hurricane/doc/hurricane/html/classes.html +++ b/hurricane/doc/hurricane/html/classes.html @@ -144,7 +144,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/clasststream-members.html b/hurricane/doc/hurricane/html/clasststream-members.html index b4a00f03..397766a1 100644 --- a/hurricane/doc/hurricane/html/clasststream-members.html +++ b/hurricane/doc/hurricane/html/clasststream-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/clasststream.html b/hurricane/doc/hurricane/html/clasststream.html index 7dc9d377..27cab1cb 100644 --- a/hurricane/doc/hurricane/html/clasststream.html +++ b/hurricane/doc/hurricane/html/clasststream.html @@ -393,7 +393,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html b/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html index 6bbcbda2..1b4edd81 100644 --- a/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html +++ b/hurricane/doc/hurricane/html/dir_2450e9a649c497a3424377400b95054f.html @@ -238,7 +238,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index a70ae3b2..1e18a7b7 100644 --- a/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/hurricane/doc/hurricane/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -62,7 +62,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html b/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html index 4d06e173..092296f4 100644 --- a/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html +++ b/hurricane/doc/hurricane/html/dir_84a91669594ac5e20f6d730a15331f7a.html @@ -62,7 +62,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/files.html b/hurricane/doc/hurricane/html/files.html index a750a85d..4fc33b02 100644 --- a/hurricane/doc/hurricane/html/files.html +++ b/hurricane/doc/hurricane/html/files.html @@ -143,7 +143,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions.html b/hurricane/doc/hurricane/html/functions.html index a5af9944..3802fda9 100644 --- a/hurricane/doc/hurricane/html/functions.html +++ b/hurricane/doc/hurricane/html/functions.html @@ -123,7 +123,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x62.html b/hurricane/doc/hurricane/html/functions_0x62.html index 3992feb1..c73c1340 100644 --- a/hurricane/doc/hurricane/html/functions_0x62.html +++ b/hurricane/doc/hurricane/html/functions_0x62.html @@ -105,7 +105,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x63.html b/hurricane/doc/hurricane/html/functions_0x63.html index 9ea4c222..9b87a3ef 100644 --- a/hurricane/doc/hurricane/html/functions_0x63.html +++ b/hurricane/doc/hurricane/html/functions_0x63.html @@ -163,7 +163,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x64.html b/hurricane/doc/hurricane/html/functions_0x64.html index 1eeaff77..33da606e 100644 --- a/hurricane/doc/hurricane/html/functions_0x64.html +++ b/hurricane/doc/hurricane/html/functions_0x64.html @@ -139,7 +139,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x65.html b/hurricane/doc/hurricane/html/functions_0x65.html index 8e1d53b1..e0412847 100644 --- a/hurricane/doc/hurricane/html/functions_0x65.html +++ b/hurricane/doc/hurricane/html/functions_0x65.html @@ -102,7 +102,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x66.html b/hurricane/doc/hurricane/html/functions_0x66.html index 87443565..0f0940bd 100644 --- a/hurricane/doc/hurricane/html/functions_0x66.html +++ b/hurricane/doc/hurricane/html/functions_0x66.html @@ -108,7 +108,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x67.html b/hurricane/doc/hurricane/html/functions_0x67.html index e338b3c5..f947b0a1 100644 --- a/hurricane/doc/hurricane/html/functions_0x67.html +++ b/hurricane/doc/hurricane/html/functions_0x67.html @@ -775,12 +775,12 @@
                                                                                          • goCallback() : Hurricane::Query
                                                                                          • -
                                                                                          • Grid -: Hurricane::DbU -
                                                                                          • grid() : Hurricane::DbU
                                                                                          • +
                                                                                          • Grid +: Hurricane::DbU +
                                                                                          • GROUND : Hurricane::Net::Type
                                                                                          • @@ -790,7 +790,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x68.html b/hurricane/doc/hurricane/html/functions_0x68.html index eab15a28..785b2470 100644 --- a/hurricane/doc/hurricane/html/functions_0x68.html +++ b/hurricane/doc/hurricane/html/functions_0x68.html @@ -124,7 +124,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x69.html b/hurricane/doc/hurricane/html/functions_0x69.html index 75486945..c30a9b4e 100644 --- a/hurricane/doc/hurricane/html/functions_0x69.html +++ b/hurricane/doc/hurricane/html/functions_0x69.html @@ -226,7 +226,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x6a.html b/hurricane/doc/hurricane/html/functions_0x6a.html index a8f5abd3..13e9d30a 100644 --- a/hurricane/doc/hurricane/html/functions_0x6a.html +++ b/hurricane/doc/hurricane/html/functions_0x6a.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x6b.html b/hurricane/doc/hurricane/html/functions_0x6b.html index 731a79e6..86535e7b 100644 --- a/hurricane/doc/hurricane/html/functions_0x6b.html +++ b/hurricane/doc/hurricane/html/functions_0x6b.html @@ -93,7 +93,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x6c.html b/hurricane/doc/hurricane/html/functions_0x6c.html index 622dfa48..b2e6a953 100644 --- a/hurricane/doc/hurricane/html/functions_0x6c.html +++ b/hurricane/doc/hurricane/html/functions_0x6c.html @@ -105,7 +105,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x6d.html b/hurricane/doc/hurricane/html/functions_0x6d.html index c9b93042..a96cb96f 100644 --- a/hurricane/doc/hurricane/html/functions_0x6d.html +++ b/hurricane/doc/hurricane/html/functions_0x6d.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x6e.html b/hurricane/doc/hurricane/html/functions_0x6e.html index 4a256601..b2fb9b10 100644 --- a/hurricane/doc/hurricane/html/functions_0x6e.html +++ b/hurricane/doc/hurricane/html/functions_0x6e.html @@ -108,7 +108,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x6f.html b/hurricane/doc/hurricane/html/functions_0x6f.html index 76b8f01f..469c73ad 100644 --- a/hurricane/doc/hurricane/html/functions_0x6f.html +++ b/hurricane/doc/hurricane/html/functions_0x6f.html @@ -167,7 +167,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x70.html b/hurricane/doc/hurricane/html/functions_0x70.html index eeb38c8f..d7bfc842 100644 --- a/hurricane/doc/hurricane/html/functions_0x70.html +++ b/hurricane/doc/hurricane/html/functions_0x70.html @@ -142,7 +142,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x71.html b/hurricane/doc/hurricane/html/functions_0x71.html index 82e80a97..c9c9838b 100644 --- a/hurricane/doc/hurricane/html/functions_0x71.html +++ b/hurricane/doc/hurricane/html/functions_0x71.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x72.html b/hurricane/doc/hurricane/html/functions_0x72.html index c1c44ffe..d5945468 100644 --- a/hurricane/doc/hurricane/html/functions_0x72.html +++ b/hurricane/doc/hurricane/html/functions_0x72.html @@ -112,7 +112,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x73.html b/hurricane/doc/hurricane/html/functions_0x73.html index b93d25cc..77128643 100644 --- a/hurricane/doc/hurricane/html/functions_0x73.html +++ b/hurricane/doc/hurricane/html/functions_0x73.html @@ -288,7 +288,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x74.html b/hurricane/doc/hurricane/html/functions_0x74.html index 91dde968..b7a701b0 100644 --- a/hurricane/doc/hurricane/html/functions_0x74.html +++ b/hurricane/doc/hurricane/html/functions_0x74.html @@ -135,7 +135,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x75.html b/hurricane/doc/hurricane/html/functions_0x75.html index 0563886f..df0c1ca5 100644 --- a/hurricane/doc/hurricane/html/functions_0x75.html +++ b/hurricane/doc/hurricane/html/functions_0x75.html @@ -118,7 +118,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x76.html b/hurricane/doc/hurricane/html/functions_0x76.html index 4bb6a75e..19e30b31 100644 --- a/hurricane/doc/hurricane/html/functions_0x76.html +++ b/hurricane/doc/hurricane/html/functions_0x76.html @@ -93,7 +93,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x77.html b/hurricane/doc/hurricane/html/functions_0x77.html index 20555e29..50cacca1 100644 --- a/hurricane/doc/hurricane/html/functions_0x77.html +++ b/hurricane/doc/hurricane/html/functions_0x77.html @@ -102,7 +102,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_0x7e.html b/hurricane/doc/hurricane/html/functions_0x7e.html index ed31e623..b7a85647 100644 --- a/hurricane/doc/hurricane/html/functions_0x7e.html +++ b/hurricane/doc/hurricane/html/functions_0x7e.html @@ -108,7 +108,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_enum.html b/hurricane/doc/hurricane/html/functions_enum.html index cf9d2b87..07bea0fc 100644 --- a/hurricane/doc/hurricane/html/functions_enum.html +++ b/hurricane/doc/hurricane/html/functions_enum.html @@ -81,7 +81,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_eval.html b/hurricane/doc/hurricane/html/functions_eval.html index 9bc9194e..ffc4cefe 100644 --- a/hurricane/doc/hurricane/html/functions_eval.html +++ b/hurricane/doc/hurricane/html/functions_eval.html @@ -315,7 +315,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func.html b/hurricane/doc/hurricane/html/functions_func.html index dcb0f677..61a464ed 100644 --- a/hurricane/doc/hurricane/html/functions_func.html +++ b/hurricane/doc/hurricane/html/functions_func.html @@ -116,7 +116,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x62.html b/hurricane/doc/hurricane/html/functions_func_0x62.html index 2492cc3a..fd37c554 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x62.html +++ b/hurricane/doc/hurricane/html/functions_func_0x62.html @@ -98,7 +98,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x63.html b/hurricane/doc/hurricane/html/functions_func_0x63.html index 8fe78b2e..887d866b 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x63.html +++ b/hurricane/doc/hurricane/html/functions_func_0x63.html @@ -139,7 +139,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x64.html b/hurricane/doc/hurricane/html/functions_func_0x64.html index 6ae04dba..bd69dd12 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x64.html +++ b/hurricane/doc/hurricane/html/functions_func_0x64.html @@ -105,7 +105,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x65.html b/hurricane/doc/hurricane/html/functions_func_0x65.html index 8170e2d1..828f4cd6 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x65.html +++ b/hurricane/doc/hurricane/html/functions_func_0x65.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x66.html b/hurricane/doc/hurricane/html/functions_func_0x66.html index a11c40cb..a58b7300 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x66.html +++ b/hurricane/doc/hurricane/html/functions_func_0x66.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x67.html b/hurricane/doc/hurricane/html/functions_func_0x67.html index 8b900804..257a85cf 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x67.html +++ b/hurricane/doc/hurricane/html/functions_func_0x67.html @@ -782,7 +782,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x68.html b/hurricane/doc/hurricane/html/functions_func_0x68.html index aab67ae9..b9d02f0e 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x68.html +++ b/hurricane/doc/hurricane/html/functions_func_0x68.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x69.html b/hurricane/doc/hurricane/html/functions_func_0x69.html index d5fdc094..d1796c72 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x69.html +++ b/hurricane/doc/hurricane/html/functions_func_0x69.html @@ -202,7 +202,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x6a.html b/hurricane/doc/hurricane/html/functions_func_0x6a.html index 08431191..afcfbbe2 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x6a.html +++ b/hurricane/doc/hurricane/html/functions_func_0x6a.html @@ -98,7 +98,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x6c.html b/hurricane/doc/hurricane/html/functions_func_0x6c.html index db9f1536..5e9f2d75 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x6c.html +++ b/hurricane/doc/hurricane/html/functions_func_0x6c.html @@ -98,7 +98,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x6d.html b/hurricane/doc/hurricane/html/functions_func_0x6d.html index 3d2c199b..34906065 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x6d.html +++ b/hurricane/doc/hurricane/html/functions_func_0x6d.html @@ -115,7 +115,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x6e.html b/hurricane/doc/hurricane/html/functions_func_0x6e.html index 8b5c39b5..a57f529d 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x6e.html +++ b/hurricane/doc/hurricane/html/functions_func_0x6e.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x6f.html b/hurricane/doc/hurricane/html/functions_func_0x6f.html index fde1f732..a23310c7 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x6f.html +++ b/hurricane/doc/hurricane/html/functions_func_0x6f.html @@ -160,7 +160,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x70.html b/hurricane/doc/hurricane/html/functions_func_0x70.html index e85941dc..2d1edc7f 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x70.html +++ b/hurricane/doc/hurricane/html/functions_func_0x70.html @@ -123,7 +123,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x71.html b/hurricane/doc/hurricane/html/functions_func_0x71.html index bd58ecad..bb021eb3 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x71.html +++ b/hurricane/doc/hurricane/html/functions_func_0x71.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x72.html b/hurricane/doc/hurricane/html/functions_func_0x72.html index 6f16ba02..493bc204 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x72.html +++ b/hurricane/doc/hurricane/html/functions_func_0x72.html @@ -111,7 +111,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x73.html b/hurricane/doc/hurricane/html/functions_func_0x73.html index e8d9f6a8..5f359a6d 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x73.html +++ b/hurricane/doc/hurricane/html/functions_func_0x73.html @@ -268,7 +268,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x74.html b/hurricane/doc/hurricane/html/functions_func_0x74.html index 35f41c55..6d6145fb 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x74.html +++ b/hurricane/doc/hurricane/html/functions_func_0x74.html @@ -128,7 +128,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x75.html b/hurricane/doc/hurricane/html/functions_func_0x75.html index 3cc78ecb..8d227d5f 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x75.html +++ b/hurricane/doc/hurricane/html/functions_func_0x75.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x76.html b/hurricane/doc/hurricane/html/functions_func_0x76.html index 529f8411..c86b118f 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x76.html +++ b/hurricane/doc/hurricane/html/functions_func_0x76.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_func_0x77.html b/hurricane/doc/hurricane/html/functions_func_0x77.html index 94826abd..5e268276 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x77.html +++ b/hurricane/doc/hurricane/html/functions_func_0x77.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 09b6f046..2890d79e 100644 --- a/hurricane/doc/hurricane/html/functions_func_0x7e.html +++ b/hurricane/doc/hurricane/html/functions_func_0x7e.html @@ -107,7 +107,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/functions_type.html b/hurricane/doc/hurricane/html/functions_type.html index f180ad3a..9276b88d 100644 --- a/hurricane/doc/hurricane/html/functions_type.html +++ b/hurricane/doc/hurricane/html/functions_type.html @@ -88,7 +88,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/graph_legend.html b/hurricane/doc/hurricane/html/graph_legend.html index 0128afb7..2639d7cd 100644 --- a/hurricane/doc/hurricane/html/graph_legend.html +++ b/hurricane/doc/hurricane/html/graph_legend.html @@ -109,7 +109,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/group__DbUGroup.html b/hurricane/doc/hurricane/html/group__DbUGroup.html index 84c954fb..233b4169 100644 --- a/hurricane/doc/hurricane/html/group__DbUGroup.html +++ b/hurricane/doc/hurricane/html/group__DbUGroup.html @@ -1242,7 +1242,7 @@ Translators
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/group__Generalities.html b/hurricane/doc/hurricane/html/group__Generalities.html index c9c2ec3f..d3130a49 100644 --- a/hurricane/doc/hurricane/html/group__Generalities.html +++ b/hurricane/doc/hurricane/html/group__Generalities.html @@ -193,7 +193,7 @@ Remarks
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/group__JsonSupport.html b/hurricane/doc/hurricane/html/group__JsonSupport.html index 7ccee5dc..c60487c2 100644 --- a/hurricane/doc/hurricane/html/group__JsonSupport.html +++ b/hurricane/doc/hurricane/html/group__JsonSupport.html @@ -230,7 +230,7 @@ JsonObject Life Cycle
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html b/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html index 105b7765..fe501632 100644 --- a/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html +++ b/hurricane/doc/hurricane/html/group__grpSynthHierarchy.html @@ -236,7 +236,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/hierarchy.html b/hurricane/doc/hurricane/html/hierarchy.html index 8994731e..195b9f82 100644 --- a/hurricane/doc/hurricane/html/hierarchy.html +++ b/hurricane/doc/hurricane/html/hierarchy.html @@ -151,7 +151,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/index.html b/hurricane/doc/hurricane/html/index.html index cf26df51..fca25cd4 100644 --- a/hurricane/doc/hurricane/html/index.html +++ b/hurricane/doc/hurricane/html/index.html @@ -49,7 +49,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/modules.html b/hurricane/doc/hurricane/html/modules.html index b46e13e4..ede73dc7 100644 --- a/hurricane/doc/hurricane/html/modules.html +++ b/hurricane/doc/hurricane/html/modules.html @@ -53,7 +53,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/namespaceHurricane.html b/hurricane/doc/hurricane/html/namespaceHurricane.html index 43eb1ee8..d16ef27b 100644 --- a/hurricane/doc/hurricane/html/namespaceHurricane.html +++ b/hurricane/doc/hurricane/html/namespaceHurricane.html @@ -1279,7 +1279,7 @@ Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/namespacemembers.html b/hurricane/doc/hurricane/html/namespacemembers.html index 8ae1f8f7..7191253d 100644 --- a/hurricane/doc/hurricane/html/namespacemembers.html +++ b/hurricane/doc/hurricane/html/namespacemembers.html @@ -315,7 +315,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/namespacemembers_func.html b/hurricane/doc/hurricane/html/namespacemembers_func.html index 7f53f484..717b3905 100644 --- a/hurricane/doc/hurricane/html/namespacemembers_func.html +++ b/hurricane/doc/hurricane/html/namespacemembers_func.html @@ -59,7 +59,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/namespacemembers_type.html b/hurricane/doc/hurricane/html/namespacemembers_type.html index 17dfef96..4f0c8533 100644 --- a/hurricane/doc/hurricane/html/namespacemembers_type.html +++ b/hurricane/doc/hurricane/html/namespacemembers_type.html @@ -312,7 +312,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/namespaces.html b/hurricane/doc/hurricane/html/namespaces.html index 18e8cc45..f8ac1087 100644 --- a/hurricane/doc/hurricane/html/namespaces.html +++ b/hurricane/doc/hurricane/html/namespaces.html @@ -56,7 +56,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/html/structHurricane_1_1Entity_1_1CompareById.html b/hurricane/doc/hurricane/html/structHurricane_1_1Entity_1_1CompareById.html index 12f9e421..0cd3b78e 100644 --- a/hurricane/doc/hurricane/html/structHurricane_1_1Entity_1_1CompareById.html +++ b/hurricane/doc/hurricane/html/structHurricane_1_1Entity_1_1CompareById.html @@ -83,7 +83,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/hurricane/latex/classHurricane_1_1DebugSession.tex b/hurricane/doc/hurricane/latex/classHurricane_1_1DebugSession.tex index a8e73d95..ea1966b7 100644 --- a/hurricane/doc/hurricane/latex/classHurricane_1_1DebugSession.tex +++ b/hurricane/doc/hurricane/latex/classHurricane_1_1DebugSession.tex @@ -47,13 +47,10 @@ Kite &{\ttfamily 150} &{\ttfamily 160} \\\cline{1-3} Solstice &{\ttfamily 160} &{\ttfamily 170} \\\cline{1-3} Equinox &{\ttfamily 170} &{\ttfamily 180} \\\cline{1-3} Unicorn &{\ttfamily 180} &{\ttfamily 190} \\\cline{1-3} -\rowcolor{lightgray}\multicolumn{3}{|p{(\linewidth-\tabcolsep*3-\arrayrulewidth*1)*3/3}|}{\cellcolor{lightgray}{\bf {\bfseries C++} / C\-H\-A\-M\-S }}\\\cline{1-3} +\rowcolor{lightgray}\multicolumn{3}{|p{(\linewidth-\tabcolsep*3-\arrayrulewidth*1)*3/3}|}{\cellcolor{lightgray}{\bf {\bfseries C++} / Analog }}\\\cline{1-3} \rowcolor{lightgray}{\bf {\bfseries Tool/\-Library} }&{\bf {\bfseries Minimum} }&{\bf {\bfseries Maximum} }\\\cline{1-3} -Hurricane\-A\-M\-S &{\ttfamily 500} &{\ttfamily 510} \\\cline{1-3} -ams\-Core &{\ttfamily 510} &{\ttfamily 520} \\\cline{1-3} -Pharos &{\ttfamily 520} &{\ttfamily 530} \\\cline{1-3} -Isis &{\ttfamily 530} &{\ttfamily 540} \\\cline{1-3} -Horus &{\ttfamily 530} &{\ttfamily 540} \\\cline{1-3} +Analog &{\ttfamily 500} &{\ttfamily 510} \\\cline{1-3} +oroshi &{\ttfamily 510} &{\ttfamily 520} \\\cline{1-3} \rowcolor{lightgray}\multicolumn{3}{|p{(\linewidth-\tabcolsep*3-\arrayrulewidth*1)*3/3}|}{\cellcolor{lightgray}{\bf {\bfseries Python} Wrappers / Coriolis }}\\\cline{1-3} \rowcolor{lightgray}{\bf {\bfseries Tool/\-Library} }&{\bf {\bfseries Minimum} }&{\bf {\bfseries Maximum} }\\\cline{1-3} Isobar &{\ttfamily 20} &{\ttfamily 30} \\\cline{1-3} @@ -66,13 +63,10 @@ Kite/\-Python &{\ttfamily 40} &{\ttfamily 42} \\\cline{1-3} Solstice/\-Python &{\ttfamily 42} &{\ttfamily 44} \\\cline{1-3} Equinox/\-Python &{\ttfamily 44} &{\ttfamily 46} \\\cline{1-3} Unicorn/\-Python &{\ttfamily 46} &{\ttfamily 48} \\\cline{1-3} -\rowcolor{lightgray}\multicolumn{3}{|p{(\linewidth-\tabcolsep*3-\arrayrulewidth*1)*3/3}|}{\cellcolor{lightgray}{\bf {\bfseries Python} Wrappers / C\-H\-A\-M\-S }}\\\cline{1-3} +\rowcolor{lightgray}\multicolumn{3}{|p{(\linewidth-\tabcolsep*3-\arrayrulewidth*1)*3/3}|}{\cellcolor{lightgray}{\bf {\bfseries Python} Wrappers / Analog }}\\\cline{1-3} \rowcolor{lightgray}{\bf {\bfseries Tool/\-Library} }&{\bf {\bfseries Minimum} }&{\bf {\bfseries Maximum} }\\\cline{1-3} -isobar\-A\-M\-S &{\ttfamily 48} &{\ttfamily 50} \\\cline{1-3} -ams\-Core &{\ttfamily 50} &{\ttfamily 51} \\\cline{1-3} -Pharos/\-Python &{\ttfamily 52} &{\ttfamily 60} \\\cline{1-3} -Isis/\-Python &{\ttfamily 60} &{\ttfamily 61} \\\cline{1-3} -Horus/\-Python &{\ttfamily 61} &{\ttfamily 62} \\\cline{1-3} +Analog &{\ttfamily 48} &{\ttfamily 50} \\\cline{1-3} +oroshi/ÿthon &{\ttfamily 50} &{\ttfamily 51} \\\cline{1-3} \rowcolor{lightgray}\multicolumn{3}{|p{(\linewidth-\tabcolsep*3-\arrayrulewidth*1)*3/3}|}{\cellcolor{lightgray}{\bf {\bfseries Special} levels }}\\\cline{1-3} Determinim check &{\ttfamily 9000} &{\ttfamily 9001} \\\cline{1-3} J\-S\-O\-N parsers/drivers&{\ttfamily 19} &{\ttfamily 20} \\\cline{1-3} diff --git a/hurricane/doc/hurricane/latex/refman.tex b/hurricane/doc/hurricane/latex/refman.tex index 7f14233a..c7fd53e5 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.5}\\ \vspace*{0.5cm} - {\small Sat Aug 18 2018 22:39:36}\\ + {\small Mon Oct 1 2018 14:29:05}\\ \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 30a1bade..c0cf5ab7 100644 --- a/hurricane/doc/viewer/html/CellImage_8h_source.html +++ b/hurricane/doc/viewer/html/CellImage_8h_source.html @@ -150,7 +150,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2c8f77cc..d7849f4a 100644 --- a/hurricane/doc/viewer/html/CellPrinter_8h_source.html +++ b/hurricane/doc/viewer/html/CellPrinter_8h_source.html @@ -174,7 +174,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 eaa8295b..ea49a00d 100644 --- a/hurricane/doc/viewer/html/CellViewer_8h_source.html +++ b/hurricane/doc/viewer/html/CellViewer_8h_source.html @@ -301,7 +301,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 15331dd6..7a685e53 100644 --- a/hurricane/doc/viewer/html/CellWidget_8h_source.html +++ b/hurricane/doc/viewer/html/CellWidget_8h_source.html @@ -1536,7 +1536,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3a3f1499..ad0f3a0e 100644 --- a/hurricane/doc/viewer/html/DisplayStyle_8h_source.html +++ b/hurricane/doc/viewer/html/DisplayStyle_8h_source.html @@ -417,7 +417,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d763a206..1140219f 100644 --- a/hurricane/doc/viewer/html/Graphics_8h_source.html +++ b/hurricane/doc/viewer/html/Graphics_8h_source.html @@ -269,7 +269,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 cb27ded2..590d86b5 100644 --- a/hurricane/doc/viewer/html/InspectorWidget_8h_source.html +++ b/hurricane/doc/viewer/html/InspectorWidget_8h_source.html @@ -163,7 +163,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/annotated.html b/hurricane/doc/viewer/html/annotated.html index 40df3443..bc398c21 100644 --- a/hurricane/doc/viewer/html/annotated.html +++ b/hurricane/doc/viewer/html/annotated.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e5ba9a3f..ca718275 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d7b5db71..adf2b499 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html @@ -287,7 +287,7 @@ ShowScale: display a false color scale at the bottom of the image. Useful if you
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5f2ed93c..31bd8101 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ced68586..ffbdd223 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html @@ -263,7 +263,7 @@ Implementation details
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 1511e198..98531231 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html @@ -76,7 +76,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 51090026..4182c8e6 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html @@ -484,7 +484,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b8112e86..e33e170c 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bb72bf93..c4499894 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html @@ -104,7 +104,7 @@ Public Types
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ad3a0af2..acf6421a 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html @@ -78,7 +78,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2429ac71..1fd58623 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html @@ -590,7 +590,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9d526d7b..87dda62d 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html @@ -78,7 +78,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 167cb833..ae413aad 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html @@ -643,7 +643,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ed7e5058..470643e2 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c7cff23b..34b1dc92 100644 --- a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html +++ b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html @@ -141,7 +141,7 @@ Inspector Memory Management
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/classes.html b/hurricane/doc/viewer/html/classes.html index 8e2dfd05..48182393 100644 --- a/hurricane/doc/viewer/html/classes.html +++ b/hurricane/doc/viewer/html/classes.html @@ -70,7 +70,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/dir_8411fe88106249809ce887a3285ac2b5.html b/hurricane/doc/viewer/html/dir_8411fe88106249809ce887a3285ac2b5.html index 55d78ee4..caae1231 100644 --- a/hurricane/doc/viewer/html/dir_8411fe88106249809ce887a3285ac2b5.html +++ b/hurricane/doc/viewer/html/dir_8411fe88106249809ce887a3285ac2b5.html @@ -62,7 +62,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/dir_d17b4bff01b823ea10853862cd33daf4.html b/hurricane/doc/viewer/html/dir_d17b4bff01b823ea10853862cd33daf4.html index 4f541353..622d5fad 100644 --- a/hurricane/doc/viewer/html/dir_d17b4bff01b823ea10853862cd33daf4.html +++ b/hurricane/doc/viewer/html/dir_d17b4bff01b823ea10853862cd33daf4.html @@ -62,7 +62,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/dir_dadde0d0ee7514f4b9d838e8db4a8c39.html b/hurricane/doc/viewer/html/dir_dadde0d0ee7514f4b9d838e8db4a8c39.html index 8f6b545b..f7f12560 100644 --- a/hurricane/doc/viewer/html/dir_dadde0d0ee7514f4b9d838e8db4a8c39.html +++ b/hurricane/doc/viewer/html/dir_dadde0d0ee7514f4b9d838e8db4a8c39.html @@ -62,7 +62,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/dir_e61ba495830392da74308d37dc1d0e01.html b/hurricane/doc/viewer/html/dir_e61ba495830392da74308d37dc1d0e01.html index 81dfc485..1541fccb 100644 --- a/hurricane/doc/viewer/html/dir_e61ba495830392da74308d37dc1d0e01.html +++ b/hurricane/doc/viewer/html/dir_e61ba495830392da74308d37dc1d0e01.html @@ -74,7 +74,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/files.html b/hurricane/doc/viewer/html/files.html index 2edc25ea..837ede8b 100644 --- a/hurricane/doc/viewer/html/files.html +++ b/hurricane/doc/viewer/html/files.html @@ -61,7 +61,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/functions.html b/hurricane/doc/viewer/html/functions.html index 5bf2a84c..8be4d3ad 100644 --- a/hurricane/doc/viewer/html/functions.html +++ b/hurricane/doc/viewer/html/functions.html @@ -318,7 +318,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/functions_enum.html b/hurricane/doc/viewer/html/functions_enum.html index ffa7cf7d..3fdfad6c 100644 --- a/hurricane/doc/viewer/html/functions_enum.html +++ b/hurricane/doc/viewer/html/functions_enum.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/functions_eval.html b/hurricane/doc/viewer/html/functions_eval.html index ddc319cb..b5c31fcd 100644 --- a/hurricane/doc/viewer/html/functions_eval.html +++ b/hurricane/doc/viewer/html/functions_eval.html @@ -67,7 +67,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/functions_func.html b/hurricane/doc/viewer/html/functions_func.html index 9edfdb52..8b48933e 100644 --- a/hurricane/doc/viewer/html/functions_func.html +++ b/hurricane/doc/viewer/html/functions_func.html @@ -303,7 +303,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/graph_legend.html b/hurricane/doc/viewer/html/graph_legend.html index 038806aa..4c163ab1 100644 --- a/hurricane/doc/viewer/html/graph_legend.html +++ b/hurricane/doc/viewer/html/graph_legend.html @@ -109,7 +109,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/group__graphicsGroup.html b/hurricane/doc/viewer/html/group__graphicsGroup.html index 28067fde..3f72f6aa 100644 --- a/hurricane/doc/viewer/html/group__graphicsGroup.html +++ b/hurricane/doc/viewer/html/group__graphicsGroup.html @@ -99,7 +99,7 @@ General Structure of the Graphics Object
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/index.html b/hurricane/doc/viewer/html/index.html index c7fdf71b..554d196d 100644 --- a/hurricane/doc/viewer/html/index.html +++ b/hurricane/doc/viewer/html/index.html @@ -45,7 +45,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/modules.html b/hurricane/doc/viewer/html/modules.html index 99d0a38a..d184b366 100644 --- a/hurricane/doc/viewer/html/modules.html +++ b/hurricane/doc/viewer/html/modules.html @@ -54,7 +54,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/html/pages.html b/hurricane/doc/viewer/html/pages.html index 36dd6cd0..3ebb6415 100644 --- a/hurricane/doc/viewer/html/pages.html +++ b/hurricane/doc/viewer/html/pages.html @@ -50,7 +50,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/hurricane/doc/viewer/latex/refman.tex b/hurricane/doc/viewer/latex/refman.tex index 97736790..f036076d 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.5}\\ \vspace*{0.5cm} - {\small Sat Aug 18 2018 22:39:36}\\ + {\small Mon Oct 1 2018 14:29:05}\\ \end{center} \end{titlepage} diff --git a/hurricane/src/CMakeLists.txt b/hurricane/src/CMakeLists.txt index 908d9884..4b45f584 100644 --- a/hurricane/src/CMakeLists.txt +++ b/hurricane/src/CMakeLists.txt @@ -1,3 +1,4 @@ add_subdirectory(hurricane) add_subdirectory(viewer) add_subdirectory(isobar) +add_subdirectory(analog) diff --git a/hurricane/src/analog/AnalogCellExtension.cpp b/hurricane/src/analog/AnalogCellExtension.cpp new file mode 100644 index 00000000..8a463f08 --- /dev/null +++ b/hurricane/src/analog/AnalogCellExtension.cpp @@ -0,0 +1,97 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis, Eric Lao | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./AnalogCellExtension.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/Net.h" +#include "hurricane/Technology.h" +#include "hurricane/DataBase.h" +#include "hurricane/RegularLayer.h" +#include "hurricane/Horizontal.h" +#include "hurricane/Name.h" +#include "hurricane/Cell.h" +#include "hurricane/analog/AnalogCellExtension.h" + + +namespace Analog { + + using namespace std; + using namespace Hurricane; + + + AnalogData::~AnalogData () + { } + + + Record* AnalogData::_getRecord () const + { + Record* record = new Record ( getString(this) ); + return record; + } + + + template<> + Name StandardPrivateProperty::_name = "Analog::CellExtension"; + + + AnalogCellExtensionDatas::AnalogCellExtensionDatas () + : _params() + , _datas () + { } + + + AnalogCellExtensionDatas::~AnalogCellExtensionDatas () + { + for ( AnalogData* data : _datas ) delete data; + } + + + void AnalogCellExtension::addParameter ( Cell* cell, const Name& name, boost::any value ) + { + Extension* extension = Extension::get(cell); + if (not extension) { + extension = Extension::create(); + cell->put( extension ); + } + extension->getValue()._params[ name ] = value; + } + + + boost::any& AnalogCellExtension::getParameter ( const Cell* cell, const Name& name, bool& found ) + { + static boost::any empty; + + found = false; + + Extension* extension = Extension::get( cell ); + if (not extension) return empty; + + map::iterator it = extension->getValue()._params.find( name ); + if (it == extension->getValue()._params.end()) return empty; + + found = true; + return (*it).second; + } + + + map* AnalogCellExtension::getParameters ( const Cell* cell ) + { + Extension* extension = Extension::get( cell ); + if (not extension) return NULL; + + return &(extension->getValue()._params); + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/BJT.cpp b/hurricane/src/analog/BJT.cpp new file mode 100644 index 00000000..b996afdb --- /dev/null +++ b/hurricane/src/analog/BJT.cpp @@ -0,0 +1,112 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./BJT.cpp" | +// +-----------------------------------------------------------------+ + +#include +#include +#include "hurricane/Library.h" +#include "hurricane/Name.h" +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/BJT.h" +#include "hurricane/analog/BJTArguments.h" + + +namespace Analog { + + using namespace Hurricane; + + + const Name BJT::_bjt ( "BJT" ); + + + BJT::BJT ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + , _n (NULL) + , _m (NULL) + , _externalDummy(NULL) + { } + + + BJT* BJT::create ( Library* library, const Name& name, const Type& type ) + { + preCreate( name ); + UpdateSession::open(); + BJT* bjt = new BJT( library, name, type ); + bjt->_postCreate( name ); + bjt->createConnections(); + UpdateSession::close(); + return bjt; + } + + + void BJT::_postCreate ( const Name& deviceName ) + { + Super::_postCreate( deviceName ); + + Choices externalDummy; + externalDummy << ""; + _externalDummy = addMCheckBoxParameter( "External Dummy", externalDummy ); + + _m = addFormFactorParameter( "M", 1, 10 ); + _n = addFormFactorParameter( "N", 1, 10 ); + } + + + void BJT::createConnections () + { + Net* e = Net::create( this, Name("E") ); + e->setExternal( true ); + + Net* b = Net::create( this, Name("B") ); + b->setExternal( true ); + + Net* c = Net::create( this, Name("C") ); + c->setExternal( true ); + } + + + Name BJT::getDeviceName () const + { return _bjt; } + + + Arguments* BJT::getArguments () + { + bool isNPN = (getType() == BJTFamily::NPN); + bool isExternalDummy = (_externalDummy->getValue() == 1); + + BJTArguments* bjtArgs = new BJTArguments( isNPN, isExternalDummy, _m->getValue(), _n->getValue() ); + return bjtArgs; + } + + + unsigned int BJT::getM () const + { return _m->getValue(); } + + + unsigned int BJT::getN () const + { return _n->getValue(); } + + + void BJT::setExternalDummy ( const bool externalDummy ) + { + if (externalDummy) _externalDummy->setValue(1); + else _externalDummy->setValue(0); + } + + + bool BJT::getExternalDummy () const + { return (_externalDummy->getValue() == 1); } + + +} // Analog namespace. diff --git a/hurricane/src/analog/BJTArguments.cpp b/hurricane/src/analog/BJTArguments.cpp new file mode 100644 index 00000000..1ed6fe01 --- /dev/null +++ b/hurricane/src/analog/BJTArguments.cpp @@ -0,0 +1,45 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./BJTArguments.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/BJTArguments.h" + + +namespace Analog { + + + BJTArguments::BJTArguments ( bool isNPN, bool isExternalDummy, unsigned m, unsigned n ) + : Super() + , _isNPN (isNPN) + , _isExternalDummy(isExternalDummy) + , _m (m) + , _n (n) + { } + + + BJTArguments::BJTArguments ( const BJTArguments& bjtArgs ) + : Super() + , _isNPN (bjtArgs.isNPN()) + , _isExternalDummy(bjtArgs.isExternalDummy()) + , _m (bjtArgs.getM()) + , _n (bjtArgs.getN()) + { } + + + BJTArguments* BJTArguments::getClone () + { return new BJTArguments( *this ); } + + +} // Analog namespace. diff --git a/hurricane/src/analog/BJTFamily.cpp b/hurricane/src/analog/BJTFamily.cpp new file mode 100644 index 00000000..ed3e4bd1 --- /dev/null +++ b/hurricane/src/analog/BJTFamily.cpp @@ -0,0 +1,34 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./BJTFamily.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/Library.h" +#include "hurricane/Name.h" +#include "hurricane/analog/BJTFamily.h" + + +namespace Analog { + + using namespace Hurricane; + + + BJTFamily::BJTFamily ( Library* library, const Name& name, const Type& type ) + : Super(library,name) + , _type (type) + , _operatorIndex(0) + { } + + +} // Analog namespace. diff --git a/hurricane/src/analog/BJTFamilyNames.cpp b/hurricane/src/analog/BJTFamilyNames.cpp new file mode 100644 index 00000000..954d5395 --- /dev/null +++ b/hurricane/src/analog/BJTFamilyNames.cpp @@ -0,0 +1,28 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./BJTFamilyNames.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/BJTFamilyNames.h" + + +namespace Analog { + + + const char* BJTFamilyNames::NPNBJT( "NPN BJT" ); + const char* BJTFamilyNames::PNPBJT( "PNP BJT" ); + + +} // Analog namespace. + diff --git a/hurricane/src/analog/CMakeLists.txt b/hurricane/src/analog/CMakeLists.txt new file mode 100644 index 00000000..dcfcfda5 --- /dev/null +++ b/hurricane/src/analog/CMakeLists.txt @@ -0,0 +1,161 @@ +# -*- mode: CMAKE explicit-buffer-name: "CMakeLists.txt" -*- + +# include ( ${QT_USE_FILE} ) + + include_directories ( ${HURRICANE_SOURCE_DIR}/src/hurricane + ${HURRICANE_SOURCE_DIR}/src/isobar + ${HURRICANE_SOURCE_DIR}/src/viewer + ${HURRICANE_SOURCE_DIR}/src/analog + ${CONFIGURATION_INCLUDE_DIR} + ${QtX_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} + ${PYTHON_INCLUDE_PATH} + ) + + set( cpps AnalogCellExtension.cpp + BJTArguments.cpp + BJT.cpp + BJTFamily.cpp + BJTFamilyNames.cpp + CapacitorArguments.cpp + CapacitorFamily.cpp + CapacitorFamilyNames.cpp + Cascode.cpp + ChoiceParameter.cpp + Choices.cpp + CommonDrain.cpp + CommonGatePair.cpp + CommonSourcePair.cpp + CrossCoupledPair.cpp + Device.cpp + DifferentialPair.cpp + LayoutGenerator.cpp + LevelShifter.cpp + MetaCapacitor.cpp + MetaTransistor.cpp + MIMCapacitor.cpp + SimpleCurrentMirror.cpp + TransistorArguments.cpp + Transistor.cpp + TransistorFamily.cpp + TransistorFamilyNames.cpp + TransistorMultiArguments.cpp + TransistorPair.cpp + ) + set( pyCpps PyAnalog.cpp + PyBJTArguments.cpp + PyCapacitorArguments.cpp + PyCapacitorFamily.cpp + PyCapacitorParameter.cpp + PyCascode.cpp + PyChoiceParameter.cpp + PyCommonDrain.cpp + PyCommonGatePair.cpp + PyCommonSourcePair.cpp + PyCrossCoupledPair.cpp + PyDevice.cpp + PyDifferentialPair.cpp + PyFormFactorParameter.cpp + PyLayoutGenerator.cpp + PyLevelShifter.cpp + PyMCheckBoxParameter.cpp + PyMIMCapacitor.cpp + PyParameter.cpp + PySimpleCurrentMirror.cpp + PySpinBoxParameter.cpp + PyStepParameter.cpp + PyTransistorArguments.cpp + PyTransistor.cpp + PyTransistorFamily.cpp + PyTransistorMultiArguments.cpp + PyTransistorPair.cpp + ) + set( includes hurricane/analog/AnalogCellExtension.h + hurricane/analog/Arguments.h + hurricane/analog/BJTArguments.h + hurricane/analog/BJTFamily.h + hurricane/analog/BJTFamilyNames.h + hurricane/analog/BJT.h + hurricane/analog/CapacitorArguments.h + hurricane/analog/CapacitorFamily.h + hurricane/analog/CapacitorFamilyNames.h + hurricane/analog/CapacitorParameter.h + hurricane/analog/Cascode.h + hurricane/analog/ChoiceParameter.h + hurricane/analog/Choices.h + hurricane/analog/CommonDrain.h + hurricane/analog/CommonGate.h + hurricane/analog/CommonGatePair.h + hurricane/analog/CommonSourcePair.h + hurricane/analog/CrossCoupledPair.h + hurricane/analog/Device.h + hurricane/analog/DifferentialPair.h + hurricane/analog/FormFactorParameter.h + hurricane/analog/LayoutGenerator.h + hurricane/analog/LevelShifter.h + hurricane/analog/MCheckBoxParameter.h + hurricane/analog/MetaCapacitor.h + hurricane/analog/MetaTransistor.h + hurricane/analog/MIMCapacitor.h + hurricane/analog/Parameter.h + hurricane/analog/SimpleCurrentMirror.h + hurricane/analog/SpinBoxParameter.h + hurricane/analog/StepParameter.h + hurricane/analog/TransistorArguments.h + hurricane/analog/TransistorFamily.h + hurricane/analog/TransistorFamilyNames.h + hurricane/analog/Transistor.h + hurricane/analog/TransistorMultiArguments.h + hurricane/analog/TransistorPair.h + ) + set( pyIncludes hurricane/analog/PyBJTArguments.h + hurricane/analog/PyCapacitorArguments.h + hurricane/analog/PyCapacitorFamily.h + hurricane/analog/PyCapacitorParameter.h + hurricane/analog/PyCascode.h + hurricane/analog/PyChoiceParameter.h + hurricane/analog/PyCommonDrain.h + hurricane/analog/PyCommonGatePair.h + hurricane/analog/PyCommonSourcePair.h + hurricane/analog/PyCrossCoupledPair.h + hurricane/analog/PyDevice.h + hurricane/analog/PyDifferentialPair.h + hurricane/analog/PyFormFactorParameter.h + hurricane/analog/PyLayoutGenerator.h + hurricane/analog/PyLevelShifter.h + hurricane/analog/PyMCheckBoxParameter.h + hurricane/analog/PyMIMCapacitor.h + hurricane/analog/PyParameter.h + hurricane/analog/PySimpleCurrentMirror.h + hurricane/analog/PySpinBoxParameter.h + hurricane/analog/PyStepParameter.h + hurricane/analog/PyTransistorArguments.h + hurricane/analog/PyTransistorFamily.h + hurricane/analog/PyTransistor.h + hurricane/analog/PyTransistorMultiArguments.h + hurricane/analog/PyTransistorPair.h + ) + + set( depLibs viewer + isobar + hurricane + ${UTILITIES_LIBRARY} + ${CONFIGURATION_LIBRARY} + ${Boost_LIBRARIES} + ${QtX_LIBRARIES} + ) + + add_library( analog ${cpps} ${pyCpps} ) + set_target_properties( analog PROPERTIES VERSION 1.0 SOVERSION 1 ) + target_link_libraries( analog ${depLibs} ) + + add_python_module( "${pyCpps}" + "${pyIncludes}" + "Do_not_generate_C_library" + Analog + "analog;${depLibs}" + include/coriolis2/hurricane/analog + ) + + install( FILES ${includes} DESTINATION include/coriolis2/hurricane/analog ) + install( TARGETS analog DESTINATION lib${LIB_SUFFIX} ) diff --git a/hurricane/src/analog/CapacitorArguments.cpp b/hurricane/src/analog/CapacitorArguments.cpp new file mode 100644 index 00000000..d2766074 --- /dev/null +++ b/hurricane/src/analog/CapacitorArguments.cpp @@ -0,0 +1,44 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./CapacitorArguments.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/CapacitorArguments.h" + +namespace Analog { + + + CapacitorArguments::CapacitorArguments ( bool isMIM, bool isPIP, bool isMOM, double c ) + : Super() + , _isMIM(isMIM) + , _isPIP(isPIP) + , _isMOM(isMOM) + , _c (c) + { } + + + CapacitorArguments::CapacitorArguments(const CapacitorArguments &cArgs) + : Super() + , _isMIM(cArgs.isMIM()) + , _isPIP(cArgs.isPIP()) + , _isMOM(cArgs.isMOM()) + , _c (cArgs.getC()) + { } + + + CapacitorArguments* CapacitorArguments::getClone () + { return new CapacitorArguments( *this ); } + + +} // Analog namespace. diff --git a/hurricane/src/analog/CapacitorFamily.cpp b/hurricane/src/analog/CapacitorFamily.cpp new file mode 100644 index 00000000..c8cc0c6f --- /dev/null +++ b/hurricane/src/analog/CapacitorFamily.cpp @@ -0,0 +1,49 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./CapacitorFamily.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/MetaCapacitor.h" +#include "hurricane/analog/CapacitorFamily.h" + +namespace Analog { + + + CapacitorFamily::CapacitorFamily ( Library* library, const Name& name, const CapacitorFamily::Type& type ) + : Super(library,name) + , _type (type) + , _referenceCapacitor(NULL) + , _operatorIndex (0) + , _row (0) + { } + + + void CapacitorFamily::setReferenceCapacitor ( const Name& referenceCapacitorName ) + { + Instance* instance = getInstance( referenceCapacitorName ); + if (not instance) + throw Error( "CapacitorFamily::setReferenceCapacitor(): No reference instance \"%s\"." + , getString(referenceCapacitorName).c_str() ); + + Cell* cell = instance->getMasterCell(); + MetaCapacitor* metaCapacitor = dynamic_cast( cell ); + if (not metaCapacitor) + throw Error( "CapacitorFamily::setReferenceCapacitor(): Bad type for reference capacitor \"%s\"." + , getString(referenceCapacitorName).c_str() ); + + _referenceCapacitor = metaCapacitor; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/CapacitorFamilyNames.cpp b/hurricane/src/analog/CapacitorFamilyNames.cpp new file mode 100644 index 00000000..ece28285 --- /dev/null +++ b/hurricane/src/analog/CapacitorFamilyNames.cpp @@ -0,0 +1,28 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./CapacitorFamilyNames.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/CapacitorFamilyNames.h" + + +namespace Analog { + + + const char* CapacitorFamilyNames::PIPCapacitor ( "PIP Capacitor" ); + const char* CapacitorFamilyNames::MIMCapacitor ( "MIM Capacitor" ); + const char* CapacitorFamilyNames::MOMCapacitor ( "MOM Capacitor" ); + + +} // Analog namespace. diff --git a/hurricane/src/analog/Cascode.cpp b/hurricane/src/analog/Cascode.cpp new file mode 100644 index 00000000..b562339f --- /dev/null +++ b/hurricane/src/analog/Cascode.cpp @@ -0,0 +1,111 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./Cascode.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/Cascode.h" + +namespace Analog { + + using namespace std; + + const Name Cascode::_cBulkConnectedName ("CascodeBulkConnected"); + const Name Cascode::_cBulkUnconnectedName ("CascodeBulkUnconnected"); + + + Cascode::Cascode ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + Cascode* Cascode::create ( Library* library, const Name& name, const Type& type, bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _cBulkConnectedName : _cBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + Cascode* dp = new Cascode(library,name,type); + dp->_postCreate (deviceName); + dp->createConnections(bulkConnected); + dp->setTerminal( true ); + UpdateSession::close(); + return dp; + } + + + void Cascode::createConnections ( bool bulkConnected ) + { + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + Net* g1 = Net::create(this, Name("G1")); + g1->setExternal(true); + + Net* g2 = Net::create(this, Name("G2")); + g2->setExternal(true); + + Net* s1 = Net::create(this, Name("S1")); + s1->setExternal(true); + + Net* s2 = Net::create(this, Name("S2")); + s2->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s1); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s2); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(g1); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(g2); + + if (!bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s1); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s2); + } + + setReferenceTransistor(_m1); + } + + + Name Cascode::getDeviceName () const + { + return (isBulkConnected()) ? _cBulkConnectedName : _cBulkUnconnectedName; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/ChoiceParameter.cpp b/hurricane/src/analog/ChoiceParameter.cpp new file mode 100644 index 00000000..b413285d --- /dev/null +++ b/hurricane/src/analog/ChoiceParameter.cpp @@ -0,0 +1,43 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./ChoiceParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/analog/ChoiceParameter.h" + + +namespace Analog { + + using namespace std; + + + void ChoiceParameter::setValue ( const string& value ) + { + unsigned index = _choices.findIndexFor( value ); + _value = index; + } + + + string ChoiceParameter::getValue () const + { + if (_value >= _choices._values.size()) { + cerr << "[WARNING] ChoiceParameter::getValue(): \"value\" is out of choices size." << endl; + return ""; + } + return _choices._values[ _value ]; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/Choices.cpp b/hurricane/src/analog/Choices.cpp new file mode 100644 index 00000000..28af6b5d --- /dev/null +++ b/hurricane/src/analog/Choices.cpp @@ -0,0 +1,58 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./Choices.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/Error.h" +#include "hurricane/analog/Choices.h" + + +namespace Analog { + + using namespace Hurricane; + + + Choices::Choices () + : _values() + { } + + + Choices::Choices ( const Choices& choices ) + : _values(choices._values) + { } + + + Choices& Choices::operator<< ( const string& choice ) + { + Values::iterator it = find( _values.begin(), _values.end(), choice ); + if (it == _values.end()) _values.push_back(choice); + else + throw Error ( "Choices::operator<<(): The choice \"%s\" is already a member of choices." + , choice.c_str() ); + return *this; + } + + + unsigned int Choices::findIndexFor ( const string& choice ) const + { + Values::const_iterator it = find( _values.begin(), _values.end(), choice ); + if (it != _values.end()) return it - _values.begin(); + + throw Error( "Choices::findIndexFor(): Entry \"%s\" doesn\'t exists in choices." + , choice.c_str() ); + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/CommonDrain.cpp b/hurricane/src/analog/CommonDrain.cpp new file mode 100644 index 00000000..d3056aed --- /dev/null +++ b/hurricane/src/analog/CommonDrain.cpp @@ -0,0 +1,113 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./CommonDrain.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/CommonDrain.h" + +namespace Analog { + + using namespace std; + + + const Name CommonDrain::_cdBulkConnectedName ("CommonDrainBulkConnected"); + const Name CommonDrain::_cdBulkUnconnectedName("CommonDrainBulkUnconnected"); + + + CommonDrain::CommonDrain ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + CommonDrain* CommonDrain::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _cdBulkConnectedName : _cdBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + CommonDrain* dp = new CommonDrain(library,name,type); + dp->_postCreate (deviceName); + dp->createConnections(bulkConnected); + dp->setTerminal( true ); + UpdateSession::close(); + return dp; + } + + + void CommonDrain::createConnections ( bool bulkConnected ) + { + Net* d12 = Net::create(this, Name("D12")); + d12->setExternal(true); + + Net* g1 = Net::create(this, Name("G1")); + g1->setExternal(true); + + Net* g2 = Net::create(this, Name("G2")); + g2->setExternal(true); + + Net* s1 = Net::create(this, Name("S1")); + s1->setExternal(true); + + Net* s2 = Net::create(this, Name("S2")); + s2->setExternal(true); + + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s1); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s2); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d12); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d12); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(g1); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(g2); + + if (!bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s1); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s2); + } + + setReferenceTransistor(_m1); + } + + + Name CommonDrain::getDeviceName () const + { + return (isBulkConnected()) ? _cdBulkConnectedName : _cdBulkUnconnectedName; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/CommonGatePair.cpp b/hurricane/src/analog/CommonGatePair.cpp new file mode 100644 index 00000000..caefbcb0 --- /dev/null +++ b/hurricane/src/analog/CommonGatePair.cpp @@ -0,0 +1,107 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./CommonGatePair.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/CommonGatePair.h" + +namespace Analog { + + + const Name CommonGatePair::_cgBulkConnectedName ("CommonGatePairBulkConnected"); + const Name CommonGatePair::_cgBulkUnconnectedName ("CommonGatePairBulkUnconnected"); + + CommonGatePair::CommonGatePair ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + CommonGatePair* CommonGatePair::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _cgBulkConnectedName : _cgBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + CommonGatePair* cg = new CommonGatePair(library,name,type); + cg->_postCreate (deviceName); + cg->createConnections(bulkConnected); + cg->setTerminal( true ); + UpdateSession::close(); + return cg; + } + + + void CommonGatePair::createConnections ( bool bulkConnected ) + { + Net* s1 = Net::create(this, Name("S1")); + s1->setExternal(true); + + Net* s2 = Net::create(this, Name("S2")); + s2->setExternal(true); + + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + Net* g12 = Net::create(this, Name("G12")); + g12->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + setReferenceTransistor(_m1); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s1); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s2); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(g12); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(g12); + + if (not bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s1); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s2); + } + } + + + Name CommonGatePair::getDeviceName () const + { return (isBulkConnected()) ? _cgBulkConnectedName : _cgBulkUnconnectedName; } + + +} // Analog namespace. diff --git a/hurricane/src/analog/CommonSourcePair.cpp b/hurricane/src/analog/CommonSourcePair.cpp new file mode 100644 index 00000000..3fb7c3ff --- /dev/null +++ b/hurricane/src/analog/CommonSourcePair.cpp @@ -0,0 +1,248 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./CommonSourcePair.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/Warning.h" +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/CommonSourcePair.h" + +namespace Analog { + + using Hurricane::Warning; + + + const Name CommonSourcePair::_cspBulkConnectedName ("CommonSourcePairBulkConnected"); + const Name CommonSourcePair::_cspBulkUnconnectedName("CommonSourcePairBulkUnconnected"); + + + CommonSourcePair::CommonSourcePair ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + CommonSourcePair* CommonSourcePair::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _cspBulkConnectedName : _cspBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + CommonSourcePair* csp = new CommonSourcePair(library,name,type); + csp->_postCreate (deviceName); + csp->createConnections(bulkConnected); + + csp->addStepParameter("B.w" , 1, 1, 1); + csp->addStepParameter("D1.w", 1, 1, 1); + csp->addStepParameter("D2.w", 1, 1, 1); + csp->addStepParameter("G.w" , 1, 1, 1); + csp->addStepParameter("S.w" , 1, 1, 1); + csp->setTerminal( true ); + UpdateSession::close(); + return csp; + } + + + void CommonSourcePair::createConnections ( bool bulkConnected ) + { + Net* s = Net::create(this, Name("S")); + s->setExternal(true); + + Net* g = Net::create(this, Name("G")); + g->setExternal(true); + + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(g); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(g); + + if (!bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s); + } + + setReferenceTransistor(_m1); + } + + + Name CommonSourcePair::getDeviceName () const + { + return (isBulkConnected()) ? _cspBulkConnectedName : _cspBulkUnconnectedName; + } + + + unsigned int CommonSourcePair::getRestriction ( Hurricane::Net* net ) const + { + Name netName = net->getName(); + Name nameS = Name(string("S" )); + Name nameD1 = Name(string("D1")); + Name nameD2 = Name(string("D2")); + Name nameG = Name(string("G" )); + + unsigned int ok = 0x1; + unsigned int yes = 0x2; + + unsigned int west = 0; + unsigned int east = 2; + unsigned int south = 4; + unsigned int north = 6; + + int nfing = this->getNfing(); + unsigned int rule = 0; + + if (netName == nameS){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 0){ + rule |= (ok << north) | (yes << south) | (yes << east) | (yes << west); + } else { + rule |= (ok << north) | (yes << south) | (ok << east) | (ok << west); + } + } else if (netName == nameD1){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south) | (yes << west); + } else if (nfing == 2){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 1){ + rule |= (ok << north) | (yes << south) | (ok << east) | (yes << west); + } else { + rule |= (ok << north) | (yes << south) | (ok << east) | (ok << west); + } + } else if (netName == nameD2){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south) | (yes << east); + } else if (nfing == 2){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 1){ + rule |= (yes << north) | (ok << south) | (yes << east) | (ok << west); + } else { + rule |= (yes << north) | (ok << south) | (ok << east) | (ok << west); + } + } else if (netName == nameG){ + rule |= (yes << north) | (ok << east) | (ok << west); + } else { + cerr << "Error(unsigned int getRestrictionsRules( Device* device, Net* net )): Unknown net name." << endl; + } + return rule; + } + + + bool CommonSourcePair::isSame ( CommonSourcePair* csp ) + { + StepParameter* w1 = dynamic_cast(this->getParameter("W")); + StepParameter* l1 = dynamic_cast(this->getParameter("L")); + FormFactorParameter* m1 = dynamic_cast(this->getParameter("M")); + ChoiceParameter* ls1 = dynamic_cast(this->getParameter("Layout Styles")); + StepParameter* nerc1 = dynamic_cast(this->getParameter("NERC")); + StepParameter* nirc1 = dynamic_cast(this->getParameter("NIRC")); + StepParameter* b1 = dynamic_cast(this->getParameter("B.w" )); + StepParameter* g1 = dynamic_cast(this->getParameter("G.w")); + StepParameter* d11 = dynamic_cast(this->getParameter("D1.w")); + StepParameter* d21 = dynamic_cast(this->getParameter("D2.w")); + StepParameter* s1 = dynamic_cast(this->getParameter("S.w" )); + + StepParameter* w2 = dynamic_cast(csp->getParameter("W")); + StepParameter* l2 = dynamic_cast(csp->getParameter("L")); + FormFactorParameter* m2 = dynamic_cast(csp->getParameter("M")); + ChoiceParameter* ls2 = dynamic_cast(csp->getParameter("Layout Styles")); + StepParameter* nerc2 = dynamic_cast(csp->getParameter("NERC")); + StepParameter* nirc2 = dynamic_cast(csp->getParameter("NIRC")); + StepParameter* b2 = dynamic_cast(csp->getParameter("B.w" )); + StepParameter* g2 = dynamic_cast(csp->getParameter("G.w")); + StepParameter* d12 = dynamic_cast(csp->getParameter("D1.w")); + StepParameter* d22 = dynamic_cast(csp->getParameter("D2.w")); + StepParameter* s2 = dynamic_cast(csp->getParameter("S.w" )); + + if (w1->getValue() != w2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): W are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (l1->getValue() != l2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): L are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (m1->getValue() != m2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): M are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (ls1->getValue() != ls2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): Layout styles are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (nerc1->getValue() != nerc2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): NERC are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (nirc1->getValue() != nirc2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): NIRC are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (b1->getValue() != b2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): B.w are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (g1->getValue() != g2->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): G.w are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (d11->getValue() != d12->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): D1.w are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (d21->getValue() != d22->getValue()){ + cerr << Warning( "CommonSourcePair::isSame(): D2.w are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } if (s1->getValue() != s2->getValue()) { + cerr << Warning( "CommonSourcePair::isSame(): S.w are different \"%s\" vs \"s\"." + , getString(this).c_str(), getString(csp).c_str() ); + return false; + } + + return true; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/CrossCoupledPair.cpp b/hurricane/src/analog/CrossCoupledPair.cpp new file mode 100644 index 00000000..fe852617 --- /dev/null +++ b/hurricane/src/analog/CrossCoupledPair.cpp @@ -0,0 +1,102 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./CrossCoupledPair.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/CrossCoupledPair.h" + +namespace Analog { + + + const Name CrossCoupledPair::_ccpBulkConnectedName ("CrossCoupledPairBulkConnected"); + const Name CrossCoupledPair::_ccpBulkUnconnectedName ("CrossCoupledPairBulkUnconnected"); + + + CrossCoupledPair::CrossCoupledPair ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + CrossCoupledPair* CrossCoupledPair::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _ccpBulkConnectedName : _ccpBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + CrossCoupledPair* ccp = new CrossCoupledPair(library,name,type); + ccp->_postCreate(deviceName); + ccp->createConnections(bulkConnected); + ccp->setTerminal( true ); + UpdateSession::close(); + return ccp; + } + + + void CrossCoupledPair::createConnections ( bool bulkConnected ) + { + Net* s = Net::create(this, Name("S")); + s->setExternal(true); + + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(d2); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(d1); + + if (not bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s); + } + + setReferenceTransistor(_m1); + } + + + Name CrossCoupledPair::getDeviceName () const + { return (isBulkConnected()) ? _ccpBulkConnectedName : _ccpBulkUnconnectedName; } + + +} // Analog namespace. diff --git a/hurricane/src/analog/Device.cpp b/hurricane/src/analog/Device.cpp new file mode 100644 index 00000000..ab73cd8b --- /dev/null +++ b/hurricane/src/analog/Device.cpp @@ -0,0 +1,177 @@ +// -*- 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 : Christophe Alexandre, Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./Device.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/Warning.h" +#include "hurricane/DataBase.h" +#include "hurricane/Technology.h" +#include "hurricane/Pad.h" +#include "hurricane/Vertical.h" +#include "hurricane/Horizontal.h" +#include "hurricane/Library.h" +#include "hurricane/UpdateSession.h" +#include "hurricane/Reference.h" +#include "hurricane/analog/Device.h" + + +namespace { + + using namespace Hurricane; + + + static Name anonymousNetName( "anonymous" ); + +} // anonymous namespace. + + +namespace Analog { + + using namespace Hurricane; + + + Device::Device ( Library* library, const Name& name ) + : Cell (library, name) + , _temperature (0.0) + , _parameterSet () + , _layoutStyles (NULL) + , _subDevicesLibrary(NULL) + , _anonymous (NULL) + , _layouts () + , _netRestrictions () + { } + + + void Device::preCreate ( const Name& deviceName ) + { + Technology* tech = DataBase::getDB()->getTechnology(); + DeviceDescriptor* dd = tech->getDeviceDescriptor( deviceName ); + if (not dd) + throw Error( "Device::preCreate(): No DeviceDescriptor for \"%s\"." + , getString(deviceName).c_str() ); + } + + + void Device::_postCreate ( const Name& deviceName ) + { + Super::_postCreate(); + setTerminal( true ); + + _subDevicesLibrary = Library::create( getLibrary(), getName() ); + _anonymous = Net::create( this, anonymousNetName ); + _anonymous->setAutomatic( true ); + Technology* tech = DataBase::getDB()->getTechnology(); + DeviceDescriptor* dd = tech->getDeviceDescriptor( deviceName ); + DeviceDescriptor::Layouts ddLayouts = dd->getLayouts(); + + for ( auto ddLayout : ddLayouts ) _layouts.insert( ddLayout ); + + Choices layouts; + for ( auto layout : _layouts ) layouts << getString(layout.first); + _layoutStyles = addChoiceParameter( "Layout Styles", layouts ); + } + + + void Device::_preDestroy () + { + for ( Parameter* parameter : _parameterSet ) delete parameter; + _subDevicesLibrary->destroy(); + Super::_preDestroy(); + } + + + Parameter* Device::getParameter ( const string& parameterId ) + { + for ( Parameter* parameter : _parameterSet) { + if (parameter->getName() == parameterId) + return parameter; + } + return NULL; + } + + + const string Device::getLayoutScript () + { + Name layoutName = Name( _layoutStyles->getValue() ); + Layouts::iterator findLayout = _layouts.find( layoutName ); + + if (findLayout != _layouts.end()) return (*findLayout).second; + return NULL; + } + + + void Device::destroyLayout () + { + UpdateSession::open(); + + // size_t icomp = 0; + // for ( Component* component : getComponents() ) { + // cerr << setw(4) << icomp << " | " << component << endl; + // } + + while ( not getComponents().isEmpty() ) getComponents().getFirst()->destroy(); + while ( not getReferences().isEmpty() ) getReferences().getFirst()->destroy(); + + for ( Net* net : getNets() ) { + Rubbers rubbers = net->getRubbers(); + while ( rubbers.getFirst() ) rubbers.getFirst()->_destroy(); + } + + UpdateSession::close(); + } + + + unsigned int Device::getRestriction( Hurricane::Net* net ) const + { return 0xAA; } + + + unsigned int Device::getRestrictions2 ( Hurricane::Net* net ) const + { + map::const_iterator inet = _netRestrictions.find( net ); + if (inet == _netRestrictions.end()) return AllBlocked; + return (*inet).second; + } + + + void Device::setRestrictions2 ( Hurricane::Net* net, unsigned int flags ) + { + if (not net) return; + if (net->getCell() != this) { + cerr << Hurricane::Warning( "Device::setRestrictions2(): Net \"%s\" (of Device \"%s\")" + " do not belong to \"%s\"." + , getString(net->getName()).c_str() + , getString(net->getCell()->getName()).c_str() + , getString(getName()).c_str() + ) << endl; + return; + } + + _netRestrictions[ net ] = flags; + } + + + Hurricane::Record* Device::_getRecord () const + { + Record* record = Super::_getRecord(); + if (record) { + record->add( getSlot("_subDevicesLibrary", _subDevicesLibrary) ); + record->add( getSlot("_netRestrictions" , &_netRestrictions ) ); + } + + return record; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/DifferentialPair.cpp b/hurricane/src/analog/DifferentialPair.cpp new file mode 100644 index 00000000..b43cde71 --- /dev/null +++ b/hurricane/src/analog/DifferentialPair.cpp @@ -0,0 +1,268 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./DifferentialPair.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/Warning.h" +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/DifferentialPair.h" + +namespace Analog { + + using namespace std; + using namespace Hurricane; + + + const Name DifferentialPair::_dpBulkConnectedName ("DifferentialPairBulkConnected"); + const Name DifferentialPair::_dpBulkUnconnectedName ("DifferentialPairBulkUnconnected"); + + + DifferentialPair::DifferentialPair ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + DifferentialPair* DifferentialPair::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _dpBulkConnectedName : _dpBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + DifferentialPair* dp = new DifferentialPair( library, name, type ); + dp->_postCreate ( deviceName ); + dp->createConnections( bulkConnected ); + + dp->addStepParameter( "B.w" , 1, 1, 1 ); + dp->addStepParameter( "D1.w", 1, 1, 1 ); + dp->addStepParameter( "D2.w", 1, 1, 1 ); + dp->addStepParameter( "G1.w", 1, 1, 1 ); + dp->addStepParameter( "G2.w", 1, 1, 1 ); + dp->addStepParameter( "S.w" , 1, 1, 1 ); + dp->setTerminal( true ); + UpdateSession::close(); + return dp; + } + + + void DifferentialPair::createConnections ( bool bulkConnected ) + { + Net* s = Net::create(this, Name("S")); + s->setExternal(true); + + Net* g1 = Net::create(this, Name("G1")); + g1->setExternal(true); + + Net* g2 = Net::create(this, Name("G2")); + g2->setExternal(true); + + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(g1); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(g2); + + if (!bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s); + } + + setReferenceTransistor(_m1); + } + + + Name DifferentialPair::getDeviceName() const + { return (isBulkConnected()) ? _dpBulkConnectedName : _dpBulkUnconnectedName; } + + + unsigned int DifferentialPair::getRestriction ( Hurricane::Net* net ) const + { + Name netName = net->getName(); + Name nameS = Name(string("S" )); + Name nameD1 = Name(string("D1")); + Name nameD2 = Name(string("D2")); + Name nameG1 = Name(string("G1")); + Name nameG2 = Name(string("G2")); + + unsigned int ok = 0x1; + unsigned int yes = 0x2; + + unsigned int west = 0; + unsigned int east = 2; + unsigned int south = 4; + unsigned int north = 6; + + int nfing = this->getNfing(); + unsigned int rule = 0; + + if (netName == nameS){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 0){ + rule |= (yes << north) | (yes << south) | (yes << east) | (yes<< west); + } else { + rule |= (yes << north) | (yes << south) | (ok << east) | (ok << west); + } + } else if (netName == nameD1){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south); + } else if (nfing == 2){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 1){ + rule |= (yes << north) | (ok << south) | (ok << east) | (yes << west); + } else { + rule |= (yes << north) | (ok << south) | (ok << east) | (ok << west); + } + } else if (netName == nameD2){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south) | (yes << east); + } else if (nfing == 2){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 1){ + rule |= (ok << north) | (yes << south) | (yes << east) | (ok << west); + } else { + rule |= (ok << north) | (yes << south) | (ok << east) | (ok << west); + } + } else if (netName == nameG1){ + if (nfing == 1){ + rule |= (ok << north) | (ok << east) | (ok << west); + } else { + rule |= (yes << north) | (ok << east) | (ok << west); + } + } else if (netName == nameG2){ + if (nfing == 1){ + rule |= (ok << south) | (ok << east) | (ok << west); + } else { + rule |= (yes << south) | (ok << east) | (ok << west); + } + } else { + cerr << "Error(unsigned int getRestrictionsRules( Device* device, Net* net )): Unknown net name." << endl; + } + return rule; + } + + + bool DifferentialPair::isSame ( DifferentialPair* dp ) + { + StepParameter* w1 = dynamic_cast(this->getParameter("W")); + StepParameter* l1 = dynamic_cast(this->getParameter("L")); + FormFactorParameter* m1 = dynamic_cast(this->getParameter("M")); + ChoiceParameter* ls1 = dynamic_cast(this->getParameter("Layout Styles")); + StepParameter* nerc1 = dynamic_cast(this->getParameter("NERC")); + StepParameter* nirc1 = dynamic_cast(this->getParameter("NIRC")); + StepParameter* b1 = dynamic_cast(this->getParameter("B.w" )); + StepParameter* g11 = dynamic_cast(this->getParameter("G1.w")); + StepParameter* g21 = dynamic_cast(this->getParameter("G2.w")); + StepParameter* d11 = dynamic_cast(this->getParameter("D1.w")); + StepParameter* d21 = dynamic_cast(this->getParameter("D2.w")); + StepParameter* s1 = dynamic_cast(this->getParameter("S.w" )); + + StepParameter* w2 = dynamic_cast(dp->getParameter("W")); + StepParameter* l2 = dynamic_cast(dp->getParameter("L")); + FormFactorParameter* m2 = dynamic_cast(dp->getParameter("M")); + ChoiceParameter* ls2 = dynamic_cast(dp->getParameter("Layout Styles")); + StepParameter* nerc2 = dynamic_cast(dp->getParameter("NERC")); + StepParameter* nirc2 = dynamic_cast(dp->getParameter("NIRC")); + StepParameter* b2 = dynamic_cast(dp->getParameter("B.w" )); + StepParameter* g12 = dynamic_cast(dp->getParameter("G1.w")); + StepParameter* g22 = dynamic_cast(dp->getParameter("G2.w")); + StepParameter* d12 = dynamic_cast(dp->getParameter("D1.w")); + StepParameter* d22 = dynamic_cast(dp->getParameter("D2.w")); + StepParameter* s2 = dynamic_cast(dp->getParameter("S.w" )); + + if (w1->getValue() != w2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): W are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (l1->getValue() != l2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): L are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (m1->getValue() != m2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): M are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (ls1->getValue() != ls2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): Layout styles are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (nerc1->getValue() != nerc2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): NERC are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (nirc1->getValue() != nirc2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): NIRC are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (b1->getValue() != b2->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): B.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (g11->getValue() != g12->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): G1.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (g21->getValue() != g22->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): G2.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (d11->getValue() != d12->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): D1.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (d21->getValue() != d22->getValue()){ + cerr << Warning( "DifferentialPair::isSame(): D2.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } if (s1->getValue() != s2->getValue()) { + cerr << Warning( "DifferentialPair::isSame(): S.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(dp).c_str() ); + return false; + } + + return true; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/LayoutGenerator.cpp b/hurricane/src/analog/LayoutGenerator.cpp new file mode 100644 index 00000000..70730ba4 --- /dev/null +++ b/hurricane/src/analog/LayoutGenerator.cpp @@ -0,0 +1,470 @@ +// -*- 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./LayoutGenerator.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include +#include +#include +#include +#include +#include "hurricane/Warning.h" +#include "hurricane/isobar/PyBox.h" +#include "hurricane/viewer/Script.h" +#include "hurricane/analog/Device.h" +#include "hurricane/analog/TransistorArguments.h" +#include "hurricane/analog/TransistorMultiArguments.h" +#include "hurricane/analog/CapacitorArguments.h" +#include "hurricane/analog/PyDevice.h" +#include "hurricane/analog/PyTransistorArguments.h" +#include "hurricane/analog/PyTransistorMultiArguments.h" +#include "hurricane/analog/PyBJTArguments.h" +#include "hurricane/analog/BJTArguments.h" +#include "hurricane/analog/PyCapacitorArguments.h" +#include "hurricane/analog/LayoutGenerator.h" + + +namespace Analog { + + using namespace std; + using namespace Hurricane; + using namespace Isobar; + + +// ------------------------------------------------------------------- +// Class : "::LayoutGenerator::Logger". + + LayoutGenerator::Logger::Logger ( LayoutGenerator* generator ) + : _generator(generator) + { } + + + LayoutGenerator::Logger::~Logger () + { } + + + void LayoutGenerator::Logger::popStatus ( const string& text ) + { + if (_generator->getVerboseLevel() >= LayoutGenerator::Verbose) + cerr << text << endl; + } + + + void LayoutGenerator::Logger::popError ( const string& text ) + { + string error = "! " + text; + cerr << error << endl; + } + + + void LayoutGenerator::Logger::popScriptError () + { + string scriptError = "! An error occured while creating layout. Please check the python console for more information."; + cerr << scriptError << endl; + } + + +// ------------------------------------------------------------------- +// Class : "::LayoutGenerator". + + int LayoutGenerator::_verboseLevel = LayoutGenerator::Debug; + + + LayoutGenerator::LayoutGenerator () + : _logger (NULL) + , _device (NULL) + , _box (NULL) + , _activeBox(NULL) + , _matrix () + , _script (NULL) + { + _activeBox = new Hurricane::Box(); + _script = Script::create(); + setLogger ( new Logger(this) ); + } + + + LayoutGenerator::~LayoutGenerator () + { + if (_script) _script->destroy(); + if (_logger) delete _logger; + } + + + bool LayoutGenerator::checkScript() + { + if (not _device) { + popError( "Try to check for script but device does not exist." ); + return false; + } + + FILE* fs = fopen( _device->getLayoutScript().c_str(), "r" ); + if (not fs) { + perror( NULL ); + popError( "Cannot load script : file does not exist or bad access rights." ); + return false; + } + + fclose( fs ); + popStatus( _device->getLayoutScript()+" found." ); + return true; + } + + + bool LayoutGenerator::checkFunctions() + { + if (not _script->getFunction("checkCoherency")) { + cerr << Error( "LayoutGenerator::drawLayout(): Module <%s> miss checkCoherency()." + , _script->getUserModuleName().c_str() ) << endl; + finalize( ShowTimeTag ); + return false; + } + + if (not _script->getFunction("layout")) { + cerr << Error( "LayoutGenerator::drawLayout(): Module <%s> miss layout()." + , _script->getUserModuleName().c_str() ) << endl; + finalize( ShowTimeTag ); + return false; + } + + return true; + } + + + bool LayoutGenerator::drawLayout () + { + if (_device == NULL) return false; + + //checkScript(); + + cdebug_log(500,0) << "LayoutGenerator::drawLayout() " << _device->getDeviceName() << endl; + + _device->destroyLayout(); + + initialize(); + + if (not _script->getUserModule()) { + finalize( ShowTimeTag ); + cerr << Error( "LayoutGenerator::drawLayout(): Couldn't load module <%s>" + , _script->getUserModuleName().c_str() ) << endl; + return false; + } + + checkFunctions(); + + PyObject* pyArgsCheck = NULL; + PyObject* pyArgsLayout = NULL; + if (not toPyArguments(_device->getArguments(),pyArgsCheck,pyArgsLayout,NoFlags)) { + finalize( ShowTimeTag ); + return false; + } + + if (not callCheckCoherency(pyArgsCheck,ShowError)) { + return false; + } + + if (not callLayout(pyArgsLayout)) { + cerr << "Layout failed" << endl; cerr.flush(); + return false; + } + + // Eric passed by here + //cerr << "Python driven Layout successfully drawn." << endl; + + finalize( ShowTimeTag|StatusOk ); + + _device->setAbutmentBox( getDeviceBox() ); + + //string message = _device->checkLayoutOnPhysicalGrid(); + //if (not message.empty()) + // popError( message.c_str() ); + + // Eric passed by here + //popStatus( "Layout done." ); + + return true; + } + + + bool LayoutGenerator::initialize () + { + string moduleFullPath = _device->getLayoutScript(); + size_t slash = moduleFullPath.rfind( '/' ); + + slash = (slash!=string::npos) ? slash+1 : 0; + string moduleName = moduleFullPath.substr( slash ); + string modulePath = moduleFullPath.substr( 0, slash-1 ); + size_t dot = moduleName.rfind( '.' ); + + dot = (dot!=string::npos) ? dot : moduleName.size(); + moduleName = moduleName.substr( 0, dot ); + + // Eric passed by here + //cerr << "Path: " << modulePath << endl; + //cerr << "Name: " << moduleName << endl; + + _script->setUserModuleName( moduleName ); + return _script->initialize( Script::NoThrow ); + } + + + void LayoutGenerator::finalize ( unsigned int flags ) + { + if (flags & ShowTimeTag) { + string code = ""; + // Eric passed by here + //if (flags & StatusOk) code = "import time; print ' -- Script SUCCESS2 --', time.strftime('%H:%M:%S',time.localtime())\n"; + if (flags & StatusOk) code = ""; + else code = "import time; print ' -- Script FAILED --' , time.strftime('%H:%M:%S',time.localtime())\n"; + PyRun_SimpleString( code.c_str() ); + } + _script->finalize(); + } + + + bool LayoutGenerator::toPyArguments ( Arguments* args, PyObject*& pyArgsCheck, PyObject*& pyArgsLayout, unsigned int flags ) + { + PyObject* pyArgs = NULL; + + if (dynamic_cast(args)) { + TransistorMultiArguments* tmArgs = static_cast(args); + PyTransistorMultiArguments* pyTmArgs = PyObject_NEW( PyTransistorMultiArguments, &PyTypeTransistorMultiArguments ); + pyTmArgs->_object = tmArgs; + pyArgs = (PyObject*)pyTmArgs; + } else if (dynamic_cast(args)) { + TransistorArguments* tArgs = static_cast(args); + PyTransistorArguments* pyTArgs = PyObject_NEW( PyTransistorArguments, &PyTypeTransistorArguments ); + pyTArgs->_object = tArgs; + pyArgs = (PyObject*)pyTArgs; + } else if (dynamic_cast(args)) { + CapacitorArguments* cArgs = static_cast(args); + PyCapacitorArguments* pyCArgs = PyObject_NEW( PyCapacitorArguments, &PyTypeCapacitorArguments ); + pyCArgs->_object = cArgs; + pyArgs = (PyObject*)pyCArgs; + } else { + popError( "Bad arguments" ); + return false; + } + + PyObject* pyDevice = PyDevice_Link( _device ); + + pyArgsCheck = PyTuple_New( 1 ); + PyTuple_SetItem( pyArgsCheck , 0, (PyObject*)pyArgs ); + + pyArgsLayout = PyTuple_New( 3 ); + PyTuple_SetItem( pyArgsLayout, 0, pyDevice ); + PyTuple_SetItem( pyArgsLayout, 1, (PyObject*)pyArgs ); + PyTuple_SetItem( pyArgsLayout, 2, (flags & ComputeBbOnly) ? Py_True : Py_False ); + + return true; + } + + + void LayoutGenerator::pyTransistorArguments ( TransistorArguments* tArgs + , unsigned m + , PyObject*& pArgsCheck + , PyObject*& pArgsLayout + , unsigned int flags + ) + { + pArgsCheck = PyTuple_New( 1 ); + pArgsLayout = PyTuple_New( 3 ); + + PyObject* pyDevice = PyDevice_Link( _device ); + PyTuple_SetItem( pArgsLayout, 0, pyDevice ); + + tArgs->setM( m ); + + PyTransistorArguments* pyTArgs = PyObject_NEW( PyTransistorArguments, &PyTypeTransistorArguments ); + pyTArgs->_object = tArgs; + PyTuple_SetItem( pArgsCheck , 0, (PyObject*)pyTArgs ); + PyTuple_SetItem( pArgsLayout, 1, (PyObject*)pyTArgs ); + PyTuple_SetItem( pArgsLayout, 2, (flags & ComputeBbOnly) ? Py_True : Py_False ); + } + + + void LayoutGenerator::pyTransistorMultiArguments ( TransistorMultiArguments* dpArgs + , unsigned m + , PyObject*& pArgsCheck + , PyObject*& pArgsLayout + , unsigned int flags + ) + { + pArgsCheck = PyTuple_New( 1 ); + pArgsLayout = PyTuple_New( 3 ); + + PyObject* pyDevice = PyDevice_Link( _device ); + PyTuple_SetItem( pArgsLayout, 0, pyDevice ); + + dpArgs->setM( m ); + + PyTransistorMultiArguments* pyTArgs = PyObject_NEW( PyTransistorMultiArguments, &PyTypeTransistorMultiArguments ); + pyTArgs->_object = dpArgs; + PyTuple_SetItem( pArgsCheck , 0, (PyObject*)pyTArgs ); + PyTuple_SetItem( pArgsLayout, 1, (PyObject*)pyTArgs ); + PyTuple_SetItem( pArgsLayout, 2, (flags & ComputeBbOnly) ? Py_True : Py_False ); + } + + + void LayoutGenerator::pyCapacitorArguments ( CapacitorArguments* cArgs + , PyObject*& pArgsCheck + , PyObject*& pArgsLayout + , unsigned int flags + ) + { + pArgsCheck = PyTuple_New( 1 ); + pArgsLayout = PyTuple_New( 3 ); + + PyObject* pyDevice = PyDevice_Link( _device ); + PyTuple_SetItem( pArgsLayout, 0, pyDevice ); + + PyCapacitorArguments* pyCArgs = PyObject_NEW( PyCapacitorArguments, &PyTypeCapacitorArguments ); + pyCArgs->_object = cArgs; + PyTuple_SetItem( pArgsCheck , 0, (PyObject*)pyCArgs ); + PyTuple_SetItem( pArgsLayout, 1, (PyObject*)pyCArgs ); + PyTuple_SetItem( pArgsLayout, 2, (flags & ComputeBbOnly) ? Py_True : Py_False ); + } + + + bool LayoutGenerator::callCheckCoherency ( PyObject* pArgsCheck, unsigned int flags ) + { + PyObject* pTupleCheck = _script->callFunction( "checkCoherency", pArgsCheck ); + + if (not pTupleCheck) { + string code = "print ' -- Script FAILED --', time.strftime('%H:%M:%S',time.localtime())\n"; + PyRun_SimpleString( code.c_str() ); + finalize( NoFlags ); + popScriptError(); + return false; + } + if ( not PyTuple_Check(pTupleCheck) or (PyTuple_Size(pTupleCheck) != 2) ) { + popError( "checkCoherency function must return a tuple: (bool,errorMessage)" ); + return false; + } + PyObject* pCheckOk = PyTuple_GetItem( pTupleCheck, 0 ); + if (pCheckOk == Py_False) { + if (flags & ShowError) + popError( string(PyString_AsString(PyTuple_GetItem(pTupleCheck,1))) ); + return false; + } + return true; + } + + + bool LayoutGenerator::callLayout ( PyObject* pArgsLayout ) + { + _matrix = _script->callFunction( "layout", pArgsLayout ); + if ((not _matrix) or (IsPyCapacitorArguments(pArgsLayout))) { + string code = "print ' -- Script FAILED --', time.strftime('%H:%M:%S',time.localtime())"; + PyRun_SimpleString( code.c_str() ); + finalize( NoFlags ); + popScriptError(); + cerr << "There was a problem running layout function" << endl; + return false; + } + return true; + } + + + unsigned LayoutGenerator::getNumberTransistor () + { + PyObject* row = getRow(0); + if (row and PyList_Check(row) == 1) + return PyList_Size(row) - 1; // -1 because of the first column for global params + return 0; // else return 0; + } + + + unsigned LayoutGenerator::getNumberStack () + { + if (_matrix and PyList_Check(_matrix) == 1) + return PyList_Size(_matrix) - 1; // -1 because of the first row for global params + return 0; + } + + + Box LayoutGenerator::getDeviceBox () + { + PyObject* pBox = getParamValue(getDic(getRow(0), 0), "box"); + if (pBox == NULL) { + finalize( NoFlags ); + popError("Layout function did not returned a valid device box 2!"); + return Box(); + } + + if (pBox->ob_type != &PyTypeBox) { + finalize( NoFlags ); + popError("Layout function did not returned a valid device box!"); + } + return *((PyBox*)pBox)->_object; //get the hurricane box + } + + + Box LayoutGenerator::getActiveBox () + { + PyObject* pBox = getParamValue(getDic(getRow(0), 0), "globalActiveBox"); + if (!pBox) { + finalize( NoFlags ); + popError("Layout function did not returned a valid active box 2!"); + return Box(); + } + + if (pBox->ob_type != &PyTypeBox) { + finalize( NoFlags ); + popError("Layout function did not returned a valid active box!"); + } + return *((PyBox*)pBox)->_object; //get the hurricane box + } + + + double LayoutGenerator::getParameterValue ( unsigned i, unsigned j, string paramName, bool& ok ) + { + PyObject* pValue = getParamValue(getDic(getRow(i),j), paramName); + if (pValue == NULL){ + ok = false; + return 0.0; + } + ok = true; + return (PyFloat_AsDouble(pValue)); + } + + + PyObject* LayoutGenerator::getRow ( unsigned i ) + { + if (_matrix and PyList_Check(_matrix) == 1 and ((int)i < PyList_Size(_matrix))){ + return PyList_GetItem(_matrix, i); + } + return NULL; + } + + + PyObject* LayoutGenerator::getDic ( PyObject* row, unsigned j ) + { + if (row and PyList_Check(row) == 1 and ((int)j < PyList_Size(row))){ + return PyList_GetItem(row, j); + } + return NULL; + } + + + PyObject* LayoutGenerator::getParamValue ( PyObject* dic, string paramName ) + { + if (dic and (PyDict_Check(dic) == 1) and (PyDict_Contains(dic,PyString_FromString(paramName.c_str())))) + return PyDict_GetItemString(dic,paramName.c_str()); + return NULL; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/LevelShifter.cpp b/hurricane/src/analog/LevelShifter.cpp new file mode 100644 index 00000000..73d105fb --- /dev/null +++ b/hurricane/src/analog/LevelShifter.cpp @@ -0,0 +1,105 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./LevelShifter.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/LevelShifter.h" + +namespace Analog { + + + const Name LevelShifter::_lsBulkConnectedName ("LevelShifterBulkConnected"); + const Name LevelShifter::_lsBulkUnconnectedName ("LevelShifterBulkUnconnected"); + + + LevelShifter::LevelShifter ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + LevelShifter* LevelShifter::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _lsBulkConnectedName : _lsBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + LevelShifter* ls = new LevelShifter( library, name, type ); + ls->_postCreate( deviceName ); + ls->createConnections( bulkConnected ); + ls->setTerminal( true ); + UpdateSession::close(); + return ls; + } + + + void LevelShifter::createConnections ( bool bulkConnected ) + { + Net* s1 = Net::create(this, Name("S1")); + s1->setExternal(true); + + Net* s2 = Net::create(this, Name("S2")); + s2->setExternal(true); + + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + setReferenceTransistor(_m1); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s1); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s2); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(d1); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(d1); + + if (not bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s1); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s2); + } + } + + + Name LevelShifter::getDeviceName () const + { return (isBulkConnected()) ? _lsBulkConnectedName : _lsBulkUnconnectedName; } + + +} // Analog namespace. diff --git a/hurricane/src/analog/MIMCapacitor.cpp b/hurricane/src/analog/MIMCapacitor.cpp new file mode 100644 index 00000000..663a6d84 --- /dev/null +++ b/hurricane/src/analog/MIMCapacitor.cpp @@ -0,0 +1,101 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./MIMCapacitor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/MetaCapacitor.h" +#include "hurricane/analog/MIMCapacitor.h" +#include "hurricane/analog/CapacitorArguments.h" + +namespace Analog { + + using namespace Hurricane; + + + const Name MIMCapacitor::_capacitorName ("MIMCapacitor"); + + + MIMCapacitor::MIMCapacitor ( Library* library, const Name& name, const CapacitorFamily::Type& type ) + : Super(library, name, type) + , _metaCapacitor(NULL) + , _cDraw (0.0) + , _cBorder (0.0) + , _cParasite (0.0) + , _c (NULL) + { } + + + MIMCapacitor* MIMCapacitor::create ( Library* library, const Name& name, const CapacitorFamily::Type& type ) + { + preCreate( _capacitorName ); + UpdateSession::open(); + MIMCapacitor* cp = new MIMCapacitor( library, name, type ); + cp->_postCreate( _capacitorName ); + cp->createConnections(); + cp->setTerminal( true ); + UpdateSession::close(); + return cp; + } + + + void MIMCapacitor::_postCreate ( const Name& deviceName ) + { + Super::_postCreate(deviceName); + + // get minimum and maximum value from technology + //AnalogEnv* aenv = AnalogEnv::get(); + //AnalogTechnology* atechno = aenv->getAnalogTechnology(); + //DbU::Unit capacitorMinL = atechno->getPhysicalRule("capacitorMinL").getValue(); + //DbU::Unit capacitorMaxL = atechno->getPhysicalRule("capacitorMaxL").getValue(); + //DbU::Unit capacitorMinW = atechno->getPhysicalRule("capacitorMinW").getValue(); + //DbU::Unit capacitorMaxW = atechno->getPhysicalRule("capacitorMaxW").getValue(); + // 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 ); + } + + + void MIMCapacitor::createConnections () + { + Net* p1 = Net::create( this, Name("P1") ); + p1->setExternal( true ); + + Net* p2 = Net::create( this, Name("P2") ); + p2->setExternal( true ); + + _metaCapacitor = MetaCapacitor::create( getSubDevicesLibrary(), Name("C1") ); + Instance* metaCapacitorIns = Instance::create( this, Name("C1Instance"), _metaCapacitor ); + setReferenceCapacitor( _metaCapacitor ); + + Plug* mcC1Plug = metaCapacitorIns->getPlug( _metaCapacitor->getPlate1() ); + mcC1Plug->setNet( p1 ); + Plug* mcC2Plug = metaCapacitorIns->getPlug( _metaCapacitor->getPlate2() ); + mcC2Plug->setNet( p2 ); + } + + + Name MIMCapacitor::getDeviceName () const + { return _capacitorName; } + + + Arguments* MIMCapacitor::getArguments () + { + CapacitorArguments* cArgs = new CapacitorArguments( isMIM(), isPIP(), isMOM(), _c->getValue() ); + return cArgs; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/MetaCapacitor.cpp b/hurricane/src/analog/MetaCapacitor.cpp new file mode 100644 index 00000000..27dbc1a2 --- /dev/null +++ b/hurricane/src/analog/MetaCapacitor.cpp @@ -0,0 +1,53 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./MetaCapacitor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/MetaCapacitor.h" + + +namespace Analog { + + + MetaCapacitor::MetaCapacitor ( Library* library, const Name& name ) + : Super(library,name) + , _plate1(NULL) + , _plate2(NULL) + , _ce (0.0) + { } + + + MetaCapacitor* MetaCapacitor::create ( Library* library, const Name& name ) + { + MetaCapacitor* mCapacitor = new MetaCapacitor( library, name ); + mCapacitor->_postCreate(); + + return mCapacitor; + } + + + void MetaCapacitor::_postCreate () + { + Super::_postCreate(); + + _plate1 = Net::create(this, "P1"); + _plate1->setExternal(true); + _plate2 = Net::create(this, "P2"); + _plate2->setExternal(true); + + setTerminal( false ); + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/MetaTransistor.cpp b/hurricane/src/analog/MetaTransistor.cpp new file mode 100644 index 00000000..8fcd1d80 --- /dev/null +++ b/hurricane/src/analog/MetaTransistor.cpp @@ -0,0 +1,77 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./MetaTransistor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/MetaTransistor.h" + + +namespace Analog { + + + MetaTransistor::MetaTransistor ( Library* library, const Name& name ) + : Super(library, name) + , _drain (NULL) + , _source (NULL) + , _gate (NULL) + , _bulk (NULL) + , _anonymous(NULL) + , _m (0) + , _we (0.0) + , _le (0.0) + , _ids (0.0) + , _vgs (0.0) + , _vds (0.0) + , _vbs (0.0) + , _vg (0.0) + , _vd (0.0) + , _vb (0.0) + , _vs (0.0) + , _veg (0.0) + , _vth (0.0) + , _wmin (0.0) + , _wmax (0.0) + , _nfing (1) + { } + + + MetaTransistor* MetaTransistor::create ( Library* library, const Name& name ) + { + MetaTransistor* mTransistor = new MetaTransistor( library, name ); + mTransistor->_postCreate(); + + return mTransistor; + } + + + void MetaTransistor::_postCreate () + { + Super::_postCreate(); + + _drain = Net::create(this, "D"); + _drain->setExternal(true); + _source = Net::create(this, "S"); + _source->setExternal(true); + _gate = Net::create(this, "G"); + _gate->setExternal(true); + _bulk = Net::create(this, "B"); + _bulk->setExternal(true); + _anonymous = Net::create(this, "Anonymous"); + _anonymous->setAutomatic( true ); + + setTerminal(false); + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/PyAnalog.cpp b/hurricane/src/analog/PyAnalog.cpp new file mode 100644 index 00000000..47b43ccc --- /dev/null +++ b/hurricane/src/analog/PyAnalog.cpp @@ -0,0 +1,233 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyAnalog.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/analog/PyDevice.h" +#include "hurricane/analog/PyTransistorFamily.h" +#include "hurricane/analog/PyTransistor.h" +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/PyCommonDrain.h" +#include "hurricane/analog/PyCommonGatePair.h" +#include "hurricane/analog/PyCommonSourcePair.h" +#include "hurricane/analog/PyCrossCoupledPair.h" +#include "hurricane/analog/PyDifferentialPair.h" +#include "hurricane/analog/PyLevelShifter.h" +#include "hurricane/analog/PySimpleCurrentMirror.h" +#include "hurricane/analog/PyCascode.h" + +#include "hurricane/analog/PyCapacitorFamily.h" +#include "hurricane/analog/PyMIMCapacitor.h" + +#include "hurricane/analog/PyTransistorArguments.h" +#include "hurricane/analog/PyTransistorMultiArguments.h" +#include "hurricane/analog/PyCapacitorArguments.h" +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/PyCapacitorParameter.h" +#include "hurricane/analog/PyChoiceParameter.h" +#include "hurricane/analog/PyFormFactorParameter.h" +#include "hurricane/analog/PyMCheckBoxParameter.h" +#include "hurricane/analog/PySpinBoxParameter.h" +#include "hurricane/analog/PyStepParameter.h" +#include "hurricane/analog/PyLayoutGenerator.h" + + +namespace Isobar { + + +#if !defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyHurricane" Shared Library Code Part | +// +=================================================================+ + +#else + +extern "C" { + + + static PyMethodDef PyAnalog_Methods[] = + { { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // --------------------------------------------------------------- + // Module Initialization : "initAnalog ()" + + DL_EXPORT(void) initAnalog () { + //trace_on(); + cdebug.log(49) << "initAnalog()" << endl; + + PyDevice_LinkPyType(); + PyTransistorFamily_LinkPyType(); + PyTransistor_LinkPyType(); + PyTransistorPair_LinkPyType(); + PyCommonDrain_LinkPyType(); + PyCommonGatePair_LinkPyType(); + PyCommonSourcePair_LinkPyType(); + PyCrossCoupledPair_LinkPyType(); + PyDifferentialPair_LinkPyType(); + PyLevelShifter_LinkPyType(); + PySimpleCurrentMirror_LinkPyType(); + PyCascode_LinkPyType(); + PyMIMCapacitor_LinkPyType(); + + PyTransistorArguments_LinkPyType(); + PyTransistorMultiArguments_LinkPyType(); + PyCapacitorArguments_LinkPyType(); + PyParameter_LinkPyType(); + PyCapacitorParameter_LinkPyType(); + PyChoiceParameter_LinkPyType(); + PyFormFactorParameter_LinkPyType(); + PyMCheckBoxParameter_LinkPyType(); + PySpinBoxParameter_LinkPyType(); + PyStepParameter_LinkPyType(); + PyCapacitorFamily_LinkPyType(); + PyLayoutGenerator_LinkPyType(); + + PYTYPE_READY( TransistorArguments ) + PYTYPE_READY( TransistorMultiArguments ) + PYTYPE_READY( CapacitorArguments ) + PYTYPE_READY( Parameter ) + PYTYPE_READY( LayoutGenerator ) + + PYTYPE_READY_SUB( Device , Cell ) + PYTYPE_READY_SUB( TransistorFamily , Device ) + PYTYPE_READY_SUB( Transistor , TransistorFamily ) + PYTYPE_READY_SUB( TransistorPair , TransistorFamily ) + PYTYPE_READY_SUB( CommonDrain , TransistorPair ) + PYTYPE_READY_SUB( CommonGatePair , TransistorPair ) + PYTYPE_READY_SUB( CommonSourcePair , TransistorPair ) + PYTYPE_READY_SUB( CrossCoupledPair , TransistorPair ) + PYTYPE_READY_SUB( DifferentialPair , TransistorPair ) + PYTYPE_READY_SUB( LevelShifter , TransistorPair ) + PYTYPE_READY_SUB( SimpleCurrentMirror , TransistorPair ) + PYTYPE_READY_SUB( Cascode , TransistorPair ) + + PYTYPE_READY_SUB( CapacitorFamily , Device ) + PYTYPE_READY_SUB( MIMCapacitor , CapacitorFamily ) + + PYTYPE_READY_SUB( CapacitorParameter , Parameter ) + PYTYPE_READY_SUB( ChoiceParameter , Parameter ) + PYTYPE_READY_SUB( FormFactorParameter , Parameter ) + PYTYPE_READY_SUB( MCheckBoxParameter , Parameter ) + PYTYPE_READY_SUB( SpinBoxParameter , Parameter ) + PYTYPE_READY_SUB( StepParameter , Parameter ) + + // Identifier string can take up to 10 characters ! + __cs.addType( "device" , &PyTypeDevice , "" , false, "cell" ); + __cs.addType( "tfamily" , &PyTypeTransistorFamily , "" , false, "device" ); + __cs.addType( "transis" , &PyTypeTransistor , "" , false, "tfamily" ); + __cs.addType( "transpair", &PyTypeTransistorPair , "" , false, "tfamily" ); + __cs.addType( "cdrnpair" , &PyTypeCommonDrain , "" , false, "transpair" ); + __cs.addType( "cgatepair", &PyTypeCommonGatePair , "" , false, "transpair" ); + __cs.addType( "csrcpair" , &PyTypeCommonSourcePair , "" , false, "transpair" ); + __cs.addType( "ccpair" , &PyTypeCrossCoupledPair , "" , false, "transpair" ); + __cs.addType( "diffpair" , &PyTypeDifferentialPair , "" , false, "transpair" ); + __cs.addType( "levshift" , &PyTypeLevelShifter , "" , false, "transpair" ); + __cs.addType( "scurmirr" , &PyTypeSimpleCurrentMirror , "" , false, "transpair" ); + __cs.addType( "cascode" , &PyTypeCascode , "" , false, "transpair" ); + + __cs.addType( "cfamily" , &PyTypeCapacitorFamily , "" , false, "device" ); + __cs.addType( "mimcapa" , &PyTypeMIMCapacitor , "" , false, "cfamily" ); + + __cs.addType( "transarg" , &PyTypeTransistorArguments , "" , false ); + __cs.addType( "transmarg", &PyTypeTransistorMultiArguments, "", false ); + __cs.addType( "capaarg" , &PyTypeCapacitorArguments , "" , false ); + __cs.addType( "parameter", &PyTypeParameter , "" , false ); + __cs.addType( "capapar" , &PyTypeCapacitorParameter , "" , false, "parameter" ); + __cs.addType( "choicepar", &PyTypeChoiceParameter , "" , false, "parameter" ); + __cs.addType( "ffpar" , &PyTypeFormFactorParameter , "" , false, "parameter" ); + __cs.addType( "mcboxpar" , &PyTypeMCheckBoxParameter , "" , false, "parameter" ); + __cs.addType( "sboxpar" , &PyTypeSpinBoxParameter , "" , false, "parameter" ); + __cs.addType( "steppar" , &PyTypeStepParameter , "" , false, "parameter" ); + __cs.addType( "laygen" , &PyTypeLayoutGenerator , "" , false ); + + + PyObject* module = Py_InitModule( "Analog", PyAnalog_Methods ); + if (module == NULL) { + cerr << "[ERROR]\n" + << " Failed to initialize Analog module." << endl; + return; + } + + Py_INCREF( &PyTypeTransistorFamily ); + PyModule_AddObject( module, "Device" , (PyObject*)&PyTypeDevice ); + Py_INCREF( &PyTypeDevice ); + PyModule_AddObject( module, "TransistorFamily" , (PyObject*)&PyTypeTransistorFamily ); + Py_INCREF( &PyTypeTransistor ); + PyModule_AddObject( module, "Transistor" , (PyObject*)&PyTypeTransistor ); + Py_INCREF( &PyTypeTransistorPair ); + PyModule_AddObject( module, "TransistorPair" , (PyObject*)&PyTypeTransistorPair ); + Py_INCREF( &PyTypeCommonDrain ); + PyModule_AddObject( module, "CommonDrain" , (PyObject*)&PyTypeCommonDrain ); + Py_INCREF( &PyTypeCommonGatePair ); + PyModule_AddObject( module, "CommonGatePair" , (PyObject*)&PyTypeCommonGatePair ); + Py_INCREF( &PyTypeCommonSourcePair ); + PyModule_AddObject( module, "CommonSourcePair" , (PyObject*)&PyTypeCommonSourcePair ); + Py_INCREF( &PyTypeCrossCoupledPair ); + PyModule_AddObject( module, "CrossCoupledPair" , (PyObject*)&PyTypeCrossCoupledPair ); + Py_INCREF( &PyTypeDifferentialPair ); + PyModule_AddObject( module, "DifferentialPair" , (PyObject*)&PyTypeDifferentialPair ); + Py_INCREF( &PyTypeLevelShifter ); + PyModule_AddObject( module, "LevelShifter" , (PyObject*)&PyTypeLevelShifter ); + Py_INCREF( &PyTypeSimpleCurrentMirror ); + PyModule_AddObject( module, "SimpleCurrentMirror", (PyObject*)&PyTypeSimpleCurrentMirror ); + Py_INCREF( &PyTypeCascode ); + PyModule_AddObject( module, "Cascode" , (PyObject*)&PyTypeCascode ); + + Py_INCREF( &PyTypeCapacitorFamily ); + PyModule_AddObject( module, "CapacitorFamily" , (PyObject*)&PyTypeCapacitorFamily ); + Py_INCREF( &PyTypeMIMCapacitor ); + PyModule_AddObject( module, "MIMCapacitor" , (PyObject*)&PyTypeMIMCapacitor ); + + Py_INCREF( &PyTypeParameter ); + PyModule_AddObject( module, "Parameter" , (PyObject*)&PyTypeParameter ); + Py_INCREF( &PyTypeCapacitorParameter ); + PyModule_AddObject( module, "CapacitorParameter" , (PyObject*)&PyTypeCapacitorParameter ); + Py_INCREF( &PyTypeChoiceParameter ); + PyModule_AddObject( module, "ChoiceParameter" , (PyObject*)&PyTypeChoiceParameter ); + Py_INCREF( &PyTypeFormFactorParameter ); + PyModule_AddObject( module, "FormFactorParameter", (PyObject*)&PyTypeFormFactorParameter ); + Py_INCREF( &PyTypeMCheckBoxParameter ); + PyModule_AddObject( module, "MCheckBoxParameter" , (PyObject*)&PyTypeMCheckBoxParameter ); + Py_INCREF( &PyTypeSpinBoxParameter ); + PyModule_AddObject( module, "SpinBoxParameter" , (PyObject*)&PyTypeSpinBoxParameter ); + Py_INCREF( &PyTypeStepParameter ); + PyModule_AddObject( module, "StepParameter" , (PyObject*)&PyTypeStepParameter ); + Py_INCREF( &PyTypeLayoutGenerator ); + PyModule_AddObject( module, "LayoutGenerator" , (PyObject*)&PyTypeLayoutGenerator ); + + PyDevice_postModuleInit(); + PyTransistorFamily_postModuleInit(); + PyCapacitorFamily_postModuleInit(); + PyParameter_postModuleInit(); + PyLayoutGenerator_postModuleInit(); + + //Py_INCREF( &PyTypeDevice ); + //PyModule_AddObject( module, "Device" , (PyObject*)&PyTypeDevice ); + //Py_INCREF( &PyTypeTransistorArguments ); + //PyModule_AddObject( module, "TransistorArguments", (PyObject*)&PyTypeTransistorArguments ); + + //PyObject* dictionnary = PyModule_GetDict ( module ); + //trace_off(); + } + + +} // extern "C". + +#endif // End of Python Module Code Part. + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyBJTArguments.cpp b/hurricane/src/analog/PyBJTArguments.cpp new file mode 100644 index 00000000..37e00d66 --- /dev/null +++ b/hurricane/src/analog/PyBJTArguments.cpp @@ -0,0 +1,86 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyBJTArguments.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/analog/PyBJTArguments.h" +#include "hurricane/analog/PyDevice.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(BJTArguments,argument,function) + +// +=================================================================+ +// | "PyBJTArguments" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + // +-------------------------------------------------------------+ + // | "PyBJTArguments" Attribute Methods | + // +-------------------------------------------------------------+ + + // --------------------------------------------------------------- + // Standart Destroy (Attribute). + DirectDestroyAttribute(PyBJTArguments_destroy, PyBJTArguments) + + + // Standart Accessors (Attributes). + DirectGetBoolAttribute(PyBJTArguments_isNPN , isNPN , PyBJTArguments, BJTArguments) + DirectGetBoolAttribute(PyBJTArguments_isExternalDummy, isExternalDummy , PyBJTArguments, BJTArguments) + DirectGetUIntAttribute(PyBJTArguments_getM , getM , PyBJTArguments, BJTArguments) + DirectGetUIntAttribute(PyBJTArguments_getN , getN , PyBJTArguments, BJTArguments) + + + // --------------------------------------------------------------- + // PyBJTArguments Attribute Method table. + + PyMethodDef PyBJTArguments_Methods[] = + { { "isNPN" , (PyCFunction)PyBJTArguments_isNPN , METH_NOARGS , "Returns true if NPN, false for PNP." } + , { "isExternalDummy" , (PyCFunction)PyBJTArguments_isExternalDummy , METH_NOARGS , "Returns true if there sre external dummies." } + , { "getM" , (PyCFunction)PyBJTArguments_getM , METH_NOARGS , "Returns m value." } + , { "getN" , (PyCFunction)PyBJTArguments_getN , METH_NOARGS , "Returns n value." } + , { "destroy" , (PyCFunction)PyBJTArguments_destroy , METH_NOARGS , "Destroy associated hurricane object, the python object remains." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyBJTArguments" Object Methods | + // +-------------------------------------------------------------+ + + DirectDeleteMethod(PyBJTArguments_DeAlloc,PyBJTArguments) + PyTypeObjectLinkPyType(BJTArguments) + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyBJTArguments" Shared Library Code Part | +// +=================================================================+ + + PyTypeObjectDefinitions(BJTArguments) + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCapacitorArguments.cpp b/hurricane/src/analog/PyCapacitorArguments.cpp new file mode 100644 index 00000000..e8b23548 --- /dev/null +++ b/hurricane/src/analog/PyCapacitorArguments.cpp @@ -0,0 +1,71 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyCapacitorArguments.h" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/analog/PyCapacitorArguments.h" +#include "hurricane/analog/PyDevice.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CapacitorArguments,argument,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCapacitorArguments" Python Module Code Part | +// +=================================================================+ + + DirectDestroyAttribute(PyCapacitorArguments_destroy, PyCapacitorArguments) + DirectGetDoubleAttribute(PyCapacitorArguments_getC, getC, PyCapacitorArguments, CapacitorArguments) + + + // --------------------------------------------------------------- + // PyCapacitorArguments Attribute Method table. + + PyMethodDef PyCapacitorArguments_Methods[] = + { { "getC" , (PyCFunction)PyCapacitorArguments_getC , METH_NOARGS , "Returns C value." } + , { "destroy" , (PyCFunction)PyCapacitorArguments_destroy, METH_NOARGS , "Destroy associated hurricane object, the python object remains." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCapacitorArguments" Object Methods | + // +-------------------------------------------------------------+ + + DirectDeleteMethod(PyCapacitorArguments_DeAlloc,PyCapacitorArguments) + PyTypeObjectLinkPyType(CapacitorArguments) + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCapacitorArguments" Shared Library Code Part | +// +=================================================================+ + + PyTypeObjectDefinitions(CapacitorArguments) + +#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 new file mode 100644 index 00000000..cb7956f5 --- /dev/null +++ b/hurricane/src/analog/PyCapacitorFamily.cpp @@ -0,0 +1,115 @@ +// -*- 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 : "./PyCapacitorFamily.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyCapacitorFamily.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CapacitorFamily,family,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCapacitorFamily" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyCapacitorFamily_getType ( PyCapacitorFamily* self ) + { + CapacitorFamily::Type type = CapacitorFamily::MIM; + + HTRY + METHOD_HEAD ( "CapacitorFamily.getType()" ) + type = family->getType(); + HCATCH + + return Py_BuildValue( "i", (int)type ); + } + + + DirectGetBoolAttribute (PyCapacitorFamily_isPIP ,isPIP ,PyCapacitorFamily,CapacitorFamily) + DirectGetBoolAttribute (PyCapacitorFamily_isMIM ,isMIM ,PyCapacitorFamily,CapacitorFamily) + DirectGetBoolAttribute (PyCapacitorFamily_isMOM ,isMOM ,PyCapacitorFamily,CapacitorFamily) + DirectGetIntAttribute (PyCapacitorFamily_getRow,getRow,PyCapacitorFamily,CapacitorFamily) + + DirectGetDoubleAttribute(PyCapacitorFamily_getCE ,getCE ,PyCapacitorFamily,CapacitorFamily) + DirectSetDoubleAttribute(PyCapacitorFamily_setCE ,setCE ,PyCapacitorFamily,CapacitorFamily) + + + // --------------------------------------------------------------- + // PyCapacitorFamily Attribute Method table. + + PyMethodDef PyCapacitorFamily_Methods[] = + { { "getType" , (PyCFunction)PyCapacitorFamily_getType , METH_NOARGS + , "Returns the type of the transistor (as a numric constant)." } + , { "isPIP" , (PyCFunction)PyCapacitorFamily_isPIP , METH_NOARGS + , "Returns True if it is a PIP capacitor." } + , { "isMIM" , (PyCFunction)PyCapacitorFamily_isMIM , METH_NOARGS + , "Returns True if it is a MIM capacitor." } + , { "isMOM" , (PyCFunction)PyCapacitorFamily_isMOM , METH_NOARGS + , "Returns True if it is a MOM capacitor." } + , { "getCE" , (PyCFunction)PyCapacitorFamily_getCE , METH_NOARGS + , "Capacitor value C (requested)." } + , { "setCE" , (PyCFunction)PyCapacitorFamily_setCE , METH_VARARGS + , "Capacitor value C (requested)." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCapacitorFamily" Object Methods | + // +-------------------------------------------------------------+ + + DBoDeleteMethod(CapacitorFamily) + PyTypeObjectLinkPyType(CapacitorFamily) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCapacitorFamily" Shared Library Code Part | +// +=================================================================+ + + DBoLinkCreateMethod(CapacitorFamily) + PyTypeInheritedObjectDefinitions(CapacitorFamily, Device) + + + extern void PyCapacitorFamily_postModuleInit () + { + PyObject* constant; + + LoadObjectConstant(PyTypeCapacitorFamily.tp_dict,CapacitorFamily::PIP,"PIP"); + LoadObjectConstant(PyTypeCapacitorFamily.tp_dict,CapacitorFamily::MIM,"MIM"); + LoadObjectConstant(PyTypeCapacitorFamily.tp_dict,CapacitorFamily::MOM,"MOM"); + } + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCapacitorParameter.cpp b/hurricane/src/analog/PyCapacitorParameter.cpp new file mode 100644 index 00000000..bdadd79e --- /dev/null +++ b/hurricane/src/analog/PyCapacitorParameter.cpp @@ -0,0 +1,80 @@ +// -*- 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 : "./PyCapacitorParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyCapacitorParameter.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(CapacitorParameter,capacitorParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCapacitorParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetDoubleAttribute(PyCapacitorParameter_getValue, getValue, PyCapacitorParameter, CapacitorParameter) + DirectSetDoubleAttribute(PyCapacitorParameter_setValue, setValue, PyCapacitorParameter, CapacitorParameter) + + // --------------------------------------------------------------- + // PyCapacitorParameter Attribute Method table. + + PyMethodDef PyCapacitorParameter_Methods[] = + { { "getValue" , (PyCFunction)PyCapacitorParameter_getValue, METH_NOARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyCapacitorParameter_setValue, METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCapacitorParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(CapacitorParameter) + PyTypeObjectLinkPyType(CapacitorParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCapacitorParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(CapacitorParameter) + PyTypeInheritedObjectDefinitions(CapacitorParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCascode.cpp b/hurricane/src/analog/PyCascode.cpp new file mode 100644 index 00000000..961703aa --- /dev/null +++ b/hurricane/src/analog/PyCascode.cpp @@ -0,0 +1,127 @@ +// -*- 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 : "./PyCascode.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyCascode.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Cascode,transistor,function) + +#if defined(__PYTHON_MODULE__) + + +// +=================================================================+ +// | "PyCascode" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyCascode_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyCascode_create()" << endl; + + Cascode* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:Cascode.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "Cascode.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case Cascode::NMOS: + case Cascode::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "Cascode.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = Cascode::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (Cascode::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to Cascode.create()." ); + return NULL; + } + HCATCH + + return PyCascode_Link(transistor); + } + + + DBoDestroyAttribute(PyCascode_destroy, PyCascode) + + + // --------------------------------------------------------------- + // PyCascode Attribute Method table. + + PyMethodDef PyCascode_Methods[] = + { { "create" , (PyCFunction)PyCascode_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyCascode_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCascode" Object Methods | + // +-------------------------------------------------------------+ + + DBoDeleteMethod(Cascode) + PyTypeObjectLinkPyType(Cascode) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCascode" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(Cascode) + PyTypeInheritedObjectDefinitions(Cascode, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyChoiceParameter.cpp b/hurricane/src/analog/PyChoiceParameter.cpp new file mode 100644 index 00000000..beec92a9 --- /dev/null +++ b/hurricane/src/analog/PyChoiceParameter.cpp @@ -0,0 +1,81 @@ +// -*- 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 : "./PyChoiceParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyChoiceParameter.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(ChoiceParameter,choiceParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyChoiceParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetStringAttribute (PyChoiceParameter_getValue, getValue, PyChoiceParameter, ChoiceParameter) + DirectSetCStringAttribute(PyChoiceParameter_setValue, setValue, PyChoiceParameter, ChoiceParameter) + + + // --------------------------------------------------------------- + // PyChoiceParameter Attribute Method table. + + PyMethodDef PyChoiceParameter_Methods[] = + { { "getValue" , (PyCFunction)PyChoiceParameter_getValue, METH_NOARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyChoiceParameter_setValue, METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyChoiceParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(ChoiceParameter) + PyTypeObjectLinkPyType(ChoiceParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyChoiceParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(ChoiceParameter) + PyTypeInheritedObjectDefinitions(ChoiceParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCommonDrain.cpp b/hurricane/src/analog/PyCommonDrain.cpp new file mode 100644 index 00000000..53699746 --- /dev/null +++ b/hurricane/src/analog/PyCommonDrain.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PyCommonDrain.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyCommonDrain.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CommonDrain,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCommonDrain" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyCommonDrain_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyCommonDrain_create()" << endl; + + CommonDrain* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:CommonDrain.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "CommonDrain.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case CommonDrain::NMOS: + case CommonDrain::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "CommonDrain.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = CommonDrain::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (CommonDrain::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to CommonDrain.create()." ); + return NULL; + } + HCATCH + + return PyCommonDrain_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyCommonDrain_destroy, PyCommonDrain) + + //GetNameMethod(CommonDrain, device) + + + // --------------------------------------------------------------- + // PyCommonDrain Attribute Method table. + + PyMethodDef PyCommonDrain_Methods[] = + { { "create" , (PyCFunction)PyCommonDrain_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyCommonDrain_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCommonDrain" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(CommonDrain) + PyTypeObjectLinkPyType(CommonDrain) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCommonDrain" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(CommonDrain) + PyTypeInheritedObjectDefinitions(CommonDrain, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCommonGatePair.cpp b/hurricane/src/analog/PyCommonGatePair.cpp new file mode 100644 index 00000000..15c9e773 --- /dev/null +++ b/hurricane/src/analog/PyCommonGatePair.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PyCommonGatePair.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyCommonGatePair.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CommonGatePair,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCommonGatePair" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyCommonGatePair_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyCommonGatePair_create()" << endl; + + CommonGatePair* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:CommonGatePair.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "CommonGatePair.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case CommonGatePair::NMOS: + case CommonGatePair::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "CommonGatePair.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = CommonGatePair::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (CommonGatePair::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to CommonGatePair.create()." ); + return NULL; + } + HCATCH + + return PyCommonGatePair_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyCommonGatePair_destroy, PyCommonGatePair) + + //GetNameMethod(CommonGatePair, device) + + + // --------------------------------------------------------------- + // PyCommonGatePair Attribute Method table. + + PyMethodDef PyCommonGatePair_Methods[] = + { { "create" , (PyCFunction)PyCommonGatePair_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyCommonGatePair_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCommonGatePair" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(CommonGatePair) + PyTypeObjectLinkPyType(CommonGatePair) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCommonGatePair" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(CommonGatePair) + PyTypeInheritedObjectDefinitions(CommonGatePair, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCommonSourcePair.cpp b/hurricane/src/analog/PyCommonSourcePair.cpp new file mode 100644 index 00000000..52d77aad --- /dev/null +++ b/hurricane/src/analog/PyCommonSourcePair.cpp @@ -0,0 +1,131 @@ +// -*- 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 : "./PyCommonSourcePair.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyCommonSourcePair.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CommonSourcePair,transistor,function) + +#if defined(__PYTHON_MODULE__) + + +// +=================================================================+ +// | "PyCommonSourcePair" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyCommonSourcePair_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyCommonSourcePair_create()" << endl; + + CommonSourcePair* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:CommonSourcePair.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "CommonSourcePair.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case CommonSourcePair::NMOS: + case CommonSourcePair::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "CommonSourcePair.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = CommonSourcePair::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (CommonSourcePair::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to CommonSourcePair.create()." ); + return NULL; + } + HCATCH + + return PyCommonSourcePair_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyCommonSourcePair_destroy, PyCommonSourcePair) + + //GetNameMethod(CommonSourcePair, device) + + + // --------------------------------------------------------------- + // PyCommonSourcePair Attribute Method table. + + PyMethodDef PyCommonSourcePair_Methods[] = + { { "create" , (PyCFunction)PyCommonSourcePair_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyCommonSourcePair_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCommonSourcePair" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(CommonSourcePair) + PyTypeObjectLinkPyType(CommonSourcePair) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCommonSourcePair" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(CommonSourcePair) + PyTypeInheritedObjectDefinitions(CommonSourcePair, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyCrossCoupledPair.cpp b/hurricane/src/analog/PyCrossCoupledPair.cpp new file mode 100644 index 00000000..9531ebbe --- /dev/null +++ b/hurricane/src/analog/PyCrossCoupledPair.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PyCrossCoupledPair.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyCrossCoupledPair.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(CrossCoupledPair,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyCrossCoupledPair" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyCrossCoupledPair_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyCrossCoupledPair_create()" << endl; + + CrossCoupledPair* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:CrossCoupledPair.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "CrossCoupledPair.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case CrossCoupledPair::NMOS: + case CrossCoupledPair::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "CrossCoupledPair.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = CrossCoupledPair::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (CrossCoupledPair::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to CrossCoupledPair.create()." ); + return NULL; + } + HCATCH + + return PyCrossCoupledPair_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyCrossCoupledPair_destroy, PyCrossCoupledPair) + + //GetNameMethod(CrossCoupledPair, device) + + + // --------------------------------------------------------------- + // PyCrossCoupledPair Attribute Method table. + + PyMethodDef PyCrossCoupledPair_Methods[] = + { { "create" , (PyCFunction)PyCrossCoupledPair_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyCrossCoupledPair_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyCrossCoupledPair" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(CrossCoupledPair) + PyTypeObjectLinkPyType(CrossCoupledPair) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyCrossCoupledPair" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(CrossCoupledPair) + PyTypeInheritedObjectDefinitions(CrossCoupledPair, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyDevice.cpp b/hurricane/src/analog/PyDevice.cpp new file mode 100644 index 00000000..da5b3aa6 --- /dev/null +++ b/hurricane/src/analog/PyDevice.cpp @@ -0,0 +1,211 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyDevice.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/isobar/PyLayer.h" +#include "hurricane/isobar/PyBox.h" +#include "hurricane/isobar/PyNet.h" +#include "hurricane/isobar/PyVertical.h" +#include "hurricane/isobar/PyHorizontal.h" +#include "hurricane/isobar/PyPad.h" +#include "hurricane/isobar/PyContact.h" +#include "hurricane/isobar/PyPoint.h" +#include "hurricane/isobar/PyReference.h" +#include "hurricane/analog/PyDevice.h" +#include "hurricane/analog/PyParameter.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Device,device,function) + + +// +=================================================================+ +// | "PyDevice" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + // +-------------------------------------------------------------+ + // | "PyDevice" Attribute Methods | + // +-------------------------------------------------------------+ + + + static PyObject* PyDevice_getParameter ( PyDevice* self, PyObject* args ) + { + cdebug.log(49) << "PyDevice_getParameter()" << endl; + + Parameter* parameter = NULL; + + HTRY + METHOD_HEAD ( "Device.getParameter()" ) + + char* id = NULL; + + if (PyArg_ParseTuple( args, "s:Device.getParameter", &id )) { + parameter = device->getParameter( id ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to Device.getParameter()." ); + return NULL; + } + HCATCH + + return PyParameter_LinkDerived(parameter); + } + + + static PyObject* PyDevice_setRestrictions ( PyDevice* self, PyObject* args ) + { + cdebug.log(49) << "PyDevice_setRestrictions()" << endl; + + PyObject* pyNet = NULL; + unsigned int flags = 0; + + HTRY + METHOD_HEAD ( "Device.setRestrictions()" ) + + if (PyArg_ParseTuple( args, "OI:Device.setRestrictions", &pyNet, &flags )) { + if (not IsPyNet(pyNet)) { + PyErr_SetString ( ConstructorError, "Device.setRestrictions(): First argument is not of type Net." ); + return NULL; + } + device->setRestrictions2( PYNET_O(pyNet), (unsigned int)flags ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters number or type given to Device.setRestrictions()." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + static PyObject* PyDevice_getRestrictions ( PyDevice* self, PyObject* args ) + { + cdebug.log(49) << "PyDevice_getRestrictions()" << endl; + + PyObject* pyNet = NULL; + unsigned int flags = 0; + + HTRY + METHOD_HEAD ( "Device.getRestrictions()" ) + + if (PyArg_ParseTuple( args, "O:Device.getRestrictions", &pyNet )) { + if (not IsPyNet(pyNet)) { + PyErr_SetString ( ConstructorError, "Device.getRestrictions(): First argument is not of type Net." ); + return NULL; + } + flags = device->getRestrictions2( PYNET_O(pyNet) ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters number or type given to Device.setRestrictions()." ); + return NULL; + } + HCATCH + + return Py_BuildValue( "I", flags ); + } + + + // Standart Accessors (Attributes). + DirectGetNameAttribute (PyDevice_getDeviceName ,getDeviceName ,PyDevice,Device) + DirectGetStringAttribute(PyDevice_getLayoutScript ,getLayoutScript ,PyDevice,Device) +//DirectGetStringAttribute(PyDevice_checkLayoutOnPhysicalGrid,checkLayoutOnPhysicalGrid,PyDevice,Device) + DirectGetDoubleAttribute(PyDevice_getTemperature ,getTemperature ,PyDevice,Device) + DirectSetDoubleAttribute(PyDevice_setTemperature ,setTemperature ,PyDevice,Device) + + DirectVoidMethod(Device,device,destroyLayout) + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyDevice_destroy, PyDevice) + + + // --------------------------------------------------------------- + // PyDevice Attribute Method table. + + PyMethodDef PyDevice_Methods[] = + { { "getDeviceName" , (PyCFunction)PyDevice_getDeviceName , METH_NOARGS + , "Returns the name of the electrical circuit implemented by the device." } + , { "getLayoutScript" , (PyCFunction)PyDevice_getLayoutScript , METH_NOARGS + , "Returns the name of the Python script actually used to generate the layout." } + //, { "checkLayoutOnPhysicalGrid" + // , (PyCFunction)PyDevice_checkLayoutOnPhysicalGrid, METH_NOARGS + // , "Return a list of all the components (rectangles) not on foundry grid." } + , { "destroyLayout" , (PyCFunction)PyDevice_destroyLayout , METH_NOARGS + , "Remove the layout (the netlist ." } + , { "getParameter" , (PyCFunction)PyDevice_getParameter , METH_VARARGS + , "Get a parameter by it's id." } + , { "getTemperature" , (PyCFunction)PyDevice_getTemperature , METH_NOARGS + , "Returns the temperature." } + , { "setTemperature" , (PyCFunction)PyDevice_setTemperature , METH_VARARGS + , "Sets the temperature." } + , { "setRestrictions" , (PyCFunction)PyDevice_setRestrictions , METH_VARARGS + , "Sets the access restrictions for the given net." } + , { "getRestrictions" , (PyCFunction)PyDevice_getRestrictions , METH_VARARGS + , "Returns the access restrictions for the given Net." } + , { "destroy" , (PyCFunction)PyDevice_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyDevice" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(Device) + PyTypeObjectLinkPyType(Device) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyDevice" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(Device) + PyTypeInheritedObjectDefinitions(Device, Cell) + + + extern void PyDevice_postModuleInit () + { + PyObject* constant; + + LoadObjectConstant(PyTypeDevice.tp_dict,Device::NorthBlocked,"NorthBlocked"); + LoadObjectConstant(PyTypeDevice.tp_dict,Device::SouthBlocked,"SouthBlocked"); + LoadObjectConstant(PyTypeDevice.tp_dict,Device::EastBlocked ,"EastBlocked" ); + LoadObjectConstant(PyTypeDevice.tp_dict,Device::WestBlocked ,"WestBlocked" ); + LoadObjectConstant(PyTypeDevice.tp_dict,Device::AllBlocked ,"AllBlocked" ); + } + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyDifferentialPair.cpp b/hurricane/src/analog/PyDifferentialPair.cpp new file mode 100644 index 00000000..9dfe99df --- /dev/null +++ b/hurricane/src/analog/PyDifferentialPair.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PyDifferentialPair.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyDifferentialPair.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(DifferentialPair,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyDifferentialPair" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyDifferentialPair_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyDifferentialPair_create()" << endl; + + DifferentialPair* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:DifferentialPair.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "DifferentialPair.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case DifferentialPair::NMOS: + case DifferentialPair::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "DifferentialPair.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = DifferentialPair::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (DifferentialPair::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to DifferentialPair.create()." ); + return NULL; + } + HCATCH + + return PyDifferentialPair_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyDifferentialPair_destroy, PyDifferentialPair) + + //GetNameMethod(DifferentialPair, device) + + + // --------------------------------------------------------------- + // PyDifferentialPair Attribute Method table. + + PyMethodDef PyDifferentialPair_Methods[] = + { { "create" , (PyCFunction)PyDifferentialPair_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyDifferentialPair_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyDifferentialPair" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(DifferentialPair) + PyTypeObjectLinkPyType(DifferentialPair) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyDifferentialPair" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(DifferentialPair) + PyTypeInheritedObjectDefinitions(DifferentialPair, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyFormFactorParameter.cpp b/hurricane/src/analog/PyFormFactorParameter.cpp new file mode 100644 index 00000000..39f79099 --- /dev/null +++ b/hurricane/src/analog/PyFormFactorParameter.cpp @@ -0,0 +1,90 @@ +// -*- 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 : "./PyFormFactorParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyFormFactorParameter.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(FormFactorParameter,ffParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyFormFactorParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetLongAttribute(PyFormFactorParameter_getMin , getMin , PyFormFactorParameter, FormFactorParameter) + DirectGetLongAttribute(PyFormFactorParameter_getMax , getMax , PyFormFactorParameter, FormFactorParameter) + DirectGetLongAttribute(PyFormFactorParameter_getValue, getValue, PyFormFactorParameter, FormFactorParameter) + DirectSetLongAttribute(PyFormFactorParameter_setMax , setMax , PyFormFactorParameter, FormFactorParameter) + DirectSetLongAttribute(PyFormFactorParameter_setValue, setValue, PyFormFactorParameter, FormFactorParameter) + + + // --------------------------------------------------------------- + // PyFormFactorParameter Attribute Method table. + + PyMethodDef PyFormFactorParameter_Methods[] = + { { "getMin" , (PyCFunction)PyFormFactorParameter_getMin , METH_NOARGS + , "Self explanatory." } + , { "getMax" , (PyCFunction)PyFormFactorParameter_getMax , METH_NOARGS + , "Self explanatory." } + , { "getValue" , (PyCFunction)PyFormFactorParameter_getValue, METH_NOARGS + , "Self explanatory." } + , { "setMax" , (PyCFunction)PyFormFactorParameter_setMax , METH_NOARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyFormFactorParameter_setValue, METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyFormFactorParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(FormFactorParameter) + PyTypeObjectLinkPyType(FormFactorParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyFormFactorParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(FormFactorParameter) + PyTypeInheritedObjectDefinitions(FormFactorParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyLayoutGenerator.cpp b/hurricane/src/analog/PyLayoutGenerator.cpp new file mode 100644 index 00000000..1c4b592d --- /dev/null +++ b/hurricane/src/analog/PyLayoutGenerator.cpp @@ -0,0 +1,377 @@ +// -*- 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 : "./PyLayoutGenerator.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyBox.h" +#include "hurricane/analog/PyDevice.h" +#include "hurricane/analog/PyLayoutGenerator.h" +#include + + +namespace Isobar { + + using std::cerr; + using std::endl; + using std::hex; + using std::ostringstream; + using Isobar::ProxyProperty; + using Isobar::ProxyError; + using Isobar::ConstructorError; + using Isobar::HurricaneError; + using Isobar::HurricaneWarning; + using Isobar::ParseOneArg; + using Isobar::ParseTwoArg; + using namespace Analog; + + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(LayoutGenerator,generator,function) + + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyLayoutGenerator" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyLayoutGenerator_getVerboseLevel ( PyObject* ) + { return Py_BuildValue( "i", LayoutGenerator::getVerboseLevel() ); } + + + static PyObject* PyLayoutGenerator_setVerboseLevel ( PyObject*, PyObject* args ) + { + int verboseLevel = 0; + if (PyArg_ParseTuple( args, "i:LayoutGenerator.setVerboseLevel", &verboseLevel )) { + switch ( verboseLevel ) { + case LayoutGenerator::Quiet: + case LayoutGenerator::Verbose: + case LayoutGenerator::VeryVerbose: + case LayoutGenerator::Debug: break; + default: + PyErr_SetString( ConstructorError, "LayoutGenerator.setVerboseLevel(): Unsupported integer value." ); + return NULL; + } + LayoutGenerator::setVerboseLevel( verboseLevel ); + } else { + PyErr_SetString( ConstructorError, "LayoutGenerator.setVerboseLevel(): Bad parameter type." ); + return NULL; + } + + Py_RETURN_NONE; + } + + + static PyObject* PyLayoutGenerator_getDeviceBox ( PyLayoutGenerator *self ) + { + METHOD_HEAD( "LayoutGenerator.getDeviceBox()" ) + + PyBox* pyBox = PyObject_NEW( PyBox, &PyTypeBox ); + if (pyBox == NULL) return NULL; + + HTRY + pyBox->_object = new Box ( self->ACCESS_OBJECT->getDeviceBox() ); + HCATCH + + return (PyObject*)pyBox; + } + + + static PyObject* PyLayoutGenerator_getActiveBox ( PyLayoutGenerator *self ) + { + METHOD_HEAD( "LayoutGenerator.getActiveBox()" ) + + PyBox* pyBox = PyObject_NEW( PyBox, &PyTypeBox ); + if (pyBox == NULL) return NULL; + + HTRY + pyBox->_object = new Box ( self->ACCESS_OBJECT->getDeviceBox() ); + HCATCH + + return (PyObject*)pyBox; + } + + + static PyObject* PyLayoutGenerator_getRow ( PyLayoutGenerator *self, PyObject* args ) + { + METHOD_HEAD( "LayoutGenerator.getRow()" ) + + int row = 0; + PyObject* pyRow = NULL; + + HTRY + if (PyArg_ParseTuple( args, "i:LayoutGenerator.getRow", &row )) { + pyRow = generator->getRow( row ); + if (not pyRow) Py_RETURN_NONE; + Py_INCREF( pyRow ); + } else { + PyErr_SetString( ConstructorError, "LayoutGenerator.getRow(): Bad parameter type." ); + return NULL; + } + HCATCH + + return pyRow; + } + + + static PyObject* PyLayoutGenerator_getDic ( PyLayoutGenerator *self, PyObject* args ) + { + METHOD_HEAD( "LayoutGenerator.getDic()" ) + + int column = 0; + PyObject* pyRow = NULL; + PyObject* pyDic = NULL; + + HTRY + if (PyArg_ParseTuple( args, "Oi:LayoutGenerator.getDic", &pyRow, &column )) { + pyDic = generator->getDic( pyRow, column ); + if (not pyDic) Py_RETURN_NONE; + Py_INCREF( pyDic ); + } else { + PyErr_SetString( ConstructorError, "LayoutGenerator.getDic(): Bad parameter type." ); + return NULL; + } + HCATCH + + return pyDic; + } + + + static PyObject* PyLayoutGenerator_getParamValue ( PyLayoutGenerator *self, PyObject* args ) + { + METHOD_HEAD( "LayoutGenerator.getParamValue()" ) + + char* paramName = NULL; + PyObject* pyDic = NULL; + PyObject* pyParamValue = NULL; + + HTRY + if (PyArg_ParseTuple( args, "Os:LayoutGenerator.getParamValue", &pyDic, ¶mName )) { + pyParamValue = generator->getParamValue( pyDic, paramName ); + if (not pyParamValue) Py_RETURN_NONE; + Py_INCREF( pyParamValue ); + } else { + PyErr_SetString( ConstructorError, "LayoutGenerator.getParamValue(): Bad parameter type." ); + return NULL; + } + HCATCH + + return pyParamValue; + } + + + static PyObject* PyLayoutGenerator_getParameterValue ( PyLayoutGenerator *self, PyObject* args ) + { + METHOD_HEAD( "LayoutGenerator.getParameterValue()" ) + + bool status = false; + double paramValue = 0.0; + PyObject* arg0 = NULL; + PyObject* arg1 = NULL; + PyObject* arg2 = NULL; + + HTRY + __cs.init( "LayoutGenerator.getParameterValue" ); + if (not PyArg_ParseTuple( args, "O&O&|O&:LayoutGenerator.getParameterValue" + , Converter, &arg0 + , Converter, &arg1 + , Converter, &arg2 + ) ) { + PyErr_SetString( ConstructorError, "LayoutGenerator.getParameterValue(): Invalid number of parameters." ); + return NULL; + //} + //if (__cs.getObjectIds() == ":string:string") { + // paramValue = generator->getParameterValue( PyString_AsString(arg0), PyString_AsString(arg1), status ); + } if (__cs.getObjectIds() == ":int:int:string") { + paramValue = generator->getParameterValue( PyInt_AsLong(arg0) + , PyInt_AsLong(arg1) + , PyString_AsString(arg2) + , status ); + } else { + PyErr_SetString( ConstructorError, "LayoutGenerator.getParameterValue(): Bad parameter type." ); + return NULL; + } + if (not status) Py_RETURN_NONE; + HCATCH + + return Py_BuildValue( "d", paramValue ); + } + + + static PyObject* PyLayoutGenerator_getMatrix ( PyLayoutGenerator* self ) + { + METHOD_HEAD("LayoutGenerator.getMatrix()") + PyObject* matrix = generator->getMatrix(); + if (not matrix) Py_RETURN_NONE; + Py_INCREF( matrix ); + return matrix; + } + + + static PyObject* PyLayoutGenerator_new ( PyTypeObject* type, PyObject* args, PyObject* kwds ) + { + cdebug.log(49) << "PyLayoutGenerator_new()" << endl; + + LayoutGenerator* generator = NULL; + PyLayoutGenerator* pyLayoutGenerator = (PyLayoutGenerator*)type->tp_alloc(type,0); + + HTRY + if (pyLayoutGenerator) { + generator = new LayoutGenerator(); + pyLayoutGenerator->_object = generator; + } + HCATCH + + return (PyObject*)pyLayoutGenerator; + } + + + static PyObject* PyLayoutGenerator_Repr ( PyLayoutGenerator* self ) + { + LayoutGenerator* generator = self->_object; + + if ( generator == NULL ) + return PyString_FromString(""); + + ostringstream s; + s << "getDevice()) s << getString(generator->getDevice()); + else s << "NULL [Device*]"; + s << ">"; + return PyString_FromString(s.str().c_str()); + } + + + static PyObject* PyLayoutGenerator_getDevice ( PyLayoutGenerator* self ) + { + METHOD_HEAD("LayoutGenerator.getDevice()") + return PyDevice_Link( generator->getDevice() ); + } + + + static PyObject* PyLayoutGenerator_setDevice ( PyLayoutGenerator* self, PyObject* args ) + { + HTRY + METHOD_HEAD("LayoutGenerator.setDevice()") + + PyObject* pyDevice = NULL; + + if (PyArg_ParseTuple( args, "O", &pyDevice )) { + if (not PyObject_IsInstance(pyDevice,(PyObject*)&PyTypeDevice)) { + PyErr_SetString( ConstructorError, "LayoutGenerator.setDevice(): Argument is not of type Device." ); + return NULL; + } + generator->setDevice( PYDEVICE_O(pyDevice) ); + } else { + PyErr_SetString( ConstructorError, "Bad parameter given to LayoutGenerator.setDevice()." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + DirectGetBoolAttribute(PyLayoutGenerator_checkScript ,checkScript ,PyLayoutGenerator,LayoutGenerator) + DirectGetBoolAttribute(PyLayoutGenerator_checkFunctions ,checkFunctions ,PyLayoutGenerator,LayoutGenerator) + DirectGetBoolAttribute(PyLayoutGenerator_drawLayout ,drawLayout ,PyLayoutGenerator,LayoutGenerator) + DirectGetUIntAttribute(PyLayoutGenerator_getNumberTransistor,getNumberTransistor,PyLayoutGenerator,LayoutGenerator) + DirectGetUIntAttribute(PyLayoutGenerator_getNumberStack ,getNumberStack ,PyLayoutGenerator,LayoutGenerator) + + + PyMethodDef PyLayoutGenerator_Methods[] = + { { "getVerboseLevel" , (PyCFunction)PyLayoutGenerator_getVerboseLevel , METH_NOARGS|METH_STATIC, "Return the verbosity level." } + , { "setVerboseLevel" , (PyCFunction)PyLayoutGenerator_setVerboseLevel , METH_STATIC, "Sets the verbosity level." } + , { "getDevice" , (PyCFunction)PyLayoutGenerator_getDevice , METH_NOARGS , "Return the Device currently loaded." } + , { "getNumberTransistor", (PyCFunction)PyLayoutGenerator_getNumberTransistor, METH_NOARGS , "Return how many real transistors (fingers) are useds." } + , { "getNumberStack" , (PyCFunction)PyLayoutGenerator_getNumberStack , METH_NOARGS , "Return how many transistor stacks are useds." } + , { "getDeviceBox" , (PyCFunction)PyLayoutGenerator_getDeviceBox , METH_NOARGS , "Return the box encompassing all components." } + , { "getActiveBox" , (PyCFunction)PyLayoutGenerator_getActiveBox , METH_NOARGS , "Return the box ecompassing only active areas." } + , { "getMatrix" , (PyCFunction)PyLayoutGenerator_getMatrix , METH_NOARGS , "Return the whole result matrix." } + , { "getRow" , (PyCFunction)PyLayoutGenerator_getRow , METH_VARARGS, "Matrix access, details unknown." } + , { "getDic" , (PyCFunction)PyLayoutGenerator_getDic , METH_VARARGS, "Matrix access, details unknown." } + , { "getParamValue" , (PyCFunction)PyLayoutGenerator_getParamValue , METH_VARARGS, "Matrix access, details unknown." } + , { "getParameterValue" , (PyCFunction)PyLayoutGenerator_getParameterValue , METH_VARARGS, "Matrix access, details unknown." } + , { "checkScript" , (PyCFunction)PyLayoutGenerator_checkScript , METH_NOARGS , "Look for the Python layout script." } + , { "checkFunctions" , (PyCFunction)PyLayoutGenerator_checkFunctions , METH_NOARGS , "Look for the mandatories functions in the script." } + , { "drawLayout" , (PyCFunction)PyLayoutGenerator_drawLayout , METH_NOARGS , "Draw the layout of the loaded device." } + , { "setDevice" , (PyCFunction)PyLayoutGenerator_setDevice , METH_VARARGS, "Set the device to handle." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + DirectDeleteMethod(PyLayoutGenerator_DeAlloc,PyLayoutGenerator) + DirectHashMethod(PyLayoutGenerator_Hash, PyLayoutGenerator) + + extern void PyLayoutGenerator_LinkPyType() { + cdebug.log(49) << "PyLayoutGenerator_LinkType()" << endl; + + PyTypeLayoutGenerator.tp_new = PyLayoutGenerator_new; + PyTypeLayoutGenerator.tp_dealloc = (destructor) PyLayoutGenerator_DeAlloc; + PyTypeLayoutGenerator.tp_repr = (reprfunc) PyLayoutGenerator_Repr; + PyTypeLayoutGenerator.tp_str = (reprfunc) PyLayoutGenerator_Repr; + PyTypeLayoutGenerator.tp_hash = (hashfunc) PyLayoutGenerator_Hash; + PyTypeLayoutGenerator.tp_methods = PyLayoutGenerator_Methods; + } + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyLayoutGenerator" Shared Library Code Part | +// +=================================================================+ + + // Link/Creation Method. + PyObject* PyLayoutGenerator_Link ( LayoutGenerator* object ) + { + if ( object == NULL ) Py_RETURN_NONE; + + PyLayoutGenerator* pyObject = NULL; + HTRY + pyObject = PyObject_NEW(PyLayoutGenerator, &PyTypeLayoutGenerator); + if (pyObject == NULL) return NULL; + + pyObject->_object = object; + HCATCH + + return (PyObject*)pyObject; + } + + PyTypeObjectDefinitions(LayoutGenerator) + + + extern void PyLayoutGenerator_postModuleInit () + { + PyObject* constant; + + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::Quiet ,"Quiet" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::Verbose ,"Verbose" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::VeryVerbose ,"VeryVerbose" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::Debug ,"Debug" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::NoFlags ,"NoFlags" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::ShowTimeTag ,"ShowTimeTag" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::ShowError ,"ShowError" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::StatusOk ,"StatusOk" ); + LoadObjectConstant(PyTypeLayoutGenerator.tp_dict,LayoutGenerator::ComputeBbOnly,"ComputeBbOnly"); + } + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyLevelShifter.cpp b/hurricane/src/analog/PyLevelShifter.cpp new file mode 100644 index 00000000..31142ee6 --- /dev/null +++ b/hurricane/src/analog/PyLevelShifter.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PyLevelShifter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyLevelShifter.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(LevelShifter,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyLevelShifter" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyLevelShifter_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyLevelShifter_create()" << endl; + + LevelShifter* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:LevelShifter.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "LevelShifter.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case LevelShifter::NMOS: + case LevelShifter::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "LevelShifter.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = LevelShifter::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (LevelShifter::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to LevelShifter.create()." ); + return NULL; + } + HCATCH + + return PyLevelShifter_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyLevelShifter_destroy, PyLevelShifter) + + //GetNameMethod(LevelShifter, device) + + + // --------------------------------------------------------------- + // PyLevelShifter Attribute Method table. + + PyMethodDef PyLevelShifter_Methods[] = + { { "create" , (PyCFunction)PyLevelShifter_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyLevelShifter_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyLevelShifter" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(LevelShifter) + PyTypeObjectLinkPyType(LevelShifter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyLevelShifter" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(LevelShifter) + PyTypeInheritedObjectDefinitions(LevelShifter, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyMCheckBoxParameter.cpp b/hurricane/src/analog/PyMCheckBoxParameter.cpp new file mode 100644 index 00000000..8e5c602d --- /dev/null +++ b/hurricane/src/analog/PyMCheckBoxParameter.cpp @@ -0,0 +1,80 @@ +// -*- 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 : "./PyMCheckBoxParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyMCheckBoxParameter.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(MCheckBoxParameter,mCheckboxParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyMCheckBoxParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetUIntAttribute(PyMCheckBoxParameter_getValue, getValue, PyMCheckBoxParameter, MCheckBoxParameter) + DirectSetIntAttribute (PyMCheckBoxParameter_setValue, setValue, PyMCheckBoxParameter, MCheckBoxParameter) + + // --------------------------------------------------------------- + // PyMCheckBoxParameter Attribute Method table. + + PyMethodDef PyMCheckBoxParameter_Methods[] = + { { "getValue" , (PyCFunction)PyMCheckBoxParameter_getValue, METH_NOARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyMCheckBoxParameter_setValue, METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyMCheckBoxParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(MCheckBoxParameter) + PyTypeObjectLinkPyType(MCheckBoxParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyMCheckBoxParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(MCheckBoxParameter) + PyTypeInheritedObjectDefinitions(MCheckBoxParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyMIMCapacitor.cpp b/hurricane/src/analog/PyMIMCapacitor.cpp new file mode 100644 index 00000000..ceb97ac7 --- /dev/null +++ b/hurricane/src/analog/PyMIMCapacitor.cpp @@ -0,0 +1,139 @@ +// -*- 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/PyParameter.cpp b/hurricane/src/analog/PyParameter.cpp new file mode 100644 index 00000000..125e81c3 --- /dev/null +++ b/hurricane/src/analog/PyParameter.cpp @@ -0,0 +1,127 @@ +// -*- 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 : "./PyParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/PyCapacitorParameter.h" +#include "hurricane/analog/PyChoiceParameter.h" +#include "hurricane/analog/PyFormFactorParameter.h" +#include "hurricane/analog/PyMCheckBoxParameter.h" +#include "hurricane/analog/PySpinBoxParameter.h" +#include "hurricane/analog/PyStepParameter.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Parameter,parameter,function) + + +// +=================================================================+ +// | "PyParameter" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + // +-------------------------------------------------------------+ + // | "PyParameter" Attribute Methods | + // +-------------------------------------------------------------+ + + + DirectGetStringAttribute(PyParameter_getName ,getName ,PyParameter,Parameter) + DirectGetIntAttribute (PyParameter_getIndex,getIndex,PyParameter,Parameter) + DirectSetIntAttribute (PyParameter_setIndex,setIndex,PyParameter,Parameter) + + + PyMethodDef PyParameter_Methods[] = + { { "getName" , (PyCFunction)PyParameter_getName , METH_NOARGS + , "Returns the parameter's name." } + , { "getIndex" , (PyCFunction)PyParameter_getIndex , METH_NOARGS + , "Self explanatory." } + , { "setIndex" , (PyCFunction)PyParameter_setIndex , METH_VARARGS + , "Self explanatory." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + // --------------------------------------------------------------- + // PyParameter Type Methods. + + + PythonOnlyDeleteMethod(Parameter) + PyTypeObjectLinkPyType(Parameter) + + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyParameter" Shared Library Code Part | +// +=================================================================+ + + // Link/Creation Method. + LinkCreateMethod(Parameter) + + PyTypeRootObjectDefinitions(Parameter) + + + extern void PyParameter_postModuleInit () + { + PyObject* constant; + + LoadObjectConstant(PyTypeParameter.tp_dict,Parameter::STEP ,"STEP" ); + LoadObjectConstant(PyTypeParameter.tp_dict,Parameter::CHOICE,"CHOICE"); + LoadObjectConstant(PyTypeParameter.tp_dict,Parameter::SPIN ,"SPIN" ); + LoadObjectConstant(PyTypeParameter.tp_dict,Parameter::MCHECK,"MCHECK"); + } + + + extern PyObject* PyParameter_LinkDerived ( Parameter* object ) + { + if (object == NULL) Py_RETURN_NONE; + + CapacitorParameter* capacitorParameter = dynamic_cast(object); + if (capacitorParameter) return PyCapacitorParameter_Link(capacitorParameter); + + ChoiceParameter* choiceParameter = dynamic_cast(object); + if (choiceParameter) return PyChoiceParameter_Link(choiceParameter); + + FormFactorParameter* ffParameter = dynamic_cast(object); + if (ffParameter) return PyFormFactorParameter_Link(ffParameter); + + MCheckBoxParameter* mCheckBoxParameter = dynamic_cast(object); + if (mCheckBoxParameter) return PyMCheckBoxParameter_Link(mCheckBoxParameter); + + SpinBoxParameter* spinBoxParameter = dynamic_cast(object); + if (spinBoxParameter) return PySpinBoxParameter_Link(spinBoxParameter); + + StepParameter* stepParameter = dynamic_cast(object); + if (stepParameter) return PyStepParameter_Link(stepParameter); + + Py_RETURN_NONE; + } + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PySimpleCurrentMirror.cpp b/hurricane/src/analog/PySimpleCurrentMirror.cpp new file mode 100644 index 00000000..f97889d0 --- /dev/null +++ b/hurricane/src/analog/PySimpleCurrentMirror.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PySimpleCurrentMirror.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PySimpleCurrentMirror.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(SimpleCurrentMirror,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PySimpleCurrentMirror" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PySimpleCurrentMirror_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PySimpleCurrentMirror_create()" << endl; + + SimpleCurrentMirror* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:SimpleCurrentMirror.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "SimpleCurrentMirror.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case SimpleCurrentMirror::NMOS: + case SimpleCurrentMirror::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "SimpleCurrentMirror.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = SimpleCurrentMirror::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (SimpleCurrentMirror::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to SimpleCurrentMirror.create()." ); + return NULL; + } + HCATCH + + return PySimpleCurrentMirror_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PySimpleCurrentMirror_destroy, PySimpleCurrentMirror) + + //GetNameMethod(SimpleCurrentMirror, device) + + + // --------------------------------------------------------------- + // PySimpleCurrentMirror Attribute Method table. + + PyMethodDef PySimpleCurrentMirror_Methods[] = + { { "create" , (PyCFunction)PySimpleCurrentMirror_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PySimpleCurrentMirror_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PySimpleCurrentMirror" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(SimpleCurrentMirror) + PyTypeObjectLinkPyType(SimpleCurrentMirror) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PySimpleCurrentMirror" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(SimpleCurrentMirror) + PyTypeInheritedObjectDefinitions(SimpleCurrentMirror, TransistorPair) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PySpinBoxParameter.cpp b/hurricane/src/analog/PySpinBoxParameter.cpp new file mode 100644 index 00000000..40a12524 --- /dev/null +++ b/hurricane/src/analog/PySpinBoxParameter.cpp @@ -0,0 +1,87 @@ +// -*- 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 : "./PySpinBoxParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PySpinBoxParameter.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(SpinBoxParameter,stepParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PySpinBoxParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetLongAttribute(PySpinBoxParameter_getMin , getMin , PySpinBoxParameter, SpinBoxParameter) + DirectGetLongAttribute(PySpinBoxParameter_getMax , getMax , PySpinBoxParameter, SpinBoxParameter) + DirectGetLongAttribute(PySpinBoxParameter_getValue, getValue, PySpinBoxParameter, SpinBoxParameter) + DirectSetLongAttribute(PySpinBoxParameter_setValue, setValue, PySpinBoxParameter, SpinBoxParameter) + + + // --------------------------------------------------------------- + // PySpinBoxParameter Attribute Method table. + + PyMethodDef PySpinBoxParameter_Methods[] = + { { "getMin" , (PyCFunction)PySpinBoxParameter_getMin , METH_NOARGS + , "Self explanatory." } + , { "getMax" , (PyCFunction)PySpinBoxParameter_getMax , METH_NOARGS + , "Self explanatory." } + , { "getValue" , (PyCFunction)PySpinBoxParameter_getValue, METH_NOARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PySpinBoxParameter_setValue, METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PySpinBoxParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(SpinBoxParameter) + PyTypeObjectLinkPyType(SpinBoxParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PySpinBoxParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(SpinBoxParameter) + PyTypeInheritedObjectDefinitions(SpinBoxParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyStepParameter.cpp b/hurricane/src/analog/PyStepParameter.cpp new file mode 100644 index 00000000..a1be0a0e --- /dev/null +++ b/hurricane/src/analog/PyStepParameter.cpp @@ -0,0 +1,90 @@ +// -*- 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 : "./PyStepParameter.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyStepParameter.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(StepParameter,stepParameter,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyStepParameter" Python Module Code Part | +// +=================================================================+ + + + DirectGetLongAttribute(PyStepParameter_getMin , getMin , PyStepParameter, StepParameter) + DirectGetLongAttribute(PyStepParameter_getMax , getMax , PyStepParameter, StepParameter) + DirectGetLongAttribute(PyStepParameter_getStep , getStep , PyStepParameter, StepParameter) + DirectGetLongAttribute(PyStepParameter_getValue, getValue, PyStepParameter, StepParameter) + DirectSetLongAttribute(PyStepParameter_setValue, setValue, PyStepParameter, StepParameter) + + + // --------------------------------------------------------------- + // PyStepParameter Attribute Method table. + + PyMethodDef PyStepParameter_Methods[] = + { { "getMin" , (PyCFunction)PyStepParameter_getMin , METH_NOARGS + , "Self explanatory." } + , { "getMax" , (PyCFunction)PyStepParameter_getMax , METH_NOARGS + , "Self explanatory." } + , { "getStep" , (PyCFunction)PyStepParameter_getStep , METH_NOARGS + , "Self explanatory." } + , { "getValue" , (PyCFunction)PyStepParameter_getValue, METH_NOARGS + , "Self explanatory." } + , { "setValue" , (PyCFunction)PyStepParameter_setValue, METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyStepParameter" Object Methods | + // +-------------------------------------------------------------+ + + + PythonOnlyDeleteMethod(StepParameter) + PyTypeObjectLinkPyType(StepParameter) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyStepParameter" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(StepParameter) + PyTypeInheritedObjectDefinitions(StepParameter, Parameter) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyTransistor.cpp b/hurricane/src/analog/PyTransistor.cpp new file mode 100644 index 00000000..17f71f8f --- /dev/null +++ b/hurricane/src/analog/PyTransistor.cpp @@ -0,0 +1,130 @@ +// -*- 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 : "./PyTransistor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyTransistor.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(Transistor,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyTransistor" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyTransistor_create ( PyObject*, PyObject* args ) + { + cdebug.log(49) << "PyTransistor_create()" << endl; + + Transistor* transistor = NULL; + + HTRY + PyObject* pyLibrary = NULL; + char* name = NULL; + long pyType = 0; + PyObject* pyBulkConnected = NULL; + + if (PyArg_ParseTuple( args + , "OslO:Transistor.create" + , &pyLibrary + , &name + , &pyType + , &pyBulkConnected + )) { + if (not IsPyLibrary(pyLibrary)) { + PyErr_SetString ( ConstructorError, "Transistor.create(): First argument is not of type Library." ); + return NULL; + } + switch ( pyType ) { + case Transistor::NMOS: + case Transistor::PMOS: break; + default: + PyErr_SetString ( ConstructorError, "Transistor.create(): Type argument is neither NMOS nor PMOS." ); + return NULL; + } + + transistor = Transistor::create( PYLIBRARY_O(pyLibrary) + , Name(name) + , (Transistor::Type)pyType + , PyObject_IsTrue(pyBulkConnected) + ); + } else { + PyErr_SetString ( ConstructorError, "Bad parameters given to Transistor.create()." ); + return NULL; + } + HCATCH + + return PyTransistor_Link(transistor); + } + + + // Standart Destroy (Attribute). + DBoDestroyAttribute(PyTransistor_destroy, PyTransistor) + + //GetNameMethod(Transistor, device) + + + // --------------------------------------------------------------- + // PyTransistor Attribute Method table. + + PyMethodDef PyTransistor_Methods[] = + { { "create" , (PyCFunction)PyTransistor_create , METH_VARARGS|METH_STATIC + , "Create an anlogic device made of one transistor." } + , { "destroy" , (PyCFunction)PyTransistor_destroy , METH_NOARGS + , "Destroys associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyTransistor" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(Transistor) + PyTypeObjectLinkPyType(Transistor) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyTransistor" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(Transistor) + PyTypeInheritedObjectDefinitions(Transistor, TransistorFamily) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyTransistorArguments.cpp b/hurricane/src/analog/PyTransistorArguments.cpp new file mode 100644 index 00000000..7525efff --- /dev/null +++ b/hurricane/src/analog/PyTransistorArguments.cpp @@ -0,0 +1,100 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyTransistorArguments.cpp" | +// +-----------------------------------------------------------------+ + +#include "hurricane/analog/PyTransistorArguments.h" +#include "hurricane/analog/PyDevice.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(TransistorArguments,argument,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyTransistorArguments" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyTransistorArguments_getBulkType(PyTransistorArguments *self) { + cdebug.log(49) << "PyTransistorArguments_getBulkType ()" << endl; + METHOD_HEAD ( "TransistorArguments.getBulkType()" ) + + string bulkType = ""; + HTRY + bulkType = argument->getBulkType(); + HCATCH + + return ( Py_BuildValue ( "s", bulkType.c_str() ) ); + } + + + DirectDestroyAttribute(PyTransistorArguments_destroy, PyTransistorArguments) + + DirectGetBoolAttribute(PyTransistorArguments_isNMOS , isNMOS , PyTransistorArguments, TransistorArguments) + DirectGetBoolAttribute(PyTransistorArguments_isBulkConnected , isBulkConnected , PyTransistorArguments, TransistorArguments) + DirectGetBoolAttribute(PyTransistorArguments_isSourceFirst , isSourceFirst , PyTransistorArguments, TransistorArguments) + DirectGetLongAttribute(PyTransistorArguments_getW , getW , PyTransistorArguments, TransistorArguments) + DirectGetUIntAttribute(PyTransistorArguments_getL , getL , PyTransistorArguments, TransistorArguments) + DirectGetUIntAttribute(PyTransistorArguments_getM , getM , PyTransistorArguments, TransistorArguments) + DirectGetUIntAttribute(PyTransistorArguments_getExternalDummy, getExternalDummy, PyTransistorArguments, TransistorArguments) + + + // --------------------------------------------------------------- + // PyTransistorArguments Attribute Method table. + + PyMethodDef PyTransistorArguments_Methods[] = + { { "isNMOS" , (PyCFunction)PyTransistorArguments_isNMOS , METH_NOARGS, "Returns true if NMOS, false for PMOS." } + , { "isBulkConnected" , (PyCFunction)PyTransistorArguments_isBulkConnected , METH_NOARGS, "Returns true if bulk is connected." } + , { "isSourceFirst" , (PyCFunction)PyTransistorArguments_isSourceFirst , METH_NOARGS, "Returns true if source is first." } + , { "getBulkType" , (PyCFunction)PyTransistorArguments_getBulkType , METH_NOARGS, "Returns the bulk type." } + , { "getW" , (PyCFunction)PyTransistorArguments_getW , METH_NOARGS, "Returns w value." } + , { "getL" , (PyCFunction)PyTransistorArguments_getL , METH_NOARGS, "Returns l value." } + , { "getM" , (PyCFunction)PyTransistorArguments_getM , METH_NOARGS, "Returns m value." } + , { "getExternalDummy", (PyCFunction)PyTransistorArguments_getExternalDummy, METH_NOARGS, "Returns external dummy of one terbminal value." } + , { "destroy" , (PyCFunction)PyTransistorArguments_destroy , METH_NOARGS, "Destroy associated hurricane object, the python object remains." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyTransistorArguments" Object Methods | + // +-------------------------------------------------------------+ + + + DirectDeleteMethod(PyTransistorArguments_DeAlloc,PyTransistorArguments) + PyTypeObjectLinkPyType(TransistorArguments) + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyTransistorArguments" Shared Library Code Part | +// +=================================================================+ + + + PyTypeObjectDefinitions(TransistorArguments) + + +# endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyTransistorFamily.cpp b/hurricane/src/analog/PyTransistorFamily.cpp new file mode 100644 index 00000000..21110f14 --- /dev/null +++ b/hurricane/src/analog/PyTransistorFamily.cpp @@ -0,0 +1,228 @@ +// -*- 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 : "./PyTransistorFamily.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/PyTransistorFamily.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(TransistorFamily,family,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyTransistorFamily" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyTransistorFamily_getType ( PyTransistorFamily* self ) + { + TransistorFamily::Type type = TransistorFamily::NMOS; + + HTRY + METHOD_HEAD ( "TransistorFamily.getType()" ) + type = family->getType(); + HCATCH + + return Py_BuildValue( "i", (int)type ); + } + + + DirectGetBoolAttribute (PyTransistorFamily_isNMOS ,isNMOS ,PyTransistorFamily,TransistorFamily) + DirectGetBoolAttribute (PyTransistorFamily_isPMOS ,isPMOS ,PyTransistorFamily,TransistorFamily) + DirectGetBoolAttribute (PyTransistorFamily_isBulkConnected ,isBulkConnected ,PyTransistorFamily,TransistorFamily) + DirectGetBoolAttribute (PyTransistorFamily_isSourceFirst ,isSourceFirst ,PyTransistorFamily,TransistorFamily) + DirectGetLongAttribute (PyTransistorFamily_getBulkType ,getBulkType ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getWmin ,getWmin ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getWmax ,getWmax ,PyTransistorFamily,TransistorFamily) + DirectGetIntAttribute (PyTransistorFamily_getNfing ,getNfing ,PyTransistorFamily,TransistorFamily) + DirectGetLongAttribute (PyTransistorFamily_getW ,getW ,PyTransistorFamily,TransistorFamily) + DirectGetLongAttribute (PyTransistorFamily_getL ,getL ,PyTransistorFamily,TransistorFamily) + DirectGetLongAttribute (PyTransistorFamily_getM ,getM ,PyTransistorFamily,TransistorFamily) + DirectGetLongAttribute (PyTransistorFamily_getExternalDummy,getExternalDummy,PyTransistorFamily,TransistorFamily) + + DirectSetBoolAttribute (PyTransistorFamily_setSourceFirst ,setSourceFirst ,PyTransistorFamily,TransistorFamily) + DirectSetLongAttribute (PyTransistorFamily_setBulkType ,setBulkType ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setWmin ,setWmin ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setWmax ,setWmax ,PyTransistorFamily,TransistorFamily) + DirectSetIntAttribute (PyTransistorFamily_setNfing ,setNfing ,PyTransistorFamily,TransistorFamily) + DirectSetLongAttribute (PyTransistorFamily_setExternalDummy,setExternalDummy,PyTransistorFamily,TransistorFamily) + + DirectGetDoubleAttribute(PyTransistorFamily_getWE ,getWE ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getLE ,getLE ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getIDS ,getIDS ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVGS ,getVGS ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVDS ,getVDS ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVBS ,getVBS ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVG ,getVG ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVD ,getVD ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVS ,getVS ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVB ,getVB ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVEG ,getVEG ,PyTransistorFamily,TransistorFamily) + DirectGetDoubleAttribute(PyTransistorFamily_getVTH ,getVTH ,PyTransistorFamily,TransistorFamily) + + DirectSetDoubleAttribute(PyTransistorFamily_setWE ,setWE ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setLE ,setLE ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setIDS ,setIDS ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVGS ,setVGS ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVDS ,setVDS ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVBS ,setVBS ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVG ,setVG ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVD ,setVD ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVS ,setVS ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVB ,setVB ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVEG ,setVEG ,PyTransistorFamily,TransistorFamily) + DirectSetDoubleAttribute(PyTransistorFamily_setVTH ,setVTH ,PyTransistorFamily,TransistorFamily) + + + // --------------------------------------------------------------- + // PyTransistorFamily Attribute Method table. + + PyMethodDef PyTransistorFamily_Methods[] = + { { "getType" , (PyCFunction)PyTransistorFamily_getType , METH_NOARGS + , "Returns the type of the transistor (as a numric constant)." } + , { "isNMOS" , (PyCFunction)PyTransistorFamily_isNMOS , METH_NOARGS + , "Returns True if it is a NMOS transistor." } + , { "isPMOS" , (PyCFunction)PyTransistorFamily_isPMOS , METH_NOARGS + , "Returns True if it is a PMOS transistor." } + , { "isBulkConnected" , (PyCFunction)PyTransistorFamily_isBulkConnected , METH_NOARGS + , "Self explanatory." } + , { "isSourceFirst" , (PyCFunction)PyTransistorFamily_isSourceFirst , METH_NOARGS + , "Self explanatory." } + , { "getBulkType" , (PyCFunction)PyTransistorFamily_getBulkType , METH_NOARGS + , "Self explanatory." } + , { "getWmin" , (PyCFunction)PyTransistorFamily_getWmin , METH_NOARGS + , "Transistor mininal W, technology defined (rule:transistorMinL)." } + , { "getWmax" , (PyCFunction)PyTransistorFamily_getWmax , METH_NOARGS + , "Transistor maximal W, technology defined (rule:transistorMinL)." } + , { "getNfing" , (PyCFunction)PyTransistorFamily_getNfing , METH_NOARGS + , "Self explanatory." } + , { "getW" , (PyCFunction)PyTransistorFamily_getW , METH_NOARGS + , "Transistor effective W in the layout." } + , { "getL" , (PyCFunction)PyTransistorFamily_getL , METH_NOARGS + , "Transistor effective L in the layout." } + , { "getM" , (PyCFunction)PyTransistorFamily_getM , METH_NOARGS + , "Total number of fingers in the stack (counting all transistors and dummies)." } + , { "getExternalDummy" , (PyCFunction)PyTransistorFamily_getExternalDummy, METH_NOARGS + , "Self explanatory." } + , { "setSourceFirst" , (PyCFunction)PyTransistorFamily_setSourceFirst , METH_VARARGS + , "Self explanatory." } + , { "setWmin" , (PyCFunction)PyTransistorFamily_setWmin , METH_VARARGS + , "Self explanatory." } + , { "setWmax" , (PyCFunction)PyTransistorFamily_setWmax , METH_VARARGS + , "Self explanatory." } + , { "setNfing" , (PyCFunction)PyTransistorFamily_setNfing , METH_VARARGS + , "Self explanatory." } + , { "setExternalDummy" , (PyCFunction)PyTransistorFamily_setExternalDummy, METH_VARARGS + , "Self explanatory." } + , { "setBulkType" , (PyCFunction)PyTransistorFamily_setBulkType , METH_VARARGS + , "Self explanatory." } + , { "getWE" , (PyCFunction)PyTransistorFamily_getWE , METH_NOARGS + , "Transistor electrical W (requested)." } + , { "getLE" , (PyCFunction)PyTransistorFamily_getLE , METH_NOARGS + , "Transistor electrical L (requested)." } + , { "getIDS" , (PyCFunction)PyTransistorFamily_getIDS , METH_NOARGS + , "Self explanatory." } + , { "getVGS" , (PyCFunction)PyTransistorFamily_getVGS , METH_NOARGS + , "Self explanatory." } + , { "getVDS" , (PyCFunction)PyTransistorFamily_getVDS , METH_NOARGS + , "Self explanatory." } + , { "getVBS" , (PyCFunction)PyTransistorFamily_getVBS , METH_NOARGS + , "Self explanatory." } + , { "getVG" , (PyCFunction)PyTransistorFamily_getVG , METH_NOARGS + , "Self explanatory." } + , { "getVD" , (PyCFunction)PyTransistorFamily_getVD , METH_NOARGS + , "Self explanatory." } + , { "getVS" , (PyCFunction)PyTransistorFamily_getVS , METH_NOARGS + , "Self explanatory." } + , { "getVB" , (PyCFunction)PyTransistorFamily_getVB , METH_NOARGS + , "Self explanatory." } + , { "getVEG" , (PyCFunction)PyTransistorFamily_getVEG , METH_NOARGS + , "Self explanatory." } + , { "getVTH" , (PyCFunction)PyTransistorFamily_getVTH , METH_NOARGS + , "Self explanatory." } + , { "setWE" , (PyCFunction)PyTransistorFamily_setWE , METH_VARARGS + , "Transistor electrical W (requested)." } + , { "setLE" , (PyCFunction)PyTransistorFamily_setLE , METH_VARARGS + , "Transistor electrical L (requested)." } + , { "setIDS" , (PyCFunction)PyTransistorFamily_setIDS , METH_VARARGS + , "Self explanatory." } + , { "setVGS" , (PyCFunction)PyTransistorFamily_setVGS , METH_VARARGS + , "Self explanatory." } + , { "setVDS" , (PyCFunction)PyTransistorFamily_setVDS , METH_VARARGS + , "Self explanatory." } + , { "setVBS" , (PyCFunction)PyTransistorFamily_setVBS , METH_VARARGS + , "Self explanatory." } + , { "setVG" , (PyCFunction)PyTransistorFamily_setVG , METH_VARARGS + , "Self explanatory." } + , { "setVD" , (PyCFunction)PyTransistorFamily_setVD , METH_VARARGS + , "Self explanatory." } + , { "setVS" , (PyCFunction)PyTransistorFamily_setVS , METH_VARARGS + , "Self explanatory." } + , { "setVB" , (PyCFunction)PyTransistorFamily_setVB , METH_VARARGS + , "Self explanatory." } + , { "setVEG" , (PyCFunction)PyTransistorFamily_setVEG , METH_VARARGS + , "Self explanatory." } + , { "setVTH" , (PyCFunction)PyTransistorFamily_setVTH , METH_VARARGS + , "Self explanatory." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyTransistorFamily" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(TransistorFamily) + PyTypeObjectLinkPyType(TransistorFamily) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyTransistorFamily" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(TransistorFamily) + PyTypeInheritedObjectDefinitions(TransistorFamily, Device) + + + extern void PyTransistorFamily_postModuleInit () + { + PyObject* constant; + + LoadObjectConstant(PyTypeTransistorFamily.tp_dict,TransistorFamily::NMOS,"NMOS"); + LoadObjectConstant(PyTypeTransistorFamily.tp_dict,TransistorFamily::PMOS,"PMOS"); + } + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyTransistorMultiArguments.cpp b/hurricane/src/analog/PyTransistorMultiArguments.cpp new file mode 100644 index 00000000..06a703e5 --- /dev/null +++ b/hurricane/src/analog/PyTransistorMultiArguments.cpp @@ -0,0 +1,105 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyTRansistorMultiArguments.h" | + +// +-----------------------------------------------------------------+ + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/analog/PyTransistorMultiArguments.h" +#include "hurricane/analog/PyDevice.h" + + +namespace Isobar { + +using namespace Hurricane; +using namespace Analog; + +extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(TransistorMultiArguments,argument,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyTransistorMultiArguments" Python Module Code Part | +// +=================================================================+ + + + static PyObject* PyTransistorMultiArguments_getBulkType(PyTransistorMultiArguments *self) { + cdebug.log(49) << "PyTransistorMultiArguments_getBulkType ()" << endl; + METHOD_HEAD ( "TransistorMultiArguments.getBulkType()" ) + + string bulkType = ""; + HTRY + bulkType = argument->getBulkType(); + HCATCH + + return ( Py_BuildValue ( "s", bulkType.c_str() ) ); + } + + + DirectDestroyAttribute(PyTransistorMultiArguments_destroy, PyTransistorMultiArguments) + + DirectGetBoolAttribute(PyTransistorMultiArguments_isNMOS , isNMOS , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetBoolAttribute(PyTransistorMultiArguments_isBulkConnected , isBulkConnected , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetBoolAttribute(PyTransistorMultiArguments_isSourceFirst , isSourceFirst , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetLongAttribute(PyTransistorMultiArguments_getW , getW , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetLongAttribute(PyTransistorMultiArguments_getL , getL , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetUIntAttribute(PyTransistorMultiArguments_getM , getM , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetUIntAttribute(PyTransistorMultiArguments_getMInt , getMInt , PyTransistorMultiArguments, TransistorMultiArguments) + DirectGetUIntAttribute(PyTransistorMultiArguments_getExternalDummy , getExternalDummy, PyTransistorMultiArguments, TransistorMultiArguments) + + + // --------------------------------------------------------------- + // PyTransistorMultiArguments Attribute Method table. + + PyMethodDef PyTransistorMultiArguments_Methods[] = + { { "isNMOS" , (PyCFunction)PyTransistorMultiArguments_isNMOS , METH_NOARGS, "Returns true if NMOS, false for PMOS." } + , { "isBulkConnected" , (PyCFunction)PyTransistorMultiArguments_isBulkConnected , METH_NOARGS, "Returns true if bulk is connected." } + , { "isSourceFirst" , (PyCFunction)PyTransistorMultiArguments_isSourceFirst , METH_NOARGS, "Returns true if source is first." } + , { "getBulkType" , (PyCFunction)PyTransistorMultiArguments_getBulkType , METH_NOARGS, "Returns the bulk type." } + , { "getW" , (PyCFunction)PyTransistorMultiArguments_getW , METH_NOARGS, "Returns w value." } + , { "getL" , (PyCFunction)PyTransistorMultiArguments_getL , METH_NOARGS, "Returns l value." } + , { "getM" , (PyCFunction)PyTransistorMultiArguments_getM , METH_NOARGS, "Returns m value." } + , { "getMInt" , (PyCFunction)PyTransistorMultiArguments_getMInt , METH_NOARGS, "Returns mInt value." } + , { "getExternalDummy", (PyCFunction)PyTransistorMultiArguments_getExternalDummy, METH_NOARGS, "Returns external dummy of one terbminal value." } + , { "destroy" , (PyCFunction)PyTransistorMultiArguments_destroy , METH_NOARGS, "Destroy associated hurricane object, the python object remains." } + , {NULL, NULL, 0, NULL} /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyTransistorMultiArguments" Object Methods | + // +-------------------------------------------------------------+ + + + DirectDeleteMethod(PyTransistorMultiArguments_DeAlloc,PyTransistorMultiArguments) + PyTypeObjectLinkPyType(TransistorMultiArguments) + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyTransistorMultiArguments" Shared Library Code Part | +// +=================================================================+ + + + PyTypeObjectDefinitions(TransistorMultiArguments) + + +# endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/PyTransistorPair.cpp b/hurricane/src/analog/PyTransistorPair.cpp new file mode 100644 index 00000000..09807a37 --- /dev/null +++ b/hurricane/src/analog/PyTransistorPair.cpp @@ -0,0 +1,82 @@ +// -*- 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 : "./PyTransistorPair.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyLibrary.h" +#include "hurricane/analog/PyTransistorPair.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(TransistorPair,transistor,function) + +#if defined(__PYTHON_MODULE__) + +// +=================================================================+ +// | "PyTransistorPair" Python Module Code Part | +// +=================================================================+ + + + DirectGetLongAttribute(PyTransistorPair_getMint,getMint,PyTransistorPair,TransistorPair) + DirectSetLongAttribute(PyTransistorPair_setMint,setMint,PyTransistorPair,TransistorPair) + + + // --------------------------------------------------------------- + // PyTransistorPair Attribute Method table. + + PyMethodDef PyTransistorPair_Methods[] = + { { "getMint" , (PyCFunction)PyTransistorPair_getMint , METH_NOARGS + , "Return the Mint value." } + , { "setMint" , (PyCFunction)PyTransistorPair_setMint , METH_VARARGS + , "Sets the Mint value." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyTransistorPair" Object Methods | + // +-------------------------------------------------------------+ + + + DBoDeleteMethod(TransistorPair) + PyTypeObjectLinkPyType(TransistorPair) + + +#else // End of Python Module Code Part. + +// +=================================================================+ +// | "PyTransistorPair" Shared Library Code Part | +// +=================================================================+ + + + DBoLinkCreateMethod(TransistorPair) + PyTypeInheritedObjectDefinitions(TransistorPair, TransistorFamily) + + +#endif // End of Shared Library Code Part. + +} // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/analog/SimpleCurrentMirror.cpp b/hurricane/src/analog/SimpleCurrentMirror.cpp new file mode 100644 index 00000000..31407e13 --- /dev/null +++ b/hurricane/src/analog/SimpleCurrentMirror.cpp @@ -0,0 +1,155 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./SimpleCurrentMirror.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/SimpleCurrentMirror.h" + +namespace Analog { + + + const Name SimpleCurrentMirror::_scmBulkConnectedName ("SimpleCurrentMirrorBulkConnected"); + const Name SimpleCurrentMirror::_scmBulkUnconnectedName ("SimpleCurrentMirrorBulkUnconnected"); + + + SimpleCurrentMirror::SimpleCurrentMirror ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + { } + + + SimpleCurrentMirror* SimpleCurrentMirror::create ( Library* library + , const Name& name + , const Type& type + , bool bulkConnected ) + { + Name deviceName = (bulkConnected) ? _scmBulkConnectedName : _scmBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + SimpleCurrentMirror* scm = new SimpleCurrentMirror(library,name,type); + scm->_postCreate(deviceName); + scm->createConnections(bulkConnected); + scm->setTerminal( true ); + UpdateSession::close(); + + return scm; + } + + + void SimpleCurrentMirror::createConnections ( bool bulkConnected ) + { + Net* s = Net::create(this, Name("S")); + s->setExternal(true); + + Net* d1 = Net::create(this, Name("D1")); + d1->setExternal(true); + + Net* d2 = Net::create(this, Name("D2")); + d2->setExternal(true); + + _m1 = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* m1Ins = Instance::create(this, Name("M1Instance"), _m1); + _m2 = MetaTransistor::create(getSubDevicesLibrary(), Name("M2")); + Instance* m2Ins = Instance::create(this, Name("M2Instance"), _m2); + + setReferenceTransistor(_m1); + + Plug* mt1SPlug = m1Ins->getPlug(_m1->getSource()); + mt1SPlug->setNet(s); + Plug* mt2SPlug = m2Ins->getPlug(_m2->getSource()); + mt2SPlug->setNet(s); + Plug* mt1DPlug = m1Ins->getPlug(_m1->getDrain()); + mt1DPlug->setNet(d1); + Plug* mt2DPlug = m2Ins->getPlug(_m2->getDrain()); + mt2DPlug->setNet(d2); + Plug* mt1GPlug = m1Ins->getPlug(_m1->getGate()); + mt1GPlug->setNet(d1); + Plug* mt2GPlug = m2Ins->getPlug(_m2->getGate()); + mt2GPlug->setNet(d1); + + if (not bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(b); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(b); + } else { + Plug* mt1BPlug = m1Ins->getPlug(_m1->getBulk()); + mt1BPlug->setNet(s); + Plug* mt2BPlug = m2Ins->getPlug(_m2->getBulk()); + mt2BPlug->setNet(s); + } + } + + + Name SimpleCurrentMirror::getDeviceName () const + { + return (isBulkConnected()) ? _scmBulkConnectedName : _scmBulkUnconnectedName; + } + + unsigned int SimpleCurrentMirror:: getRestriction ( Hurricane::Net* net ) const + { + Name netName = net->getName(); + Name nameS = Name(string("S" )); + Name nameD1 = Name(string("D1")); + Name nameD2 = Name(string("D2")); + + unsigned int ok = 0x1; + unsigned int yes = 0x2; + + unsigned int west = 0; + unsigned int east = 2; + unsigned int south = 4; + unsigned int north = 6; + + int nfing = this->getNfing(); + unsigned int rule = 0; + + if (netName == nameS){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 0){ + rule |= (ok << north) | (yes << south) | (yes << east) | (yes << west); + } else { + rule |= (ok << north) | (yes << south) | (ok << east) | (ok << west); + } + } else if (netName == nameD1){ + if (nfing == 1){ + rule |= (yes << north) | (ok << south) | (ok << east) | (yes << west); + } else if (nfing%2 == 0){ + rule |= (yes << north) | (ok << south) | (ok << east) | (ok << west); + } else { + rule |= (yes << north) | (ok << south) | (ok << east) | (yes << west); + } + } else if (netName == nameD2){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south) | (yes << east); + } else if (nfing == 2){ + rule |= (ok << north) | (ok << south); + } else if (nfing%2 == 1){ + rule |= (ok << north) | (yes << south) | (yes << east) | (ok << west); + } else { + rule |= (ok << north) | (yes << south) | (ok << east) | (ok << west); + } + } else { + cerr << "Error(unsigned int getRestrictionsRules( Device* device, Net* net )): Unknown net name." << endl; + } + return rule; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/Transistor.cpp b/hurricane/src/analog/Transistor.cpp new file mode 100644 index 00000000..a28912cb --- /dev/null +++ b/hurricane/src/analog/Transistor.cpp @@ -0,0 +1,249 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./Transistor.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include +#include "hurricane/Warning.h" +#include "hurricane/UpdateSession.h" +#include "hurricane/analog/MetaTransistor.h" +#include "hurricane/analog/Transistor.h" +#include "hurricane/analog/TransistorArguments.h" + +namespace Analog { + + + const Name Transistor::_transistorBulkConnectedName ("TransistorBulkConnected"); + const Name Transistor::_transistorBulkUnconnectedName("TransistorBulkUnconnected"); + + + Transistor::Transistor ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + , _metaTransistor(NULL) + { } + + + Transistor* Transistor::create ( Library* library, const Name& name, const Type& type, bool bulkConnected ) + { + Name deviceName; + if (bulkConnected) deviceName = _transistorBulkConnectedName; + else deviceName = _transistorBulkUnconnectedName; + preCreate(deviceName); + + UpdateSession::open(); + Transistor* tr = new Transistor(library,name,type); + tr->_postCreate(deviceName); + tr->createConnections(bulkConnected); + + tr->addStepParameter("B.w" , 1, 1, 1); + tr->addStepParameter("D.w" , 1, 1, 1); + tr->addStepParameter("G.w" , 1, 1, 1); + tr->addStepParameter("S.w" , 1, 1, 1); + tr->setTerminal( true ); + UpdateSession::close(); + return tr; + } + + + void Transistor::_postCreate ( const Name& deviceName ) + { + Super::_postCreate(deviceName); + } + + + void Transistor::createConnections ( bool bulkConnected ) + { + Net* s = Net::create(this, Name("S")); + s->setExternal(true); + + Net* g = Net::create(this, Name("G")); + g->setExternal(true); + + Net* d = Net::create(this, Name("D")); + d->setExternal(true); + + _metaTransistor = MetaTransistor::create(getSubDevicesLibrary(), Name("M1")); + Instance* metaTransistorIns = Instance::create(this, Name("M1Instance"), _metaTransistor); + + setReferenceTransistor(_metaTransistor); + + Plug* mtSPlug = metaTransistorIns->getPlug(_metaTransistor->getSource()); + mtSPlug->setNet(s); + Plug* mtDPlug = metaTransistorIns->getPlug(_metaTransistor->getDrain()); + mtDPlug->setNet(d); + Plug* mtGPlug = metaTransistorIns->getPlug(_metaTransistor->getGate()); + mtGPlug->setNet(g); + + if (not bulkConnected) { + Net* b = Net::create(this, Name("B")); + b->setExternal(true); + Plug* mtBPlug = metaTransistorIns->getPlug(_metaTransistor->getBulk()); + mtBPlug->setNet(b); + } else { + Plug* mtBPlug = metaTransistorIns->getPlug(_metaTransistor->getBulk()); + mtBPlug->setNet(s); + } + } + + + Name Transistor::getDeviceName () const + { + if (isBulkConnected()) return _transistorBulkConnectedName; + else return _transistorBulkUnconnectedName; + } + + + Arguments* Transistor::getArguments () + { + const bitset<4> bs(getBulkType()); + + return new TransistorArguments ( isNMOS() + , isBulkConnected() + , isSourceFirst() + , bs.to_string() + , getW() + , getL() + , getM() + , getExternalDummy() + ); + } + + + unsigned int Transistor:: getRestriction ( Hurricane::Net* net ) const + { + Name netName = net->getName(); + Name nameS = Name(string("S" )); + Name nameD = Name(string("D" )); + Name nameG = Name(string("G" )); + + unsigned int ok = 0x1; + unsigned int yes = 0x2; + + unsigned int west = 0; + unsigned int east = 2; + unsigned int south = 4; + unsigned int north = 6; + + int nfing = this->getNfing(); + unsigned int rule = 0; + + if (netName == nameS){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south) | (yes << west); + } else if (nfing == 2){ + rule |= (yes << north) | (ok << south) | (yes << east) | (yes << west); + } else if (nfing == 3){ + rule |= (yes << north) | (ok << south) | (ok << east) | (yes << west); + } else if (nfing%2 == 0){ + rule |= (yes << north) | (yes << south) | (yes << east) | (yes << west); + } else { + rule |= (yes << north) | (yes << south) | (ok << east) | (yes << west); + } + } else if (netName == nameD){ + if (nfing == 1){ + rule |= (ok << north) | (ok << south)| (yes << east); + } else if (nfing == 2){ + rule |= (ok << north) | (ok << south); + } else if (nfing == 3){ + rule |= (ok << north) | (yes << south) | (yes << east) | (ok << west); + } else if (nfing%2 == 0){ + rule |= (ok << north) | (yes << south) | (ok << east) | (ok << west); + } else { + rule |= (ok << north) | (yes << south) | (yes << east) | (ok << west); + } + } else if (netName == nameG){ + if (nfing == 1){ + rule |= (ok << north) | (ok << east) | (ok << west); + } else { + rule |= (yes << north) | (ok << east) | (ok << west); + } + } else { + cerr << "Error(unsigned int getRestrictionsRules( Device* device, Net* net )): Unknown net name." << endl; + } + return rule; + } + + + bool Transistor::isSame(Transistor* ts) + { + StepParameter* w1 = dynamic_cast(this->getParameter("W")); + StepParameter* l1 = dynamic_cast(this->getParameter("L")); + FormFactorParameter* m1 = dynamic_cast(this->getParameter("M")); + ChoiceParameter* ls1 = dynamic_cast(this->getParameter("Layout Styles")); + StepParameter* nerc1 = dynamic_cast(this->getParameter("NERC")); + StepParameter* nirc1 = dynamic_cast(this->getParameter("NIRC")); + StepParameter* b1 = dynamic_cast(this->getParameter("B.w" )); + StepParameter* g1 = dynamic_cast(this->getParameter("G.w")); + StepParameter* d1 = dynamic_cast(this->getParameter("D.w")); + StepParameter* s1 = dynamic_cast(this->getParameter("S.w" )); + + StepParameter* w2 = dynamic_cast(ts->getParameter("W")); + StepParameter* l2 = dynamic_cast(ts->getParameter("L")); + FormFactorParameter* m2 = dynamic_cast(ts->getParameter("M")); + ChoiceParameter* ls2 = dynamic_cast(ts->getParameter("Layout Styles")); + StepParameter* nerc2 = dynamic_cast(ts->getParameter("NERC")); + StepParameter* nirc2 = dynamic_cast(ts->getParameter("NIRC")); + StepParameter* b2 = dynamic_cast(ts->getParameter("B.w" )); + StepParameter* g2 = dynamic_cast(ts->getParameter("G.w")); + StepParameter* d2 = dynamic_cast(ts->getParameter("D.w")); + StepParameter* s2 = dynamic_cast(ts->getParameter("S.w" )); + + if (w1->getValue() != w2->getValue()){ + cerr << Warning( "Transistor::isSame(): W are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (l1->getValue() != l2->getValue()){ + cerr << Warning( "Transistor::isSame(): L are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (m1->getValue() != m2->getValue()){ + cerr << Warning( "Transistor::isSame(): M are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (ls1->getValue() != ls2->getValue()){ + cerr << Warning( "Transistor::isSame(): Layout styles are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (nerc1->getValue() != nerc2->getValue()){ + cerr << Warning( "Transistor::isSame(): NERC are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (nirc1->getValue() != nirc2->getValue()){ + cerr << Warning( "Transistor::isSame(): NIRC are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (b1->getValue() != b2->getValue()){ + cerr << Warning( "Transistor::isSame(): B.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (g1->getValue() != g2->getValue()){ + cerr << Warning( "Transistor::isSame(): G.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (d1->getValue() != d2->getValue()){ + cerr << Warning( "Transistor::isSame(): D.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } if (s1->getValue() != s2->getValue()) { + cerr << Warning( "Transistor::isSame(): S.w are different \"%s\" vs \"%s\"." + , getString(this).c_str(), getString(ts).c_str() ); + return false; + } + + return true; + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/TransistorArguments.cpp b/hurricane/src/analog/TransistorArguments.cpp new file mode 100644 index 00000000..b94e4ae9 --- /dev/null +++ b/hurricane/src/analog/TransistorArguments.cpp @@ -0,0 +1,59 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./TransistorArguments.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/TransistorArguments.h" + +namespace Analog { + + + TransistorArguments::TransistorArguments ( bool isNMOS + , bool isBulkConnected + , bool isSourceFirst + , std::string bulkType + , Hurricane::DbU::Unit w + , Hurricane::DbU::Unit l + , unsigned m + , unsigned externalDummy ) + : Super() + , _isNMOS (isNMOS) + , _isBulkConnected(isBulkConnected) + , _isSourceFirst (isSourceFirst) + , _bulkType (bulkType) + , _w (w) + , _l (l) + , _m (m) + , _externalDummy (externalDummy) + { } + + + TransistorArguments::TransistorArguments ( const TransistorArguments& tArgs ) + : Super() + , _isNMOS (tArgs.isNMOS()) + , _isBulkConnected(tArgs.isBulkConnected()) + , _isSourceFirst (tArgs.isSourceFirst()) + , _bulkType (tArgs.getBulkType()) + , _w (tArgs.getW()) + , _l (tArgs.getL()) + , _m (tArgs.getM()) + , _externalDummy (tArgs.getExternalDummy()) + { } + + + TransistorArguments* TransistorArguments::getClone () + { return new TransistorArguments( *this ); } + + +} // Analog namespace. diff --git a/hurricane/src/analog/TransistorFamily.cpp b/hurricane/src/analog/TransistorFamily.cpp new file mode 100644 index 00000000..7e972ba2 --- /dev/null +++ b/hurricane/src/analog/TransistorFamily.cpp @@ -0,0 +1,82 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./TransistorFamily.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/DataBase.h" +#include "hurricane/Technology.h" +#include "hurricane/PhysicalRule.h" +#include "hurricane/analog/MetaTransistor.h" +#include "hurricane/analog/TransistorFamily.h" + +namespace Analog { + + + TransistorFamily::TransistorFamily ( Library* library, const Name& name, const Type& type ) + : Super (library,name) + , _type (type) + , _referenceTransistor(NULL) + , _operatorIndex (0) + , _w (NULL) + , _l (NULL) + , _m (NULL) + , _externalDummy (NULL) + , _sourceFirst (NULL) + , _bulkType (NULL) + {} + + + void TransistorFamily::_postCreate ( const Name& deviceName ) + { + Super::_postCreate(deviceName); + + Choices sourceChoices; + //sourceChoices << "Yes" << "No"; + sourceChoices << ""; + _sourceFirst = addMCheckBoxParameter("Source First", sourceChoices); + + Choices bulkChoices; + bulkChoices << "North" << "South" << "East" << "West"; + _bulkType = addMCheckBoxParameter("Bulk Type", bulkChoices); + + Technology* atechno = DataBase::getDB()->getTechnology(); + DbU::Unit transistorMinL = atechno->getPhysicalRule("transistorMinL").getValue(); + DbU::Unit transistorMaxL = atechno->getPhysicalRule("transistorMaxL").getValue(); + DbU::Unit transistorMinW = atechno->getPhysicalRule("transistorMinW").getValue(); + DbU::Unit transistorMaxW = atechno->getPhysicalRule("transistorMaxW").getValue(); + + _w = addStepParameter ("W", transistorMinW, transistorMaxW, DbU::grid(1)); + _l = addStepParameter ("L", transistorMinL, transistorMaxL, DbU::grid(1)); + _m = addFormFactorParameter("M", 1, 10); + _externalDummy = addSpinBoxParameter ("ExternalDummy", 0, 6); + addStepParameter("NERC" , 1, 1, 1); + addStepParameter("NIRC" , 1, 1, 1); + } + + +#ifdef DISABLED + void TransistorFamily::setReferenceTransistor ( const Name& referenceTransistorName ) { + Instance* instance = getInstance(referenceTransistorName); + if (!instance) throw Error("No TransRef ..."); + + Cell* cell = instance->getMasterCell(); + MetaTransistor* metaTransistor = dynamic_cast(cell); + if (!metaTransistor) throw Error("Wrong type for TransRef..."); + + _referenceTransistor = metaTransistor; + } +#endif + + +} // Analog namespace. diff --git a/hurricane/src/analog/TransistorFamilyNames.cpp b/hurricane/src/analog/TransistorFamilyNames.cpp new file mode 100644 index 00000000..85364ed1 --- /dev/null +++ b/hurricane/src/analog/TransistorFamilyNames.cpp @@ -0,0 +1,59 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./TransistorFamilyNames.cpp" | +// +-----------------------------------------------------------------+ + +#include "hurricane/analog/TransistorFamilyNames.h" + +namespace Analog { + + + const char* TransistorFamilyNames::PMOSTransistorBU ("PMOS Transistor Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSTransistorBC ("PMOS Transistor Bulk Connected"); + const char* TransistorFamilyNames::NMOSTransistorBU ("NMOS Transistor Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSTransistorBC ("NMOS Transistor Bulk Connected"); + const char* TransistorFamilyNames::PMOSDifferentialPairBU ("PMOS Differential Pair Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSDifferentialPairBC ("PMOS Differential Pair Bulk Connected"); + const char* TransistorFamilyNames::NMOSDifferentialPairBU ("NMOS Differential Pair Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSDifferentialPairBC ("NMOS Differential Pair Bulk Connected"); + const char* TransistorFamilyNames::PMOSSimpleCurrentMirrorBU ("PMOS Simple Current Mirror Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSSimpleCurrentMirrorBC ("PMOS Simple Current Mirror Bulk Connected"); + const char* TransistorFamilyNames::NMOSSimpleCurrentMirrorBU ("NMOS Simple Current Mirror Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSSimpleCurrentMirrorBC ("NMOS Simple Current Mirror Bulk Connected"); + const char* TransistorFamilyNames::PMOSLevelShifterBU ("PMOS Level Shifter Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSLevelShifterBC ("PMOS Level Shifter Bulk Connected"); + const char* TransistorFamilyNames::NMOSLevelShifterBU ("NMOS Level Shifter Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSLevelShifterBC ("NMOS Level Shifter Bulk Connected"); + const char* TransistorFamilyNames::PMOSCrossCoupledPairBU ("PMOS Cross Coupled Pair Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSCrossCoupledPairBC ("PMOS Cross Coupled Pair Bulk Connected"); + const char* TransistorFamilyNames::NMOSCrossCoupledPairBU ("NMOS Cross Coupled Pair Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSCrossCoupledPairBC ("NMOS Cross Coupled Pair Bulk Connected"); + const char* TransistorFamilyNames::PMOSCommonSourcePairBU ("PMOS Common Source Pair Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSCommonSourcePairBC ("PMOS Common Source Pair Bulk Connected"); + const char* TransistorFamilyNames::NMOSCommonSourcePairBU ("NMOS Common Source Pair Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSCommonSourcePairBC ("NMOS Common Source Pair Bulk Connected"); + const char* TransistorFamilyNames::NMOSCommonGatePairBC ("NMOS Common Gate Pair Bulk Connected"); + const char* TransistorFamilyNames::PMOSCommonGatePairBU ("PMOS Common Gate Pair Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSCommonGatePairBC ("PMOS Common Gate Pair Bulk Connected"); + const char* TransistorFamilyNames::NMOSCommonGatePairBU ("NMOS Common Gate Pair Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSCommonDrainBC ("NMOS Common Drain Bulk Connected"); + const char* TransistorFamilyNames::PMOSCommonDrainBU ("PMOS Common Drain Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSCommonDrainBC ("PMOS Common Drain Bulk Connected"); + const char* TransistorFamilyNames::NMOSCommonDrainBU ("NMOS Common Drain Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSCascodeBU ("PMOS Cascode Bulk Unconnected"); + const char* TransistorFamilyNames::PMOSCascodeBC ("PMOS Cascode Bulk Connected"); + const char* TransistorFamilyNames::NMOSCascodeBU ("NMOS Cascode Bulk Unconnected"); + const char* TransistorFamilyNames::NMOSCascodeBC ("NMOS Cascode Bulk Connected"); + + +} // Analog namespace. diff --git a/hurricane/src/analog/TransistorMultiArguments.cpp b/hurricane/src/analog/TransistorMultiArguments.cpp new file mode 100644 index 00000000..a04f36eb --- /dev/null +++ b/hurricane/src/analog/TransistorMultiArguments.cpp @@ -0,0 +1,53 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./TransistorMultiArguments.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/analog/TransistorMultiArguments.h" + +namespace Analog { + + + TransistorMultiArguments::TransistorMultiArguments ( bool isNMOS + , bool isBulkConnected + , bool isSourceFirst + , std::string bulkType + , Hurricane::DbU::Unit w + , Hurricane::DbU::Unit l + , unsigned m + , unsigned mint + , unsigned externalDummy ) + : Super(isNMOS, isBulkConnected, isSourceFirst, bulkType, w, l, m, externalDummy) + , _mint(mint) + { } + + + TransistorMultiArguments::TransistorMultiArguments ( const TransistorMultiArguments& dpArgs ) + : Super( dpArgs.isNMOS() + , dpArgs.isBulkConnected() + , dpArgs.isSourceFirst() + , dpArgs.getBulkType() + , dpArgs.getW() + , dpArgs.getL() + , dpArgs.getM() + , dpArgs.getExternalDummy()) + , _mint(dpArgs.getMInt()) + { } + + + TransistorMultiArguments* TransistorMultiArguments::getClone () + { return new TransistorMultiArguments( *this ); } + + +} // Analog namespace. diff --git a/hurricane/src/analog/TransistorPair.cpp b/hurricane/src/analog/TransistorPair.cpp new file mode 100644 index 00000000..901b138d --- /dev/null +++ b/hurricane/src/analog/TransistorPair.cpp @@ -0,0 +1,58 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./TransistorPair.cpp" | +// +-----------------------------------------------------------------+ + + +#include +#include +#include "hurricane/analog/MetaTransistor.h" +#include "hurricane/analog/TransistorPair.h" +#include "hurricane/analog/TransistorMultiArguments.h" + +namespace Analog { + + using namespace std; + + + TransistorPair::TransistorPair ( Library* library, const Name& name, const Type& type ) + : Super(library,name,type) + , _m1 (NULL) + , _m2 (NULL) + , _mInt(NULL) + { } + + + void TransistorPair::_postCreate (const Name& deviceName ) + { + Super::_postCreate(deviceName); + + _mInt = addSpinBoxParameter( "Mint", 1, 12 ); + } + + + Arguments* TransistorPair::getArguments () + { + return new TransistorMultiArguments ( isNMOS() + , isBulkConnected() + , isSourceFirst() + , bitset<4>(getBulkType()).to_string() + , getW() + , getL() + , getM() + , getMint() + , getExternalDummy() ); + } + + +} // Analog namespace. diff --git a/hurricane/src/analog/hurricane/analog/AnalogCellExtension.h b/hurricane/src/analog/hurricane/analog/AnalogCellExtension.h new file mode 100644 index 00000000..2a093c33 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/AnalogCellExtension.h @@ -0,0 +1,120 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis, Eric Lao | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/AnalogCellExtension.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CELL_EXTENSION_H +#define ANALOG_CELL_EXTENSION_H + +#include +#include +#include +#include +#include +#include "hurricane/Property.h" +namespace Hurricane { + class Cell; +} + + +namespace Analog { + + using Hurricane::Record; + using Hurricane::Name; + using Hurricane::Cell; + using Hurricane::StandardPrivateProperty; + + + class AnalogData { + public: + virtual ~AnalogData (); + virtual Record* _getRecord () const; + virtual std::string _getString () const = 0; + }; + + + class AnalogCellExtensionDatas { + public: + AnalogCellExtensionDatas (); + ~AnalogCellExtensionDatas (); + template< typename Data > Data* get (); + template< typename Data > void set ( Data* ); + public: + std::map _params; + std::vector _datas; + }; + + + template< typename Data > + Data* AnalogCellExtensionDatas::get () + { + for ( AnalogData* base : _datas ) { + Data* data = dynamic_cast( base ); + if (data) return data; + } + return NULL; + } + + template< typename Data > + void AnalogCellExtensionDatas::set ( Data* data ) + { + size_t i = 0; + for ( ; i < _datas.size() ; ++i ) { + Data* data = dynamic_cast( _datas[i] ); + if (data) { delete _datas[i]; break; } + } + if (i == _datas.size()) _datas.push_back( NULL ); + _datas[i] = data; + } + + + class AnalogCellExtension { + public: + typedef StandardPrivateProperty Extension; + public: + static void addParameter ( Cell*, const Name&, boost::any ); + static boost::any& getParameter ( const Cell*, const Name&, bool& found ); + static std::map* getParameters ( const Cell* ); + template< typename Data > + static void set ( Cell*, Data* ); + template< typename Data > + static Data* get ( const Cell* ); + }; + + + template< typename Data > + void AnalogCellExtension::set ( Cell* cell, Data* data ) + { + Extension* extension = Extension::get( cell ); + if (not extension) { + extension = Extension::create(); + cell->put( extension ); + } + extension->getValue().set( data ); + } + + + template< typename Data > + Data* AnalogCellExtension::get ( const Cell* cell ) + { + Extension* extension = Extension::get( cell ); + if (not extension) return NULL; + + return extension->getValue().get(); + } + + +} // Analog namespace. + +#endif // ANALOG_CELL_EXTENSION_H diff --git a/hurricane/src/analog/hurricane/analog/Arguments.h b/hurricane/src/analog/hurricane/analog/Arguments.h new file mode 100644 index 00000000..fbf10302 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Arguments.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricaneAMS/devices/Arguments.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_ARGUMENTS_H +#define ANALOG_ARGUMENTS_H + +namespace Analog { + + + class Arguments { + public: + virtual Arguments* getClone () = 0; + virtual void setM ( unsigned int ) { }; + protected: + Arguments () {}; + virtual ~Arguments () {}; + }; + + +} // Analog namespace. + +#endif // ANALOG_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/BJT.h b/hurricane/src/analog/hurricane/analog/BJT.h new file mode 100644 index 00000000..2f2f3522 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/BJT.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/BJT.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_BJT_H +#define ANALOG_BJT_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/BJTFamily.h" + + +namespace Analog { + + + class BJT : public BJTFamily { + public: + typedef BJTFamily Super; + public: + static BJT* create ( Hurricane::Library* , const Hurricane::Name& , const Type& ); + unsigned int getN () const; + unsigned int getM () const; + virtual Hurricane::Name getDeviceName () const; + virtual Arguments* getArguments (); + void setExternalDummy ( const bool ); + bool getExternalDummy () const; + protected: + BJT ( Hurricane::Library* , const Hurricane::Name& , const Type& ); + virtual void _postCreate ( const Hurricane::Name& deviceName ); + virtual void createConnections (); + private: + static const Hurricane::Name _bjt; + FormFactorParameter* _n; + FormFactorParameter* _m; + MCheckBoxParameter* _externalDummy; + }; + + +} // Analog namespace. + +#endif // ANALOG_BJT_H diff --git a/hurricane/src/analog/hurricane/analog/BJTArguments.h b/hurricane/src/analog/hurricane/analog/BJTArguments.h new file mode 100644 index 00000000..b9080930 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/BJTArguments.h @@ -0,0 +1,57 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./hurricane/analog/BJTArguments.cpp" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_BJT_ARGUMENTS_H +#define ANALOG_BJT_ARGUMENTS_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/Arguments.h" + + +namespace Analog { + + class BJTArguments : public Arguments { + public: + typedef Arguments Super; + public: + BJTArguments ( bool isNPN, bool isExternalDummy, unsigned m, unsigned n ); + BJTArguments ( const BJTArguments & bjtArgs ); + virtual BJTArguments* getClone (); + inline bool isNPN () const; + inline bool isExternalDummy () const; + inline unsigned int getM () const; + inline unsigned int getN () const; + inline void setM (unsigned m ); + inline void setN (unsigned n ); + private: + bool _isNPN; + bool _isExternalDummy; + unsigned int _m; + unsigned int _n; + }; + + + inline bool BJTArguments::isNPN () const { return _isNPN; }; + inline bool BJTArguments::isExternalDummy () const { return _isExternalDummy; }; + inline unsigned int BJTArguments::getM () const { return _m; }; + inline unsigned int BJTArguments::getN () const { return _n; }; + inline void BJTArguments::setM (unsigned m ) { _m = m; }; + inline void BJTArguments::setN (unsigned n ) { _n = n; }; + + +} // Analog namespace. + +#endif // ANALOG_BJT_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/BJTFamily.h b/hurricane/src/analog/hurricane/analog/BJTFamily.h new file mode 100644 index 00000000..99519982 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/BJTFamily.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/BJTFamily.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_BJT_FAMILY_H +#define ANALOG_BJT_FAMILY_H + + +namespace Hurricane { + class Name; + class Library; +} + +#include "hurricane/analog/Device.h" + + +namespace Analog { + + + class BJTFamily : public Device { + public: + typedef Device Super; + enum Type { NPN=1, PNP }; + public: + inline Type const& getType () const; + inline int getOperatorIndex () const; + inline void setOperatorIndex ( int ); + protected: + BJTFamily ( Hurricane::Library* , const Hurricane::Name& , const Type& ); + virtual void createConnections () = 0; + private: + const Type _type; + int _operatorIndex; + }; + + + inline BJTFamily::Type const& BJTFamily::getType () const { return _type; } + inline int BJTFamily::getOperatorIndex () const { return _operatorIndex; } + inline void BJTFamily::setOperatorIndex ( int i ) { _operatorIndex = i; } + + +} // Analog namespace. + +#endif // ANALOG_BJT_FAMILY_H diff --git a/hurricane/src/analog/hurricane/analog/BJTFamilyNames.h b/hurricane/src/analog/hurricane/analog/BJTFamilyNames.h new file mode 100644 index 00000000..47a00db2 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/BJTFamilyNames.h @@ -0,0 +1,33 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Stephanie Youssef | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/BJTFamilyNames.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_BJTFAMILYNAMES_H +#define ANALOG_BJTFAMILYNAMES_H + + +namespace Analog { + + + class BJTFamilyNames { + public: + static const char* NPNBJT; + static const char* PNPBJT; + }; + + +} // Analog namespace. + +#endif // ANALOG_BJTFAMILYNAMES_H diff --git a/hurricane/src/analog/hurricane/analog/CapacitorArguments.h b/hurricane/src/analog/hurricane/analog/CapacitorArguments.h new file mode 100644 index 00000000..adcf769f --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CapacitorArguments.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CapacitorArguments.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CAPACITOR_ARGUMENTS_H +#define ANALOG_CAPACITOR_ARGUMENTS_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/Arguments.h" + +namespace Analog { + + + class CapacitorArguments : public Arguments { + public: + typedef Arguments Super; + public: + CapacitorArguments ( bool isMIM, bool isPIP, bool isMOM, double c ); + CapacitorArguments ( const CapacitorArguments& cArgs ); + virtual CapacitorArguments* getClone (); + inline double getC () const; + inline bool isMIM () const; + inline bool isPIP () const; + inline bool isMOM () const; + private: + bool _isMIM; + bool _isPIP; + bool _isMOM; + double _c; + }; + + + inline double CapacitorArguments::getC () const { return _c; } + inline bool CapacitorArguments::isMIM () const { return _isMIM;} + inline bool CapacitorArguments::isPIP () const { return _isPIP;} + inline bool CapacitorArguments::isMOM () const { return _isMOM;} + + +} // Analog namespace. + +#endif // ANALOG_CAPACITOR_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/CapacitorFamily.h b/hurricane/src/analog/hurricane/analog/CapacitorFamily.h new file mode 100644 index 00000000..3a66c64d --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CapacitorFamily.h @@ -0,0 +1,97 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CapacitorFamily.h" | +// +-----------------------------------------------------------------+ + +#ifndef ANALOG_CAPACITOR_FAMILY_H +#define ANALOG_CAPACITOR_FAMILY_H + +#include "hurricane/analog/Device.h" +#include "hurricane/analog/MetaCapacitor.h" + +namespace Hurricane { + class Name; + class Library; +} + + +namespace Analog { + + class MetaCapacitor; + + + class CapacitorFamily : public Device { + public: + typedef Device Super; + enum Type { PIP = 1, MIM, MOM }; + public: + void setReferenceCapacitor (const Hurricane::Name& referenceCapacitorName); + inline MetaCapacitor* getReferenceCapacitor (); + inline const MetaCapacitor* getReferenceCapacitor () const; + inline const Type& getType () const; + inline int getRow () const; + inline bool isMIM () const; + inline bool isPIP () const; + inline bool isMOM () const; + 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; + private: + inline MetaCapacitor* _secureGetReferenceCapacitor (); + inline const MetaCapacitor* _secureGetReferenceCapacitor () const; + + private: + const Type _type; + MetaCapacitor* _referenceCapacitor; + int _operatorIndex; + int _row; + }; + + inline MetaCapacitor* CapacitorFamily::getReferenceCapacitor () { return _referenceCapacitor; } + inline const MetaCapacitor* CapacitorFamily::getReferenceCapacitor () const { return _referenceCapacitor; } + 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 () + { + if (not _referenceCapacitor) throw Hurricane::Error("No MetaCapacitor"); + return _referenceCapacitor; + } + + inline const MetaCapacitor* CapacitorFamily::_secureGetReferenceCapacitor () const + { + if (not _referenceCapacitor) throw Hurricane::Error("No MetaCapacitor"); + return _referenceCapacitor; + } + + +} // Analog namespace. + +#endif // ANALOG_CAPACITOR_FAMILY_H diff --git a/hurricane/src/analog/hurricane/analog/CapacitorFamilyNames.h b/hurricane/src/analog/hurricane/analog/CapacitorFamilyNames.h new file mode 100644 index 00000000..ff27b0df --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CapacitorFamilyNames.h @@ -0,0 +1,35 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CapacitorFamilyNames.h" | +// +-----------------------------------------------------------------+ + +#ifndef ANALOG_CAPACITOR_FAMILYNAMES_H +#define ANALOG_CAPACITOR_FAMILYNAMES_H + +#include + +namespace Analog { + + + class CapacitorFamilyNames { + public: + static const char* PIPCapacitor; + static const char* MIMCapacitor; + static const char* MOMCapacitor; + }; + + +} // Analog namespace. + + +#endif // ANALOG_CAPACITOR_FAMILYNAMES_H diff --git a/hurricane/src/analog/hurricane/analog/CapacitorParameter.h b/hurricane/src/analog/hurricane/analog/CapacitorParameter.h new file mode 100644 index 00000000..20d06e28 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CapacitorParameter.h @@ -0,0 +1,44 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis, Eric Lao | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CapacitorParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CAPACITOR_PARAMETER_H +#define ANALOG_CAPACITOR_PARAMETER_H + +#include "hurricane/analog/Parameter.h" + + +namespace Analog { + + class CapacitorParameter : public Parameter { + public: + inline CapacitorParameter ( std::string id, double value ); + inline double getValue () const; + inline operator double () const; + inline void setValue ( double ); + private: + double _value; + }; + + + inline CapacitorParameter::CapacitorParameter ( std::string id, double value ) : Parameter(id), _value(value) { } + inline double CapacitorParameter::getValue () const { return _value; } + inline CapacitorParameter::operator double () const { return getValue(); } + inline void CapacitorParameter::setValue ( double value ) { _value = value; } + + +} // Analog namespace. + +#endif // ANALOG_CAPACITOR_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/Cascode.h b/hurricane/src/analog/hurricane/analog/Cascode.h new file mode 100644 index 00000000..1624b101 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Cascode.h @@ -0,0 +1,46 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Cascode.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CASCODE_H +#define ANALOG_CASCODE_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + + class Cascode : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static Cascode* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + protected: + Cascode ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + private: + virtual void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _cBulkConnectedName; + static const Hurricane::Name _cBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_CASCODE_H diff --git a/hurricane/src/analog/hurricane/analog/ChoiceParameter.h b/hurricane/src/analog/hurricane/analog/ChoiceParameter.h new file mode 100644 index 00000000..79b8afe7 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/ChoiceParameter.h @@ -0,0 +1,49 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/ChoiceParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CHOICE_PARAMETER_H +#define ANALOG_CHOICE_PARAMETER_H + +#include "hurricane/analog/Parameter.h" +#include "hurricane/analog/Choices.h" + + +namespace Analog { + + + class ChoiceParameter : public Parameter { + public: + inline ChoiceParameter ( std::string id, const Choices& ); + virtual ~ChoiceParameter () { } + Choices::Values getChoicesValues () const; + std::string getValue () const; + void setValue ( const std::string& choice ); + private: + Choices _choices; + unsigned _value; + }; + + + inline ChoiceParameter::ChoiceParameter ( std::string id, const Choices& choices ) + : Parameter(id), _choices(choices), _value(0) + { } + + inline Choices::Values ChoiceParameter::getChoicesValues () const { return _choices.getValues(); } + + +} // Analog namespace. + +#endif // ANALOG_CHOICE_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/Choices.h b/hurricane/src/analog/hurricane/analog/Choices.h new file mode 100644 index 00000000..909652aa --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Choices.h @@ -0,0 +1,47 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Choices.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CHOICES_H +#define ANALOG_CHOICES_H + +#include +#include + +namespace Analog { + + + class Choices { + public: + friend class ChoiceParameter; + friend class MCheckBoxParameter; + typedef std::vector Values; + public: + Choices (); + Choices ( const Choices& ); + Choices& operator<< ( const std::string& choice ); + inline Values getValues () const; + unsigned int findIndexFor ( const std::string& choice ) const; + private: + Values _values; + }; + + + inline Choices::Values Choices::getValues () const { return _values; } + + +} // Analog namespace. + +#endif diff --git a/hurricane/src/analog/hurricane/analog/CommonDrain.h b/hurricane/src/analog/hurricane/analog/CommonDrain.h new file mode 100644 index 00000000..379877f5 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CommonDrain.h @@ -0,0 +1,47 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CommonDrain.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_COMMON_DRAIN_H +#define ANALOG_COMMON_DRAIN_H + +#include "hurricane/analog/TransistorPair.h" + + +namespace Analog { + + + class CommonDrain : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static CommonDrain* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + protected: + CommonDrain ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + private: + virtual void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _cdBulkConnectedName; + static const Hurricane::Name _cdBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_COMMON_DRAIN_H diff --git a/hurricane/src/analog/hurricane/analog/CommonGate.h b/hurricane/src/analog/hurricane/analog/CommonGate.h new file mode 100644 index 00000000..1dbac6e9 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CommonGate.h @@ -0,0 +1,51 @@ +#ifndef __COMMON_GATE_H +#define __COMMON_GATE__PAIR_H + +#include "hurricane/DbU.h" + +#include "hurricaneAMS/devices/TransistorFamily.h" + +namespace Hurricane { + class Library; + class Name; +} + +class MetaTransistor; +class CommonGate : public TransistorFamily { + + public: + typedef TransistorFamily Inherit; + + static CommonGate* + create(Hurricane::Library* library, const Hurricane::Name& name, const Type& type, bool bulkConnected); + Hurricane::DbU::Unit getW() const; + Hurricane::DbU::Unit getL() const; + + virtual Hurricane::Name getDeviceName() const; + virtual Arguments* getArguments(); + + void setExternalDummy(const std::string& externalDummy ); + std::string getExternalDummy() const; + + + protected: + CommonGate(Hurricane::Library* library, const Hurricane::Name& name, const Type& type); + virtual void _postCreate(const Hurricane::Name& deviceName); + virtual void createConnections(bool bulkConnected); + + static const Hurricane::Name _cgBulkConnectedName; + static const Hurricane::Name _cgBulkUnconnectedName; + MetaTransistor* _m1; + MetaTransistor* _m2; + StepParameter* _w; + StepParameter* _l; + FormFactorParameter* _m; + SpinBoxParameter* _mInt; + SpinBoxParameter* _externalDummy; + + MCheckBoxParameter* _sourceFirst; + MCheckBoxParameter* _bulkType; + +}; + +#endif /* __COMMON_GATE__PAIR_H */ diff --git a/hurricane/src/analog/hurricane/analog/CommonGatePair.h b/hurricane/src/analog/hurricane/analog/CommonGatePair.h new file mode 100644 index 00000000..ebe88b85 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CommonGatePair.h @@ -0,0 +1,45 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CommonGatePair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_COMMON_GATE_PAIR_H +#define ANALOG_COMMON_GATE_PAIR_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + + class CommonGatePair : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static CommonGatePair* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + protected: + CommonGatePair ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + virtual void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _cgBulkConnectedName; + static const Hurricane::Name _cgBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_COMMON_GATE_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/CommonSourcePair.h b/hurricane/src/analog/hurricane/analog/CommonSourcePair.h new file mode 100644 index 00000000..14bcdfb6 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CommonSourcePair.h @@ -0,0 +1,49 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CommonSourcePair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_COMMON_SOURCE_PAIR_H +#define ANALOG_COMMON_SOURCE_PAIR_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + + class CommonSourcePair : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static CommonSourcePair* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + unsigned int getRestriction ( Hurricane::Net* net ) const; + + bool isSame ( CommonSourcePair* ); + protected: + CommonSourcePair ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + private: + void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _cspBulkConnectedName; + static const Hurricane::Name _cspBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_COMMON_SOURCE_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/CrossCoupledPair.h b/hurricane/src/analog/hurricane/analog/CrossCoupledPair.h new file mode 100644 index 00000000..af95a8db --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/CrossCoupledPair.h @@ -0,0 +1,46 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/CrossCoupledPair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_CROSS_COUPLED_PAIR_H +#define ANALOG_CROSS_COUPLED_PAIR_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + + class CrossCoupledPair : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static CrossCoupledPair* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& type + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + protected: + CrossCoupledPair ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + private: + void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _ccpBulkConnectedName; + static const Hurricane::Name _ccpBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_CROSS_COUPLED_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/Device.h b/hurricane/src/analog/hurricane/analog/Device.h new file mode 100644 index 00000000..b8bf976c --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Device.h @@ -0,0 +1,147 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Device.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_DEVICE_H +#define ANALOG_DEVICE_H + +#include "hurricane/Cell.h" +#include "hurricane/analog/StepParameter.h" +#include "hurricane/analog/CapacitorParameter.h" +#include "hurricane/analog/ChoiceParameter.h" +#include "hurricane/analog/SpinBoxParameter.h" +#include "hurricane/analog/MCheckBoxParameter.h" +#include "hurricane/analog/FormFactorParameter.h" +#include "hurricane/analog/Arguments.h" + + +namespace Analog { + + + class Device : public Hurricane::Cell { + public: + struct ParameterCompare: public std::binary_function { + bool operator() ( Parameter* dp1, Parameter* dp2 ) const { + if (dp1->getIndex() < dp2->getIndex()) return true; + return (dp1->getIndex() == dp2->getIndex() + and (dp1->getName () < dp2->getName ())); + } + }; + enum Restriction { NorthBlocked = (1<<0) + , SouthBlocked = (1<<1) + , EastBlocked = (1<<2) + , WestBlocked = (1<<3) + , AllBlocked = NorthBlocked|SouthBlocked|EastBlocked|WestBlocked + }; + public: + typedef Hurricane::Cell Super; + typedef std::set Parameters; + typedef std::map Layouts; + public: + virtual Hurricane::Name getDeviceName () const = 0; + virtual Arguments* getArguments () = 0; + Parameter* getParameter ( const std::string& parameterId ); + inline Parameters& getParameters (); + const std::string getLayoutScript (); + inline float getTemperature () const; + inline void setTemperature ( float temperature ); + virtual unsigned int getRestriction ( Hurricane::Net* net ) const; + void setRestrictions2 ( Hurricane::Net* net, unsigned int flags ); + unsigned int getRestrictions2 ( Hurricane::Net* net ) const; + void destroyLayout (); + protected: + Device (Hurricane::Library* + , const Hurricane::Name& ); + static void preCreate ( const Hurricane::Name& ); + virtual void _postCreate ( const Hurricane::Name& deviceName ); + 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 MCheckBoxParameter* addMCheckBoxParameter ( const std::string name, const Choices& choices ); + public: + virtual Hurricane::Record* _getRecord () const; + private: + float _temperature; + Parameters _parameterSet; + ChoiceParameter* _layoutStyles; + Hurricane::Library* _subDevicesLibrary; + Hurricane::Net* _anonymous; + Layouts _layouts; + std::map _netRestrictions; + }; + + + inline Device::Parameters& Device::getParameters () { return _parameterSet; } + inline float Device::getTemperature () const { return _temperature; } + inline void Device::setTemperature ( float temperature ) { _temperature = temperature; } + inline Hurricane::Library* Device::getSubDevicesLibrary () { return _subDevicesLibrary; } + + inline void Device::addParameter ( Parameter* parameter ) + { + parameter->setIndex( _parameterSet.size() ); + _parameterSet.insert( parameter ); + } + + 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 ) + { + CapacitorParameter* capacitorParameter = new CapacitorParameter( name,value ); + addParameter( capacitorParameter ); + return capacitorParameter; + } + + 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 ) + { + FormFactorParameter* formFactorParameter = new FormFactorParameter( name, min, max ); + addParameter( formFactorParameter ); + return formFactorParameter; + } + + 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 ) + { + MCheckBoxParameter* mCheckBoxParameter = new MCheckBoxParameter( name, choices ); + addParameter( mCheckBoxParameter ); + return mCheckBoxParameter; + } + + +} // Analog namespace. + +#endif // ANALOG_DEVICE_H diff --git a/hurricane/src/analog/hurricane/analog/DifferentialPair.h b/hurricane/src/analog/hurricane/analog/DifferentialPair.h new file mode 100644 index 00000000..fcd16d05 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/DifferentialPair.h @@ -0,0 +1,48 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/DifferentialPair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_DIFFERENTIAL_PAIR_H +#define ANALOG_DIFFERENTIAL_PAIR_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + + class DifferentialPair : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static DifferentialPair* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + unsigned int getRestriction ( Hurricane::Net* net ) const; + bool isSame ( DifferentialPair* dp ); + protected: + DifferentialPair ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + private: + void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _dpBulkConnectedName; + static const Hurricane::Name _dpBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_DIFFERENTIAL_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/FormFactorParameter.h b/hurricane/src/analog/hurricane/analog/FormFactorParameter.h new file mode 100644 index 00000000..baeb5fe6 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/FormFactorParameter.h @@ -0,0 +1,58 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/FormFactorParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_FORMFACTOR_PARAMETER_H +#define ANALOG_FORMFACTOR_PARAMETER_H + +#include "hurricane/analog/Parameter.h" + + +namespace Analog { + + class FormFactorParameter : public Parameter { + public: + inline FormFactorParameter ( std::string id, long min, long max); + inline long getMin () const; + inline long getMax () const; + inline long getValue () const; + inline operator long () const ; + inline void setValue ( long ); + inline void setMax ( long ); + private: + long _min; + long _max; + long _value; + }; + + + inline FormFactorParameter::FormFactorParameter ( std::string id, long min, long max ) + : Parameter(id) + , _min (min) + , _max (max) + , _value (min) + { } + + inline long FormFactorParameter::getMin () const { return _min; } + inline long FormFactorParameter::getMax () const { return _max; } + inline long FormFactorParameter::getValue () const { return _value; } + inline FormFactorParameter::operator long () const { return getValue(); } + inline void FormFactorParameter::setValue ( long value ) { _value = value; } + inline void FormFactorParameter::setMax ( long max ) { _max = max; } + + +} // Analog namespace. + +#endif // ANALOG_FORMFACTOR_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/LayoutGenerator.h b/hurricane/src/analog/hurricane/analog/LayoutGenerator.h new file mode 100644 index 00000000..fa5c1438 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/LayoutGenerator.h @@ -0,0 +1,156 @@ +// -*- 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/LayoutGenerator.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_LAYOUT_GENERATOR_H +#define ANALOG_LAYOUT_GENERATOR_H + +#include +#include +#include +#include +#include "hurricane/Box.h" +#include "hurricane/DbU.h" + +namespace Hurricane { + class Box; +} +namespace Isobar { + class Script; +} + +class Device; +class Arguments; +class TransistorArguments; +class TransistorMultiArguments; +class CapacitorArguments; + +// To use PyObject without including Python.h which is included in .cpp file +extern "C" { + struct _object; + typedef _object PyObject; +} + + +namespace Analog { + + class LayoutGenerator { + public: + class Logger { + public: + Logger ( LayoutGenerator* ); + virtual ~Logger (); + inline LayoutGenerator* getGenerator (); + virtual void popStatus ( const std::string& ); + virtual void popError ( const std::string& ); + virtual void popScriptError (); + private: + LayoutGenerator* _generator; + }; + + public: + typedef std::map > ParamMap; + enum Verbose { Quiet = 0 + , Verbose = 1 + , VeryVerbose = 2 + , Debug = 3 + }; + enum Flags { NoFlags = 0x0000 + , ShowTimeTag = 0x0001 + , ShowError = 0x0002 + , StatusOk = 0x0004 + , ComputeBbOnly = 0x0008 + }; + + public: + static inline void setVerboseLevel ( int ); + static inline int getVerboseLevel (); + public: + LayoutGenerator (); + ~LayoutGenerator (); + inline Logger* getLogger (); + inline Device* getDevice (); + unsigned getNumberTransistor (); + unsigned getNumberStack (); + Hurricane::Box getDeviceBox (); + Hurricane::Box getActiveBox (); + inline PyObject* getMatrix (); + PyObject* getRow ( unsigned i ); + PyObject* getDic ( PyObject* row, unsigned j ); + PyObject* getParamValue ( PyObject* dic, std::string paramName ); + // double getParameterValue ( std::string trName , std::string paramName, bool& ok ); + double getParameterValue ( unsigned i, unsigned j, std::string paramName, bool& ok ); + inline double unitToMicro ( int ); + inline double unitToMetter ( int ); + public: + inline void setLogger ( Logger* ); + inline void setDevice ( Device* ); + inline void popStatus ( const std::string& ); + inline void popError ( const std::string& ); + inline void popScriptError (); + bool initialize (); + void finalize ( unsigned int flags ); + bool checkScript (); + bool checkFunctions (); + bool callCheckCoherency ( PyObject* pArgsCheck, unsigned int flags ); + bool callLayout ( PyObject* pArgsLayout ); + bool drawLayout (); + bool toPyArguments ( Arguments*, PyObject*& pArgsCheck, PyObject*& pArgsLayout, unsigned int flags ); + void pyTransistorArguments ( TransistorArguments* , unsigned m, PyObject*& pArgsCheck, PyObject*& pArgsLayout, unsigned int flags ); + void pyTransistorMultiArguments ( TransistorMultiArguments*, unsigned m, PyObject*& pArgsCheck, PyObject*& pArgsLayout, unsigned int flags ); + void pyCapacitorArguments ( CapacitorArguments* , PyObject*& pArgsCheck, PyObject*& pArgsLayout, unsigned int flags ); + private: + static int _verboseLevel; + private: + Logger* _logger; + Device* _device; + Hurricane::Box* _box; + Hurricane::Box* _activeBox; + PyObject* _matrix; + Isobar::Script* _script; + }; + + + inline LayoutGenerator* LayoutGenerator::Logger::getGenerator () { return _generator; } + + + inline int LayoutGenerator::getVerboseLevel () { return _verboseLevel; } + inline LayoutGenerator::Logger* LayoutGenerator::getLogger () { return _logger; } + inline Device* LayoutGenerator::getDevice () { return _device; } + inline void LayoutGenerator::setDevice ( Device* device ) { _device = device; } + inline void LayoutGenerator::setVerboseLevel (int lvl ) { _verboseLevel = lvl; } + inline void LayoutGenerator::popStatus ( const std::string& text ) { if (_logger) _logger->popStatus(text); } + inline void LayoutGenerator::popError ( const std::string& text ) { if (_logger) _logger->popError(text); } + inline void LayoutGenerator::popScriptError () { if (_logger) _logger->popScriptError(); } + inline PyObject* LayoutGenerator::getMatrix () { return _matrix; } + + inline double LayoutGenerator::unitToMicro ( int unit ) { + return Hurricane::DbU::getPhysical(Hurricane::DbU::getOnPhysicalGrid(unit), Hurricane::DbU::Micro); + } + + inline double LayoutGenerator::unitToMetter ( int unit ) { + return Hurricane::DbU::getPhysical(Hurricane::DbU::getOnPhysicalGrid(unit), Hurricane::DbU::Unity); + } + + inline void LayoutGenerator::setLogger ( Logger* logger ) + { + if ( _logger ) delete _logger; + _logger = logger; + } + + +} // Analog namespace. + +#endif // ANALOG_LAYOUT_GENERATOR_H diff --git a/hurricane/src/analog/hurricane/analog/LevelShifter.h b/hurricane/src/analog/hurricane/analog/LevelShifter.h new file mode 100644 index 00000000..f7afecb1 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/LevelShifter.h @@ -0,0 +1,44 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/LevelShifter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_LEVEL_SHIFTER_H +#define ANALOG_LEVEL_SHIFTER_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + class LevelShifter : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static LevelShifter* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + protected: + LevelShifter ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + virtual void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _lsBulkConnectedName; + static const Hurricane::Name _lsBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_LEVEL_SHIFTER_H diff --git a/hurricane/src/analog/hurricane/analog/MCheckBoxParameter.h b/hurricane/src/analog/hurricane/analog/MCheckBoxParameter.h new file mode 100644 index 00000000..224b5153 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/MCheckBoxParameter.h @@ -0,0 +1,50 @@ +// File: MCheckBoxParameter.h +// +// Date: 2010/10/05 +// Author: Damien Dupuis +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/MCheckBoxParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_MCHECKBOX_PARAMETER_H +#define ANALOG_MCHECKBOX_PARAMETER_H + +#include "hurricane/analog/Parameter.h" +#include "hurricane/analog/Choices.h" + + +namespace Analog { + + class MCheckBoxParameter : public Parameter { + public: + inline MCheckBoxParameter ( std::string id, const Choices& ); + inline Choices::Values getChoicesValues () const; + inline unsigned int getValue () const; + inline void setValue ( unsigned int ); + private: + Choices _choices; + unsigned _value; + }; + + + inline MCheckBoxParameter::MCheckBoxParameter ( std::string id, const Choices& choices ): Parameter(id), _choices(choices), _value(0) { } + inline Choices::Values MCheckBoxParameter::getChoicesValues () const { return _choices.getValues(); } + inline unsigned int MCheckBoxParameter::getValue () const { return _value; } + inline void MCheckBoxParameter::setValue ( unsigned int value ) { _value = value; } + + +} // Analog namespace. + +#endif // ANALOG_MCHECKBOX_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/MIMCapacitor.h b/hurricane/src/analog/hurricane/analog/MIMCapacitor.h new file mode 100644 index 00000000..e65bb5bb --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/MIMCapacitor.h @@ -0,0 +1,64 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/MIMCapacitor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_MIM_CAPACITOR_H +#define ANALOG_MIM_CAPACITOR_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/CapacitorFamily.h" + +namespace Analog { + + class MetaCapacitor; + + + class MIMCapacitor : public CapacitorFamily { + public: + typedef CapacitorFamily Super; + public: + static MIMCapacitor* create ( Hurricane::Library* + , const Hurricane::Name& + , const CapacitorFamily::Type& type = MIM ); + inline double getC () const; + inline double getCDraw () const; + inline double getCBorder () const; + inline double getCParasite () const; + virtual Hurricane::Name getDeviceName () const; + virtual Arguments* getArguments (); + protected: + MIMCapacitor ( Hurricane::Library* + , const Hurricane::Name& + , const CapacitorFamily::Type& type = MIM ); + virtual void _postCreate ( const Hurricane::Name& deviceName ); + virtual void createConnections (); + private: + static const Hurricane::Name _capacitorName; + MetaCapacitor* _metaCapacitor; + double _cDraw; + double _cBorder; + double _cParasite; + CapacitorParameter* _c; + }; + + double MIMCapacitor::getC () const { return _c->getValue(); } + double MIMCapacitor::getCDraw () const { return _cDraw; } + double MIMCapacitor::getCBorder () const { return _cBorder; } + double MIMCapacitor::getCParasite () const { return _cParasite; } + + +} // Analog namespace. + +#endif // ANALOH_MIM_CAPACITOR_H diff --git a/hurricane/src/analog/hurricane/analog/MetaCapacitor.h b/hurricane/src/analog/hurricane/analog/MetaCapacitor.h new file mode 100644 index 00000000..aea38caf --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/MetaCapacitor.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2011-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/MetaCapacitor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_METACAPACITOR_H +#define ANALOG_METACAPACITOR_H + +#include "hurricane/Cell.h" + + +namespace Analog { + + using namespace Hurricane; + + + class MetaCapacitor : public Cell { + public: + typedef Cell Super; + public: + static MetaCapacitor* create ( Library* library, const Name& ); + inline Net* getPlate1 (); + inline Net* getPlate2 (); + inline double getCE () const; + inline void setCE (double ce); + protected: + void _postCreate (); + private: + MetaCapacitor ( Library* , const Name& ); + private: + Net* _plate1; + Net* _plate2; + double _ce; + }; + + + inline Net* MetaCapacitor::getPlate1 () { return _plate1; } + inline Net* MetaCapacitor::getPlate2 () { return _plate2; } + inline double MetaCapacitor::getCE () const { return _ce; } + inline void MetaCapacitor::setCE ( double ce ) { _ce = ce; } + + +} // Analog namespace. + +#endif // ANALOG_METACAPACITOR_H diff --git a/hurricane/src/analog/hurricane/analog/MetaTransistor.h b/hurricane/src/analog/hurricane/analog/MetaTransistor.h new file mode 100644 index 00000000..4e56e473 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/MetaTransistor.h @@ -0,0 +1,130 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/MetaTransistor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_METATRANSISTOR_H +#define ANALOG_METATRANSISTOR_H + +#include "hurricane/Cell.h" + + +namespace Analog { + + using namespace Hurricane; + + + class MetaTransistor : public Cell { + public: + typedef Cell Super; + public: + static MetaTransistor* create ( Library* , const Name& ); + inline Net* getSource () const; + inline Net* getDrain () const; + inline Net* getGate () const; + inline Net* getBulk () const; + inline float getWE () const; + inline float getLE () const; + inline float getIDS () const; + inline float getVGS () const; + inline float getVDS () const; + inline float getVBS () const; + inline float getVG () const; + inline float getVD () const; + inline float getVS () const; + inline float getVB () const; + inline float getVEG () const; + inline float getVTH () const; + inline float getWmin () const; + inline float getWmax () const; + inline int getNfing () const; + inline void setM ( unsigned int m ); + inline void setWE ( float we ); + inline void setLE ( float le ); + inline void setIDS ( float ids ); + inline void setVGS ( float vgs ); + inline void setVDS ( float vds ); + inline void setVBS ( float vbs ); + inline void setVG ( float vg ); + inline void setVD ( float vd ); + inline void setVS ( float vs ); + inline void setVB ( float vb ); + inline void setVEG ( float veg ); + inline void setVTH ( float vth ); + inline void setWmin ( float wmin ); + inline void setWmax ( float wmax ); + inline void setNfing ( int nfing ); + protected: + void _postCreate (); + private: + MetaTransistor ( Library* , const Name& ); + private: + Net* _drain; + Net* _source; + Net* _gate; + Net* _bulk; + Net* _anonymous; + unsigned int _m; + float _we , _le; + float _ids; + float _vgs, _vds, _vbs; + float _vg , _vd , _vb , _vs; + float _veg; + float _vth; + float _wmin; + float _wmax; + int _nfing; + }; + + + inline Net* MetaTransistor::getSource () const { return _source; } + inline Net* MetaTransistor::getDrain () const { return _drain; } + inline Net* MetaTransistor::getGate () const { return _gate; } + inline Net* MetaTransistor::getBulk () const { return _bulk; } + inline float MetaTransistor::getWE () const { return _we; } + inline float MetaTransistor::getLE () const { return _le; } + inline float MetaTransistor::getIDS () const { return _ids; } + inline float MetaTransistor::getVGS () const { return _vgs; } + inline float MetaTransistor::getVDS () const { return _vds; } + inline float MetaTransistor::getVBS () const { return _vbs; } + inline float MetaTransistor::getVG () const { return _vg; } + inline float MetaTransistor::getVD () const { return _vd; } + inline float MetaTransistor::getVS () const { return _vs; } + inline float MetaTransistor::getVB () const { return _vb; } + inline float MetaTransistor::getVEG () const { return _veg; } + inline float MetaTransistor::getVTH () const { return _vth; } + inline float MetaTransistor::getWmin () const { return _wmin; } + inline float MetaTransistor::getWmax () const { return _wmax; } + inline int MetaTransistor::getNfing () const { return _nfing; } + inline void MetaTransistor::setM ( unsigned int m ) { _m = m; } + inline void MetaTransistor::setWE ( float we ) { _we = we; } + inline void MetaTransistor::setLE ( float le ) { _le = le; } + inline void MetaTransistor::setIDS ( float ids ) { _ids = ids; } + inline void MetaTransistor::setVGS ( float vgs ) { _vgs = vgs; } + inline void MetaTransistor::setVDS ( float vds ) { _vds = vds; } + inline void MetaTransistor::setVBS ( float vbs ) { _vbs = vbs; } + inline void MetaTransistor::setVG ( float vg ) { _vg = vg; } + inline void MetaTransistor::setVD ( float vd ) { _vd = vd; } + inline void MetaTransistor::setVS ( float vs ) { _vs = vs; } + inline void MetaTransistor::setVB ( float vb ) { _vb = vb; } + inline void MetaTransistor::setVEG ( float veg ) { _veg = veg; } + inline void MetaTransistor::setVTH ( float vth ) { _vth = vth; } + inline void MetaTransistor::setWmin ( float wmin ) { _wmin = wmin; } + inline void MetaTransistor::setWmax ( float wmax ) { _wmax = wmax; } + inline void MetaTransistor::setNfing ( int nfing ) { _nfing = nfing; } + + +} // Analog namespace. + +#endif // ANALOG_METATRANSISTOR_H diff --git a/hurricane/src/analog/hurricane/analog/Parameter.h b/hurricane/src/analog/hurricane/analog/Parameter.h new file mode 100644 index 00000000..3b867506 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Parameter.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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Parameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PARAMETER_H +#define ANALOG_PARAMETER_H + +#include + + +namespace Analog { + + + class Parameter { + public: + friend class Device; + enum Type { STEP=0, CHOICE=1, SPIN=2, MCHECK=3, CAPACITOR=4 }; + public: + inline const std::string& getName () const; + inline int getIndex (); + inline void setIndex ( int ); + virtual ~Parameter () { } + protected: + inline Parameter ( const std::string& name ); + private: + Parameter (); + Parameter ( const Parameter& parameter ); + private: + const std::string _name; + int _index; + }; + + + inline Parameter::Parameter ( const std::string& name ) : _name(name), _index(0) {} + inline const std::string& Parameter::getName () const { return _name; } + inline int Parameter::getIndex () { return _index; } + inline void Parameter::setIndex ( int index ) { _index = index; } + + +} // Analog namespace. + +#endif // ANALOG_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyBJTArguments.h b/hurricane/src/analog/hurricane/analog/PyBJTArguments.h new file mode 100644 index 00000000..9c4d79a5 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyBJTArguments.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyBJTArguments.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_BJT_ARGUMENTS_H +#define ANALOG_PY_BJT_ARGUMENTS_H + +#include "Python.h" +#include "hurricane/analog/BJTArguments.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyBJTArguments". + + typedef struct { + PyObject_HEAD + Analog::BJTArguments* _object; + } PyBJTArguments; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeBJTArguments; + extern PyMethodDef PyBJTArguments_Methods[]; + + extern void PyBJTArguments_LinkPyType(); + extern void PyBJTArguments_Constructor(); + + +#define IsPyBJTArguments(v) ( (v)->ob_type == &PyTypeBJTArguments ) +#define PYBJTARGUMENTS(v) ( (PyBJTArguments*)(v) ) +#define PYBJTARGUMENTS_O(v) ( PYBJTARGUMENTS(v)->_object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_BJT_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/PyCapacitorArguments.h b/hurricane/src/analog/hurricane/analog/PyCapacitorArguments.h new file mode 100644 index 00000000..27646a51 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCapacitorArguments.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyCapacitorArguments.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CAPACITOR_ARGUMENTS_H +#define ANALOG_PY_CAPACITOR_ARGUMENTS_H + +#include "Python.h" +#include "hurricane/analog/CapacitorArguments.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCapacitorArguments". + + typedef struct { + PyObject_HEAD + Analog::CapacitorArguments* _object; + } PyCapacitorArguments; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCapacitorArguments; + extern PyMethodDef PyCapacitorArguments_Methods[]; + + extern void PyCapacitorArguments_LinkPyType(); + extern void PyCapacitorArguments_Constructor(); + + +#define IsPyCapacitorArguments(v) ( (v)->ob_type == &PyTypeCapacitorArguments ) +#define PYCAPACITORARGUMENTS(v) ( (PyCapacitorArguments*)(v) ) +#define PYCAPACITORARGUMENTS_O(v) ( PYCAPACITORARGUMENTS(v)->_object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CAPACITOR_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/PyCapacitorFamily.h b/hurricane/src/analog/hurricane/analog/PyCapacitorFamily.h new file mode 100644 index 00000000..e9113a19 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCapacitorFamily.h @@ -0,0 +1,56 @@ +// -*- 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++ Header : "./hurricane/analog/PyCapacitorFamily.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CAPACITOR_FAMILY_H +#define ANALOG_PY_CAPACITOR_FAMILY_H + +#include "hurricane/analog/PyDevice.h" +#include "hurricane/analog/CapacitorFamily.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCapacitorFamily". + + typedef struct { + PyDevice _baseObject; + } PyCapacitorFamily; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCapacitorFamily; + extern PyMethodDef PyCapacitorFamily_Methods[]; + + extern PyObject* PyCapacitorFamily_Link ( Analog::CapacitorFamily* object ); + extern void PyCapacitorFamily_LinkPyType (); + extern void PyCapacitorFamily_postModuleInit (); + + +#define IsPyCapacitorFamily(v) ( (v)->ob_type == &PyTypeCapacitorFamily ) +#define PYCAPACITORFAMILY(v) ( (PyCapacitorFamily*)(v) ) +#define PYCAPACITORFAMILY_O(v) ( PYCAPACITORFAMILY(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CAPACITOR_FAMILY_H diff --git a/hurricane/src/analog/hurricane/analog/PyCapacitorParameter.h b/hurricane/src/analog/hurricane/analog/PyCapacitorParameter.h new file mode 100644 index 00000000..008bf3bc --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCapacitorParameter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyCapacitorParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CAPACITOR_PARAMETER_H +#define ANALOG_PY_CAPACITOR_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/CapacitorParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCapacitorParameter". + + typedef struct { + PyParameter _baseObject; + } PyCapacitorParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCapacitorParameter; + extern PyMethodDef PyCapacitorParameter_Methods[]; + + extern PyObject* PyCapacitorParameter_Link ( Analog::CapacitorParameter* object ); + extern void PyCapacitorParameter_LinkPyType (); + + +#define IsPyCapacitorParameter(v) ( (v)->ob_type == &PyTypeCapacitorParameter ) +#define PYCAPACITORPARAMETER(v) ( (PyCapacitorParameter*)(v) ) +#define PYCAPACITORPARAMETER_O(v) ( PYCAPACITORPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CAPACITOR_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyCascode.h b/hurricane/src/analog/hurricane/analog/PyCascode.h new file mode 100644 index 00000000..5ec251bf --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCascode.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyCascode.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CASCODE_H +#define ANALOG_PY_CASCODE_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/Cascode.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCascode". + + typedef struct { + PyTransistorPair _baseObject; + } PyCascode; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCascode; + extern PyMethodDef PyCascode_Methods[]; + + extern PyObject* PyCascode_Link ( Analog::Cascode* object ); + extern void PyCascode_LinkPyType (); + + +#define IsPyCascode(v) ( (v)->ob_type == &PyTypeCascode ) +#define PYCASCODE(v) ( (PyCascode*)(v) ) +#define PYCASCODE_O(v) ( PYCASCODE(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CASCODE_H diff --git a/hurricane/src/analog/hurricane/analog/PyChoiceParameter.h b/hurricane/src/analog/hurricane/analog/PyChoiceParameter.h new file mode 100644 index 00000000..061f9e13 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyChoiceParameter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyChoiceParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CHOICE_PARAMETER_H +#define ANALOG_PY_CHOICE_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/ChoiceParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyChoiceParameter". + + typedef struct { + PyParameter _baseObject; + } PyChoiceParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeChoiceParameter; + extern PyMethodDef PyChoiceParameter_Methods[]; + + extern PyObject* PyChoiceParameter_Link ( Analog::ChoiceParameter* object ); + extern void PyChoiceParameter_LinkPyType (); + + +#define IsPyChoiceParameter(v) ( (v)->ob_type == &PyTypeChoiceParameter ) +#define PYCHOICEPARAMETER(v) ( (PyChoiceParameter*)(v) ) +#define PYCHOICEPARAMETER_O(v) ( PYCHOICEPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CHOICE_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyCommonDrain.h b/hurricane/src/analog/hurricane/analog/PyCommonDrain.h new file mode 100644 index 00000000..63591de0 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCommonDrain.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyCommonDrain.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_COMMON_DRAIN_H +#define ANALOG_PY_COMMON_DRAIN_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/CommonDrain.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCommonDrain". + + typedef struct { + PyTransistorPair _baseObject; + } PyCommonDrain; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCommonDrain; + extern PyMethodDef PyCommonDrain_Methods[]; + + extern PyObject* PyCommonDrain_Link ( Analog::CommonDrain* object ); + extern void PyCommonDrain_LinkPyType (); + + +#define IsPyCommonDrain(v) ( (v)->ob_type == &PyTypeCommonDrain ) +#define PYCOMMONDRAIN(v) ( (PyCommonDrain*)(v) ) +#define PYCOMMONDRAIN_O(v) ( PYCOMMONDRAIN(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_COMMON_DRAIN_H diff --git a/hurricane/src/analog/hurricane/analog/PyCommonGatePair.h b/hurricane/src/analog/hurricane/analog/PyCommonGatePair.h new file mode 100644 index 00000000..ae21ff69 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCommonGatePair.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyCommonGatePair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_COMMON_GATE_PAIR_H +#define ANALOG_PY_COMMON_GATE_PAIR_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/CommonGatePair.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCommonGatePair". + + typedef struct { + PyTransistorPair _baseObject; + } PyCommonGatePair; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCommonGatePair; + extern PyMethodDef PyCommonGatePair_Methods[]; + + extern PyObject* PyCommonGatePair_Link ( Analog::CommonGatePair* object ); + extern void PyCommonGatePair_LinkPyType (); + + +#define IsPyCommonGatePair(v) ( (v)->ob_type == &PyTypeCommonGatePair ) +#define PYCOMMONGATEPAIR(v) ( (PyCommonGatePair*)(v) ) +#define PYCOMMONGATEPAIR_O(v) ( PYCOMMONGATEPAIR(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_COMMON_GATE_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/PyCommonSourcePair.h b/hurricane/src/analog/hurricane/analog/PyCommonSourcePair.h new file mode 100644 index 00000000..cf63fcdb --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCommonSourcePair.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyCommonSourcePair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_COMMON_SOURCE_PAIR_H +#define ANALOG_PY_COMMON_SOURCE_PAIR_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/CommonSourcePair.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCommonSourcePair". + + typedef struct { + PyTransistorPair _baseObject; + } PyCommonSourcePair; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCommonSourcePair; + extern PyMethodDef PyCommonSourcePair_Methods[]; + + extern PyObject* PyCommonSourcePair_Link ( Analog::CommonSourcePair* object ); + extern void PyCommonSourcePair_LinkPyType (); + + +#define IsPyCommonSourcePair(v) ( (v)->ob_type == &PyTypeCommonSourcePair ) +#define PYCOMMONSOURCEPAIR(v) ( (PyCommonSourcePair*)(v) ) +#define PYCOMMONSOURCEPAIR_O(v) ( PYCOMMONSOURCEPAIR(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_COMMON_SOURCE_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/PyCrossCoupledPair.h b/hurricane/src/analog/hurricane/analog/PyCrossCoupledPair.h new file mode 100644 index 00000000..c2632e9e --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyCrossCoupledPair.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyCrossCoupledPair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_CROSS_COUPLED_PAIR_H +#define ANALOG_PY_CROSS_COUPLED_PAIR_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/CrossCoupledPair.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyCrossCoupledPair". + + typedef struct { + PyTransistorPair _baseObject; + } PyCrossCoupledPair; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeCrossCoupledPair; + extern PyMethodDef PyCrossCoupledPair_Methods[]; + + extern PyObject* PyCrossCoupledPair_Link ( Analog::CrossCoupledPair* object ); + extern void PyCrossCoupledPair_LinkPyType (); + + +#define IsPyCrossCoupledPair(v) ( (v)->ob_type == &PyTypeCrossCoupledPair ) +#define PYCROSSCOUPLEDPAIR(v) ( (PyCrossCoupledPair*)(v) ) +#define PYCROSSCOUPLEDPAIR_O(v) ( PYCROSSCOUPLEDPAIR(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_CROSS_COUPLED_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/PyDevice.h b/hurricane/src/analog/hurricane/analog/PyDevice.h new file mode 100644 index 00000000..f58a5301 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyDevice.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyDevice.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_DEVICE_H +#define ANALOG_PY_DEVICE_H + +#include "hurricane/isobar/PyCell.h" +#include "hurricane/analog/Device.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyDevice". + + typedef struct { + PyCell _baseObject; + } PyDevice; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeDevice; + extern PyMethodDef PyDevice_Methods[]; + + extern PyObject* PyDevice_Link ( Analog::Device* object ); + extern void PyDevice_LinkPyType (); + extern void PyDevice_postModuleInit (); + + +#define IsPyDevice(v) ( (v)->ob_type == &PyTypeDevice ) +#define PYDEVICE(v) ( (PyDevice*)(v) ) +#define PYDEVICE_O(v) ( dynamic_cast(PYDEVICE(v)->_baseObject._baseObject._object) ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_DEVICE_H diff --git a/hurricane/src/analog/hurricane/analog/PyDifferentialPair.h b/hurricane/src/analog/hurricane/analog/PyDifferentialPair.h new file mode 100644 index 00000000..af3288ab --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyDifferentialPair.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyDifferentialPair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_DIFFERENTIAL_PAIR_H +#define ANALOG_PY_DIFFERENTIAL_PAIR_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/DifferentialPair.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyDifferentialPair". + + typedef struct { + PyTransistorPair _baseObject; + } PyDifferentialPair; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeDifferentialPair; + extern PyMethodDef PyDifferentialPair_Methods[]; + + extern PyObject* PyDifferentialPair_Link ( Analog::DifferentialPair* object ); + extern void PyDifferentialPair_LinkPyType (); + + +#define IsPyDifferentialPair(v) ( (v)->ob_type == &PyTypeDifferentialPair ) +#define PYDIFFERENTIALPAIR(v) ( (PyDifferentialPair*)(v) ) +#define PYDIFFERENTIALPAIR_O(v) ( PYDIFFERENTIALPAIR(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_DIFFERENTIAL_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/PyFormFactorParameter.h b/hurricane/src/analog/hurricane/analog/PyFormFactorParameter.h new file mode 100644 index 00000000..a587a27c --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyFormFactorParameter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyFormFactorParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_FORM_FACTOR_PARAMETER_H +#define ANALOG_PY_FORM_FACTOR_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/FormFactorParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyFormFactorParameter". + + typedef struct { + PyParameter _baseObject; + } PyFormFactorParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeFormFactorParameter; + extern PyMethodDef PyFormFactorParameter_Methods[]; + + extern PyObject* PyFormFactorParameter_Link ( Analog::FormFactorParameter* object ); + extern void PyFormFactorParameter_LinkPyType (); + + +#define IsPyFormFactorParameter(v) ( (v)->ob_type == &PyTypeFormFactorParameter ) +#define PYFORMFACTORPARAMETER(v) ( (PyFormFactorParameter*)(v) ) +#define PYFORMFACTORPARAMETER_O(v) ( PYFORMFACTORPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_FORM_FACTOR_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyLayoutGenerator.h b/hurricane/src/analog/hurricane/analog/PyLayoutGenerator.h new file mode 100644 index 00000000..4a2c8306 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyLayoutGenerator.h @@ -0,0 +1,57 @@ +// -*- 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++ Header : "./hurricane/analog/PyLayoutGenerator.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_LAYOUT_GENERATOR_H +#define ANALOG_PY_LAYOUT_GENERATOR_H + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/analog/LayoutGenerator.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyLayoutGenerator". + + typedef struct { + PyObject_HEAD + Analog::LayoutGenerator* _object; + } PyLayoutGenerator; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeLayoutGenerator; + extern PyMethodDef PyLayoutGenerator_Methods[]; + + extern PyObject* PyLayoutGenerator_Link ( Analog::LayoutGenerator* object ); + extern void PyLayoutGenerator_LinkPyType (); + extern void PyLayoutGenerator_postModuleInit (); + + +#define IsPyLayoutGenerator(v) ( (v)->ob_type == &PyTypeLayoutGenerator ) +#define PYLAYOUTGENERATOR(v) ( (PyLayoutGenerator*)(v) ) +#define PYLAYOUTGENERATOR_O(v) ( PYLAYOUTGENERATOR(v)->_object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_LAYOUT_GENERATOR_H diff --git a/hurricane/src/analog/hurricane/analog/PyLevelShifter.h b/hurricane/src/analog/hurricane/analog/PyLevelShifter.h new file mode 100644 index 00000000..f0662ab0 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyLevelShifter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyLevelShifter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_LEVEL_SHIFTER_H +#define ANALOG_PY_LEVEL_SHIFTER_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/LevelShifter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyLevelShifter". + + typedef struct { + PyTransistorPair _baseObject; + } PyLevelShifter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeLevelShifter; + extern PyMethodDef PyLevelShifter_Methods[]; + + extern PyObject* PyLevelShifter_Link ( Analog::LevelShifter* object ); + extern void PyLevelShifter_LinkPyType (); + + +#define IsPyLevelShifter(v) ( (v)->ob_type == &PyTypeLevelShifter ) +#define PYLEVELSHIFTER(v) ( (PyLevelShifter*)(v) ) +#define PYLEVELSHIFTER_O(v) ( PYLEVELSHIFTER(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_LEVEL_SHIFTER_H diff --git a/hurricane/src/analog/hurricane/analog/PyMCheckBoxParameter.h b/hurricane/src/analog/hurricane/analog/PyMCheckBoxParameter.h new file mode 100644 index 00000000..b242e2f4 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyMCheckBoxParameter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyMCheckBoxParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_M_CHECKBOX_PARAMETER_H +#define ANALOG_PY_M_CHECKBOX_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/MCheckBoxParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyMCheckBoxParameter". + + typedef struct { + PyParameter _baseObject; + } PyMCheckBoxParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeMCheckBoxParameter; + extern PyMethodDef PyMCheckBoxParameter_Methods[]; + + extern PyObject* PyMCheckBoxParameter_Link ( Analog::MCheckBoxParameter* object ); + extern void PyMCheckBoxParameter_LinkPyType (); + + +#define IsPyMCheckBoxParameter(v) ( (v)->ob_type == &PyTypeMCheckBoxParameter ) +#define PYMCHECKBOXPARAMETER(v) ( (PyMCheckBoxParameter*)(v) ) +#define PYMCHECKBOXPARAMETER_O(v) ( PYMCHECKBOXPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_M_CHECKBOX_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyMIMCapacitor.h b/hurricane/src/analog/hurricane/analog/PyMIMCapacitor.h new file mode 100644 index 00000000..8a31e494 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyMIMCapacitor.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyMIMCapacitor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_MIM_CAPACITOR_H +#define ANALOG_PY_MIM_CAPACITOR_H + +#include "hurricane/analog/PyCapacitorFamily.h" +#include "hurricane/analog/MIMCapacitor.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyMIMCapacitor". + + typedef struct { + PyCapacitorFamily _baseObject; + } PyMIMCapacitor; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeMIMCapacitor; + extern PyMethodDef PyMIMCapacitor_Methods[]; + + extern PyObject* PyMIMCapacitor_Link ( Analog::MIMCapacitor* object ); + extern void PyMIMCapacitor_LinkPyType (); + + +#define IsPyMIMCapacitor(v) ( (v)->ob_type == &PyTypeMIMCapacitor ) +#define PYMIMCAPACITOR(v) ( (PyMIMCapacitor*)(v) ) +#define PYMIMCAPACITOR_O(v) ( PYMIMCAPACITOR(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_MIM_CAPACITOR_H diff --git a/hurricane/src/analog/hurricane/analog/PyParameter.h b/hurricane/src/analog/hurricane/analog/PyParameter.h new file mode 100644 index 00000000..5f414dc7 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyParameter.h @@ -0,0 +1,59 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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++ Header : "./hurricane/analog/PyParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_PARAMETER_H +#define ANALOG_PY_PARAMETER_H + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/analog/Parameter.h" + + +namespace Isobar { + +using namespace Hurricane; + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyParameter". + + typedef struct { + PyObject_HEAD + Analog::Parameter* _object; + } PyParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.ccp". + + extern PyTypeObject PyTypeParameter; + extern PyMethodDef PyParameter_Methods[]; + + extern PyObject* PyParameter_Link ( Analog::Parameter* object ); + extern PyObject* PyParameter_LinkDerived ( Analog::Parameter* object ); + extern void PyParameter_LinkPyType (); + extern void PyParameter_postModuleInit (); + +# define IsPyParameter(v) ( (v)->ob_type == &PyTypeParameter ) +# define PYPARAMETER(v) ( (PyParameter*)(v) ) +# define PYPARAMETER_O(v) ( PYPARAMETER(v)->_object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PySimpleCurrentMirror.h b/hurricane/src/analog/hurricane/analog/PySimpleCurrentMirror.h new file mode 100644 index 00000000..4ec6cde4 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PySimpleCurrentMirror.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : ./hurricane/analog/PySimpleCurrentMirror.h | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_SIMPLE_CURRENT_MIRROR_H +#define ANALOG_PY_SIMPLE_CURRENT_MIRROR_H + +#include "hurricane/analog/PyTransistorPair.h" +#include "hurricane/analog/SimpleCurrentMirror.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PySimpleCurrentMirror". + + typedef struct { + PyTransistorPair _baseObject; + } PySimpleCurrentMirror; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeSimpleCurrentMirror; + extern PyMethodDef PySimpleCurrentMirror_Methods[]; + + extern PyObject* PySimpleCurrentMirror_Link ( Analog::SimpleCurrentMirror* object ); + extern void PySimpleCurrentMirror_LinkPyType (); + + +#define IsPySimpleCurrentMirror(v) ( (v)->ob_type == &PyTypeSimpleCurrentMirror ) +#define PYSIMPLECURRENTMIRROR(v) ( (PySimpleCurrentMirror*)(v) ) +#define PYSIMPLECURRENTMIRROR_O(v) ( PYSIMPLECURRENTMIRROR(v)->_baseObject->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_SIMPLE_CURRENT_MIRROR_H diff --git a/hurricane/src/analog/hurricane/analog/PySpinBoxParameter.h b/hurricane/src/analog/hurricane/analog/PySpinBoxParameter.h new file mode 100644 index 00000000..9dac6769 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PySpinBoxParameter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PySpinBoxParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_SPINBOX_PARAMETER_H +#define ANALOG_PY_SPINBOX_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/SpinBoxParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PySpinBoxParameter". + + typedef struct { + PyParameter _baseObject; + } PySpinBoxParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeSpinBoxParameter; + extern PyMethodDef PySpinBoxParameter_Methods[]; + + extern PyObject* PySpinBoxParameter_Link ( Analog::SpinBoxParameter* object ); + extern void PySpinBoxParameter_LinkPyType (); + + +#define IsPySpinBoxParameter(v) ( (v)->ob_type == &PyTypeSpinBoxParameter ) +#define PYSPINBOXPARAMETER(v) ( (PySpinBoxParameter*)(v) ) +#define PYSPINBOXPARAMETER_O(v) ( PYSPINBOXPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_SPINBOX_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyStepParameter.h b/hurricane/src/analog/hurricane/analog/PyStepParameter.h new file mode 100644 index 00000000..3859c956 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyStepParameter.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyStepParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_STEP_PARAMETER_H +#define ANALOG_PY_STEP_PARAMETER_H + +#include "hurricane/analog/PyParameter.h" +#include "hurricane/analog/StepParameter.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyStepParameter". + + typedef struct { + PyParameter _baseObject; + } PyStepParameter; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeStepParameter; + extern PyMethodDef PyStepParameter_Methods[]; + + extern PyObject* PyStepParameter_Link ( Analog::StepParameter* object ); + extern void PyStepParameter_LinkPyType (); + + +#define IsPyStepParameter(v) ( (v)->ob_type == &PyTypeStepParameter ) +#define PYSTEPPARAMETER(v) ( (PyStepParameter*)(v) ) +#define PYSTEPPARAMETER_O(v) ( PYSTEPPARAMETER(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_STEP_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/PyTransistor.h b/hurricane/src/analog/hurricane/analog/PyTransistor.h new file mode 100644 index 00000000..76ddad42 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyTransistor.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyTransistor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_TRANSISTOR_H +#define ANALOG_PY_TRANSISTOR_H + +#include "hurricane/analog/PyTransistorFamily.h" +#include "hurricane/analog/Transistor.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyTransistor". + + typedef struct { + PyTransistorFamily _baseObject; + } PyTransistor; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeTransistor; + extern PyMethodDef PyTransistor_Methods[]; + + extern PyObject* PyTransistor_Link ( Analog::Transistor* object ); + extern void PyTransistor_LinkPyType (); + + +#define IsPyTransistor(v) ( (v)->ob_type == &PyTypeTransistor ) +#define PYTRANSISTOR(v) ( (PyTransistor*)(v) ) +#define PYTRANSISTOR_O(v) ( PYTRANSISTOR(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_TRANSISTOR_H diff --git a/hurricane/src/analog/hurricane/analog/PyTransistorArguments.h b/hurricane/src/analog/hurricane/analog/PyTransistorArguments.h new file mode 100644 index 00000000..d442f851 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyTransistorArguments.h @@ -0,0 +1,55 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyTransistorArguments.h" | +// +-----------------------------------------------------------------+ + +#ifndef ANALOG_PY_TRANSISTOR_ARGUMENTS_H +#define ANALOG_PY_TRANSISTOR_ARGUMENTS_H + +#include "Python.h" +#include "hurricane/analog/TransistorArguments.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyTransistorArguments". + + typedef struct { + PyObject_HEAD + Analog::TransistorArguments* _object; + } PyTransistorArguments; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeTransistorArguments; + extern PyMethodDef PyTransistorArguments_Methods[]; + + extern void PyTransistorArguments_LinkPyType(); + extern void PyTransistorArguments_Constructor(); + + +#define IsPyTransistorArguments(v) ( (v)->ob_type == &PyTypeTransistorArguments ) +#define PYTRANSISTORARGUMENTS(v) ( (PyTransistorArguments*)(v) ) +#define PYTRANSISTORARGUMENTS_O(v) ( PYTRANSISTORARGUMENTS(v)->_object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif diff --git a/hurricane/src/analog/hurricane/analog/PyTransistorFamily.h b/hurricane/src/analog/hurricane/analog/PyTransistorFamily.h new file mode 100644 index 00000000..ee0cb585 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyTransistorFamily.h @@ -0,0 +1,56 @@ +// -*- 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++ Header : "./hurricane/analog/PyTransistorFamily.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_TRANSISTOR_FAMILY_H +#define ANALOG_PY_TRANSISTOR_FAMILY_H + +#include "hurricane/analog/PyDevice.h" +#include "hurricane/analog/TransistorFamily.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyTransistorFamily". + + typedef struct { + PyDevice _baseObject; + } PyTransistorFamily; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeTransistorFamily; + extern PyMethodDef PyTransistorFamily_Methods[]; + + extern PyObject* PyTransistorFamily_Link ( Analog::TransistorFamily* object ); + extern void PyTransistorFamily_LinkPyType (); + extern void PyTransistorFamily_postModuleInit (); + + +#define IsPyTransistorFamily(v) ( (v)->ob_type == &PyTypeTransistorFamily ) +#define PYTRANSISTORFAMILY(v) ( (PyTransistorFamily*)(v) ) +#define PYTRANSISTORFAMILY_O(v) ( PYTRANSISTORFAMILY(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_TRANSISTOR_FAMILY_H diff --git a/hurricane/src/analog/hurricane/analog/PyTransistorMultiArguments.h b/hurricane/src/analog/hurricane/analog/PyTransistorMultiArguments.h new file mode 100644 index 00000000..fb7b7f7c --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyTransistorMultiArguments.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +// +// This file is part of the Coriols 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/PyTransistorMultiArguments.h"| +// +-----------------------------------------------------------------+ + +#ifndef ANALOG_PY_TRANSISTOR_MULTI_ARGUMENTS_H +#define ANALOG_PY_TRANSISTOR_MULTI_ARGUMENTS_H + +#include "Python.h" +#include "hurricane/analog/TransistorMultiArguments.h" + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyTransistorMultiArguments". + + typedef struct { + PyObject_HEAD + Analog::TransistorMultiArguments* _object; + } PyTransistorMultiArguments; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeTransistorMultiArguments; + extern PyMethodDef PyTransistorMultiArguments_Methods[]; + + extern void PyTransistorMultiArguments_LinkPyType(); + extern void PyTransistorMultiArguments_Constructor(); + + +#define IsPyTransistorMultiArguments(v) ( (v)->ob_type == &PyTypeTransistorMultiArguments ) +#define PYTRANSISTORMULTIARGUMENTS(v) ( (PyTransistorMultiArguments*)(v) ) +#define PYTRANSISTORMULTIARGUMENTS_O(v) ( PYTRANSISTORMULTIARGUMENTS(v)->_object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif diff --git a/hurricane/src/analog/hurricane/analog/PyTransistorPair.h b/hurricane/src/analog/hurricane/analog/PyTransistorPair.h new file mode 100644 index 00000000..8c537035 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/PyTransistorPair.h @@ -0,0 +1,55 @@ +// -*- 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++ Header : "./hurricane/analog/PyTransistorPair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_PY_TRANSISTOR_PAIR_H +#define ANALOG_PY_TRANSISTOR_PAIR_H + +#include "hurricane/analog/PyTransistorFamily.h" +#include "hurricane/analog/TransistorPair.h" + + +namespace Isobar { + +extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyTransistorPair". + + typedef struct { + PyTransistorFamily _baseObject; + } PyTransistorPair; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeTransistorPair; + extern PyMethodDef PyTransistorPair_Methods[]; + + extern PyObject* PyTransistorPair_Link ( Analog::TransistorPair* object ); + extern void PyTransistorPair_LinkPyType (); + + +#define IsPyTransistorPair(v) ( (v)->ob_type == &PyTypeTransistorPair ) +#define PYTRANSISTORPAIR(v) ( (PyTransistorPair*)(v) ) +#define PYTRANSISTORPAIR_O(v) ( PYTRANSISTORPAIR(v)->_baseObject->_baseObject._object ) + + +} // extern "C". + +} // Isobar namespace. + +#endif // ANALOG_PY_TRANSISTOR_PAIR_H diff --git a/hurricane/src/analog/hurricane/analog/SimpleCurrentMirror.h b/hurricane/src/analog/hurricane/analog/SimpleCurrentMirror.h new file mode 100644 index 00000000..78fabf84 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/SimpleCurrentMirror.h @@ -0,0 +1,47 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/SimpleCurrentMirror.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_SIMPLE_CURRENT_MIRROR_H +#define ANALOG_SIMPLE_CURRENT_MIRROR_H + +#include "hurricane/analog/TransistorPair.h" + +namespace Analog { + + + class SimpleCurrentMirror : public TransistorPair { + public: + typedef TransistorPair Super; + public: + static SimpleCurrentMirror* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + unsigned int getRestriction ( Hurricane::Net* net ) const; + + protected: + SimpleCurrentMirror ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + virtual void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _scmBulkConnectedName; + static const Hurricane::Name _scmBulkUnconnectedName; + }; + + +} // Analog namespace. + +#endif // ANALOG_SIMPLE_CURRENT_MIRROR_H diff --git a/hurricane/src/analog/hurricane/analog/SpinBoxParameter.h b/hurricane/src/analog/hurricane/analog/SpinBoxParameter.h new file mode 100644 index 00000000..37a78232 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/SpinBoxParameter.h @@ -0,0 +1,50 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/SpinBoxParameter.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_SPINBOX_PARAMETER_H +#define ANALOG_SPINBOX_PARAMETER_H + +#include "hurricane/analog/Parameter.h" + +namespace Analog { + + + class SpinBoxParameter : public Parameter { + public: + inline SpinBoxParameter ( std::string id, long min, long max ); + inline long getMin () const; + inline long getMax () const; + inline long getValue () const; + inline operator long () const; + inline void setValue ( long value ); + private: + long _min; + long _max; + long _value; + }; + + + inline SpinBoxParameter::SpinBoxParameter ( std::string id, long min, long max ): Parameter(id), _min(min), _max(max), _value(min) { } + inline long SpinBoxParameter::getMin () const { return _min; } + inline long SpinBoxParameter::getMax () const { return _max; } + inline long SpinBoxParameter::getValue () const { return _value; } + inline SpinBoxParameter::operator long () const { return getValue(); } + inline void SpinBoxParameter::setValue ( long value ) { _value = value; } + + +} // Analog namespace. + +#endif // ANALOG_SPINBOX_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/StepParameter.h b/hurricane/src/analog/hurricane/analog/StepParameter.h new file mode 100644 index 00000000..27a11e98 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/StepParameter.h @@ -0,0 +1,52 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Choices.h" | +// +-----------------------------------------------------------------+ + +#ifndef ANALOG_STEP_PARAMETER_H +#define ANALOG_STEP_PARAMETER_H + +#include "hurricane/analog/Parameter.h" + + +namespace Analog { + + class StepParameter : public Parameter { + public: + inline StepParameter ( std::string id, long min, long max, long step ); + inline long getMin () const; + inline long getMax () const; + inline long getStep () const; + inline long getValue () const; + inline operator long () const; + inline void setValue ( long ); + private: + long _min; + long _max; + long _step; + long _value; + }; + + + inline StepParameter::StepParameter ( std::string id, long min, long max, long step ): Parameter(id), _min(min), _max(max), _step(step), _value(min) {} + inline long StepParameter::getMin () const { return _min; } + inline long StepParameter::getMax () const { return _max; } + inline long StepParameter::getStep () const { return _step; } + inline long StepParameter::getValue () const { return _value; } + inline StepParameter::operator long () const { return getValue(); } + inline void StepParameter::setValue ( long value ) { _value = value; } + + +} // Analog namespace. + +#endif // ANALOG_STEP_PARAMETER_H diff --git a/hurricane/src/analog/hurricane/analog/Transistor.h b/hurricane/src/analog/hurricane/analog/Transistor.h new file mode 100644 index 00000000..907e260a --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/Transistor.h @@ -0,0 +1,51 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/Transistor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_TRANSISTOR_H +#define ANALOG_TRANSISTOR_H + +#include "hurricane/analog/TransistorFamily.h" + +namespace Analog { + + + class Transistor : public TransistorFamily { + public: + typedef TransistorFamily Super; + public: + static Transistor* create ( Hurricane::Library* + , const Hurricane::Name& + , const Type& + , bool bulkConnected ); + virtual Hurricane::Name getDeviceName () const; + virtual Arguments* getArguments (); + unsigned int getRestriction ( Hurricane::Net* net ) const; + bool isSame (Transistor* ts); + + protected: + Transistor ( Hurricane::Library* , const Hurricane::Name& , const Type& ); + virtual void _postCreate ( const Hurricane::Name& deviceName ); + virtual void createConnections ( bool bulkConnected ); + private: + static const Hurricane::Name _transistorBulkConnectedName; + static const Hurricane::Name _transistorBulkUnconnectedName; + MetaTransistor* _metaTransistor; + }; + + +} // Analog namespace. + +#endif // ANALOG_TRANSISTOR_H diff --git a/hurricane/src/analog/hurricane/analog/TransistorArguments.h b/hurricane/src/analog/hurricane/analog/TransistorArguments.h new file mode 100644 index 00000000..ded9fde5 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/TransistorArguments.h @@ -0,0 +1,76 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/TransistorArguments.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_TRANSISTOR_ARGUMENTS_H +#define ANALOG_TRANSISTOR_ARGUMENTS_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/Arguments.h" + +namespace Analog { + + + class TransistorArguments : public Arguments { + public: + typedef Arguments Super; + public: + TransistorArguments ( bool isNMOS + , bool isBulkConnected + , bool isSourceFirst + , std::string bulkType + , Hurricane::DbU::Unit w + , Hurricane::DbU::Unit l + , unsigned m + , unsigned externalDummy ); + TransistorArguments ( const TransistorArguments& tArgs ); + virtual TransistorArguments* getClone (); + inline bool isNMOS () const; + inline bool isBulkConnected () const; + inline bool isSourceFirst () const; + inline unsigned int getM () const; + inline unsigned int getExternalDummy () const; + inline std::string getBulkType () const; + inline Hurricane::DbU::Unit getW () const; + inline Hurricane::DbU::Unit getL () const; + inline void setM ( unsigned int m); + inline void setExternalDummy ( unsigned int externalDummy ); + private: + bool _isNMOS; + bool _isBulkConnected; + bool _isSourceFirst; + std::string _bulkType; + Hurricane::DbU::Unit _w; + Hurricane::DbU::Unit _l; + unsigned _m; + unsigned _externalDummy; + }; + + + inline bool TransistorArguments::isNMOS () const { return _isNMOS; }; + inline bool TransistorArguments::isBulkConnected () const { return _isBulkConnected; }; + inline bool TransistorArguments::isSourceFirst () const { return _isSourceFirst; }; + inline unsigned int TransistorArguments::getM () const { return _m; }; + inline unsigned int TransistorArguments::getExternalDummy () const { return _externalDummy; }; + inline std::string TransistorArguments::getBulkType () const { return _bulkType; }; + inline Hurricane::DbU::Unit TransistorArguments::getW () const { return _w; }; + inline Hurricane::DbU::Unit TransistorArguments::getL () const { return _l; }; + inline void TransistorArguments::setM ( unsigned int m) { _m = m; }; + inline void TransistorArguments::setExternalDummy ( unsigned int externalDummy ) { _externalDummy = externalDummy; }; + + +} // Analog namespace. + +#endif // ANALOG_TRANSISTOR_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/TransistorFamily.h b/hurricane/src/analog/hurricane/analog/TransistorFamily.h new file mode 100644 index 00000000..2ab65d86 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/TransistorFamily.h @@ -0,0 +1,179 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/TransistorFamily.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_TRANSISTOR_FAMILY_H +#define ANALOG_TRANSISTOR_FAMILY_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/Device.h" +#include "hurricane/analog/MetaTransistor.h" + +namespace Hurricane { + class Name; + class Library; +} + + +namespace Analog { + + + class TransistorFamily : public Device { + public: + typedef Device Super; + + enum Type { NMOS=1, PMOS }; + public: + inline MetaTransistor* getReferenceTransistor (); + inline const MetaTransistor* getReferenceTransistor () const; + inline const Type& getType () const; + // Geometrical (layout) parameters commons to all MOS transistors. + inline bool isNMOS () const; + inline bool isPMOS () const; + inline bool isBulkConnected () const; + inline bool isSourceFirst () const; + inline long getBulkType () const; + inline float getWmin () const; + inline float getWmax () const; + inline int getNfing () const; + inline DbU::Unit getW () const; + inline DbU::Unit getL () const; + inline long getM () const; + inline long getExternalDummy () const; + inline void setSourceFirst ( const bool ); + inline void setWmin ( float ); + inline void setWmax ( float ); + inline void setNfing ( int ); + inline void setExternalDummy ( long ); + inline void setBulkType ( long ); + // Electrical parameters commons to all MOS transistors. + inline float getWE () const; + inline float getLE () const; + inline float getIDS () const; + inline float getVGS () const; + inline float getVDS () const; + inline float getVBS () const; + inline float getVG () const; + inline float getVD () const; + inline float getVS () const; + inline float getVB () const; + inline float getVEG () const; + inline float getVTH () const; + inline void setWE ( float ); + inline void setLE ( float ); + inline void setIDS ( float ); + inline void setVGS ( float ); + inline void setVDS ( float ); + inline void setVBS ( float ); + inline void setVG ( float ); + inline void setVD ( float ); + inline void setVS ( float ); + inline void setVB ( float ); + inline void setVEG ( float ); + inline void setVTH ( float ); + // Sizing parameters commons to all MOS transistors. + inline int getOperatorIndex () const; + inline void setOperatorIndex ( int ); + + protected: + TransistorFamily ( Hurricane::Library* + , const Hurricane::Name& + , const Type& ); + void _postCreate ( const Name& deviceName ); + inline void setReferenceTransistor ( MetaTransistor* ); + virtual void createConnections ( bool bulkConnected ) = 0; + private: + inline MetaTransistor* _secureGetReferenceTransistor (); + inline const MetaTransistor* _secureGetReferenceTransistor () const; + private: + const Type _type; + MetaTransistor* _referenceTransistor; + int _operatorIndex; + StepParameter* _w; + StepParameter* _l; + FormFactorParameter* _m; + SpinBoxParameter* _externalDummy; + MCheckBoxParameter* _sourceFirst; + MCheckBoxParameter* _bulkType; + }; + + + inline MetaTransistor* TransistorFamily::getReferenceTransistor () { return _referenceTransistor; } + inline const MetaTransistor* TransistorFamily::getReferenceTransistor () const { return _referenceTransistor; } + inline const TransistorFamily::Type& TransistorFamily::getType () const { return _type; } + inline int TransistorFamily::getOperatorIndex () const { return _operatorIndex; } + inline void TransistorFamily::setOperatorIndex ( int i ) { _operatorIndex = i; } + inline void TransistorFamily::setReferenceTransistor ( MetaTransistor* mt ) { _referenceTransistor = mt; } + inline bool TransistorFamily::isNMOS () const { return getType() == NMOS; } + inline bool TransistorFamily::isPMOS () const { return getType() == PMOS; } + inline bool TransistorFamily::isBulkConnected () const { return !getNet(Hurricane::Name("B")); } + inline bool TransistorFamily::isSourceFirst () const { return (_sourceFirst->getValue() == 1); } + // Mutators. + inline void TransistorFamily::setSourceFirst ( const bool sourceFirst ) { _sourceFirst->setValue ( (sourceFirst)?1:0 ); } + inline void TransistorFamily::setWmin ( float wmin ) { _secureGetReferenceTransistor()->setWmin (wmin ); } + inline void TransistorFamily::setWmax ( float wmax ) { _secureGetReferenceTransistor()->setWmax (wmax ); } + inline void TransistorFamily::setNfing ( int nfing ) { _secureGetReferenceTransistor()->setNfing(nfing); } + inline void TransistorFamily::setExternalDummy ( long ndumm ) { _externalDummy->setValue(ndumm); } + inline void TransistorFamily::setBulkType ( long btype ) { _bulkType->setValue(btype); } + inline void TransistorFamily::setWE ( float we ) { _secureGetReferenceTransistor()->setWE (we ); } + inline void TransistorFamily::setLE ( float le ) { _secureGetReferenceTransistor()->setLE (le ); } + inline void TransistorFamily::setIDS ( float ids ) { _secureGetReferenceTransistor()->setIDS (ids ); } + inline void TransistorFamily::setVGS ( float vgs ) { _secureGetReferenceTransistor()->setVGS (vgs ); } + inline void TransistorFamily::setVDS ( float vds ) { _secureGetReferenceTransistor()->setVDS (vds ); } + inline void TransistorFamily::setVBS ( float vbs ) { _secureGetReferenceTransistor()->setVBS (vbs ); } + inline void TransistorFamily::setVG ( float vg ) { _secureGetReferenceTransistor()->setVG (vg ); } + inline void TransistorFamily::setVD ( float vd ) { _secureGetReferenceTransistor()->setVD (vd ); } + inline void TransistorFamily::setVS ( float vs ) { _secureGetReferenceTransistor()->setVS (vs ); } + inline void TransistorFamily::setVB ( float vb ) { _secureGetReferenceTransistor()->setVB (vb ); } + inline void TransistorFamily::setVEG ( float veg ) { _secureGetReferenceTransistor()->setVEG (veg ); } + inline void TransistorFamily::setVTH ( float vth ) { _secureGetReferenceTransistor()->setVTH (vth ); } + // Accessors. + inline float TransistorFamily::getWmin () const { return _secureGetReferenceTransistor()->getWmin (); } + inline float TransistorFamily::getWmax () const { return _secureGetReferenceTransistor()->getWmax (); } + inline int TransistorFamily::getNfing () const { return _secureGetReferenceTransistor()->getNfing(); } + inline DbU::Unit TransistorFamily::getW () const { return _w->getValue(); } + inline DbU::Unit TransistorFamily::getL () const { return _l->getValue(); } + inline long TransistorFamily::getM () const { return _m->getValue(); } + inline long TransistorFamily::getExternalDummy () const { return _externalDummy->getValue(); } + inline long TransistorFamily::getBulkType () const { return _bulkType->getValue(); } + inline float TransistorFamily::getWE () const { return _secureGetReferenceTransistor()->getWE (); } + inline float TransistorFamily::getLE () const { return _secureGetReferenceTransistor()->getLE (); } + inline float TransistorFamily::getIDS () const { return _secureGetReferenceTransistor()->getIDS (); } + inline float TransistorFamily::getVGS () const { return _secureGetReferenceTransistor()->getVGS (); } + inline float TransistorFamily::getVDS () const { return _secureGetReferenceTransistor()->getVDS (); } + inline float TransistorFamily::getVBS () const { return _secureGetReferenceTransistor()->getVBS (); } + inline float TransistorFamily::getVG () const { return _secureGetReferenceTransistor()->getVG (); } + inline float TransistorFamily::getVD () const { return _secureGetReferenceTransistor()->getVD (); } + inline float TransistorFamily::getVS () const { return _secureGetReferenceTransistor()->getVS (); } + inline float TransistorFamily::getVB () const { return _secureGetReferenceTransistor()->getVB (); } + inline float TransistorFamily::getVEG () const { return _secureGetReferenceTransistor()->getVEG (); } + inline float TransistorFamily::getVTH () const { return _secureGetReferenceTransistor()->getVTH (); } + + inline MetaTransistor* TransistorFamily::_secureGetReferenceTransistor () + { + if (!_referenceTransistor) throw Hurricane::Error("No MetaTransistor"); + return _referenceTransistor; + } + + inline const MetaTransistor* TransistorFamily::_secureGetReferenceTransistor () const + { + if (!_referenceTransistor) throw Hurricane::Error("No MetaTransistor"); + return _referenceTransistor; + } + + +} // Analog namespace. + +#endif // ANALOG_TRANSISTOR_FAMILY_H diff --git a/hurricane/src/analog/hurricane/analog/TransistorFamilyNames.h b/hurricane/src/analog/hurricane/analog/TransistorFamilyNames.h new file mode 100644 index 00000000..7ac88b81 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/TransistorFamilyNames.h @@ -0,0 +1,66 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/TransistorFamilyNames.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_TRANSISTOR_FAMILY_NAMES_H +#define ANALOG_TRANSISTOR_FAMILY_NAMES_H + +namespace Analog { + + + class TransistorFamilyNames { + public: + static const char* PMOSTransistorBU; + static const char* PMOSTransistorBC; + static const char* NMOSTransistorBU; + static const char* NMOSTransistorBC; + static const char* PMOSDifferentialPairBU; + static const char* PMOSDifferentialPairBC; + static const char* NMOSDifferentialPairBU; + static const char* NMOSDifferentialPairBC; + static const char* PMOSSimpleCurrentMirrorBU; + static const char* PMOSSimpleCurrentMirrorBC; + static const char* NMOSSimpleCurrentMirrorBU; + static const char* NMOSSimpleCurrentMirrorBC; + static const char* PMOSLevelShifterBU; + static const char* PMOSLevelShifterBC; + static const char* NMOSLevelShifterBU; + static const char* NMOSLevelShifterBC; + static const char* PMOSCrossCoupledPairBU; + static const char* PMOSCrossCoupledPairBC; + static const char* NMOSCrossCoupledPairBU; + static const char* NMOSCrossCoupledPairBC; + static const char* PMOSCommonSourcePairBU; + static const char* PMOSCommonSourcePairBC; + static const char* NMOSCommonSourcePairBU; + static const char* NMOSCommonSourcePairBC; + static const char* PMOSCommonGatePairBU; + static const char* PMOSCommonGatePairBC; + static const char* NMOSCommonGatePairBU; + static const char* NMOSCommonGatePairBC; + static const char* PMOSCommonDrainBU; + static const char* PMOSCommonDrainBC; + static const char* NMOSCommonDrainBU; + static const char* NMOSCommonDrainBC; + static const char* PMOSCascodeBU; + static const char* PMOSCascodeBC; + static const char* NMOSCascodeBU; + static const char* NMOSCascodeBC; + }; + + +} // Analog namespace. + +#endif // ANALOG_TRANSISTOR_FAMILY_NAMES_H diff --git a/hurricane/src/analog/hurricane/analog/TransistorMultiArguments.h b/hurricane/src/analog/hurricane/analog/TransistorMultiArguments.h new file mode 100644 index 00000000..ba347a57 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/TransistorMultiArguments.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/TransistorMultiArguments.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_TRANSISTOR_MULTI_ARGUMENTS_H +#define ANALOG_TRANSISTOR_MULTI_ARGUMENTS_H + +#include "hurricane/DbU.h" +#include "hurricane/analog/TransistorArguments.h" + +namespace Analog { + + + class TransistorMultiArguments : public TransistorArguments { + public: + typedef TransistorArguments Super; + public: + TransistorMultiArguments ( bool isNMOS + , bool isBulkConnected + , bool isSourceFirst + , std::string bulkType + , Hurricane::DbU::Unit w + , Hurricane::DbU::Unit l + , unsigned int m + , unsigned int mint + , unsigned int externalDummy ); + TransistorMultiArguments ( const TransistorMultiArguments& ); + virtual TransistorMultiArguments* getClone (); + inline unsigned int getMInt () const; + inline void setMInt ( Hurricane::DbU::Unit mint); + private: + unsigned _mint; + }; + + + inline unsigned int TransistorMultiArguments::getMInt () const { return _mint; }; + inline void TransistorMultiArguments::setMInt ( Hurricane::DbU::Unit mint) { _mint = mint; }; + + +} // Analog namespace. + +#endif // ANALOG_TRANSISTOR_MULTI_ARGUMENTS_H diff --git a/hurricane/src/analog/hurricane/analog/TransistorPair.h b/hurricane/src/analog/hurricane/analog/TransistorPair.h new file mode 100644 index 00000000..d99d7248 --- /dev/null +++ b/hurricane/src/analog/hurricane/analog/TransistorPair.h @@ -0,0 +1,48 @@ +// -*- 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 : C. Alexandre, J.-M. Caba | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/TransistorPair.h" | +// +-----------------------------------------------------------------+ + + +#ifndef ANALOG_TRANSISTOR_PAIR_H +#define ANALOG_TRANSISTOR_PAIR_H + +#include "hurricane/analog/TransistorFamily.h" + +namespace Analog { + + + class TransistorPair : public TransistorFamily { + public: + typedef TransistorFamily Super; + public: + virtual Arguments* getArguments (); + inline long getMint () const; + inline void setMint ( long ); + protected: + TransistorPair ( Hurricane::Library*, const Hurricane::Name&, const Type& ); + virtual void _postCreate ( const Hurricane::Name& deviceName ); + protected: + MetaTransistor* _m1; + MetaTransistor* _m2; + SpinBoxParameter* _mInt; + }; + + + inline long TransistorPair::getMint () const { return _mInt->getValue(); } + inline void TransistorPair::setMint ( long mint ) { _mInt->setValue(mint); } + + +} // Analog namespace. + +#endif // ANALOG_TRANSISTOR_PAIR_H diff --git a/hurricane/src/hurricane/CMakeLists.txt b/hurricane/src/hurricane/CMakeLists.txt index 013c1534..d47de7eb 100644 --- a/hurricane/src/hurricane/CMakeLists.txt +++ b/hurricane/src/hurricane/CMakeLists.txt @@ -102,6 +102,12 @@ hurricane/Views.h hurricane/Warning.h hurricane/TextTranslator.h + hurricane/DeviceDescriptor.h + hurricane/ModelDescriptor.h + hurricane/Rule.h + hurricane/UnitRule.h + hurricane/PhysicalRule.h + hurricane/TwoLayersPhysicalRule.h ) set ( cpps Record.cpp Slot.cpp @@ -187,6 +193,11 @@ Marker.cpp Timer.cpp TextTranslator.cpp + DeviceDescriptor.cpp + Rule.cpp + UnitRule.cpp + PhysicalRule.cpp + TwoLayersPhysicalRule.cpp ) add_library ( hurricane ${cpps} ) diff --git a/hurricane/src/hurricane/DeviceDescriptor.cpp b/hurricane/src/hurricane/DeviceDescriptor.cpp new file mode 100644 index 00000000..9d5a9a7e --- /dev/null +++ b/hurricane/src/hurricane/DeviceDescriptor.cpp @@ -0,0 +1,47 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./DeviceDescriptor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/Error.h" +#include "hurricane/DeviceDescriptor.h" + + +namespace Hurricane { + + + DeviceDescriptor::DeviceDescriptor ( const Name& name ) + : _name (name) + , _spiceFilePath() + , _connectors () + , _layouts () + { } + + + void DeviceDescriptor::addConnector ( const string& connector ) + { _connectors.push_back( connector ); } + + + void DeviceDescriptor::addLayout ( const Name& layoutName, const string& moduleName ) + { + Layouts::iterator lit = _layouts.find( layoutName ); + if (lit != _layouts.end()) + throw Error( "DeviceDescriptor::addLayout(): Attemp to add same layout \"%\" twice." + , getString(layoutName).c_str() ); + + _layouts[ layoutName ] = moduleName; + } + + +} // Hurricane namespace. diff --git a/hurricane/src/hurricane/PhysicalRule.cpp b/hurricane/src/hurricane/PhysicalRule.cpp new file mode 100644 index 00000000..d1307b65 --- /dev/null +++ b/hurricane/src/hurricane/PhysicalRule.cpp @@ -0,0 +1,39 @@ +// -*- 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./PhysicalRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/PhysicalRule.h" + + +namespace Hurricane { + + using namespace std; + + + PhysicalRule::~PhysicalRule () { } + + + string PhysicalRule::_getTypeName () const { return "PhysicalRule"; } + string PhysicalRule::_getString () const { return "<" + _getTypeName() + " " + getString(getName()) + ">"; } + + Record* PhysicalRule::_getRecord () const + { + Record* record = Super::_getRecord(); + record->add( getSlot( "_value", &_value ) ); + return record; + } + + +} // Hurricane namespace. diff --git a/hurricane/src/hurricane/Rule.cpp b/hurricane/src/hurricane/Rule.cpp new file mode 100644 index 00000000..89c94943 --- /dev/null +++ b/hurricane/src/hurricane/Rule.cpp @@ -0,0 +1,41 @@ +// -*- 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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./Rule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/Rule.h" + + +namespace Hurricane { + + using namespace std; + + + Rule::~Rule () { } + + + string Rule::_getTypeName () const { return "Rule"; } + string Rule::_getString () const { return "<" + _getTypeName() + " " + getString(_name) + ">"; } + + + Record* Rule::_getRecord() const + { + Record* record = new Record ( getString(this) ); + record->add( getSlot("_name" , &_name ) ); + record->add( getSlot("_reference", &_reference) ); + return record; + } + + +} // Hurricane namespace. diff --git a/hurricane/src/hurricane/Technology.cpp b/hurricane/src/hurricane/Technology.cpp index e2841352..32ec4e0e 100644 --- a/hurricane/src/hurricane/Technology.cpp +++ b/hurricane/src/hurricane/Technology.cpp @@ -1,21 +1,32 @@ -// **************************************************************************************************** -// File: ./Technology.cpp -// Authors: R. Escassut +// -*- C++ -*- +// // Copyright (c) BULL S.A. 2000-2018, All Rights Reserved // // This file is part of Hurricane. // -// Hurricane is free software: you can redistribute it and/or modify it under the terms of the GNU -// Lesser General Public License as published by the Free Software Foundation, either version 3 of the +// Hurricane is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // -// Hurricane is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even -// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU +// Hurricane is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- +// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU // General Public License for more details. // -// You should have received a copy of the Lesser GNU General Public License along with Hurricane. If -// not, see . -// **************************************************************************************************** +// You should have received a copy of the Lesser GNU General Public +// License along with Hurricane. If not, see +// . +// +// +-----------------------------------------------------------------+ +// | H U R R I C A N E | +// | V L S I B a c k e n d D a t a - B a s e | +// | | +// | Author : Remy Escassut | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./Technology.cpp" | +// +-----------------------------------------------------------------+ #include "hurricane/Warning.h" #include "hurricane/Error.h" @@ -27,174 +38,167 @@ #include "hurricane/RegularLayer.h" #include "hurricane/ViaLayer.h" #include "hurricane/Error.h" +#include "hurricane/UnitRule.h" +#include "hurricane/PhysicalRule.h" +#include "hurricane/TwoLayersPhysicalRule.h" namespace { + using namespace std; + using namespace Hurricane; + + class CompareByMask { public: bool operator() ( const Hurricane::Layer* lhs, const Hurricane::Layer* rhs ) { if (not lhs) return rhs; if (not rhs) return false; - return lhs->getMask() < rhs->getMask(); } }; + + inline string quote ( string field ) { return "'"+field+"'"; } + inline string quote ( Name field ) { return "'"+getString(field)+"'"; } + + + void printRule ( const PhysicalRule* rule ) + { + cout << " - name = " << rule->getName() + << " value = " << rule->getValue() + << " ref = " << rule->getReference() << endl; + } + + + void printRules ( const Technology::PhysicalRules& rules ) + { for ( PhysicalRule* rule : rules ) printRule( rule ); } + + + void printRules ( const Technology::TwoLayersRulesSet& rules ) + { for ( TwoLayersPhysicalRule* rule : rules ) printRule( rule ); } + + } // Anonymous namespace. namespace Hurricane { +// ------------------------------------------------------------------- +// Class : "Hurricane::Technology_BasicLayers" Collection. -// **************************************************************************************************** -// Technology_BasicLayers declaration -// **************************************************************************************************** -class Technology_BasicLayers : public Collection { -// ********************************************************** + class Technology_BasicLayers : public Collection { + public: + typedef Collection Super; -// Types -// ***** + public: + class Locator : public Hurricane::Locator { + public: + typedef Hurricane::Locator Super; + public: + Locator (); + Locator ( const Technology* , const Layer::Mask& ); + Locator ( const Locator& ); + Locator& operator= ( const Locator& ); + virtual BasicLayer* getElement () const; + virtual Hurricane::Locator* getClone () const; + virtual bool isValid () const; + virtual void progress (); + virtual string _getString () const; + private: + const Technology* _technology; + Layer::Mask _mask; + BasicLayerLocator _basicLayerLocator; + }; - public: typedef Collection Inherit; + public: + Technology_BasicLayers (); + Technology_BasicLayers ( const Technology* , const Layer::Mask& ); + Technology_BasicLayers ( const Technology_BasicLayers& ); + Technology_BasicLayers& operator= ( const Technology_BasicLayers& ); + virtual Collection* getClone () const; + virtual Hurricane::Locator* getLocator () const; + virtual string _getString () const; + private: + const Technology* _technology; + Layer::Mask _mask; + + }; - public: class Locator : public Hurricane::Locator { - // *********************************************************** - public: typedef Hurricane::Locator Inherit; +// ------------------------------------------------------------------- +// Class : "Hurricane::Technology". - private: const Technology* _technology; - private: Layer::Mask _mask; - private: BasicLayerLocator _basicLayerLocator; - public: Locator(); - public: Locator(const Technology* technology, const Layer::Mask& mask); - public: Locator(const Locator& locator); - - public: Locator& operator=(const Locator& locator); - - public: virtual BasicLayer* getElement() const; - public: virtual Hurricane::Locator* getClone() const; - - public: virtual bool isValid() const; - - public: virtual void progress(); - - public: virtual string _getString() const; - - }; - -// Attributes -// ********** - - private: const Technology* _technology; - private: Layer::Mask _mask; - -// Constructors -// ************ - - public: Technology_BasicLayers(); - public: Technology_BasicLayers(const Technology* technology, const Layer::Mask& mask); - public: Technology_BasicLayers(const Technology_BasicLayers& basicLayers); - -// Operators -// ********* - - public: Technology_BasicLayers& operator=(const Technology_BasicLayers& basicLayers); - -// Accessors -// ********* - - public: virtual Collection* getClone() const; - public: virtual Hurricane::Locator* getLocator() const; - -// Others -// ****** - - public: virtual string _getString() const; - -}; - -// **************************************************************************************************** -// Technology implementation -// **************************************************************************************************** - -Technology::Technology(DataBase* dataBase, const Name& name) -// ********************************************************* -: Inherit(), - _dataBase(dataBase), - _name(name), - _layerMap(), - _layerMaskMap() -{ - if (!_dataBase) - throw Error("Can't create " + _TName("Technology") + " : null data base"); + Technology::Technology ( DataBase* dataBase, const Name& name ) + : Super() + , _dataBase (dataBase) + , _name (name) + , _layerMap () + , _layerMaskMap () + , _unitRules () + , _noLayerRules () + , _oneLayerRules () + , _twoLayersRules() + { + if (not _dataBase) + throw Error( "Technology::Technology(): Can't create Technology, NULL data base." ); if (_dataBase->getTechnology()) - throw Error("Can't create " + _TName("Technology") + " : already exists"); + throw Error( "Technology::Technology(): Can't create Technology, already exists."); if (_name.isEmpty()) - throw Error("Can't create " + _TName("Technology") + " : empty name"); -} + throw Error( "Technology::Technology(): Can't create Technology, empty name."); + } -Technology* Technology::create(DataBase* dataBase, const Name& name) -// ***************************************************************** -{ - Technology* technology = new Technology(dataBase, name); + Technology* Technology::create ( DataBase* dataBase, const Name& name ) + { + Technology* technology = new Technology( dataBase, name ); technology->_postCreate(); - + return technology; -} + } -BasicLayer* Technology::getBasicLayer(const Name& name) const -// ********************************************************** -{ + + BasicLayer* Technology::getBasicLayer ( const Name& name ) const + { Layer* layer = getLayer(name); - return (layer && dynamic_cast(layer)) ? (BasicLayer*)layer : NULL; -} + return (layer and dynamic_cast(layer)) ? (BasicLayer*)layer : NULL; + } -RegularLayer* Technology::getRegularLayer(const Name& name) const -// ********************************************************** -{ + + RegularLayer* Technology::getRegularLayer ( const Name& name ) const + { Layer* layer = getLayer(name); - return (layer && dynamic_cast(layer)) ? (RegularLayer*)layer : NULL; -} + return (layer and dynamic_cast(layer)) ? (RegularLayer*)layer : NULL; + } -ViaLayer* Technology::getViaLayer(const Name& name) const -// ****************************************************************** -{ + + ViaLayer* Technology::getViaLayer ( const Name& name ) const + { Layer* layer = getLayer(name); - return (layer && dynamic_cast(layer)) ? (ViaLayer*)layer : NULL; -} + return (layer and dynamic_cast(layer)) ? (ViaLayer*)layer : NULL; + } -BasicLayers Technology::getBasicLayers() const -// ******************************************* -{ - // return getLayers().getSubSet(); - return SubTypeCollection(getLayers()); -} -BasicLayers Technology::getBasicLayers(const Layer::Mask& mask) const -// ****************************************************************** -{ - return Technology_BasicLayers(this, mask); -} + BasicLayers Technology::getBasicLayers () const + { return SubTypeCollection(getLayers()); } -RegularLayers Technology::getRegularLayers() const -// *********************************************** -{ - return SubTypeCollection(getLayers()); -} -ViaLayers Technology::getViaLayers() const -// *************************************** -{ - return SubTypeCollection(getLayers()); -} + BasicLayers Technology::getBasicLayers ( const Layer::Mask& mask ) const + { return Technology_BasicLayers(this, mask); } + + + RegularLayers Technology::getRegularLayers () const + { return SubTypeCollection(getLayers()); } + + + ViaLayers Technology::getViaLayers () const + { return SubTypeCollection(getLayers()); } Layer* Technology::getLayer ( const Layer::Mask& mask, bool useSymbolic ) const @@ -301,16 +305,14 @@ ViaLayers Technology::getViaLayers() const { for ( Layer* layer : getLayers() ) layer->_onDbuChange( scale ); } -void Technology::setName(const Name& name) -// *************************************** -{ + void Technology::setName ( const Name& name ) + { if (name != _name) { - if (name.isEmpty()) - throw Error("Can't change technology name : empty name"); - - _name = name; + if (name.isEmpty()) + throw Error( "Technology::setName(): Empty name argument." ); + _name = name; } -} + } bool Technology::setSymbolicLayer ( const Name& name ) @@ -338,381 +340,627 @@ void Technology::setName(const Name& name) } -void Technology::_postCreate() -// *************************** -{ - Inherit::_postCreate(); + void Technology::_postCreate() + { + Super::_postCreate(); + _dataBase->_setTechnology( this ); + } - _dataBase->_setTechnology(this); -} -void Technology::_preDestroy() -// ************************** -{ - - while ( not _layerMap.isEmpty() ) { + void Technology::_preDestroy () + { + while (not _layerMap.isEmpty()) { _layerMap.getElements().getFirst()->destroy(); } - _dataBase->_setTechnology(NULL); - DBo::_preDestroy(); -} - -void Technology::_insertInLayerMaskMap ( Layer* layer ) -// **************************************************** -{ - _layerMaskMap.insert ( make_pair(layer->getMask(),layer) ); -} - -void Technology::_removeFromLayerMaskMap ( Layer* layer ) -// ****************************************************** -{ - LayerMaskMap::iterator lb = _layerMaskMap.lower_bound ( layer->getMask() ); - LayerMaskMap::iterator ub = _layerMaskMap.upper_bound ( layer->getMask() ); - - for ( ; lb != ub ; lb++ ) { - if ( lb->second == layer ) { - _layerMaskMap.erase ( lb ); - break; - } - } -} - -string Technology::_getTypeName () const -// ************************************** -{ - return _TName("Technology"); -} - -string Technology::_getString() const -// ********************************** -{ - string s = Inherit::_getString(); - s.insert(s.length() - 1, " " + getString(_name)); - return s; -} - -Record* Technology::_getRecord() const -// ***************************** -{ - Record* record = Inherit::_getRecord(); - if (record) { - record->add(getSlot("DataBase", _dataBase)); - record->add(getSlot("Name", &_name)); - record->add(getSlot("Layers", &_layerMaskMap)); - record->add(getSlot("cutMask", &_cutMask)); - record->add(getSlot("metalMask", &_metalMask)); - } - return record; -} - -void Technology::_toJson(JsonWriter* writer) const -// *********************************************** -{ - Inherit::_toJson( writer ); - - jsonWrite( writer, "_name", getName() ); -} - -void Technology::_toJsonCollections(JsonWriter* writer) const -// *********************************************************** -{ - writer->key( "+layers" ); - writer->startArray(); - - vector basicLayers; - vector layers; - for ( Layer* layer : getLayers() ) { - BasicLayer* basicLayer = dynamic_cast( layer ); - if (basicLayer) basicLayers.push_back( basicLayer ); - else layers .push_back( layer ); + _dataBase->_setTechnology( NULL ); + Super::_preDestroy(); } - sort( basicLayers.begin(), basicLayers.end(), CompareByMask() ); - sort( layers .begin(), layers .end(), CompareByMask() ); - for ( BasicLayer* basicLayer : basicLayers ) jsonWrite( writer, basicLayer ); - for ( Layer* layer : layers ) jsonWrite( writer, layer ); - - writer->endArray(); -} + void Technology::_insertInLayerMaskMap ( Layer* layer ) + { _layerMaskMap.insert ( make_pair(layer->getMask(),layer) ); } -// **************************************************************************************************** -// Technology::LayerMap implementation -// **************************************************************************************************** + void Technology::_removeFromLayerMaskMap ( Layer* layer ) + { + LayerMaskMap::iterator lb = _layerMaskMap.lower_bound( layer->getMask() ); + LayerMaskMap::iterator ub = _layerMaskMap.upper_bound( layer->getMask() ); -Technology::LayerMap::LayerMap() -// ***************************** -: Inherit() -{ -} - -Name Technology::LayerMap::_getKey(Layer* layer) const -// *************************************************** -{ - return layer->getName(); -} - -unsigned Technology::LayerMap::_getHashValue(Name name) const -// ********************************************************** -{ - return name._getSharedName()->getId() / 8; -} - -Layer* Technology::LayerMap::_getNextElement(Layer* layer) const -// ************************************************************* -{ - return layer->_getNextOfTechnologyLayerMap(); -} - -void Technology::LayerMap::_setNextElement(Layer* layer, Layer* nextLayer) const -// ***************************************************************************** -{ - layer->_setNextOfTechnologyLayerMap(nextLayer); -}; - - - -// **************************************************************************************************** -// Technology_BasicLayers implementation -// **************************************************************************************************** - -Technology_BasicLayers::Technology_BasicLayers() -// ********************************************* -: Inherit(), - _technology(NULL), - _mask(0) -{ -} - -Technology_BasicLayers::Technology_BasicLayers(const Technology* technology, const Layer::Mask& mask) -// ************************************************************************************************** -: Inherit(), - _technology(technology), - _mask(mask) -{ -} - -Technology_BasicLayers::Technology_BasicLayers(const Technology_BasicLayers& basicLayers) -// ************************************************************************************** -: Inherit(), - _technology(basicLayers._technology), - _mask(basicLayers._mask) -{ -} - -Technology_BasicLayers& Technology_BasicLayers::operator=(const Technology_BasicLayers& basicLayers) -// ************************************************************************************************* -{ - _technology = basicLayers._technology; - _mask = basicLayers._mask; - return *this; -} - -Collection* Technology_BasicLayers::getClone() const -// ************************************************************** -{ - return new Technology_BasicLayers(*this); -} - -Locator* Technology_BasicLayers::getLocator() const -// ************************************************************* -{ - return new Locator(_technology, _mask); -} - -string Technology_BasicLayers::_getString() const -// ********************************************** -{ - string s = "<" + _TName("Technology::BasicLayers"); - if (_technology) { - s += " " + getString(_technology); - s += " " + getString(_mask); - } - s += ">"; - return s; -} - - - -// **************************************************************************************************** -// Technology_BasicLayers::Locator implementation -// **************************************************************************************************** - -Technology_BasicLayers::Locator::Locator() -// *************************************** -: Inherit(), - _technology(NULL), - _mask(0), - _basicLayerLocator() -{ -} - -Technology_BasicLayers::Locator::Locator(const Technology* technology, const Layer::Mask& mask) -// ******************************************************************************************** -: Inherit(), - _technology(technology), - _mask(mask), - _basicLayerLocator() -{ - if (_technology) { - _basicLayerLocator = _technology->getBasicLayers().getLocator(); - while (_basicLayerLocator.isValid() && !(_basicLayerLocator.getElement()->getMask() & _mask)) - _basicLayerLocator.progress(); - } -} - -Technology_BasicLayers::Locator::Locator(const Locator& locator) -// ************************************************************* -: Inherit(), - _technology(locator._technology), - _mask(locator._mask), - _basicLayerLocator(locator._basicLayerLocator) -{ -} - -Technology_BasicLayers::Locator& Technology_BasicLayers::Locator::operator=(const Locator& locator) -// ************************************************************************************************ -{ - _technology = locator._technology; - _mask = locator._mask; - _basicLayerLocator = locator._basicLayerLocator; - return *this; -} - -BasicLayer* Technology_BasicLayers::Locator::getElement() const -// ************************************************************ -{ - return _basicLayerLocator.getElement(); -} - -Locator* Technology_BasicLayers::Locator::getClone() const -// ******************************************************************** -{ - return new Locator(*this); -} - -bool Technology_BasicLayers::Locator::isValid() const -// ************************************************** -{ - return _basicLayerLocator.isValid(); -} - -void Technology_BasicLayers::Locator::progress() -// ********************************************* -{ - do { - _basicLayerLocator.progress(); - } - while (_basicLayerLocator.isValid() && !(_basicLayerLocator.getElement()->getMask() & _mask)); -} - -string Technology_BasicLayers::Locator::_getString() const -// ******************************************************* -{ - string s = "<" + _TName("Technology::BasicLayers::Locator"); - if (_technology) { - s += " " + getString(_technology); - s += " " + getString(_mask); - } - s += ">"; - return s; -} - - - -// **************************************************************************************************** -// JsonTechnology implementation -// **************************************************************************************************** - -Initializer jsonTechnologyInit ( 0 ); - -void JsonTechnology::initialize() -// ******************************* -{ JsonTypes::registerType( new JsonTechnology (JsonWriter::RegisterMode) ); } - -JsonTechnology::JsonTechnology(unsigned long flags) -// ************************************************ - : JsonDBo (flags) - , _blockagesMap() -{ - if (flags & JsonWriter::RegisterMode) return; - - cdebug_log(19,0) << "JsonTechnology::JsonTechnology()" << endl; - - add( "_name" , typeid(string) ); - add( "+layers", typeid(JsonArray) ); -} - -JsonTechnology::~JsonTechnology() -// ****************************** -{ - const Technology* techno = getObject(); - - for ( auto element : _blockagesMap ) { - BasicLayer* blockage = techno->getBasicLayer( element.first ); - if (blockage) { - for ( BasicLayer* layer : element.second ) { - layer->setBlockageLayer( blockage ); + for ( ; lb != ub ; lb++ ) { + if ( lb->second == layer ) { + _layerMaskMap.erase ( lb ); + break; } } } -} -string JsonTechnology::getTypeName() const -// **************************************** -{ return "Technology"; } -JsonTechnology* JsonTechnology::clone(unsigned long flags) const -// ************************************************************* -{ return new JsonTechnology ( flags ); } + DeviceDescriptor* Technology::addDeviceDescriptor ( const Name& name ) + { + DeviceDescriptor fakedd ( name ); + DeviceDescriptors::iterator ddit = _deviceDescriptors.find( &fakedd ); + if (ddit != _deviceDescriptors.end()) + throw Error( "Technology::addDeviceDescriptor(): Redifinition of device \"%s\"." + , getString(name).c_str() ); -void JsonTechnology::addBlockageRef(const string& blockageLayer, BasicLayer* layer ) -// ********************************************************************************* -{ - map< string, vector >::iterator im = _blockagesMap.find( blockageLayer ); - if (im != _blockagesMap.end()) { - (*im).second.push_back( layer ); - } else { - _blockagesMap.insert( make_pair( blockageLayer, vector(1,layer) ) ); + DeviceDescriptor* dd = new DeviceDescriptor ( name ); + _deviceDescriptors.insert( dd ); + return dd; } -} -void JsonTechnology::toData(JsonStack& stack) -// ****************************************** -{ - cdebug_tabw(19,1); - check( stack, "JsonTechnology::toData" ); + DeviceDescriptor* Technology::getDeviceDescriptor ( const Name& name ) + { + DeviceDescriptor fakedd( name ); + DeviceDescriptors::iterator ddit = _deviceDescriptors.find( &fakedd ); + if (ddit != _deviceDescriptors.end()) return *ddit; + return NULL; + } - string technoName = get( stack, "_name" ); - Technology* techno = DataBase::getDB()->getTechnology(); - if (techno) { - if (techno->getName() == technoName) { - cerr << Warning( "JsonTechnology::toData(): A technology with the same name (%s) is already loaded." - , technoName.c_str() - ) << endl; - } else { - cerr << Error( "JsonTechnology::toData(): Try to load \"%s\", but \"%s\" is already loaded." - , technoName.c_str() - , getString(techno->getName()).c_str() - ) << endl; + ModelDescriptor* Technology::addModelDescriptor( const Name& name + , const Name& simul + , const Name& model + , string netlist + , const Name& name_n + , const Name& name_p + , bool precise ) + { + ModelDescriptor fakemd ( name, simul, model, netlist, name_n, name_p, precise ); + ModelDescriptors::iterator mdit = _modelDescriptors.find(&fakemd); + if (mdit != _modelDescriptors.end()) + throw Error( "Technology::addModelDescriptor(): Redefinition of model \"%s\"." + , getString(name).c_str() ); + + ModelDescriptor* md = new ModelDescriptor( name, simul, model, netlist, name_n, name_p, precise ); + _modelDescriptors.insert(md); + return md; + } + + + ModelDescriptor* Technology::getModelDescriptor ( const Name& name ) + { + for ( ModelDescriptor* model : _modelDescriptors ) { + if (model->getName() == name) return model; + } + return NULL; + } + + + void Technology::toDtr ( ostream& o ) + { + o << "\n"; + o << "from Hurricane import DbU\n"; + o << "from helpers.AnalogTechno import Length\n"; + o << "from helpers.AnalogTechno import Area\n"; + o << "from helpers.AnalogTechno import Asymmetric\n"; + o << "\n"; + o << "\n"; + o << "analogTechnologyTable = \\\n"; + o << " ( ('Header', '" << getName() << "', DbU.UnitPowerMicro, 'rev.LIP6-Unknown')\n"; + o << " # ------------------------------------------------------------------------------------\n"; + o << " # ( Rule name , [Layer1] , [Layer2] , Value, Rule flags , Reference )\n"; + + for ( auto rule : _noLayerRules ) { + o << " (" + << setw(46) << left << quote(rule->getName()) << ", " + << setw( 5) << left << DbU::toPhysical(rule->getValue(),DbU::UnitPower::Micro) << ", " + << setw(17) << left << "Length" << ", " + << setw(10) << left << quote(rule->getReference()) << ")\n"; + } + + for ( auto layerRuleSet : _oneLayerRules ) { + for ( auto rule : layerRuleSet.second ) { + string flags = "Length"; + string ruleName = getString(rule->getName()); + double value = DbU::toPhysical(rule->getValue(),DbU::UnitPower::Micro); + if (ruleName.substr(ruleName.size()-4,4) == "Area") { + flags += "|Area"; + value = DbU::toPhysical(value,DbU::UnitPower::Micro); + } + + o << " (" + << setw(22) << left << quote(rule->getName()) << ", " + << setw(22) << left << quote(layerRuleSet.first->getName()) << ", " + << setw( 5) << left << value << ", " + << setw(17) << left << flags << ", " + << setw(10) << left << quote(rule->getReference()) << ")\n"; + } + } + + for ( auto layerRuleSet : _twoLayersRules ) { + for ( auto rule : layerRuleSet.second ) { + string flags = "Length"; + TwoLayersPhysicalRule* twoRule = dynamic_cast(rule); + if (twoRule and not twoRule->isSymetric()) + flags += "|Asymmetric"; + + o << " (" + << setw(22) << left << quote(rule->getName()) << ", " + << setw(10) << left << quote(layerRuleSet.first.first->getName()) << ", " + << setw(10) << left << quote(layerRuleSet.first.second->getName()) << ", " + << setw( 5) << left << DbU::toPhysical(rule->getValue(),DbU::UnitPower::Micro) << ", " + << setw(17) << left << flags << ", " + << setw(10) << left << quote(rule->getReference()) << ")\n"; + } + } + o << " )\n"; + } + + + UnitRule Technology::getUnitRule ( const string& ruleNameStr ) const + { + Name ruleName ( ruleNameStr ); + UnitRule search ( ruleName, 0, "" ); + + UnitRules::iterator irule = _unitRules.find( &search ); + if (irule == _unitRules.end()) { + throw Error( "Technology::getUnitRule(): No rule named \"%s\"." , ruleNameStr.c_str() ); + } + return **irule; + } + + + PhysicalRule Technology::getPhysicalRule ( const string& ruleNameStr ) const + { + Name ruleName ( ruleNameStr ); + PhysicalRule search ( ruleName, 0, "" ); + + PhysicalRules::iterator irule = _noLayerRules.find( &search ); + if (irule == _noLayerRules.end()) { + throw Error( "Technology::getPhysicalRule(): No rule named \"%s\"." , ruleNameStr.c_str() ); + } + return **irule; + } + + + PhysicalRule Technology::getPhysicalRule ( const string& ruleNameStr, const string& layerStr ) const + { + Name layerName ( layerStr ); + const Layer* layer = getLayer( layerName ); + + OneLayerRules::const_iterator ilayer = _oneLayerRules.find( layer ); + if (ilayer == _oneLayerRules.end()) + throw Error( "Technology::getPhysicalRule(): No rules for %s." + , getString(layer->getName()).c_str() ); + + const PhysicalRules& rules = ilayer->second; + Name ruleName ( ruleNameStr ); + PhysicalRule search ( ruleName, 0, "" ); + + PhysicalRules::iterator irule = rules.find( &search ); + if (irule == rules.end()) + throw Error( "Technology::getPhysicalRule(): No rule named \"%s\" for %s." + , ruleNameStr.c_str() + , getString(layer->getName()).c_str() ); + + return **irule; + } + + + PhysicalRule Technology::getPhysicalRule ( const string& ruleNameStr + , const string& layer1Str + , const string& layer2Str ) const + { + Name layer1Name ( layer1Str ); + Name layer2Name ( layer2Str ); + const Layer* layer1 = getLayer( layer1Name ); + const Layer* layer2 = getLayer( layer2Name ); + + LayerPair searchLayerPair(layer1, layer2); + TwoLayersRules::const_iterator ilp = _twoLayersRules.find( searchLayerPair ); + if (ilp != _twoLayersRules.end()) { + const TwoLayersRulesSet& rules = ilp->second; + Name ruleName ( ruleNameStr ); + TwoLayersPhysicalRule search ( ruleName, 0, "", true ); + + TwoLayersRulesSet::const_iterator irule = rules.find( &search ); + if (irule != rules.end()) return **irule; + } + + LayerPair reverseSearchLayerPair ( layer2, layer1 ); + ilp = _twoLayersRules.find( reverseSearchLayerPair ); + if (ilp != _twoLayersRules.end()) { + const TwoLayersRulesSet& rules = ilp->second; + Name ruleName ( ruleNameStr ); + TwoLayersPhysicalRule search ( ruleName, 0, "", true ); + + TwoLayersRulesSet::const_iterator irule = rules.find( &search ); + if (irule != rules.end() and (*irule)->isSymetric() ) return **irule; + } + + throw Error( "Technology::getPhysicalRule(): No rule named \"%s\" for pair (%s,%s)." + , ruleNameStr.c_str(), layer1Str.c_str(), layer2Str.c_str() ); + } + + + void Technology::addUnitRule ( const string& name + , double value + , const string& reference ) + { + Name ruleName ( name ); + UnitRule search ( ruleName, 0, "" ); + + UnitRules::iterator irule = _unitRules.find( &search ); + if (irule != _unitRules.end()) + throw Error( "Technology::addUnitRule(): Attempt to redefine rule \"%s\"." , name.c_str() ); + + _unitRules.insert( new UnitRule ( ruleName, value, reference ) ); + } + + + void Technology::addPhysicalRule ( const string& name + , DbU::Unit value + , const string& reference ) + { + Name ruleName ( name ); + PhysicalRule search ( ruleName, 0, "" ); + + PhysicalRules::iterator irule = _noLayerRules.find( &search ); + if (irule != _noLayerRules.end()) + throw Error( "Technology::addPhysicalRule(): Attempt to redefine rule \"%s\"." , name.c_str() ); + + _noLayerRules.insert( new PhysicalRule ( ruleName, value, reference ) ); + } + + + void Technology::addPhysicalRule ( const string& ruleNameStr + , const string& layerStr + , DbU::Unit value + , const string& reference ) + { + Name ruleName ( ruleNameStr ); + Name layerName ( layerStr ); + + const Layer* layer = getLayer( layerName ); + OneLayerRules::iterator ilayer = _oneLayerRules.find(layer); + if (ilayer == _oneLayerRules.end()) { + pair result = + _oneLayerRules.insert( OneLayerRules::value_type( layer, PhysicalRules()) ); + result.first->second.insert( new PhysicalRule(ruleName,value,reference) ); + } else { + PhysicalRules& rules = ilayer->second; + PhysicalRule search ( ruleName, 0, "" ); + if (rules.find(&search) != rules.end()) { + throw Error( "Technology::addPhysicalRule(): Attempt to redefine rule \"%s\"." , ruleNameStr.c_str() ); + } + + rules.insert( new PhysicalRule(ruleName,value,reference) ); + } + } + + + void Technology::addPhysicalRule ( const string& ruleNameStr + , const string& layer1Str + , const string& layer2Str + , bool symetric + , DbU::Unit value + , const string& reference ) + { + Name ruleName ( ruleNameStr ); + Name layer1Name ( layer1Str ); + Name layer2Name ( layer2Str ); + + const Layer* layer1 = getLayer(layer1Name); + const Layer* layer2 = getLayer(layer2Name); + LayerPair layerPair ( layer1, layer2 ); + + TwoLayersRules::iterator ilp = _twoLayersRules.find( layerPair ); + if (ilp == _twoLayersRules.end()) { + pair result = + _twoLayersRules.insert( TwoLayersRules::value_type(layerPair,TwoLayersRulesSet()) ); + + result.first->second.insert( new TwoLayersPhysicalRule(ruleName,value,reference,symetric) ); + } else { + TwoLayersRulesSet& rules = ilp->second; + TwoLayersPhysicalRule search ( ruleName, 0, "", true ); + if (rules.find(&search) != rules.end()) { + throw Error( "Technology::addPhysicalRule(): Attempt to redefine rule \"%s\"." , ruleNameStr.c_str() ); + } + rules.insert( new TwoLayersPhysicalRule(ruleName,value,reference,symetric) ); } - } else { - techno = Technology::create( DataBase::getDB(), technoName ); - stack.setFlags( JsonWriter::TechnoMode ); } - update( stack, techno ); - cdebug_tabw(19,-1); -} - -} // End of Hurricane namespace. + string Technology::_getTypeName () const + { return _TName("Technology"); } -// **************************************************************************************************** -// Copyright (c) BULL S.A. 2000-2018, All Rights Reserved -// **************************************************************************************************** + string Technology::_getString () const + { + string s = Super::_getString(); + s.insert(s.length() - 1, " " + getString(_name)); + return s; + } + + + Record* Technology::_getRecord () const + { + Record* record = Super::_getRecord(); + if (record) { + record->add( getSlot("_dataBase" , _dataBase ) ); + record->add( getSlot("_name" , &_name ) ); + record->add( getSlot("_layerMaskMap" , &_layerMaskMap ) ); + record->add( getSlot("_cutMask" , &_cutMask ) ); + record->add( getSlot("_metalMask" , &_metalMask ) ); + record->add( getSlot("_unitRules" , &_unitRules ) ); + record->add( getSlot("_noLayerRules" , &_noLayerRules ) ); + record->add( getSlot("_oneLayerRules" , &_oneLayerRules ) ); + record->add( getSlot("_twoLayersRules", &_twoLayersRules) ); + } + return record; + } + + + void Technology::_toJson ( JsonWriter* writer ) const + { + Super::_toJson( writer ); + + jsonWrite( writer, "_name", getName() ); + } + + + void Technology::_toJsonCollections ( JsonWriter* writer ) const + { + writer->key( "+layers" ); + writer->startArray(); + + vector basicLayers; + vector layers; + for ( Layer* layer : getLayers() ) { + BasicLayer* basicLayer = dynamic_cast( layer ); + if (basicLayer) basicLayers.push_back( basicLayer ); + else layers .push_back( layer ); + } + + sort( basicLayers.begin(), basicLayers.end(), CompareByMask() ); + sort( layers .begin(), layers .end(), CompareByMask() ); + + for ( BasicLayer* basicLayer : basicLayers ) jsonWrite( writer, basicLayer ); + for ( Layer* layer : layers ) jsonWrite( writer, layer ); + + writer->endArray(); + } + + +// ------------------------------------------------------------------- +// Class : "Hurricane::Technology::LayerMap" + + + Technology::LayerMap::LayerMap () + : Super() + { } + + + Name Technology::LayerMap::_getKey ( Layer* layer ) const + { return layer->getName(); } + + + unsigned Technology::LayerMap::_getHashValue ( Name name ) const + { return name._getSharedName()->getId() / 8; } + + + Layer* Technology::LayerMap::_getNextElement ( Layer* layer ) const + { return layer->_getNextOfTechnologyLayerMap(); } + + + void Technology::LayerMap::_setNextElement ( Layer* layer, Layer* nextLayer ) const + { layer->_setNextOfTechnologyLayerMap(nextLayer); }; + + +// ------------------------------------------------------------------- +// Class : "Hurricane::Technology_BasicLayers" Collection. + + + Technology_BasicLayers::Technology_BasicLayers () + : Super() + , _technology(NULL) + , _mask (0) + { } + + + Technology_BasicLayers::Technology_BasicLayers ( const Technology* technology, const Layer::Mask& mask ) + : Super() + , _technology(technology) + , _mask (mask) + { } + + + Technology_BasicLayers::Technology_BasicLayers ( const Technology_BasicLayers& basicLayers ) + : Super() + , _technology(basicLayers._technology) + , _mask (basicLayers._mask) + { } + + + Technology_BasicLayers& Technology_BasicLayers::operator= ( const Technology_BasicLayers& basicLayers ) + { + _technology = basicLayers._technology; + _mask = basicLayers._mask; + return *this; + } + + + Collection* Technology_BasicLayers::getClone () const + { return new Technology_BasicLayers( *this ); } + + + Locator* Technology_BasicLayers::getLocator () const + { return new Locator( _technology, _mask ); } + + + string Technology_BasicLayers::_getString () const + { + string s = "<" + _TName("Technology::BasicLayers"); + if (_technology) { + s += " " + getString(_technology); + s += " " + getString(_mask); + } + s += ">"; + return s; + } + + + Technology_BasicLayers::Locator::Locator () + : Super() + , _technology (NULL) + , _mask (0) + , _basicLayerLocator() + { } + + + Technology_BasicLayers::Locator::Locator ( const Technology* technology, const Layer::Mask& mask ) + : Super() + , _technology (technology) + , _mask (mask) + , _basicLayerLocator() + { + if (_technology) { + _basicLayerLocator = _technology->getBasicLayers().getLocator(); + while (_basicLayerLocator.isValid() and not (_basicLayerLocator.getElement()->getMask() & _mask)) + _basicLayerLocator.progress(); + } + } + + + Technology_BasicLayers::Locator::Locator ( const Locator& locator ) + : Super() + , _technology (locator._technology) + , _mask (locator._mask) + , _basicLayerLocator(locator._basicLayerLocator) + { } + + + Technology_BasicLayers::Locator& Technology_BasicLayers::Locator::operator = ( const Locator& locator ) + { + _technology = locator._technology; + _mask = locator._mask; + _basicLayerLocator = locator._basicLayerLocator; + return *this; + } + + + BasicLayer* Technology_BasicLayers::Locator::getElement () const + { return _basicLayerLocator.getElement(); } + + + Locator* Technology_BasicLayers::Locator::getClone () const + { return new Locator( *this ); } + + + bool Technology_BasicLayers::Locator::isValid () const + { return _basicLayerLocator.isValid(); } + + + void Technology_BasicLayers::Locator::progress () + { + do { + _basicLayerLocator.progress(); + } + while (_basicLayerLocator.isValid() and not (_basicLayerLocator.getElement()->getMask() & _mask)); + } + + + string Technology_BasicLayers::Locator::_getString () const + { + string s = "<" + _TName("Technology::BasicLayers::Locator"); + if (_technology) { + s += " " + getString(_technology); + s += " " + getString(_mask); + } + s += ">"; + return s; + } + + +// ------------------------------------------------------------------- +// Class : "Hurricane::JsonTechnology". + + + Initializer jsonTechnologyInit ( 0 ); + + + void JsonTechnology::initialize () + { JsonTypes::registerType( new JsonTechnology (JsonWriter::RegisterMode) ); } + + + JsonTechnology::JsonTechnology ( unsigned long flags ) + : JsonDBo (flags) + , _blockagesMap() + { + if (flags & JsonWriter::RegisterMode) return; + + cdebug_log(19,0) << "JsonTechnology::JsonTechnology()" << endl; + + add( "_name" , typeid(string) ); + add( "+layers", typeid(JsonArray) ); + } + + + JsonTechnology::~JsonTechnology () + { + const Technology* techno = getObject(); + + for ( auto element : _blockagesMap ) { + BasicLayer* blockage = techno->getBasicLayer( element.first ); + if (blockage) { + for ( BasicLayer* layer : element.second ) { + layer->setBlockageLayer( blockage ); + } + } + } + } + + + string JsonTechnology::getTypeName () const + { return "Technology"; } + + + JsonTechnology* JsonTechnology::clone ( unsigned long flags ) const + { return new JsonTechnology ( flags ); } + + + void JsonTechnology::addBlockageRef ( const string& blockageLayer, BasicLayer* layer ) + { + map< string, vector >::iterator im = _blockagesMap.find( blockageLayer ); + if (im != _blockagesMap.end()) { + (*im).second.push_back( layer ); + } else { + _blockagesMap.insert( make_pair( blockageLayer, vector(1,layer) ) ); + } + } + + + void JsonTechnology::toData ( JsonStack& stack ) + { + cdebug_tabw(19,1); + + check( stack, "JsonTechnology::toData" ); + + string technoName = get( stack, "_name" ); + Technology* techno = DataBase::getDB()->getTechnology(); + + if (techno) { + if (techno->getName() == technoName) { + cerr << Warning( "JsonTechnology::toData(): A technology with the same name (%s) is already loaded." + , technoName.c_str() + ) << endl; + } else { + cerr << Error( "JsonTechnology::toData(): Try to load \"%s\", but \"%s\" is already loaded." + , technoName.c_str() + , getString(techno->getName()).c_str() + ) << endl; + } + } else { + techno = Technology::create( DataBase::getDB(), technoName ); + stack.setFlags( JsonWriter::TechnoMode ); + } + + update( stack, techno ); + + cdebug_tabw(19,-1); + } + + +} // Hurricane namespace. diff --git a/hurricane/src/hurricane/TwoLayersPhysicalRule.cpp b/hurricane/src/hurricane/TwoLayersPhysicalRule.cpp new file mode 100644 index 00000000..9e401036 --- /dev/null +++ b/hurricane/src/hurricane/TwoLayersPhysicalRule.cpp @@ -0,0 +1,38 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./TwoLayersPhysicalRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/TwoLayersPhysicalRule.h" + + +namespace Hurricane { + + using namespace std; + + + TwoLayersPhysicalRule::~TwoLayersPhysicalRule () { } + + string TwoLayersPhysicalRule::_getTypeName () const { return "TwoLayersPhysicalRule"; } + string TwoLayersPhysicalRule::_getString () const { return "<" + _getTypeName() + " " + getString(getName()) + ">"; } + + Record* TwoLayersPhysicalRule::_getRecord () const + { + Record* record = Super::_getRecord(); + record->add( getSlot("Symetric", _symetric) ); + return record; + } + + +} // Hurricane namespace. diff --git a/hurricane/src/hurricane/UnitRule.cpp b/hurricane/src/hurricane/UnitRule.cpp new file mode 100644 index 00000000..956d2285 --- /dev/null +++ b/hurricane/src/hurricane/UnitRule.cpp @@ -0,0 +1,39 @@ +// -*- 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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Module : "./UnitRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/UnitRule.h" + + +namespace Hurricane { + + using namespace std; + + + UnitRule::~UnitRule () { } + + + string UnitRule::_getTypeName () const { return "UnitRule"; } + string UnitRule::_getString () const { return "<" + _getTypeName() + " " + getString(getName()) + ">"; } + + Record* UnitRule::_getRecord () const + { + Record* record = Super::_getRecord(); + record->add( getSlot("Value", &_value) ); + return record; + } + + +} // Hurricane namespace. diff --git a/hurricane/src/hurricane/hurricane/DeviceDescriptor.h b/hurricane/src/hurricane/hurricane/DeviceDescriptor.h new file mode 100644 index 00000000..5babc9ce --- /dev/null +++ b/hurricane/src/hurricane/hurricane/DeviceDescriptor.h @@ -0,0 +1,64 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/DeviceDescriptor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_DEVICE_DESCRIPTOR_H +#define HURRICANE_DEVICE_DESCRIPTOR_H + +#include +#include "hurricane/Name.h" + + +namespace Hurricane { + + + class DeviceDescriptor { + public: + struct DeviceDescriptorComp: + public std::binary_function { + bool operator () ( const DeviceDescriptor* ldd, const DeviceDescriptor* rdd ) const + { return ldd->getName() < rdd->getName(); } + }; + + typedef std::vector Connectors; + typedef std::pair Layout; + typedef std::map Layouts; + public: + DeviceDescriptor ( const Name& ); + inline Name getName () const; + inline void setSpiceFilePath ( const std::string& spiceFilePath ); + inline std::string getSpiceFilePath () const; + void addConnector ( const std::string& connector ); + inline const Connectors& getConnectors () const; + inline const Layouts getLayouts () const; + void addLayout ( const Name& layoutName, const std::string& moduleName ); + private: + Name _name; + std::string _spiceFilePath; + Connectors _connectors; + Layouts _layouts; + }; + + + inline Name DeviceDescriptor::getName () const { return _name; } + inline void DeviceDescriptor::setSpiceFilePath ( const std::string& spiceFilePath ) { _spiceFilePath = spiceFilePath; } + inline std::string DeviceDescriptor::getSpiceFilePath () const { return _spiceFilePath; } + inline const DeviceDescriptor::Connectors& DeviceDescriptor::getConnectors () const { return _connectors; } + inline const DeviceDescriptor::Layouts DeviceDescriptor::getLayouts () const { return _layouts; } + + +} // Hurricane namespace. + +#endif // HURRICANE_DEVICE_DESCRIPTOR_H diff --git a/hurricane/src/hurricane/hurricane/ModelDescriptor.h b/hurricane/src/hurricane/hurricane/ModelDescriptor.h new file mode 100644 index 00000000..5d1a685e --- /dev/null +++ b/hurricane/src/hurricane/hurricane/ModelDescriptor.h @@ -0,0 +1,86 @@ +// -*- 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 : Christophe Alexandre | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/analog/ModelDescriptor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_MODEL_DESCRIPTOR_H +#define HURRICANE_MODEL_DESCRIPTOR_H + +#include "hurricane/Name.h" + + +namespace Hurricane { + + class ModelDescriptor { + public: + struct ModelDescriptorComp: + public std::binary_function { + bool operator () ( const ModelDescriptor* lmd, const ModelDescriptor* rmd ) const + { return lmd->getName() < rmd->getName(); } + }; + public: + inline ModelDescriptor ( const Name& name + , const Name& simul + , const Name& model + , std::string netlist + , const Name& name_n + , const Name& name_p + , bool precise ); + inline Name getName () const; + inline Name getSimulator () const; + inline Name getModel () const; + inline std::string getNetlist () const; + inline Name getName_N () const; + inline Name getName_P () const; + inline bool isPrecise () const; + private: + Name _name; + Name _simulator; + Name _model; + std::string _netlist; + Name _name_N; + Name _name_P; + bool _precise; + }; + + + inline ModelDescriptor::ModelDescriptor( const Name& name + , const Name& simul + , const Name& model + , std::string netlist + , const Name& name_n + , const Name& name_p + , bool precise ) + : _name (name) + , _simulator(simul) + , _model (model) + , _netlist (netlist) + , _name_N (name_n) + , _name_P (name_p) + , _precise (precise) + { } + + + inline Name ModelDescriptor::getName () const { return _name; } + inline Name ModelDescriptor::getSimulator () const { return _simulator; } + inline Name ModelDescriptor::getModel () const { return _model; } + inline std::string ModelDescriptor::getNetlist () const { return _netlist; } + inline Name ModelDescriptor::getName_N () const { return _name_N; } + inline Name ModelDescriptor::getName_P () const { return _name_P; } + inline bool ModelDescriptor::isPrecise () const { return _precise; } + + +} // Hurricane namespace. + +#endif // HURRICANE_MODEL_DESCRIPTOR_H diff --git a/hurricane/src/hurricane/hurricane/PhysicalRule.h b/hurricane/src/hurricane/hurricane/PhysicalRule.h new file mode 100644 index 00000000..44dd0727 --- /dev/null +++ b/hurricane/src/hurricane/hurricane/PhysicalRule.h @@ -0,0 +1,66 @@ +// -*- 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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/PhysicalRule.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_PHYSICAL_RULE_H +#define HURRICANE_PHYSICAL_RULE_H + +#include "hurricane/DbU.h" +#include "hurricane/Rule.h" + + +namespace Hurricane { + + + class PhysicalRule : public Rule { + public: + typedef Rule Super; + public: + inline PhysicalRule ( const Name& name, DbU::Unit value, const std::string& reference ); + inline PhysicalRule ( const PhysicalRule& rule ); + virtual ~PhysicalRule (); + inline DbU::Unit getValue () const; + public: + // Inspector support. + virtual std::string _getTypeName () const; + virtual std::string _getString () const; + virtual Record* _getRecord () const; + private: + const Hurricane::DbU::Unit _value; + }; + + + inline PhysicalRule::PhysicalRule ( const Name& name + , DbU::Unit value + , const std::string& reference ) + : Rule(name,reference) + , _value(value) + { } + + inline PhysicalRule::PhysicalRule ( const PhysicalRule& rule ) + : Rule(rule.getName(),rule.getReference()) + , _value(rule._value) + { } + + + Hurricane::DbU::Unit PhysicalRule::getValue () const { return _value; } + + +} // Hurricane namespace. + + +INSPECTOR_P_SUPPORT(Hurricane::PhysicalRule); + +#endif // HURRICANE_PHYSICAL_RULE_H diff --git a/hurricane/src/hurricane/hurricane/Rule.h b/hurricane/src/hurricane/hurricane/Rule.h new file mode 100644 index 00000000..57b1be4a --- /dev/null +++ b/hurricane/src/hurricane/hurricane/Rule.h @@ -0,0 +1,56 @@ +// -*- 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 | +// | | +// | Author : Jean-Paul Chaput | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/Rule.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_RULE_H +#define HURRICANE_RULE_H + +#include +#include "hurricane/Name.h" + + +namespace Hurricane { + + + class Rule { + public: + inline Rule ( const Name& name, const std::string& reference ); + inline Rule ( const Rule& rule ); + virtual ~Rule (); + inline Name getName () const; + inline std::string getReference () const; + public: + // Inspector support. + virtual std::string _getTypeName () const; + virtual std::string _getString () const; + virtual Record* _getRecord () const; + private: + const Name _name; + const std::string _reference; + }; + + + inline Rule::Rule ( const Name& name, const std::string& reference ): _name(name), _reference(reference) { } + inline Rule::Rule ( const Rule& rule ): _name(rule._name), _reference(rule._reference) { } + inline Hurricane::Name Rule::getName () const { return _name; } + inline std::string Rule::getReference () const { return _reference; } + + +} // Hurricane namespace. + + +INSPECTOR_P_SUPPORT(Hurricane::Rule); + +#endif // HURRICANE_RULE_H diff --git a/hurricane/src/hurricane/hurricane/Technology.h b/hurricane/src/hurricane/hurricane/Technology.h index 47e6ead8..9da35d69 100644 --- a/hurricane/src/hurricane/hurricane/Technology.h +++ b/hurricane/src/hurricane/hurricane/Technology.h @@ -32,24 +32,32 @@ #ifndef HURRICANE_TECHNOLOGY_H #define HURRICANE_TECHNOLOGY_H -#include -#include "hurricane/Mask.h" -#include "hurricane/DBo.h" -#include "hurricane/Layer.h" -#include "hurricane/BasicLayers.h" -#include "hurricane/RegularLayers.h" -#include "hurricane/ViaLayers.h" -#include "hurricane/IntrusiveMap.h" +#include +#include +#include "hurricane/Mask.h" +#include "hurricane/DBo.h" +#include "hurricane/Layer.h" +#include "hurricane/BasicLayers.h" +#include "hurricane/RegularLayers.h" +#include "hurricane/ViaLayers.h" +#include "hurricane/IntrusiveMap.h" +#include "hurricane/DeviceDescriptor.h" +#include "hurricane/ModelDescriptor.h" +#include "hurricane/Rule.h" namespace Hurricane { + using std::set; using std::multimap; class DataBase; class BasicLayer; class RegularLayer; class ViaLayer; + class UnitRule; + class PhysicalRule; + class TwoLayersPhysicalRule; // ------------------------------------------------------------------- @@ -58,14 +66,29 @@ namespace Hurricane { class Technology : public DBo { public: - typedef DBo Inherit; + typedef DBo Super; typedef multimap LayerMaskMap; + typedef set DeviceDescriptors; + typedef set ModelDescriptors; + public: + struct RuleNameCompare: + public std::binary_function { + bool operator() ( const Rule* rule1, const Rule* rule2 ) const + { return rule1->getName() < rule2->getName(); } + }; + public: + typedef std::pair LayerPair; + typedef std::set UnitRules; + typedef std::set PhysicalRules; + typedef std::set TwoLayersRulesSet; + typedef std::map OneLayerRules; + typedef std::map TwoLayersRules; public: // Sub-class : LayerMap. class LayerMap : public IntrusiveMap { public: - typedef IntrusiveMap Inherit; + typedef IntrusiveMap Super; public: LayerMap (); virtual Name _getKey ( Layer* ) const; @@ -76,55 +99,101 @@ namespace Hurricane { public: // Constructor. - static Technology* create ( DataBase* , const Name& ); - // Accessors. - inline bool isMetal ( const Layer* ) const; - inline DataBase* getDataBase () const; - inline const Name& getName () const; - inline Layer* getLayer ( const Name& ) const; - BasicLayer* getBasicLayer ( const Name& ) const; - RegularLayer* getRegularLayer ( const Name& ) const; - ViaLayer* getViaLayer ( const Name& ) const; - inline Layers getLayers () const; - BasicLayers getBasicLayers () const; - BasicLayers getBasicLayers ( const Layer::Mask& ) const; - RegularLayers getRegularLayers () const; - ViaLayers getViaLayers () const; - Layer* getLayer ( const Layer::Mask&, bool useSymbolic=true ) const; - Layer* getMetalAbove ( const Layer*, bool useSymbolic=true ) const; - Layer* getMetalBelow ( const Layer*, bool useSymbolic=true ) const; - Layer* getCutAbove ( const Layer*, bool useSymbolic=true ) const; - Layer* getCutBelow ( const Layer*, bool useSymbolic=true ) const; - Layer* getViaBetween ( const Layer*, const Layer*, bool useSymbolic=true ) const; - Layer* getNthMetal ( int ) const; - Layer* getNthCut ( int ) const; + static Technology* create ( DataBase* , const Name& ); + // Accessors. + inline bool isMetal ( const Layer* ) const; + inline DataBase* getDataBase () const; + inline const Name& getName () const; + inline Layer* getLayer ( const Name& ) const; + BasicLayer* getBasicLayer ( const Name& ) const; + RegularLayer* getRegularLayer ( const Name& ) const; + ViaLayer* getViaLayer ( const Name& ) const; + inline Layers getLayers () const; + BasicLayers getBasicLayers () const; + BasicLayers getBasicLayers ( const Layer::Mask& ) const; + RegularLayers getRegularLayers () const; + ViaLayers getViaLayers () const; + Layer* getLayer ( const Layer::Mask&, bool useSymbolic=true ) const; + Layer* getMetalAbove ( const Layer*, bool useSymbolic=true ) const; + Layer* getMetalBelow ( const Layer*, bool useSymbolic=true ) const; + Layer* getCutAbove ( const Layer*, bool useSymbolic=true ) const; + Layer* getCutBelow ( const Layer*, bool useSymbolic=true ) const; + Layer* getViaBetween ( const Layer*, const Layer*, bool useSymbolic=true ) const; + Layer* getNthMetal ( int ) const; + Layer* getNthCut ( int ) const; + DeviceDescriptor* getDeviceDescriptor ( const Name& ); + ModelDescriptor* getModelDescriptor (const Name& ); + inline ModelDescriptors& getModelDescriptors (); + UnitRule getUnitRule ( const std::string& ruleName ) const; + PhysicalRule getPhysicalRule ( const std::string& ruleName ) const; + PhysicalRule getPhysicalRule ( const std::string& ruleName + , const std::string& layerName ) const; + PhysicalRule getPhysicalRule ( const std::string& ruleName + , const std::string& layer1Name + , const std::string& layer2Name ) const; + inline const UnitRules& getUnitRules () const; + inline const PhysicalRules& getNoLayerRules () const; + inline const OneLayerRules& getOneLayerRules () const; + inline const TwoLayersRules& getTwoLayersRules () const; + void toDtr ( std::ostream& ); + inline void setName ( const std::string& name ); // Updators. - void setName ( const Name& ); - bool setSymbolicLayer ( const Name& ); - bool setSymbolicLayer ( const Layer* ); - // Others. - inline LayerMap& _getLayerMap (); - inline LayerMaskMap& _getLayerMaskMap (); - void _insertInLayerMaskMap ( Layer* ); - void _removeFromLayerMaskMap ( Layer* ); - inline Layer::Mask& _getCutMask (); - inline Layer::Mask& _getMetalMask (); - void _onDbuChange ( float scale ); - // Hurricane Managment. - virtual void _toJson ( JsonWriter* ) const; - virtual void _toJsonCollections ( JsonWriter* ) const; - virtual string _getTypeName () const; - virtual string _getString () const; - virtual Record* _getRecord () const; + void setName ( const Name& ); + bool setSymbolicLayer ( const Name& ); + bool setSymbolicLayer ( const Layer* ); + DeviceDescriptor* addDeviceDescriptor ( const Name& ); + ModelDescriptor* addModelDescriptor ( const Name& name + , const Name& simul + , const Name& model + , std::string netlist + , const Name& name_n + , const Name& name_p + , bool precise ); + void addUnitRule ( const std::string& ruleName + , double value + , const std::string& reference ); + void addPhysicalRule ( const std::string& ruleName + , DbU::Unit value + , const std::string& reference ); + void addPhysicalRule ( const std::string& ruleName + , const std::string& layerName + , DbU::Unit value + , const std::string& reference); + void addPhysicalRule ( const std::string& ruleName + , const std::string& layer1Name + , const std::string& layer2Name + , bool symetric + , DbU::Unit value + , const std::string& reference ); + // Others. + inline LayerMap& _getLayerMap (); + inline LayerMaskMap& _getLayerMaskMap (); + void _insertInLayerMaskMap ( Layer* ); + void _removeFromLayerMaskMap ( Layer* ); + inline Layer::Mask& _getCutMask (); + inline Layer::Mask& _getMetalMask (); + void _onDbuChange ( float scale ); + // Hurricane Managment. + virtual void _toJson ( JsonWriter* ) const; + virtual void _toJsonCollections ( JsonWriter* ) const; + virtual string _getTypeName () const; + virtual string _getString () const; + virtual Record* _getRecord () const; private: // Internal: Attributes. - DataBase* _dataBase; - Name _name; - LayerMap _layerMap; - LayerMaskMap _layerMaskMap; - Layer::Mask _cutMask; - Layer::Mask _metalMask; + DataBase* _dataBase; + Name _name; + LayerMap _layerMap; + LayerMaskMap _layerMaskMap; + Layer::Mask _cutMask; + Layer::Mask _metalMask; + DeviceDescriptors _deviceDescriptors; + ModelDescriptors _modelDescriptors; + UnitRules _unitRules; + PhysicalRules _noLayerRules; + OneLayerRules _oneLayerRules; + TwoLayersRules _twoLayersRules; protected: // Constructors & Destructors. @@ -135,15 +204,16 @@ namespace Hurricane { // Inline Functions. - inline bool Technology::isMetal ( const Layer* layer ) const { return _metalMask.contains(layer->getMask()); } - inline DataBase* Technology::getDataBase () const { return _dataBase; } - inline const Name& Technology::getName () const { return _name; } - inline Layer* Technology::getLayer ( const Name& name ) const { return _layerMap.getElement(name); } - inline Layers Technology::getLayers () const { return getCollection(&_layerMaskMap); } - inline Technology::LayerMap& Technology::_getLayerMap () { return _layerMap; } - inline Technology::LayerMaskMap& Technology::_getLayerMaskMap () { return _layerMaskMap; } - inline Layer::Mask& Technology::_getCutMask () { return _cutMask; } - inline Layer::Mask& Technology::_getMetalMask () { return _metalMask; } + inline bool Technology::isMetal ( const Layer* layer ) const { return _metalMask.contains(layer->getMask()); } + inline DataBase* Technology::getDataBase () const { return _dataBase; } + inline const Name& Technology::getName () const { return _name; } + inline Layer* Technology::getLayer ( const Name& name ) const { return _layerMap.getElement(name); } + inline Layers Technology::getLayers () const { return getCollection(&_layerMaskMap); } + inline Technology::ModelDescriptors& Technology::getModelDescriptors () { return _modelDescriptors; } + inline Technology::LayerMap& Technology::_getLayerMap () { return _layerMap; } + inline Technology::LayerMaskMap& Technology::_getLayerMaskMap () { return _layerMaskMap; } + inline Layer::Mask& Technology::_getCutMask () { return _cutMask; } + inline Layer::Mask& Technology::_getMetalMask () { return _metalMask; } // ------------------------------------------------------------------- @@ -166,6 +236,14 @@ namespace Hurricane { } // Hurricane namespace. +// ------------------------------------------------------------------- +// Inspector Support for : Hurricane::Technology::LayerPair". + +template<> +inline std::string getString( Hurricane::Technology::LayerPair lp ) +{ return ""; } + + INSPECTOR_P_SUPPORT(Hurricane::Technology); diff --git a/hurricane/src/hurricane/hurricane/TwoLayersPhysicalRule.h b/hurricane/src/hurricane/hurricane/TwoLayersPhysicalRule.h new file mode 100644 index 00000000..a027705f --- /dev/null +++ b/hurricane/src/hurricane/hurricane/TwoLayersPhysicalRule.h @@ -0,0 +1,63 @@ +// -*- 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 | +// | | +// | Author : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : hurricane/TwoLayersPhysicalRule.h | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_TWO_LAYERS_PHYSICAL_RULE_H +#define HURRICANE_TWO_LAYERS_PHYSICAL_RULE_H + +#include "hurricane/PhysicalRule.h" + + +namespace Hurricane { + + class TwoLayersPhysicalRule : public PhysicalRule { + public: + typedef PhysicalRule Super; + public: + inline TwoLayersPhysicalRule ( const Name& name + , DbU::Unit value + , const std::string& reference + , bool symetric + ); + virtual ~TwoLayersPhysicalRule (); + inline bool isSymetric () const; + public: + virtual std::string _getTypeName () const; + virtual std::string _getString () const; + virtual Record* _getRecord () const; + private: + const bool _symetric; + }; + + + TwoLayersPhysicalRule::TwoLayersPhysicalRule ( const Name& name + , DbU::Unit value + , const std::string& reference + , bool symetric + ) + : PhysicalRule(name,value,reference) + , _symetric(symetric) + { } + + + bool TwoLayersPhysicalRule::isSymetric () const { return _symetric; } + + +} // Hurricane namespace. + + +INSPECTOR_P_SUPPORT(Hurricane::TwoLayersPhysicalRule); + +#endif // HURRICANE_TWO_LAYERS_PHYSICAL_RULE_H diff --git a/hurricane/src/hurricane/hurricane/UnitRule.h b/hurricane/src/hurricane/hurricane/UnitRule.h new file mode 100644 index 00000000..46541b86 --- /dev/null +++ b/hurricane/src/hurricane/hurricane/UnitRule.h @@ -0,0 +1,65 @@ +// -*- 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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/UnitRule.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_UNIT_RULE_H +#define HURRICANE_UNIT_RULE_H + +#include "hurricane/Rule.h" + + +namespace Hurricane { + + + class UnitRule : public Rule { + public: + typedef Rule Super; + public: + inline UnitRule ( const Name& name, double value, const std::string& reference ); + inline UnitRule ( const UnitRule& rule ); + virtual ~UnitRule (); + inline double getValue () const; + public: + // Inspector support. + virtual std::string _getTypeName () const; + virtual std::string _getString () const; + virtual Record* _getRecord () const; + private: + const double _value; + }; + + + inline UnitRule::UnitRule ( const Name& name + , double value + , const std::string& reference ) + : Rule(name,reference) + , _value(value) + { } + + inline UnitRule::UnitRule ( const UnitRule& rule ) + : Rule(rule.getName(),rule.getReference()) + , _value(rule._value) + { } + + + double UnitRule::getValue () const { return _value; } + + +} // Hurricane namespace. + + +INSPECTOR_P_SUPPORT(Hurricane::UnitRule); + +#endif // HURRICANE_UNIT_RULE_H diff --git a/hurricane/src/isobar/CMakeLists.txt b/hurricane/src/isobar/CMakeLists.txt index 6ee2c4a1..a1daab41 100644 --- a/hurricane/src/isobar/CMakeLists.txt +++ b/hurricane/src/isobar/CMakeLists.txt @@ -77,6 +77,11 @@ PyVertical.cpp PyQueryMask.cpp PyQuery.cpp + PyDeviceDescriptor.cpp + PyRule.cpp + PyUnitRule.cpp + PyPhysicalRule.cpp + PyTwoLayersPhysicalRule.cpp ) set( pyIncludes hurricane/isobar/ProxyProperty.h hurricane/isobar/PyBreakpoint.h @@ -147,6 +152,11 @@ hurricane/isobar/PyVertical.h hurricane/isobar/PyQueryMask.h hurricane/isobar/PyQuery.h + hurricane/isobar/PyDeviceDescriptor.h + hurricane/isobar/PyRule.h + hurricane/isobar/PyUnitRule.h + hurricane/isobar/PyPhysicalRule.h + hurricane/isobar/PyTwoLayersPhysicalRule.h ) set( depLibs hurricane diff --git a/hurricane/src/isobar/PyDeviceDescriptor.cpp b/hurricane/src/isobar/PyDeviceDescriptor.cpp new file mode 100644 index 00000000..b4622c5d --- /dev/null +++ b/hurricane/src/isobar/PyDeviceDescriptor.cpp @@ -0,0 +1,138 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2010-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | +// | =============================================================== | +// | C++ Module : "./PyDeviceDescriptor.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyDeviceDescriptor.h" + + +namespace Isobar { + + using namespace Hurricane; + + extern "C" { + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(DeviceDescriptor,devdesc,function) + + +// +=================================================================+ +// | "PyDeviceDescriptor" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + extern PyObject* PyDeviceDescriptor_setSpiceFilePath ( PyDeviceDescriptor* self, PyObject* args ) + { + cdebug.log(49) << "PyDeviceDescriptor_setSpiceFilePath ()" << endl; + + HTRY + METHOD_HEAD("DeviceDescriptor.setSpiceFilePath()") + + char* name = NULL; + if (PyArg_ParseTuple(args,"s:DeviceDescriptor.setSpiceFilePath", &name)) { + devdesc->setSpiceFilePath( name ); + } else { + PyErr_SetString( ConstructorError + , "DeviceDescriptor::setSpiceFilePath(): Invalid number of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + extern PyObject* PyDeviceDescriptor_addConnector ( PyDeviceDescriptor* self, PyObject* args ) + { + cdebug.log(49) << "PyDeviceDescriptor_addConnector ()" << endl; + + HTRY + METHOD_HEAD("DeviceDescriptor.addConnector()") + + char* name = NULL; + if (PyArg_ParseTuple(args,"s:DeviceDescriptor.addConnector", &name)) { + devdesc->addConnector( name ); + } else { + PyErr_SetString( ConstructorError + , "DeviceDescriptor::addConnector(): Invalid number of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + extern PyObject* PyDeviceDescriptor_addLayout ( PyDeviceDescriptor* self, PyObject* args ) + { + cdebug.log(49) << "PyDeviceDescriptor_addLayout ()" << endl; + + HTRY + METHOD_HEAD("DeviceDescriptor.addLayout()") + + char* layoutName = NULL; + char* moduleName = NULL; + if (PyArg_ParseTuple(args,"ss:DeviceDescriptor.addLayout", &layoutName, &moduleName)) { + devdesc->addLayout( layoutName, moduleName ); + } else { + PyErr_SetString( ConstructorError + , "DeviceDescriptor::addLayout(): Invalid number of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + // Standart Accessors (Attributes). + + // Standard destroy (Attribute). + //DirectDestroyAttribute(PyDeviceDescriptor_destroy, PyDeviceDescriptor) //not needed + + + PyMethodDef PyDeviceDescriptor_Methods[] = + { { "setSpiceFilePath" , (PyCFunction)PyDeviceDescriptor_setSpiceFilePath, METH_VARARGS + , "Set the spice model associated to this DeviceDescriptor." } + , { "addConnector" , (PyCFunction)PyDeviceDescriptor_addConnector , METH_VARARGS + , "Add a new connector to the DeviceDescriptor." } + , { "addLayout" , (PyCFunction)PyDeviceDescriptor_addLayout , METH_VARARGS + , "Add a new layout generator , done by ." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + PythonOnlyDeleteMethod(DeviceDescriptor) + PyTypeObjectLinkPyType(DeviceDescriptor) + + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyDeviceDescriptor" Shared Library Code Part | +// +=================================================================+ + + + LinkCreateMethod(DeviceDescriptor) + PyTypeObjectDefinitions(DeviceDescriptor) + + +#endif // End of Shared Library Code Part. + + } // extern "C". + +} // Isobar namespace. + diff --git a/hurricane/src/isobar/PyHurricane.cpp b/hurricane/src/isobar/PyHurricane.cpp index a2e05fb1..bc1d1681 100644 --- a/hurricane/src/isobar/PyHurricane.cpp +++ b/hurricane/src/isobar/PyHurricane.cpp @@ -82,6 +82,10 @@ #include "hurricane/isobar/PyTechnology.h" #include "hurricane/isobar/PyQueryMask.h" #include "hurricane/isobar/PyQuery.h" +#include "hurricane/isobar/PyDeviceDescriptor.h" +#include "hurricane/isobar/PyUnitRule.h" +#include "hurricane/isobar/PyPhysicalRule.h" +#include "hurricane/isobar/PyTwoLayersPhysicalRule.h" #include "hurricane/NetExternalComponents.h" #include @@ -194,7 +198,6 @@ using namespace Hurricane; , const char* idBase ) { for ( unsigned i=0 ; i < _types.size() ; i++ ) { if ( ! strcmp ( _types[i]->_id, id ) ) { - //throw Error ( objectTypeRedefinition ); // 04.09.2009 d2 modification so Pharos can run several scripts during one execution cdebug_log(20,0) << objectTypeRedefinition << endl; return; } @@ -581,155 +584,171 @@ extern "C" { PyBreakpoint_LinkPyType (); PyQuery_LinkPyType (); PyQueryMask_LinkPyType (); + PyDeviceDescriptor_LinkPyType(); + PyRule_LinkPyType(); + PyUnitRule_LinkPyType(); + PyPhysicalRule_LinkPyType(); + PyTwoLayersPhysicalRule_LinkPyType(); - PYTYPE_READY ( DebugSession ) - PYTYPE_READY ( UpdateSession ) - PYTYPE_READY ( DbU ) - PYTYPE_READY ( Point ) - PYTYPE_READY ( PointCollection ) - PYTYPE_READY ( Interval ) - PYTYPE_READY ( Box ) - PYTYPE_READY ( Transformation ) - PYTYPE_READY ( Orientation ) - PYTYPE_READY ( DataBase ) - PYTYPE_READY ( Technology ) - PYTYPE_READY ( Library ) - PYTYPE_READY ( Entity ) - PYTYPE_READY ( Hook ) - PYTYPE_READY ( HookCollection ) - PYTYPE_READY ( Material ) - PYTYPE_READY ( Layer ) - PYTYPE_READY ( LayerMask ) - PYTYPE_READY ( BasicLayerCollection ) - PYTYPE_READY ( BasicLayerCollectionLocator ) - PYTYPE_READY ( LayerCollection ) - PYTYPE_READY ( LayerCollectionLocator ) - PYTYPE_READY ( RegularLayerCollection ) - PYTYPE_READY ( RegularLayerCollectionLocator ) - PYTYPE_READY ( ViaLayerCollection ) - PYTYPE_READY ( ViaLayerCollectionLocator ) - PYTYPE_READY ( Path ) - PYTYPE_READY ( Occurrence ) - PYTYPE_READY ( PlacementStatus ) - PYTYPE_READY ( InstanceCollection ) - PYTYPE_READY ( InstanceCollectionLocator ) - PYTYPE_READY ( PlugCollection ) - PYTYPE_READY ( PlugCollectionLocator ) - PYTYPE_READY ( NetType ) - PYTYPE_READY ( NetDirection ) - PYTYPE_READY ( NetCollection ) - PYTYPE_READY ( NetCollectionLocator ) - PYTYPE_READY ( NetRoutingState ) - PYTYPE_READY ( NetRoutingExtension ) - PYTYPE_READY ( CellCollection ) - PYTYPE_READY ( CellCollectionLocator ) - PYTYPE_READY ( PinPlacementStatus ) - PYTYPE_READY ( PinDirection ) - PYTYPE_READY ( PinCollection ) - PYTYPE_READY ( PinCollectionLocator ) - PYTYPE_READY ( SegmentCollection ) - PYTYPE_READY ( SegmentCollectionLocator ) - PYTYPE_READY ( ComponentCollection ) - PYTYPE_READY ( ComponentCollectionLocator ) - PYTYPE_READY ( OccurrenceCollection ) - PYTYPE_READY ( OccurrenceCollectionLocator ) - PYTYPE_READY ( ReferenceCollection ) - PYTYPE_READY ( ReferenceCollectionLocator ) - PYTYPE_READY ( HyperNet ) - PYTYPE_READY ( NetExternalComponents ) - PYTYPE_READY ( Breakpoint ) - PYTYPE_READY ( Query ) - PYTYPE_READY ( QueryMask ) + PYTYPE_READY( DebugSession ) + PYTYPE_READY( UpdateSession ) + PYTYPE_READY( DbU ) + PYTYPE_READY( Point ) + PYTYPE_READY( PointCollection ) + PYTYPE_READY( Interval ) + PYTYPE_READY( Box ) + PYTYPE_READY( Transformation ) + PYTYPE_READY( Orientation ) + PYTYPE_READY( DataBase ) + PYTYPE_READY( Technology ) + PYTYPE_READY( Library ) + PYTYPE_READY( Entity ) + PYTYPE_READY( Hook ) + PYTYPE_READY( HookCollection ) + PYTYPE_READY( Material ) + PYTYPE_READY( Layer ) + PYTYPE_READY( LayerMask ) + PYTYPE_READY( BasicLayerCollection ) + PYTYPE_READY( BasicLayerCollectionLocator ) + PYTYPE_READY( LayerCollection ) + PYTYPE_READY( LayerCollectionLocator ) + PYTYPE_READY( RegularLayerCollection ) + PYTYPE_READY( RegularLayerCollectionLocator ) + PYTYPE_READY( ViaLayerCollection ) + PYTYPE_READY( ViaLayerCollectionLocator ) + PYTYPE_READY( Path ) + PYTYPE_READY( Occurrence ) + PYTYPE_READY( PlacementStatus ) + PYTYPE_READY( InstanceCollection ) + PYTYPE_READY( InstanceCollectionLocator ) + PYTYPE_READY( PlugCollection ) + PYTYPE_READY( PlugCollectionLocator ) + PYTYPE_READY( NetType ) + PYTYPE_READY( NetDirection ) + PYTYPE_READY( NetCollection ) + PYTYPE_READY( NetCollectionLocator ) + PYTYPE_READY( NetRoutingState ) + PYTYPE_READY( NetRoutingExtension ) + PYTYPE_READY( CellCollection ) + PYTYPE_READY( CellCollectionLocator ) + PYTYPE_READY( PinPlacementStatus ) + PYTYPE_READY( PinDirection ) + PYTYPE_READY( PinCollection ) + PYTYPE_READY( PinCollectionLocator ) + PYTYPE_READY( SegmentCollection ) + PYTYPE_READY( SegmentCollectionLocator ) + PYTYPE_READY( ComponentCollection ) + PYTYPE_READY( ComponentCollectionLocator ) + PYTYPE_READY( OccurrenceCollection ) + PYTYPE_READY( OccurrenceCollectionLocator ) + PYTYPE_READY( ReferenceCollection ) + PYTYPE_READY( ReferenceCollectionLocator ) + PYTYPE_READY( HyperNet ) + PYTYPE_READY( NetExternalComponents ) + PYTYPE_READY( Breakpoint ) + PYTYPE_READY( Query ) + PYTYPE_READY( QueryMask ) + PYTYPE_READY( DeviceDescriptor ) + PYTYPE_READY( Rule ) - PYTYPE_READY_SUB ( BasicLayer , Layer ) - PYTYPE_READY_SUB ( RegularLayer , Layer ) - PYTYPE_READY_SUB ( ContactLayer , Layer ) - PYTYPE_READY_SUB ( DiffusionLayer , Layer ) - PYTYPE_READY_SUB ( TransistorLayer, Layer ) - PYTYPE_READY_SUB ( ViaLayer , Layer ) - PYTYPE_READY_SUB ( Cell , Entity ) - PYTYPE_READY_SUB ( Instance , Entity ) - PYTYPE_READY_SUB ( Reference , Entity ) - PYTYPE_READY_SUB ( Net , Entity ) - PYTYPE_READY_SUB ( Component , Entity ) - PYTYPE_READY_SUB ( RoutingPad , Component) - PYTYPE_READY_SUB ( Segment , Component) - PYTYPE_READY_SUB ( Horizontal , Segment ) - PYTYPE_READY_SUB ( Vertical , Segment ) + PYTYPE_READY_SUB( BasicLayer , Layer ) + PYTYPE_READY_SUB( RegularLayer , Layer ) + PYTYPE_READY_SUB( ContactLayer , Layer ) + PYTYPE_READY_SUB( DiffusionLayer , Layer ) + PYTYPE_READY_SUB( TransistorLayer, Layer ) + PYTYPE_READY_SUB( ViaLayer , Layer ) + PYTYPE_READY_SUB( Cell , Entity ) + PYTYPE_READY_SUB( Instance , Entity ) + PYTYPE_READY_SUB( Reference , Entity ) + PYTYPE_READY_SUB( Net , Entity ) + PYTYPE_READY_SUB( Component , Entity ) + PYTYPE_READY_SUB( RoutingPad , Component) + PYTYPE_READY_SUB( Segment , Component) + PYTYPE_READY_SUB( Horizontal , Segment ) + PYTYPE_READY_SUB( Vertical , Segment ) - PYTYPE_READY_SUB ( Contact , Component) - PYTYPE_READY_SUB ( Pin , Contact ) - PYTYPE_READY_SUB ( Plug , Component) - PYTYPE_READY_SUB ( Pad , Component) - PYTYPE_READY_SUB ( Diagonal , Component) - PYTYPE_READY_SUB ( Rectilinear , Component) - PYTYPE_READY_SUB ( Polygon , Component) + PYTYPE_READY_SUB( Contact , Component) + PYTYPE_READY_SUB( Pin , Contact ) + PYTYPE_READY_SUB( Plug , Component) + PYTYPE_READY_SUB( Pad , Component) + PYTYPE_READY_SUB( Diagonal , Component) + PYTYPE_READY_SUB( Rectilinear , Component) + PYTYPE_READY_SUB( Polygon , Component) + + PYTYPE_READY_SUB( UnitRule , Rule ) + PYTYPE_READY_SUB( PhysicalRule , Rule ) + PYTYPE_READY_SUB( TwoLayersPhysicalRule, PhysicalRule ) // Identifier string can take up to 10 characters ! - __cs.addType ( "intv" , &PyTypeInterval , "" , false ); - __cs.addType ( "box" , &PyTypeBox , "" , false ); - __cs.addType ( "ent" , &PyTypeEntity , "" , false ); - __cs.addType ( "cell" , &PyTypeCell , "" , false, "ent" ); - __cs.addType ( "cellCol" , &PyTypeCellCollection , "" , false ); - __cs.addType ( "hook" , &PyTypeHook , "" , false ); - __cs.addType ( "hookColl" , &PyTypeHookCollection , "" , false ); - __cs.addType ( "comp" , &PyTypeComponent , "" , false, "ent" ); - __cs.addType ( "compCol" , &PyTypeComponentCollection , "" , false ); - __cs.addType ( "contact" , &PyTypeContact , "" , false, "comp" ); + __cs.addType( "intv" , &PyTypeInterval , "" , false ); + __cs.addType( "box" , &PyTypeBox , "" , false ); + __cs.addType( "ent" , &PyTypeEntity , "" , false ); + __cs.addType( "cell" , &PyTypeCell , "" , false, "ent" ); + __cs.addType( "cellCol" , &PyTypeCellCollection , "" , false ); + __cs.addType( "hook" , &PyTypeHook , "" , false ); + __cs.addType( "hookColl" , &PyTypeHookCollection , "" , false ); + __cs.addType( "comp" , &PyTypeComponent , "" , false, "ent" ); + __cs.addType( "compCol" , &PyTypeComponentCollection , "" , false ); + __cs.addType( "contact" , &PyTypeContact , "" , false, "comp" ); // Do not change the "none" string. It's hardwired to the None object. - __cs.addType ( "none" , Py_None->ob_type , "" , true ); - __cs.addType ( "float" , &PyFloat_Type , "" , true ); - __cs.addType ( "int" , &PyLong_Type , "" , true ); - __cs.addType ( "bool" , &PyBool_Type , "" , true ); - __cs.addType ( "string" , &PyString_Type , "" , true ); - __cs.addType ( "list" , &PyList_Type , "" , true ); + __cs.addType( "none" , Py_None->ob_type , "" , true ); + __cs.addType( "float" , &PyFloat_Type , "" , true ); + __cs.addType( "int" , &PyLong_Type , "" , true ); + __cs.addType( "bool" , &PyBool_Type , "" , true ); + __cs.addType( "string" , &PyString_Type , "" , true ); + __cs.addType( "list" , &PyList_Type , "" , true ); // Do not change the "function" string. It's hardwired to callable (function) objects. - __cs.addType ( "function" , NULL , "" , true ); - __cs.addType ( "horiz" , &PyTypeHorizontal , "" , false, "segment" ); - __cs.addType ( "inst" , &PyTypeInstance , "" , false, "ent" ); - __cs.addType ( "instCol" , &PyTypeInstanceCollection , "" , false ); - __cs.addType ( "mat" , &PyTypeMaterial , "" , false ); - __cs.addType ( "basicLayer" , &PyTypeBasicLayer , "" , false, "layer" ); - __cs.addType ( "regLayer" , &PyTypeRegularLayer , "" , false, "layer" ); - __cs.addType ( "contLayer" , &PyTypeContactLayer , "" , false, "layer" ); - __cs.addType ( "diffLayer" , &PyTypeDiffusionLayer , "" , false, "layer" ); - __cs.addType ( "tranLayer" , &PyTypeTransistorLayer , "" , false, "layer" ); - __cs.addType ( "viaLayer" , &PyTypeViaLayer , "" , false, "layer" ); - __cs.addType ( "layerColl" , &PyTypeLayerCollection , "" , false ); - __cs.addType ( "blayerColl" , &PyTypeBasicLayerCollection , "" , false ); - __cs.addType ( "rlayerColl" , &PyTypeRegularLayerCollection, "", false ); - __cs.addType ( "vlayerColl" , &PyTypeViaLayerCollection , "" , false ); - __cs.addType ( "layer" , &PyTypeLayer , "" , false ); - __cs.addType ( "lmask" , &PyTypeLayerMask , "" , false ); - __cs.addType ( "library" , &PyTypeLibrary , "" , false ); - __cs.addType ( "ref" , &PyTypeReference , "" , false, "ent" ); - __cs.addType ( "refCol" , &PyTypeReferenceCollection , "" , false ); - __cs.addType ( "net" , &PyTypeNet , "" , false, "ent" ); - __cs.addType ( "netCol" , &PyTypeNetCollection , "" , false ); - __cs.addType ( "hyperNet" , &PyTypeHyperNet , "" , false ); - __cs.addType ( "pin" , &PyTypePin , "" , false, "contact" ); - __cs.addType ( "pinCol" , &PyTypePinCollection , "" , false ); - __cs.addType ( "plug" , &PyTypePlug , "" , false, "comp" ); - __cs.addType ( "plugCol" , &PyTypePlugCollection , "" , false ); - __cs.addType ( "point" , &PyTypePoint , "" , false ); - __cs.addType ( "points" , &PyTypePointCollection , "" , false ); - __cs.addType ( "rp" , &PyTypeRoutingPad , "" , false, "comp" ); - __cs.addType ( "segment" , &PyTypeSegment , "" , false, "comp" ); - __cs.addType ( "pad " , &PyTypePad , "" , false, "comp" ); - __cs.addType ( "diagonal" , &PyTypeDiagonal , "" , false, "comp" ); - __cs.addType ( "rectilin" , &PyTypeRectilinear , "" , false, "comp" ); - __cs.addType ( "polygon" , &PyTypePolygon , "" , false, "comp" ); - __cs.addType ( "segmentCol" , &PyTypeSegmentCollection , "" , false ); - __cs.addType ( "db" , &PyTypeDataBase , "" , false ); - __cs.addType ( "techno" , &PyTypeTechnology , "" , false ); - __cs.addType ( "transfo" , &PyTypeTransformation , "" , false ); - __cs.addType ( "orient" , &PyTypeOrientation , "" , false ); - __cs.addType ( "vert" , &PyTypeVertical , "" , false, "segment" ); - __cs.addType ( "path" , &PyTypePath , "" , false ); - __cs.addType ( "occur" , &PyTypeOccurrence , "" , false ); - __cs.addType ( "occurCol" , &PyTypeOccurrenceCollection , "" , false ); - __cs.addType ( "query" , &PyTypeQuery , "" , false ); - __cs.addType ( "qmask" , &PyTypeQueryMask , "" , false ); + __cs.addType( "function" , NULL , "" , true ); + __cs.addType( "horiz" , &PyTypeHorizontal , "" , false, "segment" ); + __cs.addType( "inst" , &PyTypeInstance , "" , false, "ent" ); + __cs.addType( "instCol" , &PyTypeInstanceCollection , "" , false ); + __cs.addType( "mat" , &PyTypeMaterial , "" , false ); + __cs.addType( "basicLayer" , &PyTypeBasicLayer , "" , false, "layer" ); + __cs.addType( "regLayer" , &PyTypeRegularLayer , "" , false, "layer" ); + __cs.addType( "contLayer" , &PyTypeContactLayer , "" , false, "layer" ); + __cs.addType( "diffLayer" , &PyTypeDiffusionLayer , "" , false, "layer" ); + __cs.addType( "tranLayer" , &PyTypeTransistorLayer , "" , false, "layer" ); + __cs.addType( "viaLayer" , &PyTypeViaLayer , "" , false, "layer" ); + __cs.addType( "layerColl" , &PyTypeLayerCollection , "" , false ); + __cs.addType( "blayerColl" , &PyTypeBasicLayerCollection , "" , false ); + __cs.addType( "rlayerColl" , &PyTypeRegularLayerCollection, "", false ); + __cs.addType( "vlayerColl" , &PyTypeViaLayerCollection , "" , false ); + __cs.addType( "layer" , &PyTypeLayer , "" , false ); + __cs.addType( "lmask" , &PyTypeLayerMask , "" , false ); + __cs.addType( "library" , &PyTypeLibrary , "" , false ); + __cs.addType( "ref" , &PyTypeReference , "" , false, "ent" ); + __cs.addType( "refCol" , &PyTypeReferenceCollection , "" , false ); + __cs.addType( "net" , &PyTypeNet , "" , false, "ent" ); + __cs.addType( "netCol" , &PyTypeNetCollection , "" , false ); + __cs.addType( "hyperNet" , &PyTypeHyperNet , "" , false ); + __cs.addType( "pin" , &PyTypePin , "" , false, "contact" ); + __cs.addType( "pinCol" , &PyTypePinCollection , "" , false ); + __cs.addType( "plug" , &PyTypePlug , "" , false, "comp" ); + __cs.addType( "plugCol" , &PyTypePlugCollection , "" , false ); + __cs.addType( "point" , &PyTypePoint , "" , false ); + __cs.addType( "points" , &PyTypePointCollection , "" , false ); + __cs.addType( "rp" , &PyTypeRoutingPad , "" , false, "comp" ); + __cs.addType( "segment" , &PyTypeSegment , "" , false, "comp" ); + __cs.addType( "pad " , &PyTypePad , "" , false, "comp" ); + __cs.addType( "diagonal" , &PyTypeDiagonal , "" , false, "comp" ); + __cs.addType( "rectilin" , &PyTypeRectilinear , "" , false, "comp" ); + __cs.addType( "polygon" , &PyTypePolygon , "" , false, "comp" ); + __cs.addType( "segmentCol" , &PyTypeSegmentCollection , "" , false ); + __cs.addType( "db" , &PyTypeDataBase , "" , false ); + __cs.addType( "techno" , &PyTypeTechnology , "" , false ); + __cs.addType( "transfo" , &PyTypeTransformation , "" , false ); + __cs.addType( "orient" , &PyTypeOrientation , "" , false ); + __cs.addType( "vert" , &PyTypeVertical , "" , false, "segment" ); + __cs.addType( "path" , &PyTypePath , "" , false ); + __cs.addType( "occur" , &PyTypeOccurrence , "" , false ); + __cs.addType( "occurCol" , &PyTypeOccurrenceCollection , "" , false ); + __cs.addType( "query" , &PyTypeQuery , "" , false ); + __cs.addType( "qmask" , &PyTypeQueryMask , "" , false ); + __cs.addType( "devdesc" , &PyTypeDeviceDescriptor , "" , false ); + __cs.addType( "rule" , &PyTypeRule , "" , false ); + __cs.addType( "urule" , &PyTypeUnitRule , "" , false, "rule" ); + __cs.addType( "prule" , &PyTypePhysicalRule , "" , false, "rule" ); + __cs.addType( "2prule" , &PyTypeTwoLayersPhysicalRule , "" , false, "prule" ); PyObject* module = Py_InitModule ( "Hurricane", PyHurricane_Methods ); @@ -823,6 +842,9 @@ extern "C" { PyModule_AddObject ( module, "Rectilinear" , (PyObject*)&PyTypeRectilinear ); Py_INCREF ( &PyTypePolygon ); PyModule_AddObject ( module, "Polygon" , (PyObject*)&PyTypePolygon ); + + Py_INCREF( &PyTypeDeviceDescriptor ); + PyModule_AddObject( module, "DeviceDescriptor" , (PyObject*)&PyTypeDeviceDescriptor ); PyObject* dictionnary = PyModule_GetDict ( module ); diff --git a/hurricane/src/isobar/PyPhysicalRule.cpp b/hurricane/src/isobar/PyPhysicalRule.cpp new file mode 100644 index 00000000..181a29c5 --- /dev/null +++ b/hurricane/src/isobar/PyPhysicalRule.cpp @@ -0,0 +1,80 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : "./PyPhysicalRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyPhysicalRule.h" + + +namespace Isobar { + + using namespace Hurricane; + + 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(PhysicalRule,rule,function) + + +// +=================================================================+ +// | "PyPhysicalRule" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + DirectDestroyAttribute(PyPhysicalRule_destroy, PyPhysicalRule) + + DirectGetLongAttribute(PyPhysicalRule_getValue, getValue, PyPhysicalRule, PhysicalRule) + + + PyMethodDef PyPhysicalRule_Methods[] = + { { "getValue" , (PyCFunction)PyPhysicalRule_getValue, METH_NOARGS + , "Returns the value (DbU::Unit)." } + , { "destroy" , (PyCFunction)PyPhysicalRule_destroy , METH_NOARGS + , "Destroy associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyPhysicalRule" Object Methods | + // +-------------------------------------------------------------+ + + + DirectDeleteMethod(PyPhysicalRule_DeAlloc,PyPhysicalRule) + PyTypeObjectLinkPyType(PhysicalRule) + + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyPhysicalRule" Shared Library Code Part | +// +=================================================================+ + + + PyTypeInheritedObjectDefinitions(PhysicalRule,Rule) + LinkCreateMethod(PhysicalRule) + + +# endif // End of Shared Library Code Part. + + } // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/isobar/PyRule.cpp b/hurricane/src/isobar/PyRule.cpp new file mode 100644 index 00000000..1fb0189f --- /dev/null +++ b/hurricane/src/isobar/PyRule.cpp @@ -0,0 +1,100 @@ +// -*- C++ -*- +// +// This file is part of the Chams 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 : "./PyRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyRule.h" +#include "hurricane/isobar/PyUnitRule.h" +#include "hurricane/isobar/PyPhysicalRule.h" +#include "hurricane/isobar/PyTwoLayersPhysicalRule.h" + + +namespace Isobar { + + using namespace Hurricane; + + extern "C" { + + +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Rule,rule,function) + + +// +=================================================================+ +// | "PyRule" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + DirectDestroyAttribute(PyRule_destroy, PyRule) + + GetNameMethod(Rule,rule) + + DirectGetStringAttribute(PyRule_getReference, getReference, PyRule, Rule) + + + PyMethodDef PyRule_Methods[] = + { { "getName" , (PyCFunction)PyRule_getName , METH_NOARGS + , "Returns the name of the rule." } + , { "getReference" , (PyCFunction)PyRule_getReference, METH_NOARGS + , "Returns the reference (founder documentation) of the rule." } + , { "destroy" , (PyCFunction)PyRule_destroy , METH_NOARGS + , "Destroy associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyRule" Object Methods | + // +-------------------------------------------------------------+ + + + DirectDeleteMethod(PyRule_DeAlloc,PyRule) + PyTypeObjectLinkPyType(Rule) + + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyRule" Shared Library Code Part | +// +=================================================================+ + + +PyTypeRootObjectDefinitions(Rule) +LinkCreateMethod(Rule) + + + extern PyObject* PyRule_LinkDerived ( Rule* object ) + { + if (object == NULL) Py_RETURN_NONE; + + UnitRule* unitRule = dynamic_cast(object); + if (unitRule) return PyUnitRule_Link(unitRule); + + TwoLayersPhysicalRule* twoLayersPhysicalRule = dynamic_cast(object); + if (twoLayersPhysicalRule) return PyTwoLayersPhysicalRule_Link(twoLayersPhysicalRule); + + PhysicalRule* physicalRule = dynamic_cast(object); + if (physicalRule) return PyPhysicalRule_Link(physicalRule); + + Py_RETURN_NONE; + } + + +#endif // Shared Library Code Part. + + } // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/isobar/PyTechnology.cpp b/hurricane/src/isobar/PyTechnology.cpp index 9d39303c..2412adbf 100644 --- a/hurricane/src/isobar/PyTechnology.cpp +++ b/hurricane/src/isobar/PyTechnology.cpp @@ -54,6 +54,10 @@ #include "hurricane/isobar/PyBasicLayerCollection.h" #include "hurricane/isobar/PyRegularLayerCollection.h" #include "hurricane/isobar/PyViaLayerCollection.h" +#include "hurricane/isobar/PyUnitRule.h" +#include "hurricane/isobar/PyPhysicalRule.h" +#include "hurricane/isobar/PyTwoLayersPhysicalRule.h" +#include "hurricane/isobar/PyDeviceDescriptor.h" namespace Isobar { @@ -217,6 +221,190 @@ extern "C" { } + static PyObject* PyTechnology_getUnitRule ( PyTechnology *self, PyObject* args ) + { + cdebug.log(49) << "PyTechnology_getUnitRule()" << endl; + METHOD_HEAD("Technology.getUnitRule()") + + UnitRule* rule = NULL; + + HTRY + char *arg0 = NULL; + if (not PyArg_ParseTuple(args,"s:Technology.getUnitRule", &arg0)) { + PyErr_SetString( ProxyError + , "invalid number of parameters for getUnitRule on Technology." ); + return NULL; + } + if (arg0) { + rule = new UnitRule( techno->getUnitRule(arg0) ); + } else { + PyErr_SetString( ProxyError, "invalid number of parameters for getUnitRule on Technology." ); + return NULL; + } + HCATCH + + return PyRule_LinkDerived(rule); + } + + + static PyObject* PyTechnology_getPhysicalRule ( PyTechnology *self, PyObject* args ) + { + cdebug.log(49) << "PyTechnology_getPhysicalRule()" << endl; + METHOD_HEAD("Technology.getPhysicalRule()") + + PhysicalRule* rule = NULL; + + HTRY + char *arg0=NULL, *arg1=NULL, *arg2=NULL; + if (not PyArg_ParseTuple(args,"s|ss:Technology.getPhysicalRule", &arg0, &arg1, &arg2)) { + PyErr_SetString( ProxyError + , "invalid number of parameters for getPhysicalRule on Technology." ); + return NULL; + } + if (arg2) { + rule = new PhysicalRule( techno->getPhysicalRule(arg0,arg1,arg2) ); + } else if (arg1) { + rule = new PhysicalRule( techno->getPhysicalRule(arg0,arg1) ); + } else if (arg0) { + rule = new PhysicalRule( techno->getPhysicalRule(arg0) ); + } else { + PyErr_SetString( ProxyError, "invalid number of parameters for getPhysicalRule on Technology." ); + return NULL; + } + HCATCH + + return PyRule_LinkDerived(rule); + } + + + static PyObject* PyTechnology_addUnitRule ( PyTechnology* self, PyObject *args ) + { + cdebug.log(49) << "PyTechnology_addUnitRule()" << endl; + METHOD_HEAD("Technology.addUnitRule()") + + PyObject* arg0 = NULL; + PyObject* arg1 = NULL; + PyObject* arg2 = NULL; + + HTRY + __cs.init ("Technology.addUnitRule"); + if (not PyArg_ParseTuple(args,"O&O&O&:Technology.addUnitRule" + ,Converter,&arg0 + ,Converter,&arg1 + ,Converter,&arg2 + )) { + PyErr_SetString( ConstructorError, "Technology.addUnitRule(): invalid number of parameters." ); + return NULL; + } + if (__cs.getObjectIds() == ":string:float:string") + techno->addUnitRule( PyString_AsString(arg0) + , PyFloat_AsDouble(arg1) + , PyString_AsString(arg2) ); + else { + PyErr_SetString( ConstructorError, "Technology.addUnitRule(): Invalid number or bad type of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + static PyObject* PyTechnology_addPhysicalRule ( PyTechnology* self, PyObject *args ) + { + cdebug.log(49) << "PyTechnology_addPhysicalRule()" << endl; + METHOD_HEAD("Technology.addPhysicalRule()") + + PyObject* arg0 = NULL; + PyObject* arg1 = NULL; + PyObject* arg2 = NULL; + PyObject* arg3 = NULL; + PyObject* arg4 = NULL; + PyObject* arg5 = NULL; + + HTRY + __cs.init ("Technology.addPhysicalRule"); + if (not PyArg_ParseTuple(args,"O&O&O&|O&O&O&:Technology.addPhysicalRule" + ,Converter,&arg0 + ,Converter,&arg1 + ,Converter,&arg2 + ,Converter,&arg3 + ,Converter,&arg4 + ,Converter,&arg5 + )) { + PyErr_SetString( ConstructorError, "Technology.addPhysicalRule(): invalid number of parameters." ); + return NULL; + } + if (__cs.getObjectIds() == ":string:int:string") + techno->addPhysicalRule( PyString_AsString(arg0) + , PyAny_AsLong (arg1) + , PyString_AsString(arg2) ); + else if (__cs.getObjectIds() == ":string:string:int:string") + techno->addPhysicalRule( PyString_AsString(arg0) + , PyString_AsString(arg1) + , PyAny_AsLong (arg2) + , PyString_AsString(arg3) ); + else if (__cs.getObjectIds() == ":string:string:string:bool:int:string") + techno->addPhysicalRule( PyString_AsString(arg0) + , PyString_AsString(arg1) + , PyString_AsString(arg2) + , PyObject_IsTrue (arg3) + , PyAny_AsLong (arg4) + , PyString_AsString(arg5) ); + else { + PyErr_SetString( ConstructorError, "Technology.addPhysicalRule(): Invalid number or bad type of parameters." ); + return NULL; + } + HCATCH + + Py_RETURN_NONE; + } + + + extern PyObject* PyTechnology_addDeviceDescriptor ( PyTechnology* self, PyObject* args ) + { + cdebug.log(49) << "PyTechnology_addDeviceDescriptor ()" << endl; + DeviceDescriptor* devDesc = NULL; + + HTRY + METHOD_HEAD("Technology.addDeviceDescriptor()") + + char* name = NULL; + if (PyArg_ParseTuple(args,"s:Technology.addDeviceDescriptor", &name)) { + devDesc = techno->addDeviceDescriptor( name ); + } else { + PyErr_SetString( ConstructorError + , "Technology::addDeviceDescriptor(): Invalid number of parameters." ); + return NULL; + } + HCATCH + + return PyDeviceDescriptor_Link( devDesc ); + } + + + extern PyObject* PyTechnology_getDeviceDescriptor ( PyTechnology* self, PyObject* args ) + { + cdebug.log(49) << "PyTechnology_getDeviceDescriptor ()" << endl; + DeviceDescriptor* devDesc = NULL; + + HTRY + METHOD_HEAD("Technology.getDeviceDescriptor()") + + char* name = NULL; + if (PyArg_ParseTuple(args,"s:Technology.getDeviceDescriptor", &name)) { + devDesc = techno->getDeviceDescriptor( name ); + } else { + PyErr_SetString( ConstructorError + , "Technology::getDeviceDescriptor(): Invalid number of parameters." ); + return NULL; + } + HCATCH + + return PyDeviceDescriptor_Link( devDesc ); + } + + // Standart Accessors (Attributes). GetNameMethod (Technology,techno) SetNameMethod (Technology,techno) @@ -242,48 +430,62 @@ extern "C" { // PyTechnology Attribute Method table. PyMethodDef PyTechnology_Methods[] = - { { "create" , (PyCFunction)PyTechnology_create , METH_VARARGS|METH_STATIC - , "Create the Technology object." } - , { "isMetal" , (PyCFunction)PyTechnology_isMetal , METH_VARARGS - , "Tells if the given layer is of metal kind (Material)." } - , { "getDataBase" , (PyCFunction)PyTechnology_getDataBase , METH_NOARGS - , "Returns the associated DataBase." } - , { "getName" , (PyCFunction)PyTechnology_getName , METH_NOARGS - , "Returns the name of the technology." } - , { "getLayer" , (PyCFunction)PyTechnology_getLayer , METH_VARARGS - , "Returns the layer named name." } - , { "getBasicLayer" , (PyCFunction)PyTechnology_getBasicLayer , METH_VARARGS - , "Returns the BasicLayer named name." } - , { "getRegularLayer" , (PyCFunction)PyTechnology_getRegularLayer , METH_VARARGS - , "Returns the RegularLayer named name." } - , { "getViaLayer" , (PyCFunction)PyTechnology_getViaLayer , METH_VARARGS - , "Returns the ViaLayer named name." } - , { "getLayers" , (PyCFunction)PyTechnology_getLayers , METH_NOARGS - , "Returns the collection of all Layers." } - , { "getBasicLayers" , (PyCFunction)PyTechnology_getBasicLayers , METH_VARARGS - , "Returns the collection of all BasicLayers." } - , { "getRegularLayers" , (PyCFunction)PyTechnology_getRegularLayers, METH_NOARGS - , "Returns the collection of all RegularLayers." } - , { "getViaLayers" , (PyCFunction)PyTechnology_getViaLayers , METH_NOARGS - , "Returns the collection of all BasicLayers." } - , { "getMetalAbove" , (PyCFunction)PyTechnology_getMetalAbove , METH_VARARGS - , "Returns the metal layer immediatly above this one." } - , { "getMetalBelow" , (PyCFunction)PyTechnology_getMetalBelow , METH_VARARGS - , "Returns the metal layer immediatly below this one." } - , { "getCutAbove" , (PyCFunction)PyTechnology_getCutAbove , METH_VARARGS - , "Returns the cut layer immediatly above this one." } - , { "getCutBelow" , (PyCFunction)PyTechnology_getCutBelow , METH_VARARGS - , "Returns the cut layer immediatly below." } - , { "getViaBetween" , (PyCFunction)PyTechnology_getViaBetween , METH_VARARGS - , "Returns the VIA between those two layers (must be adjacent)." } - , { "getNthMetal" , (PyCFunction)PyTechnology_getNthMetal , METH_VARARGS - , "Returns Nth metal (zero is nearest substrate)." } - , { "setName" , (PyCFunction)PyTechnology_setName , METH_VARARGS - , "Allows to change the technology name." } - , { "setSymbolicLayer" , (PyCFunction)PyTechnology_setSymbolicLayer, METH_VARARGS - , "Mark a Layer as the symbolic one (by name or by Layer)." } - , { "destroy" , (PyCFunction)PyTechnology_destroy , METH_NOARGS - , "Destroy associated hurricane object The python object remains." } + { { "create" , (PyCFunction)PyTechnology_create , METH_VARARGS|METH_STATIC + , "Create the Technology object." } + , { "isMetal" , (PyCFunction)PyTechnology_isMetal , METH_VARARGS + , "Tells if the given layer is of metal kind (Material)." } + , { "getDataBase" , (PyCFunction)PyTechnology_getDataBase , METH_NOARGS + , "Returns the associated DataBase." } + , { "getName" , (PyCFunction)PyTechnology_getName , METH_NOARGS + , "Returns the name of the technology." } + , { "getLayer" , (PyCFunction)PyTechnology_getLayer , METH_VARARGS + , "Returns the layer named name." } + , { "getBasicLayer" , (PyCFunction)PyTechnology_getBasicLayer , METH_VARARGS + , "Returns the BasicLayer named name." } + , { "getRegularLayer" , (PyCFunction)PyTechnology_getRegularLayer , METH_VARARGS + , "Returns the RegularLayer named name." } + , { "getViaLayer" , (PyCFunction)PyTechnology_getViaLayer , METH_VARARGS + , "Returns the ViaLayer named name." } + , { "getLayers" , (PyCFunction)PyTechnology_getLayers , METH_NOARGS + , "Returns the collection of all Layers." } + , { "getBasicLayers" , (PyCFunction)PyTechnology_getBasicLayers , METH_VARARGS + , "Returns the collection of all BasicLayers." } + , { "getRegularLayers" , (PyCFunction)PyTechnology_getRegularLayers , METH_NOARGS + , "Returns the collection of all RegularLayers." } + , { "getViaLayers" , (PyCFunction)PyTechnology_getViaLayers , METH_NOARGS + , "Returns the collection of all BasicLayers." } + , { "getMetalAbove" , (PyCFunction)PyTechnology_getMetalAbove , METH_VARARGS + , "Returns the metal layer immediatly above this one." } + , { "getMetalBelow" , (PyCFunction)PyTechnology_getMetalBelow , METH_VARARGS + , "Returns the metal layer immediatly below this one." } + , { "getCutAbove" , (PyCFunction)PyTechnology_getCutAbove , METH_VARARGS + , "Returns the cut layer immediatly above this one." } + , { "getCutBelow" , (PyCFunction)PyTechnology_getCutBelow , METH_VARARGS + , "Returns the cut layer immediatly below." } + , { "getViaBetween" , (PyCFunction)PyTechnology_getViaBetween , METH_VARARGS + , "Returns the VIA between those two layers (must be adjacent)." } + , { "getNthMetal" , (PyCFunction)PyTechnology_getNthMetal , METH_VARARGS + , "Returns Nth metal (zero is nearest substrate)." } + , { "setName" , (PyCFunction)PyTechnology_setName , METH_VARARGS + , "Allows to change the technology name." } + , { "setSymbolicLayer" , (PyCFunction)PyTechnology_setSymbolicLayer , METH_VARARGS + , "Mark a Layer as the symbolic one (by name or by Layer)." } + , { "getUnitRule" , (PyCFunction)PyTechnology_getUnitRule , METH_VARARGS + , "Returns the Unit Rule named name." } + , { "getPhysicalRule" , (PyCFunction)PyTechnology_getPhysicalRule , METH_VARARGS + , "Returns the Physical Rule named name." } + , { "getLayer" , (PyCFunction)PyTechnology_getLayer , METH_VARARGS + , "Returns the Layer named name." } + , { "addPhysicalRule" , (PyCFunction)PyTechnology_addPhysicalRule , METH_VARARGS + , "Adds a new physical rule." } + , { "addUnitRule" , (PyCFunction)PyTechnology_addUnitRule , METH_VARARGS + , "Adds a new Unit rule." } + , { "getDeviceDescriptor", (PyCFunction)PyTechnology_getDeviceDescriptor , METH_VARARGS + , "Get the DeviceDescriptor ." } + , { "addDeviceDescriptor", (PyCFunction)PyTechnology_addDeviceDescriptor , METH_VARARGS + , "Add (create) the DeviceDescriptor ." } + , { "destroy" , (PyCFunction)PyTechnology_destroy , METH_NOARGS + , "Destroy associated hurricane object The python object remains." } , {NULL, NULL, 0, NULL} /* sentinel */ }; diff --git a/hurricane/src/isobar/PyTwoLayersPhysicalRule.cpp b/hurricane/src/isobar/PyTwoLayersPhysicalRule.cpp new file mode 100644 index 00000000..32f9e256 --- /dev/null +++ b/hurricane/src/isobar/PyTwoLayersPhysicalRule.cpp @@ -0,0 +1,80 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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 : "./PyTwoLayersPhysicalRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyTwoLayersPhysicalRule.h" + + +namespace Isobar { + + using namespace Hurricane; + + extern "C" { + + +#undef ACCESS_OBJECT +#undef ACCESS_CLASS +#define ACCESS_OBJECT _baseObject._baseObject._object +#define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject._baseObject) +#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(TwoLayersPhysicalRule,rule,function) + + +// +=================================================================+ +// | "TwoLayersPyPhysicalRule" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + DirectDestroyAttribute(PyTwoLayersPhysicalRule_destroy, PyTwoLayersPhysicalRule) + + DirectGetBoolAttribute(PyTwoLayersPhysicalRule_isSymetric, isSymetric, PyTwoLayersPhysicalRule, TwoLayersPhysicalRule) + + + PyMethodDef PyTwoLayersPhysicalRule_Methods[] = + { { "isSymetric" , (PyCFunction)PyTwoLayersPhysicalRule_isSymetric, METH_NOARGS + , "Is the rule symetric regarding the two involved layers." } + , { "destroy" , (PyCFunction)PyTwoLayersPhysicalRule_destroy , METH_NOARGS + , "Destroy associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyPhysicalRule" Object Methods | + // +-------------------------------------------------------------+ + + + DirectDeleteMethod(PyTwoLayersPhysicalRule_DeAlloc,PyTwoLayersPhysicalRule) + PyTypeObjectLinkPyType(TwoLayersPhysicalRule) + + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyPhysicalRule" Shared Library Code Part | +// +=================================================================+ + + + PyTypeInheritedObjectDefinitions(TwoLayersPhysicalRule,PhysicalRule) + LinkCreateMethod(TwoLayersPhysicalRule) + + +# endif // End of Shared Library Code Part. + + } // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/isobar/PyUnitRule.cpp b/hurricane/src/isobar/PyUnitRule.cpp new file mode 100644 index 00000000..c55c1cd6 --- /dev/null +++ b/hurricane/src/isobar/PyUnitRule.cpp @@ -0,0 +1,80 @@ +// -*- 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 : "./PyUnitRule.cpp" | +// +-----------------------------------------------------------------+ + + +#include "hurricane/isobar/PyUnitRule.h" + + +namespace Isobar { + + using namespace Hurricane; + + 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(UnitRule,rule,function) + + +// +=================================================================+ +// | "PyUnitRule" Python Module Code Part | +// +=================================================================+ + +#if defined(__PYTHON_MODULE__) + + + DirectDestroyAttribute(PyUnitRule_destroy, PyUnitRule) + + DirectGetDoubleAttribute(PyUnitRule_getValue, getValue, PyUnitRule, UnitRule) + + + PyMethodDef PyUnitRule_Methods[] = + { { "getValue" , (PyCFunction)PyUnitRule_getValue, METH_NOARGS + , "Returns the value (double)." } + , { "destroy" , (PyCFunction)PyUnitRule_destroy , METH_NOARGS + , "Destroy associated hurricane object, the python object remains." } + , { NULL, NULL, 0, NULL } /* sentinel */ + }; + + + // +-------------------------------------------------------------+ + // | "PyUnitRule" Object Methods | + // +-------------------------------------------------------------+ + + + DirectDeleteMethod(PyUnitRule_DeAlloc,PyUnitRule) + PyTypeObjectLinkPyType(UnitRule) + + +#else // End of Python Module Code Part. + + +// +=================================================================+ +// | "PyUnitRule" Shared Library Code Part | +// +=================================================================+ + + + PyTypeInheritedObjectDefinitions(UnitRule,Rule) + LinkCreateMethod(UnitRule) + + +#endif // End of Shared Library Code Part. + + } // extern "C". + +} // Isobar namespace. diff --git a/hurricane/src/isobar/hurricane/isobar/PyDeviceDescriptor.h b/hurricane/src/isobar/hurricane/isobar/PyDeviceDescriptor.h new file mode 100644 index 00000000..4af3a411 --- /dev/null +++ b/hurricane/src/isobar/hurricane/isobar/PyDeviceDescriptor.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2015-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 : Damien Dupuis | +// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | +// | =============================================================== | +// | C++ Header : "./hurricane/isobar/PyDeviceDescriptor.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_PY_DEVICE_DESCRIPTOR_H +#define HURRICANE_PY_DEVICE_DESCRIPTOR_H + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/DeviceDescriptor.h" + + +namespace Isobar { + + extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyDeviceDescriptor". + + typedef struct { + PyObject_HEAD + DeviceDescriptor* _object; + } PyDeviceDescriptor; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyAnalog.ccp". + + extern PyTypeObject PyTypeDeviceDescriptor; + extern PyMethodDef PyDeviceDescriptor_Methods[]; + + extern PyObject* PyDeviceDescriptor_Link ( DeviceDescriptor* ); + extern void PyDeviceDescriptor_LinkPyType (); + + +#define IsPyDeviceDescriptor(v) ( (v)->ob_type == &PyTypeDeviceDescriptor ) +#define PYDEVICEDESCRIPTOR(v) ( (PyDeviceDescriptor*)(v) ) +#define PYDEVICEDESCRIPTOR_O(v) ( PYDEVICEDESCRIPTOR(v)->_object ) + + + } // extern "C". + +} // Isobar namespace. + +#endif // HURRICANE_PY_DEVICE_DESCRIPTOR_H diff --git a/hurricane/src/isobar/hurricane/isobar/PyPhysicalRule.h b/hurricane/src/isobar/hurricane/isobar/PyPhysicalRule.h new file mode 100644 index 00000000..4d4a148e --- /dev/null +++ b/hurricane/src/isobar/hurricane/isobar/PyPhysicalRule.h @@ -0,0 +1,55 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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++ Header : "./hurricane/isobar/PyPhysicalRule.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_PY_PHYSICAL_RULE_H +#define HURRICANE_PY_PHYSICAL_RULE_H + +#include "hurricane/isobar/PyRule.h" +#include "hurricane/PhysicalRule.h" + + +namespace Isobar { + + extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyPhysicalRule". + + typedef struct { + PyRule _baseObject; + } PyPhysicalRule; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypePhysicalRule; + extern PyMethodDef PyPhysicalRule_Methods[]; + extern PyObject* PyPhysicalRule_Link ( PhysicalRule* ); + extern void PyPhysicalRule_LinkPyType (); + extern void PyPhysicalRule_Constructor(); + + +#define IsPyPhysicalRule(v) ( (v)->ob_type == &PyTypePhysicalRule ) +#define PYPHYSICALRULE(v) ( (PyPhysicalRule*)(v) ) +#define PYPHYSICALRULE_O(v) ( dynamic_cast(PYPHYSICALRULE(v)->_baseObject._object) ) + + + } // extern "C". + +} // Isobar namespace. + +#endif // HURRICANE_PY_PHYSICAL_RULE_H diff --git a/hurricane/src/isobar/hurricane/isobar/PyRule.h b/hurricane/src/isobar/hurricane/isobar/PyRule.h new file mode 100644 index 00000000..17f78ad8 --- /dev/null +++ b/hurricane/src/isobar/hurricane/isobar/PyRule.h @@ -0,0 +1,56 @@ +// -*- 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++ Header : "./hurricane/isobar/PyRule.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_PY_RULE_H +#define HURRICANE_PY_RULE_H + +#include "hurricane/isobar/PyHurricane.h" +#include "hurricane/Rule.h" + +namespace Isobar { + + extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyRule". + + typedef struct { + PyObject_HEAD + Rule* _object; + } PyRule; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeRule; + extern PyMethodDef PyRule_Methods[]; + extern PyObject* PyRule_Link ( Rule* ); + extern void PyRule_LinkPyType (); + extern void PyRule_Constructor (); + extern PyObject* PyRule_LinkDerived ( Rule* object ); + + +#define IsPyRule(v) ( (v)->ob_type == &PyTypeRule ) +#define PYRULE(v) ( (PyRule*)(v) ) +#define PYRULE_O(v) ( PYRULE(v)->_object ) + + + } // extern "C". + +} // Isobar namespace. + +#endif // HURRICANE_PY_RULE_H diff --git a/hurricane/src/isobar/hurricane/isobar/PyTwoLayersPhysicalRule.h b/hurricane/src/isobar/hurricane/isobar/PyTwoLayersPhysicalRule.h new file mode 100644 index 00000000..71a1147b --- /dev/null +++ b/hurricane/src/isobar/hurricane/isobar/PyTwoLayersPhysicalRule.h @@ -0,0 +1,55 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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++ Header : hurricane/isobar/PyTwoLayersPhysicalRule.h | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_PY_TWO_LAYERS_PHYSICAL_RULE_H +#define HURRICANE_PY_TWO_LAYERS_PHYSICAL_RULE_H + +#include "hurricane/isobar/PyPhysicalRule.h" +#include "hurricane/TwoLayersPhysicalRule.h" + + +namespace Isobar { + + extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyTwoLayersPhysicalRule". + + typedef struct { + PyPhysicalRule _baseObject; + } PyTwoLayersPhysicalRule; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeTwoLayersPhysicalRule; + extern PyMethodDef PyTwoLayersPhysicalRule_Methods[]; + extern PyObject* PyTwoLayersPhysicalRule_Link ( TwoLayersPhysicalRule* ); + extern void PyTwoLayersPhysicalRule_LinkPyType (); + extern void PyTwoLayersPhysicalRule_Constructor(); + + +#define IsPyTwoLayersPhysicalRule(v) ( (v)->ob_type == &PyTypeTwoLayersPhysicalRule ) +#define PYTWOLAYERSPHYSICALRULE(v) ( (PyTwoLayersPhysicalRule*)(v) ) +#define PYTWOLAYERSPHYSICALRULE_O(v) ( dynamic_cast(PYTWOLAYERSPHYSICALRULE(v)->_baseObject._baseObject._object) ) + + + } // extern "C". + +} // Isobar namespace. + +#endif // HURRICANE_PY_TWO_LAYERS_PHYSICAL_RULE_H diff --git a/hurricane/src/isobar/hurricane/isobar/PyUnitRule.h b/hurricane/src/isobar/hurricane/isobar/PyUnitRule.h new file mode 100644 index 00000000..5f8bb1b1 --- /dev/null +++ b/hurricane/src/isobar/hurricane/isobar/PyUnitRule.h @@ -0,0 +1,55 @@ +// -*- C++ -*- +// +// This file is part of the Coriolis Software. +// Copyright (c) UPMC 2008-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++ Header : "./hurricane/isobar/PyUnitRule.h" | +// +-----------------------------------------------------------------+ + + +#ifndef HURRICANE_PY_UNIT_RULE_H +#define HURRICANE_PY_UNIT_RULE_H + +#include "hurricane/isobar/PyRule.h" +#include "hurricane/UnitRule.h" + + +namespace Isobar { + + extern "C" { + +// ------------------------------------------------------------------- +// Python Object : "PyUnitRule". + + typedef struct { + PyRule _baseObject; + } PyUnitRule; + + +// ------------------------------------------------------------------- +// Functions & Types exported to "PyHurricane.cpp". + + extern PyTypeObject PyTypeUnitRule; + extern PyMethodDef PyUnitRule_Methods[]; + extern PyObject* PyUnitRule_Link ( UnitRule* ); + extern void PyUnitRule_LinkPyType (); + extern void PyUnitRule_Constructor(); + + +#define IsPyUnitRule(v) ( (v)->ob_type == &PyTypeUnitRule ) +#define PYUNITRULE(v) ( (PyUnitRule*)(v) ) +#define PYUNITRULE_O(v) ( dynamic_cast(PYUNITRULE(v)->_baseObject._object) ) + + + } // extern "C". + +} // Isobar namespace. + +#endif // HURRICANE_PY_UNIT_RULE_H diff --git a/katabatic/doc/html/AutoContactHTee_8h_source.html b/katabatic/doc/html/AutoContactHTee_8h_source.html index 02349e93..5fdfa22c 100644 --- a/katabatic/doc/html/AutoContactHTee_8h_source.html +++ b/katabatic/doc/html/AutoContactHTee_8h_source.html @@ -146,7 +146,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoContactTerminal_8h_source.html b/katabatic/doc/html/AutoContactTerminal_8h_source.html index 0966d0b7..50f2a3cd 100644 --- a/katabatic/doc/html/AutoContactTerminal_8h_source.html +++ b/katabatic/doc/html/AutoContactTerminal_8h_source.html @@ -153,7 +153,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoContactTurn_8h_source.html b/katabatic/doc/html/AutoContactTurn_8h_source.html index 14d8fb0f..49197ae6 100644 --- a/katabatic/doc/html/AutoContactTurn_8h_source.html +++ b/katabatic/doc/html/AutoContactTurn_8h_source.html @@ -145,7 +145,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoContactVTee_8h_source.html b/katabatic/doc/html/AutoContactVTee_8h_source.html index f4a6b6dd..0a56a389 100644 --- a/katabatic/doc/html/AutoContactVTee_8h_source.html +++ b/katabatic/doc/html/AutoContactVTee_8h_source.html @@ -143,7 +143,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoContact_8h_source.html b/katabatic/doc/html/AutoContact_8h_source.html index 3e546c98..92a013ce 100644 --- a/katabatic/doc/html/AutoContact_8h_source.html +++ b/katabatic/doc/html/AutoContact_8h_source.html @@ -546,7 +546,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoHorizontal_8h_source.html b/katabatic/doc/html/AutoHorizontal_8h_source.html index bf821d66..bcbc9c8d 100644 --- a/katabatic/doc/html/AutoHorizontal_8h_source.html +++ b/katabatic/doc/html/AutoHorizontal_8h_source.html @@ -184,7 +184,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoSegment_8h_source.html b/katabatic/doc/html/AutoSegment_8h_source.html index ffcf14b9..9a169318 100644 --- a/katabatic/doc/html/AutoSegment_8h_source.html +++ b/katabatic/doc/html/AutoSegment_8h_source.html @@ -814,7 +814,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoSegments_8h_source.html b/katabatic/doc/html/AutoSegments_8h_source.html index c4aa454b..119ce890 100644 --- a/katabatic/doc/html/AutoSegments_8h_source.html +++ b/katabatic/doc/html/AutoSegments_8h_source.html @@ -551,7 +551,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/AutoVertical_8h_source.html b/katabatic/doc/html/AutoVertical_8h_source.html index da9be872..3000a6cd 100644 --- a/katabatic/doc/html/AutoVertical_8h_source.html +++ b/katabatic/doc/html/AutoVertical_8h_source.html @@ -185,7 +185,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/ChipTools_8h_source.html b/katabatic/doc/html/ChipTools_8h_source.html index c1f760a2..adf79b9f 100644 --- a/katabatic/doc/html/ChipTools_8h_source.html +++ b/katabatic/doc/html/ChipTools_8h_source.html @@ -193,7 +193,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/Constants_8h_source.html b/katabatic/doc/html/Constants_8h_source.html index af389393..d6eeaa48 100644 --- a/katabatic/doc/html/Constants_8h_source.html +++ b/katabatic/doc/html/Constants_8h_source.html @@ -241,7 +241,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/GCellGrid_8h_source.html b/katabatic/doc/html/GCellGrid_8h_source.html index 72df0547..f40c9875 100644 --- a/katabatic/doc/html/GCellGrid_8h_source.html +++ b/katabatic/doc/html/GCellGrid_8h_source.html @@ -189,7 +189,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/GCell_8h_source.html b/katabatic/doc/html/GCell_8h_source.html index 5901bf44..4b36806c 100644 --- a/katabatic/doc/html/GCell_8h_source.html +++ b/katabatic/doc/html/GCell_8h_source.html @@ -507,7 +507,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/GCells_8h_source.html b/katabatic/doc/html/GCells_8h_source.html index 303ba9f4..96ef5874 100644 --- a/katabatic/doc/html/GCells_8h_source.html +++ b/katabatic/doc/html/GCells_8h_source.html @@ -114,7 +114,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/Grid_8h_source.html b/katabatic/doc/html/Grid_8h_source.html index 9e81e51f..0e9ad819 100644 --- a/katabatic/doc/html/Grid_8h_source.html +++ b/katabatic/doc/html/Grid_8h_source.html @@ -432,7 +432,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/KatabaticEngine_8h_source.html b/katabatic/doc/html/KatabaticEngine_8h_source.html index ad0b012f..0f8f24eb 100644 --- a/katabatic/doc/html/KatabaticEngine_8h_source.html +++ b/katabatic/doc/html/KatabaticEngine_8h_source.html @@ -381,7 +381,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/Observer_8h_source.html b/katabatic/doc/html/Observer_8h_source.html index 230f85c7..293f7bfb 100644 --- a/katabatic/doc/html/Observer_8h_source.html +++ b/katabatic/doc/html/Observer_8h_source.html @@ -186,7 +186,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/Session_8h_source.html b/katabatic/doc/html/Session_8h_source.html index 88065f76..b9d7134a 100644 --- a/katabatic/doc/html/Session_8h_source.html +++ b/katabatic/doc/html/Session_8h_source.html @@ -338,7 +338,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/annotated.html b/katabatic/doc/html/annotated.html index 83712949..b587bbb8 100644 --- a/katabatic/doc/html/annotated.html +++ b/katabatic/doc/html/annotated.html @@ -96,7 +96,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8a2473a3..2ed616cf 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html @@ -135,7 +135,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContact.html b/katabatic/doc/html/classKatabatic_1_1AutoContact.html index d29c0bf1..4cbbdd18 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContact.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContact.html @@ -2294,7 +2294,7 @@ Notes - Differences from Katabatic 2
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c1467bad..bbff5566 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html @@ -136,7 +136,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html index 7437da7d..cb8fa672 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html @@ -452,7 +452,7 @@ Update H-Tee Topology
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 075046e1..c0b82dd2 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal-members.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html index cf6880a7..1760c337 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTerminal.html @@ -588,7 +588,7 @@ Update Terminal Topology
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7f098222..5ef80251 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn-members.html @@ -136,7 +136,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html index 04d52eff..84b43780 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactTurn.html @@ -454,7 +454,7 @@ Update Turn Topology
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d0fb1a1d..ad9b6e46 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee-members.html @@ -136,7 +136,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html index ae1c2a8b..0a76d92e 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoContactVTee.html @@ -443,7 +443,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 7ed71092..e9f5d7fe 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal-members.html @@ -191,7 +191,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html index ace88fc7..6c658e13 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoHorizontal.html @@ -1190,7 +1190,7 @@ moveULeft() for an Horizontal
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e6f2ca66..9586c5f6 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegment-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegment-members.html @@ -191,7 +191,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoSegment.html b/katabatic/doc/html/classKatabatic_1_1AutoSegment.html index e18b191b..8e5603a8 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegment.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegment.html @@ -4130,7 +4130,7 @@ Reduce Example
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 831389ac..c8028222 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Aligneds-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3cd32450..cd808085 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 cd07f26f..366253cb 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 da5f8eae..8e3344f2 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__AnchorOnGCell.html @@ -210,7 +210,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4fd16076..3b2e63b5 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8f1a6918..08a32379 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__InDirection.html @@ -166,7 +166,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 824d1234..a85f973d 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 efd6f220..17b715c3 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__IsAccountable.html @@ -138,7 +138,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 531c5b9c..8e01e08b 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__OnContact-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 170f326f..c21644b7 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 56e8f2a6..31b13867 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoSegments__Perpandiculars-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 abeef855..bac478c5 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9e0b9e40..3413a579 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoVertical-members.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoVertical-members.html @@ -191,7 +191,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1AutoVertical.html b/katabatic/doc/html/classKatabatic_1_1AutoVertical.html index 15dbec37..d7c4aa74 100644 --- a/katabatic/doc/html/classKatabatic_1_1AutoVertical.html +++ b/katabatic/doc/html/classKatabatic_1_1AutoVertical.html @@ -1190,7 +1190,7 @@ moveULeft() for an Horizontal
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c1c62b36..3143181d 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid-members.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid-members.html @@ -72,7 +72,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1BaseGrid.html b/katabatic/doc/html/classKatabatic_1_1BaseGrid.html index c1c648a1..a55eaeb7 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid.html @@ -424,7 +424,7 @@ Protected Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 adabf4c7..e7abe152 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis-members.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e6bcb1c0..70f804cc 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseGrid_1_1Axis.html @@ -211,7 +211,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9e15acc6..9d695d9f 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseObserver-members.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseObserver-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1BaseObserver.html b/katabatic/doc/html/classKatabatic_1_1BaseObserver.html index 4953fa25..9a04de78 100644 --- a/katabatic/doc/html/classKatabatic_1_1BaseObserver.html +++ b/katabatic/doc/html/classKatabatic_1_1BaseObserver.html @@ -113,7 +113,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 25ea73e7..ea229fbb 100644 --- a/katabatic/doc/html/classKatabatic_1_1ChipTools-members.html +++ b/katabatic/doc/html/classKatabatic_1_1ChipTools-members.html @@ -73,7 +73,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1ChipTools.html b/katabatic/doc/html/classKatabatic_1_1ChipTools.html index 30968e39..ccd55e5e 100644 --- a/katabatic/doc/html/classKatabatic_1_1ChipTools.html +++ b/katabatic/doc/html/classKatabatic_1_1ChipTools.html @@ -397,7 +397,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b7c16b89..95936838 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell-members.html @@ -122,7 +122,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1GCell.html b/katabatic/doc/html/classKatabatic_1_1GCell.html index 65d69ce1..a12fd53b 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell.html @@ -1809,7 +1809,7 @@ GCell Implantation
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 744e464a..58acda51 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet-members.html @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html index 9dc7300e..095808e4 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellDensitySet.html @@ -350,7 +350,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6ed4f997..764d1bb7 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellGrid-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellGrid-members.html @@ -104,7 +104,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1GCellGrid.html b/katabatic/doc/html/classKatabatic_1_1GCellGrid.html index d1a01c3a..8b47f58e 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCellGrid.html +++ b/katabatic/doc/html/classKatabatic_1_1GCellGrid.html @@ -515,7 +515,7 @@ Static Protected Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b03a83df..80c0c81d 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e149a4f6..a0d9c104 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByDensity.html @@ -98,7 +98,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c35ed290..1cfa6887 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex-members.html @@ -61,7 +61,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0baf03a8..cfb962ea 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1CompareByIndex.html @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e2bc5bb7..bb0f7477 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key-members.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3f22e667..76d98ac4 100644 --- a/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key.html +++ b/katabatic/doc/html/classKatabatic_1_1GCell_1_1Key.html @@ -202,7 +202,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f913e324..3d5cb5d2 100644 --- a/katabatic/doc/html/classKatabatic_1_1Grid-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Grid-members.html @@ -83,7 +83,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1Grid.html b/katabatic/doc/html/classKatabatic_1_1Grid.html index fb0ec70b..76fbf5c2 100644 --- a/katabatic/doc/html/classKatabatic_1_1Grid.html +++ b/katabatic/doc/html/classKatabatic_1_1Grid.html @@ -467,7 +467,7 @@ class Katabatic::Grid< GCellT >
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5d9bbd20..4fd23c48 100644 --- a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine-members.html +++ b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine-members.html @@ -118,7 +118,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html index 92c4d946..c6f021d1 100644 --- a/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html +++ b/katabatic/doc/html/classKatabatic_1_1KatabaticEngine.html @@ -1343,7 +1343,7 @@ KatabaticEngine Implementation Details
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 69e356ce..567e1005 100644 --- a/katabatic/doc/html/classKatabatic_1_1LocatorHelper-members.html +++ b/katabatic/doc/html/classKatabatic_1_1LocatorHelper-members.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html b/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html index 0d18f65d..2e1c5653 100644 --- a/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html +++ b/katabatic/doc/html/classKatabatic_1_1LocatorHelper.html @@ -219,7 +219,7 @@ Implementation Details
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bd185ec8..24f08e85 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observable-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Observable-members.html @@ -66,7 +66,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1Observable.html b/katabatic/doc/html/classKatabatic_1_1Observable.html index 59b497fd..b4cfd5cc 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observable.html +++ b/katabatic/doc/html/classKatabatic_1_1Observable.html @@ -218,7 +218,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ea4549b3..38a589b9 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observer-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Observer-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1Observer.html b/katabatic/doc/html/classKatabatic_1_1Observer.html index 7a02d276..f62933fb 100644 --- a/katabatic/doc/html/classKatabatic_1_1Observer.html +++ b/katabatic/doc/html/classKatabatic_1_1Observer.html @@ -146,7 +146,7 @@ Observer Implementation Notes
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 11882179..b51f865e 100644 --- a/katabatic/doc/html/classKatabatic_1_1Session-members.html +++ b/katabatic/doc/html/classKatabatic_1_1Session-members.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classKatabatic_1_1Session.html b/katabatic/doc/html/classKatabatic_1_1Session.html index f2b3275d..bb26ef77 100644 --- a/katabatic/doc/html/classKatabatic_1_1Session.html +++ b/katabatic/doc/html/classKatabatic_1_1Session.html @@ -1098,7 +1098,7 @@ Revalidate AutoSegments. Just before this stage, they are on the correct axis an
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 59c576c4..4edf9895 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 @@ -75,7 +75,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2c994273..2489e6d2 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 @@ -106,7 +106,7 @@ Private Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/classes.html b/katabatic/doc/html/classes.html index e3f5f6f1..b887a458 100644 --- a/katabatic/doc/html/classes.html +++ b/katabatic/doc/html/classes.html @@ -91,7 +91,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html b/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html index 108db13a..4a388bfe 100644 --- a/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html +++ b/katabatic/doc/html/dir_46a5d811a0c60e95b7acaa92d73c003a.html @@ -97,7 +97,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 085225e2..36ef6942 100644 --- a/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/katabatic/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -98,7 +98,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/files.html b/katabatic/doc/html/files.html index 68cc0635..b8694453 100644 --- a/katabatic/doc/html/files.html +++ b/katabatic/doc/html/files.html @@ -73,7 +73,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions.html b/katabatic/doc/html/functions.html index 15ac4f61..dbe8d7e1 100644 --- a/katabatic/doc/html/functions.html +++ b/katabatic/doc/html/functions.html @@ -150,7 +150,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x61.html b/katabatic/doc/html/functions_0x61.html index 27f3d640..4de35954 100644 --- a/katabatic/doc/html/functions_0x61.html +++ b/katabatic/doc/html/functions_0x61.html @@ -138,7 +138,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x62.html b/katabatic/doc/html/functions_0x62.html index 4b9c21d1..0344f8bc 100644 --- a/katabatic/doc/html/functions_0x62.html +++ b/katabatic/doc/html/functions_0x62.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x63.html b/katabatic/doc/html/functions_0x63.html index 816692d6..6e70a3cb 100644 --- a/katabatic/doc/html/functions_0x63.html +++ b/katabatic/doc/html/functions_0x63.html @@ -174,7 +174,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x64.html b/katabatic/doc/html/functions_0x64.html index 8ed52c9a..60529cf0 100644 --- a/katabatic/doc/html/functions_0x64.html +++ b/katabatic/doc/html/functions_0x64.html @@ -128,7 +128,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x65.html b/katabatic/doc/html/functions_0x65.html index 1e78038f..a25232f6 100644 --- a/katabatic/doc/html/functions_0x65.html +++ b/katabatic/doc/html/functions_0x65.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x66.html b/katabatic/doc/html/functions_0x66.html index 3460810e..e775edd4 100644 --- a/katabatic/doc/html/functions_0x66.html +++ b/katabatic/doc/html/functions_0x66.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x67.html b/katabatic/doc/html/functions_0x67.html index af300b70..bd2c4a9f 100644 --- a/katabatic/doc/html/functions_0x67.html +++ b/katabatic/doc/html/functions_0x67.html @@ -666,7 +666,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x68.html b/katabatic/doc/html/functions_0x68.html index 6dfc609e..23e628e4 100644 --- a/katabatic/doc/html/functions_0x68.html +++ b/katabatic/doc/html/functions_0x68.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x69.html b/katabatic/doc/html/functions_0x69.html index c8cea8c7..0d783732 100644 --- a/katabatic/doc/html/functions_0x69.html +++ b/katabatic/doc/html/functions_0x69.html @@ -214,7 +214,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x6b.html b/katabatic/doc/html/functions_0x6b.html index fcacda55..df6769c6 100644 --- a/katabatic/doc/html/functions_0x6b.html +++ b/katabatic/doc/html/functions_0x6b.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x6c.html b/katabatic/doc/html/functions_0x6c.html index 3852b1b9..1b979a76 100644 --- a/katabatic/doc/html/functions_0x6c.html +++ b/katabatic/doc/html/functions_0x6c.html @@ -104,7 +104,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x6d.html b/katabatic/doc/html/functions_0x6d.html index b92a113d..5e89662e 100644 --- a/katabatic/doc/html/functions_0x6d.html +++ b/katabatic/doc/html/functions_0x6d.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x6e.html b/katabatic/doc/html/functions_0x6e.html index 479aa659..aef8a3d0 100644 --- a/katabatic/doc/html/functions_0x6e.html +++ b/katabatic/doc/html/functions_0x6e.html @@ -96,7 +96,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x6f.html b/katabatic/doc/html/functions_0x6f.html index 5956c22b..a298e39e 100644 --- a/katabatic/doc/html/functions_0x6f.html +++ b/katabatic/doc/html/functions_0x6f.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x70.html b/katabatic/doc/html/functions_0x70.html index 5b316679..62c3db24 100644 --- a/katabatic/doc/html/functions_0x70.html +++ b/katabatic/doc/html/functions_0x70.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x72.html b/katabatic/doc/html/functions_0x72.html index de4aff84..d21b9a5a 100644 --- a/katabatic/doc/html/functions_0x72.html +++ b/katabatic/doc/html/functions_0x72.html @@ -132,7 +132,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x73.html b/katabatic/doc/html/functions_0x73.html index 0b7a2687..c888e9c6 100644 --- a/katabatic/doc/html/functions_0x73.html +++ b/katabatic/doc/html/functions_0x73.html @@ -212,7 +212,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x74.html b/katabatic/doc/html/functions_0x74.html index fec7db87..ca11d04d 100644 --- a/katabatic/doc/html/functions_0x74.html +++ b/katabatic/doc/html/functions_0x74.html @@ -102,7 +102,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x75.html b/katabatic/doc/html/functions_0x75.html index c87802a4..932b4457 100644 --- a/katabatic/doc/html/functions_0x75.html +++ b/katabatic/doc/html/functions_0x75.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x78.html b/katabatic/doc/html/functions_0x78.html index 3eb960a8..be7d5c4f 100644 --- a/katabatic/doc/html/functions_0x78.html +++ b/katabatic/doc/html/functions_0x78.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_0x7e.html b/katabatic/doc/html/functions_0x7e.html index 6cede7f8..c11e6f4a 100644 --- a/katabatic/doc/html/functions_0x7e.html +++ b/katabatic/doc/html/functions_0x7e.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_enum.html b/katabatic/doc/html/functions_enum.html index b7ad64b1..c3b925c6 100644 --- a/katabatic/doc/html/functions_enum.html +++ b/katabatic/doc/html/functions_enum.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_eval.html b/katabatic/doc/html/functions_eval.html index 13cbb02f..869fcbb4 100644 --- a/katabatic/doc/html/functions_eval.html +++ b/katabatic/doc/html/functions_eval.html @@ -82,7 +82,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func.html b/katabatic/doc/html/functions_func.html index 8fe71765..bc22406d 100644 --- a/katabatic/doc/html/functions_func.html +++ b/katabatic/doc/html/functions_func.html @@ -150,7 +150,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x61.html b/katabatic/doc/html/functions_func_0x61.html index 2e1e751a..1fd28b13 100644 --- a/katabatic/doc/html/functions_func_0x61.html +++ b/katabatic/doc/html/functions_func_0x61.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x62.html b/katabatic/doc/html/functions_func_0x62.html index f2617034..91a65b05 100644 --- a/katabatic/doc/html/functions_func_0x62.html +++ b/katabatic/doc/html/functions_func_0x62.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x63.html b/katabatic/doc/html/functions_func_0x63.html index 4f16e3e9..e870e75f 100644 --- a/katabatic/doc/html/functions_func_0x63.html +++ b/katabatic/doc/html/functions_func_0x63.html @@ -174,7 +174,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x64.html b/katabatic/doc/html/functions_func_0x64.html index 11992252..d1b7e638 100644 --- a/katabatic/doc/html/functions_func_0x64.html +++ b/katabatic/doc/html/functions_func_0x64.html @@ -125,7 +125,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x65.html b/katabatic/doc/html/functions_func_0x65.html index d293fe89..7ec49842 100644 --- a/katabatic/doc/html/functions_func_0x65.html +++ b/katabatic/doc/html/functions_func_0x65.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x66.html b/katabatic/doc/html/functions_func_0x66.html index 4fd5c5d8..a114c523 100644 --- a/katabatic/doc/html/functions_func_0x66.html +++ b/katabatic/doc/html/functions_func_0x66.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x67.html b/katabatic/doc/html/functions_func_0x67.html index c63e0368..5a0b3da2 100644 --- a/katabatic/doc/html/functions_func_0x67.html +++ b/katabatic/doc/html/functions_func_0x67.html @@ -666,7 +666,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x68.html b/katabatic/doc/html/functions_func_0x68.html index 57b47ad5..c5255153 100644 --- a/katabatic/doc/html/functions_func_0x68.html +++ b/katabatic/doc/html/functions_func_0x68.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x69.html b/katabatic/doc/html/functions_func_0x69.html index a7c6c855..b4ca2a0d 100644 --- a/katabatic/doc/html/functions_func_0x69.html +++ b/katabatic/doc/html/functions_func_0x69.html @@ -214,7 +214,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x6b.html b/katabatic/doc/html/functions_func_0x6b.html index 7c02f17c..5950d006 100644 --- a/katabatic/doc/html/functions_func_0x6b.html +++ b/katabatic/doc/html/functions_func_0x6b.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x6c.html b/katabatic/doc/html/functions_func_0x6c.html index 8ee3c3f6..7f966e53 100644 --- a/katabatic/doc/html/functions_func_0x6c.html +++ b/katabatic/doc/html/functions_func_0x6c.html @@ -104,7 +104,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x6d.html b/katabatic/doc/html/functions_func_0x6d.html index fd904f4e..7533d925 100644 --- a/katabatic/doc/html/functions_func_0x6d.html +++ b/katabatic/doc/html/functions_func_0x6d.html @@ -117,7 +117,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x6e.html b/katabatic/doc/html/functions_func_0x6e.html index 05460c16..5a0bd614 100644 --- a/katabatic/doc/html/functions_func_0x6e.html +++ b/katabatic/doc/html/functions_func_0x6e.html @@ -93,7 +93,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x6f.html b/katabatic/doc/html/functions_func_0x6f.html index 889eac64..c915013c 100644 --- a/katabatic/doc/html/functions_func_0x6f.html +++ b/katabatic/doc/html/functions_func_0x6f.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x70.html b/katabatic/doc/html/functions_func_0x70.html index 9a3f0448..4e06e4e5 100644 --- a/katabatic/doc/html/functions_func_0x70.html +++ b/katabatic/doc/html/functions_func_0x70.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x72.html b/katabatic/doc/html/functions_func_0x72.html index 21e93033..3f49bf81 100644 --- a/katabatic/doc/html/functions_func_0x72.html +++ b/katabatic/doc/html/functions_func_0x72.html @@ -132,7 +132,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x73.html b/katabatic/doc/html/functions_func_0x73.html index c0a9686e..e34bbe00 100644 --- a/katabatic/doc/html/functions_func_0x73.html +++ b/katabatic/doc/html/functions_func_0x73.html @@ -209,7 +209,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x74.html b/katabatic/doc/html/functions_func_0x74.html index 61b57803..5c5fb683 100644 --- a/katabatic/doc/html/functions_func_0x74.html +++ b/katabatic/doc/html/functions_func_0x74.html @@ -102,7 +102,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x75.html b/katabatic/doc/html/functions_func_0x75.html index eb86d161..7aa6eab1 100644 --- a/katabatic/doc/html/functions_func_0x75.html +++ b/katabatic/doc/html/functions_func_0x75.html @@ -137,7 +137,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x78.html b/katabatic/doc/html/functions_func_0x78.html index adfa7674..c14d1ce6 100644 --- a/katabatic/doc/html/functions_func_0x78.html +++ b/katabatic/doc/html/functions_func_0x78.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_func_0x7e.html b/katabatic/doc/html/functions_func_0x7e.html index d0fb1ca8..d2fa7e1c 100644 --- a/katabatic/doc/html/functions_func_0x7e.html +++ b/katabatic/doc/html/functions_func_0x7e.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/functions_type.html b/katabatic/doc/html/functions_type.html index 79f2292c..a2d9f6ea 100644 --- a/katabatic/doc/html/functions_type.html +++ b/katabatic/doc/html/functions_type.html @@ -67,7 +67,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/graph_legend.html b/katabatic/doc/html/graph_legend.html index d0c296f0..5c5423c5 100644 --- a/katabatic/doc/html/graph_legend.html +++ b/katabatic/doc/html/graph_legend.html @@ -110,7 +110,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/group__LoadGlobalRouting.html b/katabatic/doc/html/group__LoadGlobalRouting.html index 57ff1b0b..679c0ec6 100644 --- a/katabatic/doc/html/group__LoadGlobalRouting.html +++ b/katabatic/doc/html/group__LoadGlobalRouting.html @@ -853,7 +853,7 @@ _do_xG_xM3()
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/group__grpSynthHierarchy.html b/katabatic/doc/html/group__grpSynthHierarchy.html index 600b3e67..c9501ff9 100644 --- a/katabatic/doc/html/group__grpSynthHierarchy.html +++ b/katabatic/doc/html/group__grpSynthHierarchy.html @@ -115,7 +115,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/hierarchy.html b/katabatic/doc/html/hierarchy.html index 32d53761..301fc53a 100644 --- a/katabatic/doc/html/hierarchy.html +++ b/katabatic/doc/html/hierarchy.html @@ -94,7 +94,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/index.html b/katabatic/doc/html/index.html index cc6a1116..3c51262d 100644 --- a/katabatic/doc/html/index.html +++ b/katabatic/doc/html/index.html @@ -50,7 +50,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/modules.html b/katabatic/doc/html/modules.html index 00c4173c..2902d265 100644 --- a/katabatic/doc/html/modules.html +++ b/katabatic/doc/html/modules.html @@ -56,7 +56,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespaceKatabatic.html b/katabatic/doc/html/namespaceKatabatic.html index 4af16a81..99cf711b 100644 --- a/katabatic/doc/html/namespaceKatabatic.html +++ b/katabatic/doc/html/namespaceKatabatic.html @@ -662,7 +662,7 @@ Enumerations
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9882fd96..46c735cb 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e090a394..719344d4 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5d897757..e9956266 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 08d06334..60ca0006 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 85e12b72..0913a36c 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html @@ -90,7 +90,7 @@ Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 684960b9..55cb2e80 100644 --- a/katabatic/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html +++ b/katabatic/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespacemembers.html b/katabatic/doc/html/namespacemembers.html index 3ab2630d..6ad4ef76 100644 --- a/katabatic/doc/html/namespacemembers.html +++ b/katabatic/doc/html/namespacemembers.html @@ -366,7 +366,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespacemembers_enum.html b/katabatic/doc/html/namespacemembers_enum.html index 5cfc2b5f..96fceda8 100644 --- a/katabatic/doc/html/namespacemembers_enum.html +++ b/katabatic/doc/html/namespacemembers_enum.html @@ -74,7 +74,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespacemembers_eval.html b/katabatic/doc/html/namespacemembers_eval.html index 05313c61..20529e70 100644 --- a/katabatic/doc/html/namespacemembers_eval.html +++ b/katabatic/doc/html/namespacemembers_eval.html @@ -298,7 +298,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespacemembers_func.html b/katabatic/doc/html/namespacemembers_func.html index 6a9fa150..b3432d94 100644 --- a/katabatic/doc/html/namespacemembers_func.html +++ b/katabatic/doc/html/namespacemembers_func.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespacemembers_type.html b/katabatic/doc/html/namespacemembers_type.html index c5f57c21..ce9257ea 100644 --- a/katabatic/doc/html/namespacemembers_type.html +++ b/katabatic/doc/html/namespacemembers_type.html @@ -86,7 +86,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/namespaces.html b/katabatic/doc/html/namespaces.html index f6319ed3..2ede1e98 100644 --- a/katabatic/doc/html/namespaces.html +++ b/katabatic/doc/html/namespaces.html @@ -63,7 +63,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/html/pages.html b/katabatic/doc/html/pages.html index 011a484d..3a7bd6a0 100644 --- a/katabatic/doc/html/pages.html +++ b/katabatic/doc/html/pages.html @@ -51,7 +51,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/katabatic/doc/latex/refman.tex b/katabatic/doc/latex/refman.tex index e868736f..f3bf2d3b 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.5}\\ \vspace*{0.5cm} - {\small Sat Aug 18 2018 22:39:40}\\ + {\small Mon Oct 1 2018 14:29:09}\\ \end{center} \end{titlepage} diff --git a/kite/doc/html/Constants_8h_source.html b/kite/doc/html/Constants_8h_source.html index 02bf001b..f1deced1 100644 --- a/kite/doc/html/Constants_8h_source.html +++ b/kite/doc/html/Constants_8h_source.html @@ -130,7 +130,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/DataNegociate_8h_source.html b/kite/doc/html/DataNegociate_8h_source.html index 84c505b4..5883977d 100644 --- a/kite/doc/html/DataNegociate_8h_source.html +++ b/kite/doc/html/DataNegociate_8h_source.html @@ -257,7 +257,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/HorizontalTrack_8h_source.html b/kite/doc/html/HorizontalTrack_8h_source.html index 7fd1cc44..52d19bb4 100644 --- a/kite/doc/html/HorizontalTrack_8h_source.html +++ b/kite/doc/html/HorizontalTrack_8h_source.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/KiteEngine_8h_source.html b/kite/doc/html/KiteEngine_8h_source.html index 14236967..e026ae35 100644 --- a/kite/doc/html/KiteEngine_8h_source.html +++ b/kite/doc/html/KiteEngine_8h_source.html @@ -272,7 +272,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/Manipulator_8h_source.html b/kite/doc/html/Manipulator_8h_source.html index 6484bb45..e7bcb4c1 100644 --- a/kite/doc/html/Manipulator_8h_source.html +++ b/kite/doc/html/Manipulator_8h_source.html @@ -203,7 +203,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/NegociateWindow_8h_source.html b/kite/doc/html/NegociateWindow_8h_source.html index 32c140f6..81ea6a06 100644 --- a/kite/doc/html/NegociateWindow_8h_source.html +++ b/kite/doc/html/NegociateWindow_8h_source.html @@ -248,7 +248,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/RoutingEventHistory_8h_source.html b/kite/doc/html/RoutingEventHistory_8h_source.html index 46f19305..ac50d691 100644 --- a/kite/doc/html/RoutingEventHistory_8h_source.html +++ b/kite/doc/html/RoutingEventHistory_8h_source.html @@ -136,7 +136,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/RoutingEventLoop_8h_source.html b/kite/doc/html/RoutingEventLoop_8h_source.html index 58b1eb95..a0f133d7 100644 --- a/kite/doc/html/RoutingEventLoop_8h_source.html +++ b/kite/doc/html/RoutingEventLoop_8h_source.html @@ -146,7 +146,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/RoutingEventQueue_8h_source.html b/kite/doc/html/RoutingEventQueue_8h_source.html index a26e4d51..07593dc5 100644 --- a/kite/doc/html/RoutingEventQueue_8h_source.html +++ b/kite/doc/html/RoutingEventQueue_8h_source.html @@ -153,7 +153,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/RoutingEvent_8h_source.html b/kite/doc/html/RoutingEvent_8h_source.html index 6f71b6dd..0a4ab0e3 100644 --- a/kite/doc/html/RoutingEvent_8h_source.html +++ b/kite/doc/html/RoutingEvent_8h_source.html @@ -400,7 +400,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/RoutingPlane_8h_source.html b/kite/doc/html/RoutingPlane_8h_source.html index 77d54825..89561ccf 100644 --- a/kite/doc/html/RoutingPlane_8h_source.html +++ b/kite/doc/html/RoutingPlane_8h_source.html @@ -215,7 +215,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/SegmentFsm_8h_source.html b/kite/doc/html/SegmentFsm_8h_source.html index 05d68139..bdf38662 100644 --- a/kite/doc/html/SegmentFsm_8h_source.html +++ b/kite/doc/html/SegmentFsm_8h_source.html @@ -297,7 +297,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/Session_8h_source.html b/kite/doc/html/Session_8h_source.html index dca48066..b6a65918 100644 --- a/kite/doc/html/Session_8h_source.html +++ b/kite/doc/html/Session_8h_source.html @@ -269,7 +269,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/TrackElement_8h_source.html b/kite/doc/html/TrackElement_8h_source.html index b64c1c2c..507d347b 100644 --- a/kite/doc/html/TrackElement_8h_source.html +++ b/kite/doc/html/TrackElement_8h_source.html @@ -412,7 +412,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/TrackFixedSegment_8h_source.html b/kite/doc/html/TrackFixedSegment_8h_source.html index 1f7fce2e..1c7c8954 100644 --- a/kite/doc/html/TrackFixedSegment_8h_source.html +++ b/kite/doc/html/TrackFixedSegment_8h_source.html @@ -159,7 +159,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/TrackMarker_8h_source.html b/kite/doc/html/TrackMarker_8h_source.html index 87e1537a..e595a784 100644 --- a/kite/doc/html/TrackMarker_8h_source.html +++ b/kite/doc/html/TrackMarker_8h_source.html @@ -181,7 +181,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/TrackSegment_8h_source.html b/kite/doc/html/TrackSegment_8h_source.html index 6f4d6aad..3416676f 100644 --- a/kite/doc/html/TrackSegment_8h_source.html +++ b/kite/doc/html/TrackSegment_8h_source.html @@ -276,7 +276,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/Track_8h_source.html b/kite/doc/html/Track_8h_source.html index 9f0e54dd..de73356f 100644 --- a/kite/doc/html/Track_8h_source.html +++ b/kite/doc/html/Track_8h_source.html @@ -337,7 +337,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/VerticalTrack_8h_source.html b/kite/doc/html/VerticalTrack_8h_source.html index c5b396d7..535a6502 100644 --- a/kite/doc/html/VerticalTrack_8h_source.html +++ b/kite/doc/html/VerticalTrack_8h_source.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/annotated.html b/kite/doc/html/annotated.html index 114b134a..4dcc6e4e 100644 --- a/kite/doc/html/annotated.html +++ b/kite/doc/html/annotated.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f42997af..174f0b2d 100644 --- a/kite/doc/html/classKite_1_1DataNegociate-members.html +++ b/kite/doc/html/classKite_1_1DataNegociate-members.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1DataNegociate.html b/kite/doc/html/classKite_1_1DataNegociate.html index 25eb6d97..a5e61573 100644 --- a/kite/doc/html/classKite_1_1DataNegociate.html +++ b/kite/doc/html/classKite_1_1DataNegociate.html @@ -792,7 +792,7 @@ Modifications History
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 77a34093..0d546bda 100644 --- a/kite/doc/html/classKite_1_1HorizontalTrack-members.html +++ b/kite/doc/html/classKite_1_1HorizontalTrack-members.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1HorizontalTrack.html b/kite/doc/html/classKite_1_1HorizontalTrack.html index 2f02ff61..51aa2de4 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 61f0338e..e559c078 100644 --- a/kite/doc/html/classKite_1_1KiteEngine-members.html +++ b/kite/doc/html/classKite_1_1KiteEngine-members.html @@ -123,7 +123,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1KiteEngine.html b/kite/doc/html/classKite_1_1KiteEngine.html index f53da104..e28b3669 100644 --- a/kite/doc/html/classKite_1_1KiteEngine.html +++ b/kite/doc/html/classKite_1_1KiteEngine.html @@ -381,7 +381,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 30d60942..57a01270 100644 --- a/kite/doc/html/classKite_1_1Manipulator-members.html +++ b/kite/doc/html/classKite_1_1Manipulator-members.html @@ -97,7 +97,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1Manipulator.html b/kite/doc/html/classKite_1_1Manipulator.html index ab059e9d..85cfdb26 100644 --- a/kite/doc/html/classKite_1_1Manipulator.html +++ b/kite/doc/html/classKite_1_1Manipulator.html @@ -742,7 +742,7 @@ One Dogleg (max)
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 55169c0b..7c7aaf66 100644 --- a/kite/doc/html/classKite_1_1NegociateWindow-members.html +++ b/kite/doc/html/classKite_1_1NegociateWindow-members.html @@ -83,7 +83,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1NegociateWindow.html b/kite/doc/html/classKite_1_1NegociateWindow.html index aa5d956b..a87d453e 100644 --- a/kite/doc/html/classKite_1_1NegociateWindow.html +++ b/kite/doc/html/classKite_1_1NegociateWindow.html @@ -596,7 +596,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3215b424..2ddbd359 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent-members.html +++ b/kite/doc/html/classKite_1_1RoutingEvent-members.html @@ -106,7 +106,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1RoutingEvent.html b/kite/doc/html/classKite_1_1RoutingEvent.html index b743b797..959a48c5 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent.html +++ b/kite/doc/html/classKite_1_1RoutingEvent.html @@ -1243,7 +1243,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2b809c31..1f52d81d 100644 --- a/kite/doc/html/classKite_1_1RoutingEventHistory-members.html +++ b/kite/doc/html/classKite_1_1RoutingEventHistory-members.html @@ -69,7 +69,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1RoutingEventHistory.html b/kite/doc/html/classKite_1_1RoutingEventHistory.html index 927efa64..4d60e358 100644 --- a/kite/doc/html/classKite_1_1RoutingEventHistory.html +++ b/kite/doc/html/classKite_1_1RoutingEventHistory.html @@ -252,7 +252,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 720c52af..cc60f48c 100644 --- a/kite/doc/html/classKite_1_1RoutingEventLoop-members.html +++ b/kite/doc/html/classKite_1_1RoutingEventLoop-members.html @@ -67,7 +67,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1RoutingEventLoop.html b/kite/doc/html/classKite_1_1RoutingEventLoop.html index d77f503a..a4c819bb 100644 --- a/kite/doc/html/classKite_1_1RoutingEventLoop.html +++ b/kite/doc/html/classKite_1_1RoutingEventLoop.html @@ -242,7 +242,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e0bbec3f..41c78f56 100644 --- a/kite/doc/html/classKite_1_1RoutingEventQueue-members.html +++ b/kite/doc/html/classKite_1_1RoutingEventQueue-members.html @@ -74,7 +74,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1RoutingEventQueue.html b/kite/doc/html/classKite_1_1RoutingEventQueue.html index 7fda4fc9..c663e74a 100644 --- a/kite/doc/html/classKite_1_1RoutingEventQueue.html +++ b/kite/doc/html/classKite_1_1RoutingEventQueue.html @@ -394,7 +394,7 @@ Implementation Details
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 09f8c120..bcbde5fa 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent_1_1Key-members.html +++ b/kite/doc/html/classKite_1_1RoutingEvent_1_1Key-members.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 62255bca..393aaf5e 100644 --- a/kite/doc/html/classKite_1_1RoutingEvent_1_1Key.html +++ b/kite/doc/html/classKite_1_1RoutingEvent_1_1Key.html @@ -113,7 +113,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 85fa5854..28b9c84b 100644 --- a/kite/doc/html/classKite_1_1RoutingPlane-members.html +++ b/kite/doc/html/classKite_1_1RoutingPlane-members.html @@ -82,7 +82,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1RoutingPlane.html b/kite/doc/html/classKite_1_1RoutingPlane.html index f7bcf280..739aa772 100644 --- a/kite/doc/html/classKite_1_1RoutingPlane.html +++ b/kite/doc/html/classKite_1_1RoutingPlane.html @@ -644,7 +644,7 @@ Fig 1: Horizontal RoutingPlane
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f37002d5..2c3609cc 100644 --- a/kite/doc/html/classKite_1_1SegmentAction-members.html +++ b/kite/doc/html/classKite_1_1SegmentAction-members.html @@ -91,7 +91,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1SegmentAction.html b/kite/doc/html/classKite_1_1SegmentAction.html index 9cd0011d..6b6afe6e 100644 --- a/kite/doc/html/classKite_1_1SegmentAction.html +++ b/kite/doc/html/classKite_1_1SegmentAction.html @@ -415,7 +415,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ca08cd73..8041c419 100644 --- a/kite/doc/html/classKite_1_1SegmentFsm-members.html +++ b/kite/doc/html/classKite_1_1SegmentFsm-members.html @@ -97,7 +97,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1SegmentFsm.html b/kite/doc/html/classKite_1_1SegmentFsm.html index 90adf86a..bc54b461 100644 --- a/kite/doc/html/classKite_1_1SegmentFsm.html +++ b/kite/doc/html/classKite_1_1SegmentFsm.html @@ -899,7 +899,7 @@ Candidates Track Ordering
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 ebe91bfc..23373897 100644 --- a/kite/doc/html/classKite_1_1SegmentObserver-members.html +++ b/kite/doc/html/classKite_1_1SegmentObserver-members.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1SegmentObserver.html b/kite/doc/html/classKite_1_1SegmentObserver.html index 531d1f2f..33154f67 100644 --- a/kite/doc/html/classKite_1_1SegmentObserver.html +++ b/kite/doc/html/classKite_1_1SegmentObserver.html @@ -114,7 +114,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 82a4bf79..3910ad60 100644 --- a/kite/doc/html/classKite_1_1Session-members.html +++ b/kite/doc/html/classKite_1_1Session-members.html @@ -108,7 +108,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1Session.html b/kite/doc/html/classKite_1_1Session.html index 6ea49cf5..9179b18f 100644 --- a/kite/doc/html/classKite_1_1Session.html +++ b/kite/doc/html/classKite_1_1Session.html @@ -649,7 +649,7 @@ The Lookup Mechanism
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 83e04f4e..bb250bb1 100644 --- a/kite/doc/html/classKite_1_1Track-members.html +++ b/kite/doc/html/classKite_1_1Track-members.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1Track.html b/kite/doc/html/classKite_1_1Track.html index 7ccdbf0b..6311bc2a 100644 --- a/kite/doc/html/classKite_1_1Track.html +++ b/kite/doc/html/classKite_1_1Track.html @@ -1571,7 +1571,7 @@ Fig 3: Track::getBeginIndex()
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d24e1630..f79f1a21 100644 --- a/kite/doc/html/classKite_1_1TrackElement-members.html +++ b/kite/doc/html/classKite_1_1TrackElement-members.html @@ -127,7 +127,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1TrackElement.html b/kite/doc/html/classKite_1_1TrackElement.html index 7dd2ec8d..8e0e6d0e 100644 --- a/kite/doc/html/classKite_1_1TrackElement.html +++ b/kite/doc/html/classKite_1_1TrackElement.html @@ -2067,7 +2067,7 @@ TrackElement Abstract
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 94786292..a0ccf8e0 100644 --- a/kite/doc/html/classKite_1_1TrackFixedSegment-members.html +++ b/kite/doc/html/classKite_1_1TrackFixedSegment-members.html @@ -128,7 +128,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1TrackFixedSegment.html b/kite/doc/html/classKite_1_1TrackFixedSegment.html index 23f1f0c8..b9b019ec 100644 --- a/kite/doc/html/classKite_1_1TrackFixedSegment.html +++ b/kite/doc/html/classKite_1_1TrackFixedSegment.html @@ -556,7 +556,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 bcaddf8b..928c710f 100644 --- a/kite/doc/html/classKite_1_1TrackMarker-members.html +++ b/kite/doc/html/classKite_1_1TrackMarker-members.html @@ -68,7 +68,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1TrackMarker.html b/kite/doc/html/classKite_1_1TrackMarker.html index a813fd9e..30832cd8 100644 --- a/kite/doc/html/classKite_1_1TrackMarker.html +++ b/kite/doc/html/classKite_1_1TrackMarker.html @@ -277,7 +277,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 95639a3b..e42f9bf7 100644 --- a/kite/doc/html/classKite_1_1TrackSegment-members.html +++ b/kite/doc/html/classKite_1_1TrackSegment-members.html @@ -129,7 +129,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1TrackSegment.html b/kite/doc/html/classKite_1_1TrackSegment.html index ae3f9c74..3bdbfc41 100644 --- a/kite/doc/html/classKite_1_1TrackSegment.html +++ b/kite/doc/html/classKite_1_1TrackSegment.html @@ -1609,7 +1609,7 @@ Global, Weak Global and Local Segments
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0a4462f7..34282f24 100644 --- a/kite/doc/html/classKite_1_1VerticalTrack-members.html +++ b/kite/doc/html/classKite_1_1VerticalTrack-members.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classKite_1_1VerticalTrack.html b/kite/doc/html/classKite_1_1VerticalTrack.html index e743b304..53371b1a 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/classes.html b/kite/doc/html/classes.html index 8a75fc72..f50631d2 100644 --- a/kite/doc/html/classes.html +++ b/kite/doc/html/classes.html @@ -88,7 +88,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html b/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html index c8ff88f4..0f51ac1f 100644 --- a/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html +++ b/kite/doc/html/dir_2916ee297f5e79ec495d393dfe8ba769.html @@ -99,7 +99,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index b95fbf03..8ce06acb 100644 --- a/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/kite/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -98,7 +98,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/files.html b/kite/doc/html/files.html index a12a44bf..97858890 100644 --- a/kite/doc/html/files.html +++ b/kite/doc/html/files.html @@ -74,7 +74,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions.html b/kite/doc/html/functions.html index 3fd9b735..8edfd73e 100644 --- a/kite/doc/html/functions.html +++ b/kite/doc/html/functions.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x61.html b/kite/doc/html/functions_0x61.html index e30e2aec..a26c3c07 100644 --- a/kite/doc/html/functions_0x61.html +++ b/kite/doc/html/functions_0x61.html @@ -126,7 +126,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x62.html b/kite/doc/html/functions_0x62.html index 8b41ca14..c5f70ebb 100644 --- a/kite/doc/html/functions_0x62.html +++ b/kite/doc/html/functions_0x62.html @@ -106,7 +106,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x63.html b/kite/doc/html/functions_0x63.html index 0e108e1e..539ca1a1 100644 --- a/kite/doc/html/functions_0x63.html +++ b/kite/doc/html/functions_0x63.html @@ -148,7 +148,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x64.html b/kite/doc/html/functions_0x64.html index cbd71292..6ec88810 100644 --- a/kite/doc/html/functions_0x64.html +++ b/kite/doc/html/functions_0x64.html @@ -116,7 +116,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x65.html b/kite/doc/html/functions_0x65.html index f15ec1cb..bd590ff1 100644 --- a/kite/doc/html/functions_0x65.html +++ b/kite/doc/html/functions_0x65.html @@ -133,7 +133,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x66.html b/kite/doc/html/functions_0x66.html index ed629159..42f8a9c7 100644 --- a/kite/doc/html/functions_0x66.html +++ b/kite/doc/html/functions_0x66.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x67.html b/kite/doc/html/functions_0x67.html index adb5fe8b..69933a87 100644 --- a/kite/doc/html/functions_0x67.html +++ b/kite/doc/html/functions_0x67.html @@ -497,7 +497,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x68.html b/kite/doc/html/functions_0x68.html index 6e4534fe..ca18c99a 100644 --- a/kite/doc/html/functions_0x68.html +++ b/kite/doc/html/functions_0x68.html @@ -96,7 +96,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x69.html b/kite/doc/html/functions_0x69.html index 59ac5ab3..ffcbd2db 100644 --- a/kite/doc/html/functions_0x69.html +++ b/kite/doc/html/functions_0x69.html @@ -225,7 +225,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x6c.html b/kite/doc/html/functions_0x6c.html index f26a4226..a832e26c 100644 --- a/kite/doc/html/functions_0x6c.html +++ b/kite/doc/html/functions_0x6c.html @@ -99,7 +99,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x6d.html b/kite/doc/html/functions_0x6d.html index 45b5a6b7..07e3fbdd 100644 --- a/kite/doc/html/functions_0x6d.html +++ b/kite/doc/html/functions_0x6d.html @@ -120,7 +120,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x6e.html b/kite/doc/html/functions_0x6e.html index 12fdc53b..e601b376 100644 --- a/kite/doc/html/functions_0x6e.html +++ b/kite/doc/html/functions_0x6e.html @@ -108,7 +108,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x6f.html b/kite/doc/html/functions_0x6f.html index 1c43fe50..f83835c9 100644 --- a/kite/doc/html/functions_0x6f.html +++ b/kite/doc/html/functions_0x6f.html @@ -107,7 +107,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x70.html b/kite/doc/html/functions_0x70.html index d138a348..ef1940aa 100644 --- a/kite/doc/html/functions_0x70.html +++ b/kite/doc/html/functions_0x70.html @@ -121,7 +121,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x72.html b/kite/doc/html/functions_0x72.html index ea7162a0..7a8f0df3 100644 --- a/kite/doc/html/functions_0x72.html +++ b/kite/doc/html/functions_0x72.html @@ -168,7 +168,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x73.html b/kite/doc/html/functions_0x73.html index a481ef79..04a5bbc9 100644 --- a/kite/doc/html/functions_0x73.html +++ b/kite/doc/html/functions_0x73.html @@ -212,7 +212,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x74.html b/kite/doc/html/functions_0x74.html index de26ce10..b2545a37 100644 --- a/kite/doc/html/functions_0x74.html +++ b/kite/doc/html/functions_0x74.html @@ -100,7 +100,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x75.html b/kite/doc/html/functions_0x75.html index e7e4394f..301ac0ca 100644 --- a/kite/doc/html/functions_0x75.html +++ b/kite/doc/html/functions_0x75.html @@ -105,7 +105,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_0x7e.html b/kite/doc/html/functions_0x7e.html index 34b76511..5f5201ed 100644 --- a/kite/doc/html/functions_0x7e.html +++ b/kite/doc/html/functions_0x7e.html @@ -93,7 +93,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_enum.html b/kite/doc/html/functions_enum.html index 2ad01c59..760811c5 100644 --- a/kite/doc/html/functions_enum.html +++ b/kite/doc/html/functions_enum.html @@ -82,7 +82,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_eval.html b/kite/doc/html/functions_eval.html index 8f78b381..6c0337ed 100644 --- a/kite/doc/html/functions_eval.html +++ b/kite/doc/html/functions_eval.html @@ -349,7 +349,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func.html b/kite/doc/html/functions_func.html index f7472479..488eff27 100644 --- a/kite/doc/html/functions_func.html +++ b/kite/doc/html/functions_func.html @@ -94,7 +94,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x61.html b/kite/doc/html/functions_func_0x61.html index 5dc78063..f7869ec1 100644 --- a/kite/doc/html/functions_func_0x61.html +++ b/kite/doc/html/functions_func_0x61.html @@ -107,7 +107,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x62.html b/kite/doc/html/functions_func_0x62.html index c467d073..b981dc38 100644 --- a/kite/doc/html/functions_func_0x62.html +++ b/kite/doc/html/functions_func_0x62.html @@ -90,7 +90,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x63.html b/kite/doc/html/functions_func_0x63.html index 73114731..f634e448 100644 --- a/kite/doc/html/functions_func_0x63.html +++ b/kite/doc/html/functions_func_0x63.html @@ -141,7 +141,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x64.html b/kite/doc/html/functions_func_0x64.html index 49e14665..e4b13145 100644 --- a/kite/doc/html/functions_func_0x64.html +++ b/kite/doc/html/functions_func_0x64.html @@ -112,7 +112,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x65.html b/kite/doc/html/functions_func_0x65.html index 3fc357ea..d816c3fd 100644 --- a/kite/doc/html/functions_func_0x65.html +++ b/kite/doc/html/functions_func_0x65.html @@ -96,7 +96,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x66.html b/kite/doc/html/functions_func_0x66.html index 8b6cb302..6815d008 100644 --- a/kite/doc/html/functions_func_0x66.html +++ b/kite/doc/html/functions_func_0x66.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x67.html b/kite/doc/html/functions_func_0x67.html index 3e0c7892..54980790 100644 --- a/kite/doc/html/functions_func_0x67.html +++ b/kite/doc/html/functions_func_0x67.html @@ -496,7 +496,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x68.html b/kite/doc/html/functions_func_0x68.html index 23c5d647..fd18908b 100644 --- a/kite/doc/html/functions_func_0x68.html +++ b/kite/doc/html/functions_func_0x68.html @@ -95,7 +95,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x69.html b/kite/doc/html/functions_func_0x69.html index d0dc27ff..bae3b938 100644 --- a/kite/doc/html/functions_func_0x69.html +++ b/kite/doc/html/functions_func_0x69.html @@ -212,7 +212,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x6c.html b/kite/doc/html/functions_func_0x6c.html index a2e5b7ba..c20c6058 100644 --- a/kite/doc/html/functions_func_0x6c.html +++ b/kite/doc/html/functions_func_0x6c.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x6d.html b/kite/doc/html/functions_func_0x6d.html index 021837db..008866f9 100644 --- a/kite/doc/html/functions_func_0x6d.html +++ b/kite/doc/html/functions_func_0x6d.html @@ -103,7 +103,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x6e.html b/kite/doc/html/functions_func_0x6e.html index c83e5c5c..0492b227 100644 --- a/kite/doc/html/functions_func_0x6e.html +++ b/kite/doc/html/functions_func_0x6e.html @@ -89,7 +89,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x6f.html b/kite/doc/html/functions_func_0x6f.html index 85d96a38..3c15388e 100644 --- a/kite/doc/html/functions_func_0x6f.html +++ b/kite/doc/html/functions_func_0x6f.html @@ -89,7 +89,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x70.html b/kite/doc/html/functions_func_0x70.html index 27f399bb..19287a47 100644 --- a/kite/doc/html/functions_func_0x70.html +++ b/kite/doc/html/functions_func_0x70.html @@ -105,7 +105,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x72.html b/kite/doc/html/functions_func_0x72.html index 3c5fcc14..7bd0edba 100644 --- a/kite/doc/html/functions_func_0x72.html +++ b/kite/doc/html/functions_func_0x72.html @@ -145,7 +145,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x73.html b/kite/doc/html/functions_func_0x73.html index 0c3f344c..d707d236 100644 --- a/kite/doc/html/functions_func_0x73.html +++ b/kite/doc/html/functions_func_0x73.html @@ -177,7 +177,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x75.html b/kite/doc/html/functions_func_0x75.html index 8a877ac3..a3a70453 100644 --- a/kite/doc/html/functions_func_0x75.html +++ b/kite/doc/html/functions_func_0x75.html @@ -101,7 +101,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_func_0x7e.html b/kite/doc/html/functions_func_0x7e.html index fb4de953..bb95dfbb 100644 --- a/kite/doc/html/functions_func_0x7e.html +++ b/kite/doc/html/functions_func_0x7e.html @@ -92,7 +92,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/functions_vars.html b/kite/doc/html/functions_vars.html index 3e8519fa..50c48cb2 100644 --- a/kite/doc/html/functions_vars.html +++ b/kite/doc/html/functions_vars.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/graph_legend.html b/kite/doc/html/graph_legend.html index 848b6a3e..30c1ed71 100644 --- a/kite/doc/html/graph_legend.html +++ b/kite/doc/html/graph_legend.html @@ -110,7 +110,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/group__AlgorithmOverview.html b/kite/doc/html/group__AlgorithmOverview.html index 4865dd46..02140ec9 100644 --- a/kite/doc/html/group__AlgorithmOverview.html +++ b/kite/doc/html/group__AlgorithmOverview.html @@ -86,7 +86,7 @@ Compute the Tracks in which the - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/kite/doc/html/group__grpSynthHierarchy.html b/kite/doc/html/group__grpSynthHierarchy.html index 173df300..0f18d91e 100644 --- a/kite/doc/html/group__grpSynthHierarchy.html +++ b/kite/doc/html/group__grpSynthHierarchy.html @@ -109,7 +109,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/hierarchy.html b/kite/doc/html/hierarchy.html index b07ac840..99147a84 100644 --- a/kite/doc/html/hierarchy.html +++ b/kite/doc/html/hierarchy.html @@ -85,7 +85,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/index.html b/kite/doc/html/index.html index a266a992..60ceb94e 100644 --- a/kite/doc/html/index.html +++ b/kite/doc/html/index.html @@ -57,7 +57,7 @@ The internal description which details how - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/kite/doc/html/modules.html b/kite/doc/html/modules.html index b59f1532..0d6c6825 100644 --- a/kite/doc/html/modules.html +++ b/kite/doc/html/modules.html @@ -57,7 +57,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespaceKite.html b/kite/doc/html/namespaceKite.html index 714950c7..ac1d5b60 100644 --- a/kite/doc/html/namespaceKite.html +++ b/kite/doc/html/namespaceKite.html @@ -211,7 +211,7 @@ Enumerations
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 2923c752..4f30dffe 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02AutoSegment_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 f0e447bd..9107870c 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02ChipTools_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 8d82f2bc..5e31c065 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02GCell_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 dfa83f1b..da400a63 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02KatabaticEngine_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b0367cc0..68d454d3 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02LoadGrByNet_8cpp_03.html @@ -60,7 +60,7 @@ Classes
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 666e86e7..97de2e2c 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02Manipulator_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02Manipulator_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3280365c..5805d812 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02NegociateWindow_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02NegociateWindow_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 4a6d490a..db3b8e08 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02RoutingPlane_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02RoutingPlane_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0696f679..2426d639 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02SegmentFsm_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02SegmentFsm_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 586fe762..12a9f71a 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02Session_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5385e448..99e97b00 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02TrackElement_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02TrackElement_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 26a35055..3788b885 100644 --- a/kite/doc/html/namespaceanonymous__namespace_02Track_8cpp_03.html +++ b/kite/doc/html/namespaceanonymous__namespace_02Track_8cpp_03.html @@ -52,7 +52,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespacemembers.html b/kite/doc/html/namespacemembers.html index e28d6949..b41bb935 100644 --- a/kite/doc/html/namespacemembers.html +++ b/kite/doc/html/namespacemembers.html @@ -122,7 +122,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespacemembers_enum.html b/kite/doc/html/namespacemembers_enum.html index 833bd96f..a1a420ca 100644 --- a/kite/doc/html/namespacemembers_enum.html +++ b/kite/doc/html/namespacemembers_enum.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespacemembers_eval.html b/kite/doc/html/namespacemembers_eval.html index 293e0aa9..ca0bef68 100644 --- a/kite/doc/html/namespacemembers_eval.html +++ b/kite/doc/html/namespacemembers_eval.html @@ -107,7 +107,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespacemembers_func.html b/kite/doc/html/namespacemembers_func.html index d1ff8c67..50d8ac3c 100644 --- a/kite/doc/html/namespacemembers_func.html +++ b/kite/doc/html/namespacemembers_func.html @@ -65,7 +65,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespacemembers_type.html b/kite/doc/html/namespacemembers_type.html index 23dbbbe3..1062cf44 100644 --- a/kite/doc/html/namespacemembers_type.html +++ b/kite/doc/html/namespacemembers_type.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/namespaces.html b/kite/doc/html/namespaces.html index c93fe2d3..aad91693 100644 --- a/kite/doc/html/namespaces.html +++ b/kite/doc/html/namespaces.html @@ -69,7 +69,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/pageNotes.html b/kite/doc/html/pageNotes.html index 95003f26..e4213245 100644 --- a/kite/doc/html/pageNotes.html +++ b/kite/doc/html/pageNotes.html @@ -151,7 +151,7 @@ Evaluation with Cadence NanoRoute
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/html/pages.html b/kite/doc/html/pages.html index 62df02c2..d7aca2b4 100644 --- a/kite/doc/html/pages.html +++ b/kite/doc/html/pages.html @@ -53,7 +53,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/kite/doc/latex/refman.tex b/kite/doc/latex/refman.tex index 76f50086..7b779b6b 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.5}\\ \vspace*{0.5cm} - {\small Sat Aug 18 2018 22:39:41}\\ + {\small Mon Oct 1 2018 14:29:11}\\ \end{center} \end{titlepage} diff --git a/oroshi/CMakeLists.txt b/oroshi/CMakeLists.txt new file mode 100644 index 00000000..fe87cf6f --- /dev/null +++ b/oroshi/CMakeLists.txt @@ -0,0 +1,28 @@ +# -*- explicit-buffer-name: "CMakeLists.txt" -*- + + project(OROSHI) + + cmake_minimum_required(VERSION 2.4.0) + + list(INSERT CMAKE_MODULE_PATH 0 "$ENV{CORIOLIS_TOP}/share/cmake/Modules/") + find_package(Bootstrap REQUIRED) + setup_project_paths(CORIOLIS) + + set_cmake_policies() + setup_sysconfdir("${CMAKE_INSTALL_PREFIX}") + setup_boost(program_options filesystem python) + + find_package(Libbfd) + find_package(PythonLibs 2 REQUIRED) + find_package(PythonSitePackages REQUIRED) + find_package(HURRICANE REQUIRED) + find_package(VLSISAPD REQUIRED) + find_package(CORIOLIS REQUIRED) + find_package(Doxygen) + setup_qt() + +#add_subdirectory(src) + add_subdirectory(python) +#add_subdirectory(etc) +#add_subdirectory(cmake_modules) + add_subdirectory(doc) diff --git a/oroshi/doc/CMakeLists.txt b/oroshi/doc/CMakeLists.txt new file mode 100644 index 00000000..4ac99f70 --- /dev/null +++ b/oroshi/doc/CMakeLists.txt @@ -0,0 +1,20 @@ +# -*- mode: CMAKE; explicit-buffer-name: # "CMakeLists.txt" -*- + + set ( htmlInstallDir share/doc/coriolis2/en/html/oroshi ) + set ( latexInstallDir share/doc/coriolis2/en/latex/oroshi ) + set ( doxExtras closed.png + open.png + tabs.css + ) + + if(BUILD_DOC AND DOXYGEN_FOUND) + add_custom_target ( doc ALL + cd ${OROSHI_SOURCE_DIR}/doc + && ${DOXYGEN_EXECUTABLE} doxyfile + && cp -f ${doxExtras} html + ) + endif() + + install ( DIRECTORY html/ DESTINATION ${htmlInstallDir} ) + install ( DIRECTORY latex/ DESTINATION ${latexInstallDir} ) + install ( FILES asimbook.cls DESTINATION ${latexInstallDir} ) diff --git a/oroshi/doc/SoC.css b/oroshi/doc/SoC.css new file mode 100644 index 00000000..4b52596b --- /dev/null +++ b/oroshi/doc/SoC.css @@ -0,0 +1,872 @@ + + +/* + * +-----------------------------------------------------------------+ + * | HTML Standart Tags | + * +-----------------------------------------------------------------+ + */ + + html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 { + font-size: 11pt; + /* The Open Sans font family is supplied by TexLive. */ + font-family: "Open Sans", Verdana, sans-serif;; + } + + html { + background: #dddddd; + } + + body { + color: black; + background: white; + background-color: white; + background-position: top left; + background-attachment: fixed; + background-repeat: no-repeat; + margin-top: 2em; + width: 700pt; + margin-right: auto; + margin-left: auto; + padding: 30pt; + /* + margin-right: 12%; + margin-left: 12%; + */ + } + + hr { + height: 1px; + border: 0; + color: #004400; + background-color: #004400; + } + + + h1, h2, h3, h4, h5, h6 { + /*font-family: "URW Bookman L", "Liberation Serif", sans-serif;*/ + font-family: "URW Bookman L"; + } + + h1.header { text-align: center; } + h1 { text-align: left; } + h2, h3, h4, h5, h6 { text-align: left; + padding-top: 11pt; + } + h1, h2, h3 { /*font-family: "Liberation Serif", sans-serif; */ + /*color: #09550B;*/ + } + h1 { font-weight: bold; font-size: 170%; /*letter-spacing:0.2em; word-spacing:0.4em;*/ } + h2 { font-weight: bold; font-size: 140%; /*letter-spacing:0.2em; word-spacing:0.4em;*/ } + h3 { font-weight: bold; font-size: 118%; /*letter-spacing:0.2em; word-spacing:0.4em;*/ } + h4 { font-weight: bold; font-size: 100%; } + h5 { font-style: italic; font-size: 100%; } + h6 { font-variant: small-caps; font-size: 100%; } + + h2.classHierarchy { + /*border: 1px none #008500;*/ + border: 1px none #000000; + border-top-width: 1px; + border-top-style: dotted; + padding-top: 1em; + } + + + .hide { + display: none; + color: white; + } + + + p { + margin-top: 0.6em; + margin-bottom: 0.6em; + margin-left: 0.0em; + margin-right: 0.0em; + } + + + address { + text-align: right; + font-weight: bold; + font-style: italic; + font-size: 80%; + } + + + caption { font-weight: bold } + + + blockquote { + margin-left: 4em; + margin-right: 4em; + margin-top: 0.8em; + margin-bottom: 0.8em; + font-style: italic; + color: #003300; + } + + blockquote p { + margin-bottom: 0; + } + + blockquote address { + margin: 0; + } + + + table { + border-collapse: collapse; + } + + dt, dd { margin-top: 0; margin-bottom: 0; } + dt { font-weight: bold; } + + + pre, tt, code { + /*font-family: "andale mono", monospace;*/ + font-size: 100%; + white-space: pre; + } + + pre { + font-size: 80%; + /*border: dashed;*/ + border-width: thin; + border-color: #003300; + /*background-color: #EEEEEE;*/ + background-color: #FCFCE1; + padding: 0.5em; + margin-left: 2em; + margin-right: 2em + } + +/* + tt { color: green; } + */ + em { font-style: italic; + font-weight: normal; } + strong { font-weight: bold; } + + span.textit { font-style: italic; } + span.textbf { font-weight: bold; } + + .small { font-size: 90%; } + .white { color: #FFFFFF; } + + + ul.toc { + list-style: disc; + list-style: none; + } + + + a:link img, a:visited img { border-style: none; } + a img { color: white; } + + a { + color: black; + border-bottom: 1px solid black; + text-decoration: none; + } + + a:link, a:active, a:visited { + /*color: #09550B;*/ + /*text-decoration: none;*/ + } + + a:hover, a:focus { + /*color: #FF9900; */ + border-bottom: 2px solid black; + } + + +/* + * +-----------------------------------------------------------------+ + * | Doxygen Specific Classes | + * +-----------------------------------------------------------------+ + */ + + +/* ------------------------------------------------------------------- + * Header & Footer Classes (customized top page navigation bar). + */ + + h1.header { + font-size: 200%; + /*font-family: times, verdana, sans-serif;*/ + } + + h2.memtitle { + display: none; + } + + center.header { + background-color: #CCE6CA; + } + + table.header { + /*width: 100%;*/ + /*background-color: #EEEEEE;*/ + background-color: #CCE6CA; + } + + div.header { + text-align: center; + margin: 14pt 0pt 0pt 0pt; + } + + div.summary { + color: white; + background-color: black; + border: 4px solid black; + } + + div.summary a { + font-size: 90%; + color: white; + padding: 2px 0px; + text-align: center; + background-color: black; + border-bottom: none; + } + + table.header td { + padding: 2px 14px; + text-align: center; + font-weight: bold; + /*font-family: verdana, sans-serif;*/ + font-size: 110%; + } + + table.UserDefined { + border: 1px solid; + } + + table.UserDefined th { + border: 1px solid; + } + + table.UserDefined td { + padding: 0px 5px; + } + + table.DoxUser td, table.DoxUser th { + padding: 0px 5px; + border: 0px; + } + + table.DoxUser th { + background-color: #CCE6CA; + } + + table.footer1, table.footer2 { width: 100%; } + td.LFooter { text-align: left; } + td.RFooter { text-align: right; } + td.CFooter { text-align: center;} + table.footer2 td.RFooter { font-weight: bold; width: 35% } + table.footer2 td.CFooter { width: 30% } + table.footer2 td.LFooter { font-weight: bold; width: 35%; /*font-family: time;*/ } + + table.classHierarchy { + border-collapse: separate; + border-spacing: 5px; + font-size: 110%; + } + + table.classHierarchy a { + border-style: none; + border-bottom: none; + } + + table.classHierarchy tr { + border: 1px solid blue; + } + + table.classHierarchy td.normal { + border: 1px solid #dddddd; + width: 140pt; + text-align: center; + font-weight: bold; + background-color: #dddddd; + } + + table.classHierarchy td.virtual { + border: 1px solid black; + width: 140pt; + text-align: center; + font-weight: bold; + } + + table.classHierarchy td.wnormal { + border: 1px solid #dddddd; + width: 240pt; + text-align: center; + font-weight: bold; + background-color: #dddddd; + } + + table.classHierarchy td.wvirtual { + border: 1px solid black; + width: 240pt; + text-align: center; + font-weight: bold; + } + + div.ah, span.ah { + font-family: Times; + font-size: 300%; + font-weight: bold; + padding: 20px; + } + + div.title { + text-align: center; + font-size: 200%; + font-weight: bold; + padding: 20px; + border: 2px solid black; + } + + div.center, div.image { + text-align: center; + } + + +/* ------------------------------------------------------------------- + * Top navigation lists. + */ + + span.mlabels { + font-size: 90%; + font-style: italic; + padding-left: 10pt; + margin: 10pt; + border-left: 1px solid black + } + + div.contents { + padding-top: 20pt; + } + + div.tabs { + border-top: 1px solid black; + } + + div.tabs, div.tabs1, div.tabs2, div.tabs3, div.tabs4 { + border-left: 1px solid black; + } + + ul.tablist { + /* + padding: 5pt; + background-color: red; + */ + margin: 0pt; + padding: 0pt; + border-top: none; + border-bottom: none; + border-left: none; + border-right: none; + } + + ul.tablist li { + /* + margin-left: auto; + margin-right: auto; + overflow: auto; + display: inline; + background-color: yellow; + */ + font-size: 90%; + border-top: none; + border-bottom: 1px solid black; + border-left: none; + border-right: 1px solid black; + display: table-cell; + text-align: center; + padding: 2pt; + width: 5%; + } + + ul.tablist li:hover { + background-color: black; + color: white; + } + + ul.tablist li:hover a { + background-color: black; + color: white; + } + + ul.tablist * a { border-bottom: none; } + + ul.tablist * a:link img, ul.tablist * a:visited img { border-style: none; border-bottom: none; } + + ul.tablist * a:link, ul.tablist * a:visited { + color: black; + text-decoration: none; + } + + ul.tablist * a:hover, ul.tablist * a:focus, ul.tablist * a:active { + color: white; + text-decoration: underline; + } + + div.navpath { + padding: 5pt 0pt 0pt 0pt; + } + + .navpath ul { + text-align: center; + } + + .navpath ul li { + display: inline; + list-style-type: none; + padding-left: 20px; + padding-right: 10px; + background-image: url('closed.png'); + background-repeat: no-repeat; + background-position: left; + color: #364D7C; + } + + .navpath ul li a { + border: 2px solid black; + padding-left: 10px; + padding-right: 10px; + font-weight: bold; + color: black; + } + + +/* ------------------------------------------------------------------- + * Quick Index Class (top page navigation bar). + */ + + div.qindex, div.nav { + width: 100%-4px; + /*background-color: #DADAEF;*/ + /*background-color: #eeeeff;*/ + background-color: #cccccc; + /*background-color: #CCE6CA;*/ + border: 0px solid #003300; + text-align: center; + margin: 0px; + padding: 2px; + line-height: 140%; + } + + a.qindex, a.qindex:visited, a.qindex:hover, a.qindexHL, a.el, a.elRef { + text-decoration: none; + /*font-family: Courier;*/ + font-weight: normal; + /*font-size: 110%;*/ + } + + a.qindex, a.qindex:visited { + /*color: #09550B;*/ + color: black; + border: 2px solid #cccccc; + padding: 2px 2px; + border-bottom: none; + } + + a.qindex:hover { + /*background-color: #ddddff;*/ + font-weight: bold; + padding: 2px 2px; + border: 2px solid black; + } + + a.qindexHL, a.qindexHL:hover, a.qindexHL:visited { + background-color: #0c780c; + color: #ffffff; + border: 1px double #9295C2; + } + + a.code:link, a.code:visited, a.codeRef:link, a.codeRef:visited { + text-decoration: none; + font-weight: normal; + color: #0000ff; + } + + .indexkey { + background-color: #eeeeff; + border: 1px solid #b0b0b0; + padding: 2px 15px; + } + + .indexkey, .indexvalue { + background-color: #eeeeff; + border: 1px solid #b0b0b0; + padding: 2px 15px; + } + + .indexkey { + width: 40%; + } + + .indexvalue { + width: 80%; + } + + h3 a[name="index__"], + h3 a[name="index_a"], + h3 a[name="index_b"], + h3 a[name="index_c"], + h3 a[name="index_d"], + h3 a[name="index_e"], + h3 a[name="index_f"], + h3 a[name="index_g"], + h3 a[name="index_h"], + h3 a[name="index_i"], + h3 a[name="index_j"], + h3 a[name="index_k"], + h3 a[name="index_l"], + h3 a[name="index_m"], + h3 a[name="index_n"], + h3 a[name="index_o"], + h3 a[name="index_p"], + h3 a[name="index_q"], + h3 a[name="index_r"], + h3 a[name="index_s"], + h3 a[name="index_t"], + h3 a[name="index_u"], + h3 a[name="index_v"], + h3 a[name="index_w"], + h3 a[name="index_x"], + h3 a[name="index_y"], + h3 a[name="index_z"], + h3 a[name="index_0"], + h3 a[name="index_1"], + h3 a[name="index_2"], + h3 a[name="index_3"], + h3 a[name="index_4"], + h3 a[name="index_5"], + h3 a[name="index_6"], + h3 a[name="index_7"], + h3 a[name="index_8"], + h3 a[name="index_9"] + h3 a[id="index__"], + h3 a#index_a, + h3 a#index_b, + h3 a#index_c, + h3 a#index_d, + h3 a#index_e, + h3 a#index_f, + h3 a#index_g, + h3 a#index_h, + h3 a#index_i, + h3 a#index_j, + h3 a#index_k, + h3 a#index_l, + h3 a#index_m, + h3 a#index_n, + h3 a#index_o, + h3 a#index_p, + h3 a#index_q, + h3 a#index_r, + h3 a#index_s, + h3 a#index_t, + h3 a#index_u, + h3 a#index_v, + h3 a#index_w, + h3 a#index_x, + h3 a#index_y, + h3 a#index_z, + h3 a#index_0, + h3 a#index_1, + h3 a#index_2, + h3 a#index_3, + h3 a#index_4, + h3 a#index_5, + h3 a#index_6, + h3 a#index_7, + h3 a#index_8, + h3 a#index_9, + h3 a#index_0x7e + { + font-family: time; + font-size: 250%; + text-align: center; + } + + +/* ------------------------------------------------------------------- + * Verbatim Source Code / Examples. + */ + + div.fragment { + font-family: "Monospace"; + font-size: 80%; + border: none; + /*border-width: thin; */ + /*border-color: #003300;*/ + /*background-color: #FCFCE1;*/ + background-color: #fefefe; + padding: 0.5em; + margin-left: 5%; + margin-right: 5% + } + + div.line { + white-space: pre; + padding: 0pt; + margin: 0pt; + } + + span.keyword { color: #008000 } + span.keywordtype { color: #604020 } + span.keywordflow { color: #e08000 } + span.comment { color: #800000 } + span.preprocessor { color: #806020 } + span.stringliteral { color: #002080 } + span.charliteral { color: #008080 } + span.red { color: red } + + +/* ------------------------------------------------------------------- + * Attributes Listing. + */ + + a.el, a.elRef { + font-family: Courier; + font-weight: bold; + font-size: 110%; + color: black; + border-bottom: none; + } + + p.formulaDsp { + text-align: center; + } + + .mdTable { + /*border: 1px solid #868686;*/ + /*background-color: #DADAEF;*/ + /*background-color: #F4F4FB;*/ + border: 1px none #008500; + border-left-width: 1px; + border-left-style: solid; + /*background-color: #B8E6B8;*/ + /*background-color: #CCE6CA;*/ + margin-top: 25px; + font-size: 105%; + } + + .mdRow { + padding: 5px 10px; + } + + /* This Mozilla/Firefox bug has been corrected from v1.5. + * .mdname1 { + * padding: 3px 0px 0px 0px; + * } + */ + + .mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + font-size: 11px; + font-style: italic; + /*background-color: #FAFAFA;*/ + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; + } + + .memitem { + margin-bottom: 30px; + border: 1px none #008500; + } + + .memproto { + /*background-color: #CCE6CA;*/ + background-color: #cccccc; + border-left-width: 4px; + border-left-style: solid; + /*border-color: #008500;*/ + border-color: black; + } + + .memname { + white-space: nowrap; + padding-left: 5px; + font-size: 105%; + } + + table.memname * { + font-family: "Monospace"; + } + + + .memdoc{ + padding-left: 5px; + /*margin-top: -8px;*/ + border-left-width: 1px; + border-left-style: solid; + /*border-color: #008500;*/ + border-color: black; + } + + div.contents * table tr { + padding: 3px 3px 3px 8px; + } + + .memSeparator { + font-size: 1pt; + } + + .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight { + vertical-align: top; + /*padding: 1px 0px 0px 8px;*/ + padding: 3px 3px 3px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + /* + border-top-color: #0c0c0c; + border-right-color: #0c0c0c; + border-bottom-color: #0c0c0c; + border-left-color: #0c0c0c; + */ + border-top-style: none; + border-right-style: none; +/* + border-bottom-style: dotted; +*/ + border-left-style: none; + /*background-color: #DADAEF;*/ + /*background-color: #eeeeff;*/ + /*background-color: #EEEEEE;*/ + /*background-color: #CCE6CA;*/ + font-family: "Monospace"; + } + + .memTemplItemLeft, .memTemplItemRight { + border-bottom-width: 2px; + border-bottom-style: solid; + font-weight: bold; + } + + .memItemLeft { font-size: 11px; width: 35%; } + .memItemRight { font-size: 12px; } + .memTemplItemLeft { font-size: 11px; } + .memTemplItemRight { font-size: 12px; } + + .memTemplParams { + color: #FFFFFF; + background-color: #000000; + font-size: 11px; + font-weight: bold; + } + + .groupText, .groupHeader { + color: #09550B; + font-size: 130%; + font-weight: bold; + margin-top: 15px; + } + + .groupHeader { + margin-bottom: -30pt; + } + + .inherit { + display: none; + } + + +/* ------------------------------------------------------------------- + * General Classes Index. + */ + + span.icona { + margin-right: 10pt; + } + + div.toc li.level1 { + margin-left: 0px; + } + + div.toc li.level2 { + margin-left: 15px; + display: none; + } + + div.toc li.level3 { + margin-left: 30px; + display: none; + } + + div.toc li.level4 { + margin-left: 45px; + display: none; + } + + .directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; + } + + .directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; + } + + + div.directory { + margin: 10px 0px; + border-top: 2px solid black; + border-bottom: 2px solid black; + width: 100%; + } + + .directory table { + border-collapse: collapse; + } + + .directory td { + margin: 0px; + padding: 0px; + vertical-align: top; + } + + .directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; + } + + .directory td.entry a { + outline: none; + } + + .directory td.entry a img { + border: none; + } + + .directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); + } + + .directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; + } + + .directory img { + vertical-align: -30%; + } diff --git a/oroshi/doc/asimbook.cls b/oroshi/doc/asimbook.cls new file mode 100644 index 00000000..54270780 --- /dev/null +++ b/oroshi/doc/asimbook.cls @@ -0,0 +1,798 @@ +%% +%% This is file `book.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% classes.dtx (with options: `book') +%% +%% This is a generated file. +%% +%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the LaTeX base system. +%% -------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% base system. You may however distribute the LaTeX base system without +%% such generated files. +%% +%% The list of all files belonging to the LaTeX base distribution is +%% given in the file `manifest.txt'. See also `legal.txt' for additional +%% information. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{asimbook} + [2005/11/21 v1.0 + ASIM LaTeX document class] +\newcommand\@ptsize{} +\newif\if@restonecol +\newif\if@titlepage +\@titlepagetrue +\newif\if@openright +\newif\if@mainmatter \@mainmattertrue +\if@compatibility\else +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}} +\DeclareOption{a5paper} + {\setlength\paperheight {210mm}% + \setlength\paperwidth {148mm}} +\DeclareOption{b5paper} + {\setlength\paperheight {250mm}% + \setlength\paperwidth {176mm}} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +\DeclareOption{landscape} + {\setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima}} +\fi +\if@compatibility + \renewcommand\@ptsize{0} +\else +\DeclareOption{10pt}{\renewcommand\@ptsize{0}} +\fi +\DeclareOption{11pt}{\renewcommand\@ptsize{1}} +\DeclareOption{12pt}{\renewcommand\@ptsize{2}} +\if@compatibility\else +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +\fi +\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\if@compatibility\else +\DeclareOption{final}{\setlength\overfullrule{0pt}} +\fi +\DeclareOption{titlepage}{\@titlepagetrue} +\if@compatibility\else +\DeclareOption{notitlepage}{\@titlepagefalse} +\fi +\if@compatibility +\@openrighttrue +\else +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +\fi +\if@compatibility\else +\DeclareOption{onecolumn}{\@twocolumnfalse} +\fi +\DeclareOption{twocolumn}{\@twocolumntrue} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\DeclareOption{openbib}{% + \AtEndOfPackage{% + \renewcommand\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand\newblock{\par}}% +} +\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright} +\ProcessOptions +\input{bk1\@ptsize.clo} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand\baselinestretch{} +\setlength\parskip{0\p@ \@plus \p@} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\setcounter{topnumber}{2} +\renewcommand\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand\textfraction{.2} +\renewcommand\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand\dbltopfraction{.7} +\renewcommand\dblfloatpagefraction{.5} +%%%% Select Chapter font. +\newcommand \textchapter [1] {\textsf{\textbf{#1}}} +\newcommand \fontchapter {\sffamily \bfseries} +\if@twoside + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter. \ % + \fi + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection. \ % + \fi + ##1}}}} +\else + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter. \ % + \fi + \fi + ##1}}}} +\fi +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\@gobbletwo + \let\chaptermark\@gobble + \let\sectionmark\@gobble + } + \if@titlepage + \newcommand\maketitle{\begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \let \footnote \thanks + \null\vfil + \vskip 60\p@ + \begin{center}% + {\LARGE \@title \par}% + \vskip 3em% + {\large + \lineskip .75em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1.5em% + {\large \@date \par}% % Set date in \large size. + \end{center}\par + \@thanks + \vfil\null + \end{titlepage}% + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\else +\newcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{plain}\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\def\@maketitle{% + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\LARGE \@title \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \@date}% + \end{center}% + \par + \vskip 1.5em} +\fi +\newcommand*\chaptermark[1]{} +\setcounter{secnumdepth}{2} +\newcounter {part} +\newcounter {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +\renewcommand \thepart {\@Roman\c@part} +\renewcommand \thechapter {\@arabic\c@chapter} +\renewcommand \thesection {\thechapter.\@arabic\c@section} +\renewcommand\thesubsection {\thesection.\@arabic\c@subsection} +\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection} +\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph} +\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} +\newcommand\@chapapp{\chaptername} +\newcommand\frontmatter{% + \cleardoublepage + \@mainmatterfalse + \pagenumbering{roman}} +\newcommand\mainmatter{% + \cleardoublepage + \@mainmattertrue + \pagenumbering{arabic}} +\newcommand\backmatter{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \@mainmatterfalse} +\newcommand\part{% + \if@openright + \cleardoublepage + \else + \clearpage + \fi + \thispagestyle{plain}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname\nobreakspace\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \if@openright + \null + \thispagestyle{empty}% + \newpage + \fi + \fi + \if@tempswa + \twocolumn + \fi} +\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +%%%%\def\@makechapterhead#1{% +%%%% \vspace*{50\p@}% +%%%% {\parindent \z@ \raggedright \normalfont +%%%% \ifnum \c@secnumdepth >\m@ne +%%%% \if@mainmatter +%%%% \huge\bfseries \@chapapp\space \thechapter +%%%% \par\nobreak +%%%% \vskip 20\p@ +%%%% \fi +%%%% \fi +%%%% \interlinepenalty\@M +%%%% \Huge \bfseries #1\par\nobreak +%%%% \vskip 40\p@ +%%%% }} + \newlength \titlewidth + \setlength \titlewidth {\textwidth} + \addtolength \titlewidth {\marginparwidth} + \addtolength \titlewidth {\marginparsep} + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedleft \fontchapter + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \huge \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \hsize=\titlewidth + \Huge #1 \par\nobreak + \hsize=\textwidth + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +%%%%\def\@makeschapterhead#1{% +%%%% \vspace*{50\p@}% +%%%% {\parindent \z@ \raggedright +%%%% \normalfont +%%%% \interlinepenalty\@M +%%%% \Huge \bfseries #1\par\nobreak +%%%% \vskip 40\p@ +%%%% }} + \def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \hsize=\titlewidth + \flushright + \Huge \bfseries #1\par\nobreak + \hsize=\textwidth + \vskip 40\p@ + }} +\newcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}} +\newcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\bfseries}} +\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} +\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\bfseries}} +\if@twocolumn + \setlength\leftmargini {2em} +\else + \setlength\leftmargini {2.5em} +\fi +\leftmargin \leftmargini +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\if@twocolumn + \setlength\leftmarginv {.5em} + \setlength\leftmarginvi {.5em} +\else + \setlength\leftmarginv {1em} + \setlength\leftmarginvi {1em} +\fi +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\renewcommand\theenumi{\@arabic\c@enumi} +\renewcommand\theenumii{\@alph\c@enumii} +\renewcommand\theenumiii{\@roman\c@enumiii} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +\newcommand\labelitemi{\textbullet} +\newcommand\labelitemii{\normalfont\bfseries \textendash} +\newcommand\labelitemiii{\textasteriskcentered} +\newcommand\labelitemiv{\textperiodcentered} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} +\newenvironment{verse} + {\let\\\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item\relax} + {\endlist} +\newenvironment{quotation} + {\list{}{\listparindent 1.5em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@}% + \item\relax} + {\endlist} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item\relax} + {\endlist} +\if@compatibility +\newenvironment{titlepage} + {% + \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \setcounter{page}\z@ + }% + {\if@restonecol\twocolumn \else \newpage \fi + } +\else +\newenvironment{titlepage} + {% + \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \setcounter{page}\@ne + }% + {\if@restonecol\twocolumn \else \newpage \fi + \if@twoside\else + \setcounter{page}\@ne + \fi + } +\fi +\newcommand\appendix{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \gdef\@chapapp{\appendixname}% + \gdef\thechapter{\@Alph\c@chapter}} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\@addtoreset {equation}{chapter} +\renewcommand\theequation + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation} +\newcounter{figure}[chapter] +\renewcommand \thefigure + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename\nobreakspace\thefigure} +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +\newcounter{table}[chapter] +\renewcommand \thetable + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename\nobreakspace\thetable} +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +\newcommand\@pnumwidth{1.55em} +\newcommand\@tocrmarg{2.55em} +\newcommand\@dotsep{4.5} +\setcounter{tocdepth}{2} +\newcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\contentsname + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +\newcommand*\l@part[2]{% + \ifnum \c@tocdepth >-2\relax + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + \setlength\@tempdima{3em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + {\leavevmode + \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par + \nobreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}}% + \endgroup + \fi} +%%%%\newcommand*\l@chapter[2]{% +%%%% \ifnum \c@tocdepth >\m@ne +%%%% \addpenalty{-\@highpenalty}% +%%%% \vskip 1.0em \@plus\p@ +%%%% \setlength\@tempdima{1.5em}% +%%%% \begingroup +%%%% \parindent \z@ \rightskip \@pnumwidth +%%%% \parfillskip -\@pnumwidth +%%%% \leavevmode \bfseries +%%%% \advance\leftskip\@tempdima +%%%% \hskip -\leftskip +%%%% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par +%%%% \penalty\@highpenalty +%%%% \endgroup +%%%% \fi} +\newcommand\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \fontchapter + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} +\newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} +\newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}} +\newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}} +\newcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listfigurename}% + \@mkboth{\MakeUppercase\listfigurename}% + {\MakeUppercase\listfigurename}% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi + } +\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand\listoftables{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listtablename}% + \@mkboth{% + \MakeUppercase\listtablename}% + {\MakeUppercase\listtablename}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +\let\l@table\l@figure +\newdimen\bibindent +\setlength\bibindent{1.5em} +\newenvironment{thebibliography}[1] + {\chapter*{\bibname}% + \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\@makeschapterhead{\indexname}]% + \@mkboth{\MakeUppercase\indexname}% + {\MakeUppercase\indexname}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\newcommand\@idxitem{\par\hangindent 40\p@} +\newcommand\subitem{\@idxitem \hspace*{20\p@}} +\newcommand\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width.4\columnwidth + \kern2.6\p@} +\@addtoreset{footnote}{chapter} +\newcommand\@makefntext[1]{% + \parindent 1em% + \noindent + \hb@xt@1.8em{\hss\@makefnmark}#1} +\newcommand\contentsname{Contents} +\newcommand\listfigurename{List of Figures} +\newcommand\listtablename{List of Tables} +\newcommand\bibname{Bibliography} +\newcommand\indexname{Index} +\newcommand\figurename{Figure} +\newcommand\tablename{Table} +\newcommand\partname{Part} +\newcommand\chaptername{Chapter} +\newcommand\appendixname{Appendix} +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\setlength\columnsep{10\p@} +\setlength\columnseprule{0\p@} +\pagestyle{headings} +\pagenumbering{arabic} +\if@twoside +\else + \raggedbottom +\fi +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +\else + \onecolumn +\fi +\endinput +%% +%% End of file `book.cls'. diff --git a/oroshi/doc/closed.png b/oroshi/doc/closed.png new file mode 100644 index 00000000..e4e2b25a Binary files /dev/null and b/oroshi/doc/closed.png differ diff --git a/oroshi/doc/doxyfile b/oroshi/doc/doxyfile new file mode 100644 index 00000000..72a4e0c9 --- /dev/null +++ b/oroshi/doc/doxyfile @@ -0,0 +1,272 @@ +# -*- explicit-buffer-name: "doxyfile" -*- +# Doxyfile 1.3.4 + +# -------------------------------------------------------------------- +# Project related configuration options + +PROJECT_NAME = "Oroshi - Analog Devices Layout" +PROJECT_NUMBER = 1.0 +OUTPUT_DIRECTORY = . +OUTPUT_LANGUAGE = English +MARKDOWN_SUPPORT = NO +#USE_WINDOWS_ENCODING = NO +#LAYOUT_FILE = DoxygenLayout.xml +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +#DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 2 +ALIASES = "function=\fn"\ + "important=\par Important:\n"\ + "remark=\par Remark:\n"\ + "sreturn=\b Returns:"\ + "True=\b True"\ + "true=\b true"\ + "False=\b False"\ + "false=\b false"\ + "VERTICAL=\b VERTICAL"\ + "HORIZONTAL=\b HORIZONTAL"\ + "NULL=\c NULL"\ + "vector=\c vector"\ + "Collection=\c Collection"\ + "Collections=\c Collections"\ + "Box=\c Box"\ + "box=\c box"\ + "Layer=\c Layer"\ + "Layers=\c Layers"\ + "Net=\c Net"\ + "Nets=\c Nets"\ + "Pin=\c Pin"\ + "Pins=\c Pins"\ + "Plug=\c Plug"\ + "Plugs=\c Plugs"\ + "RoutingPad=\c RoutingPad"\ + "RoutingPads=\c RoutingPads"\ + "Cell=\c Cell"\ + "Cells=\c Cells"\ + "ToolEngine=\c ToolEngine"\ + "ToolEngines=\c ToolEngines"\ + "GCell=\c GCell"\ + "GCells=\c GCells"\ + "Splitter=\c Splitter"\ + "Splitters=\c Splitters"\ + "SplitterContact=\c SplitterContact"\ + "SplitterContacts=\c SplitterContacts"\ + "Hurricane=Hurricane"\ + "STL=STL"\ + "red{1}=\1" +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES + +# -------------------------------------------------------------------- +# Build related configuration options + +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_ANON_NSPACES = YES +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = YES +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 1 +SHOW_USED_FILES = YES + +# -------------------------------------------------------------------- +# Configuration options related to warning and progress messages + +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = + +# -------------------------------------------------------------------- +# Configuration options related to the input files + +INPUT = \ + ../python/Stack.py \ + ../python/WIP_Transistor.py \ + ../python/WIP_DP.py \ + ../python/WIP_CSP.py + +FILE_PATTERNS = *.py + +RECURSIVE = YES + +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = . +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = images +INPUT_FILTER = +FILTER_SOURCE_FILES = YES + +# -------------------------------------------------------------------- +# Configuration options related to source browsing + +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES + +# -------------------------------------------------------------------- +# Configuration options related to the alphabetical class index + +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 2 +IGNORE_PREFIX = + +# -------------------------------------------------------------------- +# Configuration options related to the HTML output + +GENERATE_HTML = YES +#HTML_DYNAMIC_SECTIONS = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = header.html +HTML_FOOTER = footer.html +HTML_STYLESHEET = SoC.css +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 1 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 + +# -------------------------------------------------------------------- +# Configuration options related to the LaTeX output + +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = header.tex +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO + +# -------------------------------------------------------------------- +# Configuration options related to the RTF output + +GENERATE_RTF = YES +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = + +# -------------------------------------------------------------------- +# Configuration options related to the man page output + +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO + +# -------------------------------------------------------------------- +# Configuration options related to the XML output + +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = + +# -------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output + +GENERATE_AUTOGEN_DEF = NO + +# -------------------------------------------------------------------- +# Configuration options related to the Perl module output + +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = + +# -------------------------------------------------------------------- +# Configuration options related to the preprocessor + +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = __DOXYGEN__ +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES + +# -------------------------------------------------------------------- +# Configuration::addtions related to external references + +TAGFILES = ../../hurricane/doc/hurricane/html/hurricane.tag=../hurricane \ + ../../hurricane/doc/viewer/html/viewer.tag=../viewer \ + ../../crlcore/doc/crlcore/html/crlcore.tag=../crlcore +GENERATE_TAGFILE = html/katabatic.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl + +# -------------------------------------------------------------------- +# Configuration options related to the dot tool + +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = NO +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +#MAX_DOT_GRAPH_WIDTH = 512 +#MAX_DOT_GRAPH_HEIGHT = 1024 +#MAX_DOT_GRAPH_DEPTH = 0 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES + +# -------------------------------------------------------------------- +# Configuration::addtions related to the search engine + +SEARCHENGINE = NO diff --git a/oroshi/doc/footer.html b/oroshi/doc/footer.html new file mode 100644 index 00000000..4dd72b90 --- /dev/null +++ b/oroshi/doc/footer.html @@ -0,0 +1,16 @@ +
                                                                                            +
                                                                                            + + + + + +
                                                                                            Generated by doxygen $doxygenversion on $dateReturn to top of page
                                                                                            + + + + + +
                                                                                            Oroshi - Analog Devices LayoutsCopyright © 2018-2018 UPMC. All rights reserved
                                                                                            + + diff --git a/oroshi/doc/header.html b/oroshi/doc/header.html new file mode 100644 index 00000000..749c5a2d --- /dev/null +++ b/oroshi/doc/header.html @@ -0,0 +1,26 @@ + + + + + Oroshi Documentation + + + + + +

                                                                                            Oroshi - Analog Devices Layouts

                                                                                            + +
                                                                                            + diff --git a/oroshi/doc/header.tex b/oroshi/doc/header.tex new file mode 100644 index 00000000..ec779312 --- /dev/null +++ b/oroshi/doc/header.tex @@ -0,0 +1,47 @@ + + + \documentclass[a4paper]{asimbook} + + \usepackage{a4wide} + \usepackage{makeidx} + \usepackage{fancyhdr} + \usepackage{graphicx} + \usepackage{multicol} + \usepackage{float} + \usepackage{textcomp} + \usepackage{alltt} + \usepackage{times} + \ifx\pdfoutput\undefined + \usepackage[ps2pdf,pagebackref=true,colorlinks=true,linkcolor=blue]{hyperref} + \usepackage{pspicture} + \else + \usepackage[pdftex,pagebackref=true,colorlinks=true,linkcolor=blue]{hyperref} + \fi + \usepackage{doxygen} + + \makeindex + \setcounter{tocdepth}{1} + \renewcommand{\footrulewidth}{0.4pt} + \raggedbottom + + + \begin{document} + + \begin{titlepage} + \vspace*{7cm} + \begin{center} + {\Large $projectname Reference Manual\\[1ex]\large $projectnumber }\\ + \vspace*{1cm} + {\large Generated by Doxygen $doxygenversion}\\ + \vspace*{0.5cm} + {\small $datetime}\\ + \end{center} + \end{titlepage} + + \clearemptydoublepage + \pagenumbering{roman} + + \tableofcontents + \clearemptydoublepage + + \pagenumbering{arabic} diff --git a/oroshi/doc/images/active-side-width-1.fig b/oroshi/doc/images/active-side-width-1.fig new file mode 100644 index 00000000..f64c6b5b --- /dev/null +++ b/oroshi/doc/images/active-side-width-1.fig @@ -0,0 +1,221 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 6255 630 8145 4995 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 7425 2925 7875 2925 7875 3375 7425 3375 7425 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 6525 2925 6975 2925 6975 3375 6525 3375 6525 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 6525 3825 6975 3825 6975 4275 6525 4275 6525 3825 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 7425 3825 7875 3825 7875 4275 7425 4275 7425 3825 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6300 675 8100 675 8100 4950 6300 4950 6300 675 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 6570 945 6930 945 6930 1305 6570 1305 6570 945 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 7470 945 7830 945 7830 1305 7470 1305 7470 945 +-6 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 4950 6075 4500 6075 4500 5175 4725 5175 4725 2250 5175 2250 + 5175 5175 5400 5175 5400 6075 4950 6075 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 4725 2205 4725 2025 4275 1800 4275 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 4275 1710 4995 1710 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 4725 5400 5175 5400 5175 5850 4725 5850 4725 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1125 1710 2025 1710 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 2700 225 2700 1350 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10305 2250 10305 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10035 2250 10035 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9765 2250 9765 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9225 2250 9225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8955 2250 8955 +2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 4 + -2700 10575 -2700 8100 2250 8100 2250 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2250 8100 -2250 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1800 8100 -1800 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8685 2250 8685 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8415 2250 8415 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 -225 9675 -225 9675 11250 -2700 11250 -2700 -225 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2925 2925 3375 2925 3375 3375 2925 3375 2925 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2025 2925 2475 2925 2475 3375 2025 3375 2025 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2025 3825 2475 3825 2475 4275 2025 4275 2025 3825 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2925 3825 3375 3825 3375 4275 2925 4275 2925 3825 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1800 675 3600 675 3600 4950 1800 4950 1800 675 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 2070 945 2430 945 2430 1305 2070 1305 2070 945 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 2970 945 3330 945 3330 1305 2970 1305 2970 945 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2025 2835 2025 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2475 2835 2475 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2925 2835 2925 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 3375 2790 3375 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2025 1710 2475 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2925 1710 3375 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 1 2 + 5 1 1.00 60.00 120.00 + 2250 4050 2700 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 1 2 + 5 1 1.00 60.00 120.00 + 3150 4050 2700 5850 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + 1350 2475 8550 2475 8550 4725 1350 4725 1350 2475 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + 1575 2700 8325 2700 8325 4500 1575 4500 1575 2700 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 1125 1575 1125 2025 1575 2250 1575 2655 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -675 1710 1125 1710 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 4275 4950 5625 4950 5625 6300 4275 6300 4275 4950 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 1800 5850 2700 5850 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 4 + 4950 1125 4950 6525 5400 6750 5400 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 4725 5940 4725 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 4275 6390 4275 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 3600 5040 3600 6525 3825 6750 3825 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 3375 4365 3375 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2925 6525 2925 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2475 6525 2475 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2025 6525 2025 7335 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2925 7155 3375 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3375 7155 3825 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3825 7155 4275 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 4275 7155 4680 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 4725 7155 5400 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 1125 7290 1125 6750 1575 6525 1575 4545 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -675 7155 1125 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1125 7155 2025 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9495 2250 9495 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 10575 2250 10575 2250 11250 -2700 11250 -2700 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2475 1710 2925 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3375 1710 4275 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2025 7155 2475 7155 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2475 7155 2925 7155 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 10485 a\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 10215 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 9945 c\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 9675 d\001 +4 0 0 40 -1 12 12 0.0000 4 120 2400 -1575 9675 self.contactGateSide\001 +4 0 0 40 -1 12 12 0.0000 4 165 2760 -1575 10485 self.contactGateSpacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 2400 -1575 10215 self.contactNimpSide\001 +4 0 0 40 -1 12 12 0.0000 4 165 2760 -1575 9945 self.contactNimpSpacing\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10485 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10215 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9945 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9675 T\001 +4 0 0 40 -1 14 12 0.0000 4 120 480 1800 5805 NERC\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 9405 h\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 9135 i\001 +4 1 0 40 -1 12 12 0.0000 4 165 120 -2475 8865 j\001 +4 1 0 40 -1 12 12 0.0000 4 105 120 -2475 8325 L\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9405 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9135 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8865 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8325 U\001 +4 0 0 40 -1 12 12 0.0000 4 165 2160 -1575 9405 self.metal1Spacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 2640 -1575 9135 self.metal1Via1Overlap\001 +4 0 0 40 -1 12 12 0.0000 4 165 3000 -1575 8865 self.metal1ContactOverlap\001 +4 0 0 40 -1 16 12 0.0000 4 195 2190 -1575 8325 Transistor channel length\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 8595 k\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8595 T\001 +4 0 0 40 -1 12 12 0.0000 4 165 3000 -1575 8595 self.activeContactOverlap\001 +4 1 0 40 -1 14 22 0.0000 4 225 4200 -270 11025 self.activeSideWidth\001 +4 0 0 40 -1 14 12 0.0000 4 120 600 -675 1620 side1\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 1575 1620 k\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 2250 1620 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 2700 1620 c\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 3825 1620 a\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 3150 1620 b\001 +4 1 0 40 -1 14 12 0.0000 4 150 360 4590 1620 L/2\001 +4 0 0 40 -1 14 12 0.0000 4 120 600 -675 7065 side2\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 1575 7065 k\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 2250 7065 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 2700 7065 c\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 3150 7065 b\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 3600 7065 i\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 4050 7065 h\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 4500 7065 i\001 +4 1 0 40 -1 12 12 0.0000 4 150 360 5040 7065 d/2\001 diff --git a/oroshi/doc/images/active-side-width-1.pdf b/oroshi/doc/images/active-side-width-1.pdf new file mode 100644 index 00000000..392e0492 Binary files /dev/null and b/oroshi/doc/images/active-side-width-1.pdf differ diff --git a/oroshi/doc/images/active-side-width-1.png b/oroshi/doc/images/active-side-width-1.png new file mode 100644 index 00000000..376f599a Binary files /dev/null and b/oroshi/doc/images/active-side-width-1.png differ diff --git a/oroshi/doc/images/gate-pitch-1.fig b/oroshi/doc/images/gate-pitch-1.fig new file mode 100644 index 00000000..3ca46138 --- /dev/null +++ b/oroshi/doc/images/gate-pitch-1.fig @@ -0,0 +1,323 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 6255 630 8145 4995 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 7425 2925 7875 2925 7875 3375 7425 3375 7425 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 6525 2925 6975 2925 6975 3375 6525 3375 6525 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 6525 3825 6975 3825 6975 4275 6525 4275 6525 3825 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 7425 3825 7875 3825 7875 4275 7425 4275 7425 3825 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6300 675 8100 675 8100 4950 6300 4950 6300 675 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 6570 945 6930 945 6930 1305 6570 1305 6570 945 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 7470 945 7830 945 7830 1305 7470 1305 7470 945 +-6 +6 -2745 10530 1845 11295 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 10575 1800 10575 1800 11250 -2700 11250 -2700 10575 +4 1 0 40 -1 14 22 0.0000 4 300 2940 -450 11025 self.gatePitch\001 +-6 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 450 1125 450 7200 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 4950 1125 4950 7200 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 450 6075 0 6075 0 5175 225 5175 225 2250 675 2250 + 675 5175 900 5175 900 6075 450 6075 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 4950 6075 4500 6075 4500 5175 4725 5175 4725 2250 5175 2250 + 5175 5175 5400 5175 5400 6075 4950 6075 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 675 2205 675 2025 1125 1800 1125 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 4725 2205 4725 2025 4275 1800 4275 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 450 1710 1125 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3375 1710 4275 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 4275 1710 4995 1710 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 225 5400 675 5400 675 5850 225 5850 225 5400 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 4725 5400 5175 5400 5175 5850 4725 5850 4725 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 675 5940 675 6300 1125 6525 1125 6885 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 4725 5940 4725 6300 4275 6525 4275 6885 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 450 6705 1125 6705 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1125 6705 1800 6705 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1800 6705 3600 6705 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 4275 6705 4950 6705 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 900 6120 900 6300 1800 6525 1800 6885 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1125 1710 2025 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1350 1710 450 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1350 6705 495 6705 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + -450 2475 8550 2475 8550 4725 -450 4725 -450 2475 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + -270 2700 8325 2700 8325 4500 -270 4500 -270 2700 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 2700 225 2700 1350 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 7200 225 7200 1350 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 3600 540 3600 225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6300 585 6300 225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2700 405 3600 405 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3600 405 6300 405 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6300 405 7200 405 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2700 405 -1350 405 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6525 4365 6525 5760 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6975 4365 6975 5760 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7425 4365 7425 5760 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7875 4365 7875 5760 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 6300 5040 6300 5175 5850 5400 5850 5760 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 8100 4995 8100 5175 8550 5445 8550 5760 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 5850 5580 6525 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6525 5580 6975 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6975 5580 7425 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7425 5580 7875 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7875 5580 8550 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6525 1395 6525 2160 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6975 1395 6975 2160 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7425 1350 7425 2160 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7875 1350 7875 2160 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 8190 1350 8190 1575 8550 1800 8550 2160 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 6210 1350 6210 1575 5850 1800 5850 2160 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 5850 1980 6525 1980 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6525 1980 6975 1980 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6975 1980 7425 1980 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7425 1980 7875 1980 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7875 1980 8550 1980 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 8550 1980 9225 1980 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 8550 5580 9225 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10305 1800 10305 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10035 1800 10035 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9765 1800 9765 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9495 1800 9495 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9225 1800 9225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8955 1800 8955 +2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 4 + -2700 10575 -2700 7605 1800 7605 1800 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2250 7605 -2250 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1800 7605 -1800 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8685 1800 8685 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8415 1800 8415 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8145 1800 8145 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 -225 9675 -225 9675 11250 -2700 11250 -2700 -225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 7875 1845 7875 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 7 0 0 4 + 4500 6120 4500 6345 3600 6525 3600 6885 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3600 6705 4275 6705 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2925 2925 3375 2925 3375 3375 2925 3375 2925 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2025 2925 2475 2925 2475 3375 2025 3375 2025 2925 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2025 3825 2475 3825 2475 4275 2025 4275 2025 3825 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2925 3825 3375 3825 3375 4275 2925 4275 2925 3825 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1800 675 3600 675 3600 4950 1800 4950 1800 675 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 2070 945 2430 945 2430 1305 2070 1305 2070 945 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 2970 945 3330 945 3330 1305 2970 1305 2970 945 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2025 2835 2025 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2475 2835 2475 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2925 2835 2925 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 3375 2790 3375 1575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2025 1710 2475 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2475 1710 2925 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2925 1710 3375 1710 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 1 2 + 5 1 1.00 60.00 120.00 + 2250 4050 2700 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 1 2 + 5 1 1.00 60.00 120.00 + 3150 4050 2700 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2700 5850 3600 5850 +4 2 0 40 -1 14 12 0.0000 4 165 240 9225 5490 g1\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 10485 a\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 10215 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 9945 c\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 9675 d\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 9405 e\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 9135 f\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 8820 g\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 8595 h\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 8325 i\001 +4 1 0 40 -1 12 12 0.0000 4 165 120 -2475 8055 j\001 +4 0 0 40 -1 12 12 0.0000 4 120 2400 -1575 9675 self.contactGateSide\001 +4 0 0 40 -1 12 12 0.0000 4 165 2760 -1575 9405 self.polyContactOverlap\001 +4 0 0 40 -1 12 12 0.0000 4 165 1920 -1575 9135 self.gateSpacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 2760 -1575 10485 self.contactGateSpacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 2400 -1575 10215 self.contactNimpSide\001 +4 0 0 40 -1 12 12 0.0000 4 165 2760 -1575 9945 self.contactNimpSpacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 1560 -1575 8865 max( g1, g2 )\001 +4 0 0 40 -1 12 12 0.0000 4 165 2160 -1575 8595 self.metal1Spacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 3000 -1575 8055 self.metal1ContactOverlap\001 +4 0 0 40 -1 12 12 0.0000 4 165 2640 -1575 8325 self.metal1Via1Overlap\001 +4 1 0 40 -1 12 12 0.0000 4 105 120 -2475 7785 L\001 +4 0 0 40 -1 16 12 0.0000 4 195 2190 -1575 7785 Transistor channel length\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10485 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10215 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9945 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9675 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9405 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8595 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8055 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 7785 U\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9135 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8325 T\001 +4 2 0 40 -1 14 12 0.0000 4 120 480 3600 5805 NIRC\001 +4 0 0 40 -1 14 12 0.0000 4 165 720 -1350 1620 pitch1\001 +4 1 0 40 -1 14 12 0.0000 4 150 360 810 1620 L/2\001 +4 0 0 40 -1 14 12 0.0000 4 165 720 -1350 315 pitch3\001 +4 1 0 40 -1 14 12 0.0000 4 180 360 3150 315 g/2\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 1575 1620 a\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 2250 1620 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 2700 1620 c\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 3150 1620 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 3825 1620 a\001 +4 1 0 40 -1 14 12 0.0000 4 150 360 4590 1620 L/2\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 4950 315 h\001 +4 1 0 40 -1 14 12 0.0000 4 180 360 6750 315 g/2\001 +4 1 0 40 -1 12 12 0.0000 4 165 120 6165 1890 j\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 6750 1890 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 7200 1890 c\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 7650 1890 b\001 +4 1 0 40 -1 12 12 0.0000 4 165 120 8235 1890 j\001 +4 2 0 40 -1 14 12 0.0000 4 165 240 9225 1890 g2\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 8190 5490 i\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 7650 5490 b\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 7200 5490 c\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 6750 5490 b\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 6210 5490 i\001 +4 0 0 40 -1 14 12 0.0000 4 165 720 -1350 6615 pitch2\001 +4 1 0 40 -1 12 12 0.0000 4 150 360 810 6615 d/2\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 1440 6615 e\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 2700 6615 f\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 3960 6570 e\001 +4 1 0 40 -1 12 12 0.0000 4 150 360 4635 6615 d/2\001 diff --git a/oroshi/doc/images/gate-pitch-1.pdf b/oroshi/doc/images/gate-pitch-1.pdf new file mode 100644 index 00000000..2159220c Binary files /dev/null and b/oroshi/doc/images/gate-pitch-1.pdf differ diff --git a/oroshi/doc/images/gate-pitch-1.png b/oroshi/doc/images/gate-pitch-1.png new file mode 100644 index 00000000..4b91ea63 Binary files /dev/null and b/oroshi/doc/images/gate-pitch-1.png differ diff --git a/oroshi/doc/images/htrack-distance-1.fig b/oroshi/doc/images/htrack-distance-1.fig new file mode 100644 index 00000000..19d09a77 --- /dev/null +++ b/oroshi/doc/images/htrack-distance-1.fig @@ -0,0 +1,215 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10035 2250 10035 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9765 2250 9765 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9225 2250 9225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8955 2250 8955 +2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 4 + -2700 10575 -2700 7875 2250 7875 2250 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2250 7875 -2250 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1800 7875 -1800 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8685 2250 8685 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8415 2250 8415 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 -225 9675 -225 9675 11250 -2700 11250 -2700 -225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9495 2250 9495 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 10575 2250 10575 2250 11250 -2700 11250 -2700 10575 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + 3825 2700 6075 2700 6075 4500 3825 4500 3825 2700 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + 3600 2475 6300 2475 6300 4725 3600 4725 3600 2475 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 3735 4500 2250 4500 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6165 4500 7515 4500 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2520 3825 2520 4500 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 4950 6300 4500 6300 4500 5400 4725 5400 4725 2250 5175 2250 + 5175 5400 5400 5400 5400 6300 4950 6300 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 4725 5625 5175 5625 5175 6075 4725 6075 4725 5625 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 4275 5175 5625 5175 5625 6525 4275 6525 4275 5175 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + -2475 5850 8550 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 4590 5625 3150 5625 2925 5400 2250 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 4410 5400 3150 5400 2880 4950 2250 4950 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 5265 5625 6750 5625 6975 5400 7515 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2520 5850 2520 5355 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2520 5355 2520 4950 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7380 5850 7380 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2520 4500 2520 4950 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 2025 1350 8100 1350 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6120 2700 8325 2700 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7875 4500 8325 4500 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 8055 5850 8055 7650 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8055 4500 8055 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8055 2700 8055 4500 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8055 1350 8055 2700 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10305 2250 10305 +2 2 0 4 3 3 50 -1 -1 10.000 0 0 -1 0 0 5 + -1395 5400 900 5400 900 6300 -1395 6300 -1395 5400 +2 2 0 1 3 3 50 -1 20 4.000 0 0 -1 0 0 5 + -495 5580 45 5580 45 6120 -495 6120 -495 5580 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 990 5400 1665 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + -585 5580 -1575 5580 -1800 5400 -2250 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + -1485 5400 -1575 5400 -1800 4950 -2250 4950 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1530 3600 1530 4050 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1530 4050 1530 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1530 5400 1530 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1980 3600 -1980 2250 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 1530 3600 1530 2250 +2 2 0 4 1 7 55 -1 -1 10.000 0 0 -1 0 0 5 + -675 2925 225 2925 225 6525 -675 6525 -675 2925 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8145 2250 8145 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + -2475 3600 1800 3600 +2 2 0 4 3 3 50 -1 -1 10.000 0 0 -1 0 0 5 + -1350 3150 945 3150 945 4050 -1350 4050 -1350 3150 +2 2 0 1 3 3 50 -1 20 4.000 0 0 -1 0 0 5 + -495 3330 45 3330 45 3870 -495 3870 -495 3330 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 1035 4050 1665 4050 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + -585 3870 -1575 3870 -1800 4050 -2250 4050 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + -1395 4050 -1575 4050 -1800 4500 -2250 4500 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1980 5400 -1980 5850 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1980 4950 -1980 5400 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1980 4500 -1980 4950 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1980 4050 -1980 4500 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1980 3600 -1980 4050 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7380 4500 7380 3825 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7380 4500 7380 5400 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 10485 d\001 +4 1 0 40 -1 14 22 0.0000 4 225 3990 -270 11025 self.hTrackDistance\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10485 T\001 +4 0 0 40 -1 12 12 0.0000 4 120 2400 -1575 10485 self.contactGateSide\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 10215 m\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 9675 o\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 9945 n\001 +4 0 0 40 -1 12 12 0.0000 4 165 2760 -1575 10215 self.polyContactOverlap\001 +4 0 0 40 -1 12 12 0.0000 4 165 2640 -1575 9945 self.gateActiveSpacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 3000 -1575 9675 self.contactActiveSpacing\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10215 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9945 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9675 T\001 +4 1 0 40 -1 12 12 1.5708 4 120 360 7965 2025 htd\001 +4 1 0 40 -1 12 12 0.0000 4 120 360 -2475 9450 htd\001 +4 1 0 40 -1 12 12 0.0000 4 105 120 -2475 9135 W\001 +4 0 0 40 -1 12 12 0.0000 4 150 2040 -1575 9450 max( htd1, htd2 )\001 +4 0 0 40 -1 16 12 0.0000 4 195 2775 -1575 9180 Transistor channel width (finger)\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 9180 U\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 8865 p\001 +4 1 0 40 -1 12 12 0.0000 4 120 120 -2475 8595 q\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 8055 s\001 +4 1 0 40 -1 12 12 0.0000 4 75 120 -2475 8325 r\001 +4 0 0 40 -1 12 12 0.0000 4 120 1920 -1575 8865 self.metal2Width\001 +4 0 0 40 -1 12 12 0.0000 4 165 2160 -1575 8595 self.metal2Spacing\001 +4 0 0 40 -1 12 12 0.0000 4 165 2640 -1575 8055 self.metal2Via1Overlap\001 +4 0 0 40 -1 12 12 0.0000 4 120 1560 -1575 8325 self.via1Side\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8865 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8595 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8325 T\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 8055 T\001 +4 1 0 40 -1 12 12 1.5708 4 150 360 -2070 5625 r/2\001 +4 1 0 40 -1 12 12 1.5708 4 75 120 -2070 5175 s\001 +4 1 0 40 -1 12 12 1.5708 4 120 120 -2070 4770 q\001 +4 1 0 40 -1 12 12 1.5708 4 75 120 -2070 4275 s\001 +4 1 0 40 -1 12 12 1.5708 4 150 360 -2070 3825 r/2\001 +4 1 0 40 -1 12 12 1.5708 4 180 360 1440 3825 p/2\001 +4 1 0 40 -1 12 12 1.5708 4 120 120 1440 4725 q\001 +4 1 0 40 -1 12 12 1.5708 4 180 360 1440 5625 p/2\001 +4 1 0 40 -1 12 12 1.5708 4 150 360 2430 5625 d/2\001 +4 1 0 40 -1 12 12 1.5708 4 75 120 2430 5175 m\001 +4 1 0 40 -1 12 12 1.5708 4 75 120 2430 4725 n\001 +4 2 0 40 -1 14 12 1.5708 4 120 480 2430 3825 htd1\001 +4 2 0 40 -1 14 12 1.5708 4 165 720 1440 2250 pitch2\001 +4 2 0 40 -1 14 12 1.5708 4 165 720 -2070 2250 pitch1\001 +4 2 0 40 -1 14 12 1.5708 4 120 480 7290 3825 htd2\001 +4 1 0 40 -1 12 12 1.5708 4 75 120 7290 4950 o\001 +4 1 0 40 -1 12 12 1.5708 4 150 360 7290 5625 d/2\001 +4 1 0 40 -1 12 12 1.5708 4 120 360 7965 5220 htd\001 +4 1 0 40 -1 14 12 1.5708 4 120 120 7965 3600 W\001 +4 0 0 40 -1 14 12 1.5708 4 165 1440 7965 7650 activeHeight\001 diff --git a/oroshi/doc/images/htrack-distance-1.pdf b/oroshi/doc/images/htrack-distance-1.pdf new file mode 100644 index 00000000..be033cf2 Binary files /dev/null and b/oroshi/doc/images/htrack-distance-1.pdf differ diff --git a/oroshi/doc/images/htrack-distance-1.png b/oroshi/doc/images/htrack-distance-1.png new file mode 100644 index 00000000..a3eb30e6 Binary files /dev/null and b/oroshi/doc/images/htrack-distance-1.png differ diff --git a/oroshi/doc/images/stack-layout-1.fig b/oroshi/doc/images/stack-layout-1.fig new file mode 100644 index 00000000..4812e0b8 --- /dev/null +++ b/oroshi/doc/images/stack-layout-1.fig @@ -0,0 +1,263 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 11025 -450 11925 2520 +2 1 0 1 12 7 40 -1 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 11025 2475 11250 2475 +2 1 0 1 12 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 11205 2475 11475 2475 +2 1 0 1 12 7 40 -1 -1 4.000 0 0 -1 1 0 3 + 0 0 1.00 60.00 120.00 + 11925 -450 11925 2475 11430 2475 +4 1 12 40 -1 12 12 1.5708 4 165 2520 11835 900 nImplantActiveOverlap\001 +-6 +6 5310 1620 6435 3240 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 5355 1665 5580 1665 5580 1890 5355 1890 5355 1665 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 6165 1665 6390 1665 6390 1890 6165 1890 6165 1665 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 5355 2340 5580 2340 5580 2565 5355 2565 5355 2340 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 6165 2340 6390 2340 6390 2565 6165 2565 6165 2340 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 6165 2970 6390 2970 6390 3195 6165 3195 6165 2970 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 5355 2970 5580 2970 5580 3195 5355 3195 5355 2970 +-6 +6 9315 1665 10440 3285 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 9360 1710 9585 1710 9585 1935 9360 1935 9360 1710 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 10170 1710 10395 1710 10395 1935 10170 1935 10170 1710 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 9360 2385 9585 2385 9585 2610 9360 2610 9360 2385 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 10170 2385 10395 2385 10395 2610 10170 2610 10170 2385 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 10170 3015 10395 3015 10395 3240 10170 3240 10170 3015 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 9360 3015 9585 3015 9585 3240 9360 3240 9360 3015 +-6 +6 1215 1620 2340 3240 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 1260 1665 1485 1665 1485 1890 1260 1890 1260 1665 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 2070 1665 2295 1665 2295 1890 2070 1890 2070 1665 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 1260 2340 1485 2340 1485 2565 1260 2565 1260 2340 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 2070 2340 2295 2340 2295 2565 2070 2565 2070 2340 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 2070 2970 2295 2970 2295 3195 2070 3195 2070 2970 +2 2 0 4 1 7 50 -1 -1 10.000 0 0 -1 0 0 5 + 1260 2970 1485 2970 1485 3195 1260 3195 1260 2970 +-6 +6 -450 1845 -225 2025 +2 2 0 1 1 7 40 -1 -1 4.000 0 0 -1 0 0 5 + -450 2025 -450 1845 -225 1845 -225 2025 -450 2025 +4 1 1 40 -1 12 12 1.5708 4 120 120 -270 1935 2\001 +-6 +6 1665 0 1845 225 +2 2 0 1 1 7 40 -1 -1 4.000 0 0 -1 0 0 5 + 1665 0 1845 0 1845 225 1665 225 1665 0 +4 1 1 40 -1 12 12 0.0000 4 120 120 1755 180 1\001 +-6 +6 3240 5400 3735 5895 +2 2 0 4 1 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 3375 5535 3600 5535 3600 5760 3375 5760 3375 5535 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 3285 5445 3690 5445 3690 5850 3285 5850 3285 5445 +-6 +6 3915 5400 4410 5895 +2 2 0 4 1 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 4050 5535 4275 5535 4275 5760 4050 5760 4050 5535 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 3960 5445 4365 5445 4365 5850 3960 5850 3960 5445 +-6 +6 7290 5400 7785 5895 +2 2 0 4 1 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 7425 5535 7650 5535 7650 5760 7425 5760 7425 5535 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 7335 5445 7740 5445 7740 5850 7335 5850 7335 5445 +-6 +6 7965 5400 8460 5895 +2 2 0 4 1 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 8100 5535 8325 5535 8325 5760 8100 5760 8100 5535 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 8010 5445 8415 5445 8415 5850 8010 5850 8010 5445 +-6 +6 3735 6390 3915 6615 +2 2 0 1 4 7 40 -1 -1 4.000 0 0 -1 0 0 5 + 3735 6390 3915 6390 3915 6615 3735 6615 3735 6390 +4 1 4 40 -1 12 12 0.0000 4 120 120 3825 6570 3\001 +-6 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + 450 1350 11250 1350 11250 3600 450 3600 450 1350 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + 225 1125 11475 1125 11475 3825 225 3825 225 1125 +2 1 3 1 4 7 45 -1 -1 16.000 0 0 -1 0 0 2 + 3825 2475 3825 -675 +2 1 3 1 4 7 45 -1 -1 16.000 0 0 -1 0 0 2 + 7875 2475 7875 -675 +2 1 0 1 12 7 45 -1 -1 4.000 0 0 -1 0 0 2 + 450 1260 450 -675 +2 1 0 1 12 7 45 -1 -1 4.000 0 0 -1 0 0 2 + 11250 1260 11250 -675 +2 1 0 1 4 7 45 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 450 -585 3825 -585 +2 1 0 1 4 7 45 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3825 -585 7875 -585 +2 1 0 1 4 7 45 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 7875 -585 11250 -585 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 3150 810 3150 225 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 4500 855 4500 225 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3150 315 4500 315 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 360 1350 -675 1350 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 405 3600 -675 3600 +2 1 0 1 12 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1350 -585 450 -585 +2 1 0 1 12 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -585 3600 -585 7425 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -585 1350 -585 3600 +2 1 3 1 1 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 1350 3330 1350 225 +2 1 3 1 1 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 2160 3330 2160 225 +2 1 3 1 1 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 1260 1665 -225 1665 +2 1 3 1 1 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 1260 1890 1080 1890 720 2250 -225 2250 +2 1 0 1 1 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1350 315 2160 315 +2 1 0 1 1 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -135 1665 -135 2205 +2 2 0 2 3 7 49 -1 -1 0.000 0 0 -1 0 0 5 + 450 5175 11475 5175 11475 6075 450 6075 450 5175 +2 1 3 1 3 7 40 -1 -1 16.000 0 0 -1 0 0 2 + -225 5625 1800 5625 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -135 4050 -135 5625 +2 2 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 5 + 3150 900 4500 900 4500 6300 3150 6300 3150 900 +2 2 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 5 + 7200 900 8550 900 8550 6300 7200 6300 7200 900 +2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4950 675 6750 675 6750 8100 4950 8100 4950 675 +2 1 0 1 12 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1350 -675 -1350 7605 +2 1 0 4 12 7 40 -1 -1 10.000 0 0 -1 0 0 2 + -1350 7200 -1350 7650 +2 1 0 4 12 7 40 -1 -1 0.000 0 0 -1 0 0 2 + -1575 7425 -1125 7425 +2 1 3 1 3 7 41 -1 -1 16.000 0 0 -1 0 0 2 + -1305 7425 4500 7425 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -135 5625 -135 7425 +2 2 0 0 3 3 41 -1 32 2.000 0 0 -1 0 0 5 + -225 3600 0 3600 0 4050 -225 4050 -225 3600 +2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 900 675 2700 675 2700 8100 900 8100 900 675 +2 2 0 1 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 9000 675 10800 675 10800 8100 9000 8100 9000 675 +2 1 3 1 4 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 3465 5310 3465 6750 +2 1 3 1 4 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 4185 5310 4185 6750 +2 1 0 1 4 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 3465 6660 4185 6660 +2 2 0 1 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2250 -1125 12375 -1125 12375 9675 -2250 9675 -2250 -1125 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 1125 7200 1575 7200 1575 7650 1125 7650 1125 7200 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 2025 7200 2475 7200 2475 7650 2025 7650 2025 7200 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 5175 7200 5625 7200 5625 7650 5175 7650 5175 7200 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 6075 7200 6525 7200 6525 7650 6075 7650 6075 7200 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 9225 7200 9675 7200 9675 7650 9225 7650 9225 7200 +2 2 0 4 3 7 49 -1 -1 10.000 0 0 -1 0 0 5 + 10125 7200 10575 7200 10575 7650 10125 7650 10125 7200 +2 2 0 1 1 7 49 -1 -1 4.000 0 0 -1 0 0 5 + 3195 5040 4455 5040 4455 6210 3195 6210 3195 5040 +2 2 0 1 1 7 49 -1 -1 4.000 0 0 -1 0 0 5 + 7245 5040 8505 5040 8505 6210 7245 6210 7245 5040 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 11520 5175 11925 5175 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 11520 6075 11925 6075 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 11835 5175 11835 6075 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 11835 6300 11835 6030 +2 1 0 1 3 7 40 -1 -1 4.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 11835 3600 11835 5175 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2250 8955 4725 8955 4725 9675 -2250 9675 -2250 8955 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2340 9180 4725 9180 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2340 9405 4725 9405 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 2340 8955 2340 9675 +2 2 0 2 3 7 49 -1 -1 0.000 0 0 -1 0 0 5 + 450 6975 11475 6975 11475 7875 450 7875 450 6975 +4 1 4 45 -1 12 12 0.0000 4 120 1800 2025 -675 sideActiveWidth\001 +4 1 4 45 -1 12 12 0.0000 4 165 1080 5850 -675 gatePitch\001 +4 1 4 45 -1 12 12 0.0000 4 120 1800 9675 -675 sideActiveWidth\001 +4 1 4 40 -1 14 14 0.0000 4 105 150 3600 225 w\001 +4 1 12 40 -1 12 12 0.0000 4 120 1560 -450 -675 activeOffsetX\001 +4 1 4 40 -1 14 14 1.5708 4 135 150 -675 2475 L\001 +4 1 3 40 -1 12 12 1.5708 4 120 1200 -225 4815 hTrackDist\001 +4 1 12 40 -1 12 12 1.5708 4 120 1560 -675 5535 activeOffsetY\001 +4 1 3 40 -1 12 12 1.5708 4 120 1320 -225 6525 metal2Pitch\001 +4 2 12 40 -1 14 14 0.0000 4 195 750 -1395 7650 (0,0)\001 +4 1 3 40 -1 12 12 1.5708 4 120 1200 11745 4365 wire2Width\001 +4 0 0 40 -1 12 12 0.0000 4 165 1560 2700 9585 gateVia1Pitch\001 +4 1 0 40 -1 12 12 0.0000 4 165 1920 3645 9360 contactNimpPitch\001 +4 1 0 40 -1 12 12 0.0000 4 165 1800 3600 9135 contactNimpSide\001 +4 1 1 40 -1 12 12 0.0000 4 120 120 2520 9135 1\001 +4 1 1 40 -1 12 12 0.0000 4 120 120 2520 9360 2\001 +4 1 4 40 -1 12 12 0.0000 4 120 120 2520 9585 3\001 +4 1 0 40 -1 14 22 0.0000 4 300 2940 45 9450 Stack Layout 1\001 diff --git a/oroshi/doc/images/stack-layout-1.pdf b/oroshi/doc/images/stack-layout-1.pdf new file mode 100644 index 00000000..14527b55 Binary files /dev/null and b/oroshi/doc/images/stack-layout-1.pdf differ diff --git a/oroshi/doc/images/stack-layout-1.png b/oroshi/doc/images/stack-layout-1.png new file mode 100644 index 00000000..3b8b5587 Binary files /dev/null and b/oroshi/doc/images/stack-layout-1.png differ diff --git a/oroshi/doc/images/stack-layout-2.fig b/oroshi/doc/images/stack-layout-2.fig new file mode 100644 index 00000000..58e5e225 --- /dev/null +++ b/oroshi/doc/images/stack-layout-2.fig @@ -0,0 +1,175 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + -1350 7650 -1350 8100 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + 0 7650 0 8100 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + 1350 7650 1350 8100 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + 2700 7650 2700 8100 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + 4050 7650 4050 8100 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + 5400 7650 5400 8100 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + -1800 6975 -2250 6975 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + -1800 4275 -2250 4275 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + -1800 2925 -2250 2925 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + -1800 1575 -2250 1575 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + 6750 7650 6750 8100 +2 2 0 4 3 7 49 -1 -1 0.000 0 0 -1 0 0 5 + -1350 6750 6750 6750 6750 7200 -1350 7200 -1350 6750 +2 2 0 4 3 7 49 -1 -1 0.000 0 0 -1 0 0 5 + -1350 5400 6750 5400 6750 5850 -1350 5850 -1350 5400 +2 1 0 1 0 7 40 -1 -1 0.000 0 0 -1 0 0 2 + 5850 2430 5850 900 +2 1 0 1 0 7 40 -1 -1 0.000 0 0 -1 0 0 2 + -450 2430 -450 945 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + -450 2475 5850 2475 5850 4725 -450 4725 -450 2475 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + -270 2700 5580 2700 5580 4500 -270 4500 -270 2700 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4725 2250 5175 2250 5175 7425 4725 7425 4725 2250 +2 2 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 5 + 3600 2250 4050 2250 4050 6075 3600 6075 3600 2250 +2 2 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 5 + 1350 2250 1800 2250 1800 6075 1350 6075 1350 2250 +2 1 0 1 0 7 40 -1 20 0.000 0 0 -1 0 0 2 + 5940 2250 6300 2250 +2 1 0 1 0 7 40 -1 20 0.000 0 0 -1 0 0 2 + 5940 4950 6300 4950 +2 1 0 1 0 7 40 -1 20 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6165 2250 6165 4950 +2 1 0 2 0 7 40 -1 20 0.000 0 0 -1 1 1 2 + 14 1 2.00 120.00 60.00 + 14 1 2.00 120.00 60.00 + 6165 4950 6165 5625 +2 1 0 2 0 7 40 -1 20 0.000 0 0 -1 1 1 2 + 14 1 2.00 120.00 60.00 + 14 1 2.00 120.00 60.00 + 6165 2250 6165 1575 +2 1 0 1 0 7 40 -1 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -450 990 5850 990 +2 1 0 2 0 7 40 -1 20 0.000 0 0 -1 1 1 2 + 14 1 2.00 120.00 60.00 + 14 1 2.00 120.00 60.00 + -1350 990 -450 990 +2 1 0 2 0 7 40 -1 20 0.000 0 0 -1 1 1 2 + 14 1 2.00 120.00 60.00 + 14 1 2.00 120.00 60.00 + 5850 990 6750 990 +2 1 0 1 0 7 40 -1 20 0.000 0 0 -1 0 0 2 + -1350 1485 -1350 945 +2 1 0 1 0 7 40 -1 20 0.000 0 0 -1 0 0 2 + 6750 1530 6750 900 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 0 0 2 + -225 4590 -225 7650 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 0 0 2 + -360 4500 -1800 4500 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1350 7560 -225 7560 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1485 4500 -1485 6975 +2 1 0 1 3 7 39 -1 -1 3.000 0 0 -1 0 0 2 + -1800 5625 -2250 5625 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7650 6300 6840 5625 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7650 6300 6885 6975 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7650 900 6840 1575 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 0 0 2 + 7650 6300 9315 6300 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 0 0 2 + 7650 900 9360 900 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 0 0 2 + -1350 450 -1350 990 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 0 0 2 + 6750 450 6750 990 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1350 585 6795 585 +2 1 0 1 0 7 40 -1 20 3.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6615 5625 6615 1575 +2 2 0 1 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 0 9675 0 9675 9675 -2700 9675 -2700 0 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 8955 1800 8955 1800 9675 -2700 9675 -2700 8955 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 360 2970 540 2970 540 3150 360 3150 360 2970 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 360 3870 540 3870 540 4050 360 4050 360 3870 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 4860 3015 5040 3015 5040 3195 4860 3195 4860 3015 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 4860 3870 5040 3870 5040 4050 4860 4050 4860 3870 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 270 6795 630 6795 630 7155 270 7155 270 6795 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 225 2250 675 2250 675 7425 225 7425 225 2250 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 4770 6795 5130 6795 5130 7155 4770 7155 4770 6795 +2 2 0 4 3 7 49 -1 -1 0.000 0 0 -1 0 0 5 + -1350 1350 6750 1350 6750 1800 -1350 1800 -1350 1350 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2475 1125 2925 1125 2925 4950 2475 4950 2475 1125 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2610 3915 2790 3915 2790 4095 2610 4095 2610 3915 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 2610 3015 2790 3015 2790 3195 2610 3195 2610 3015 +2 2 1 1 25 7 39 -1 -1 9.000 0 0 -1 0 0 5 + -1350 1575 6750 1575 6750 6975 -1350 6975 -1350 1575 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 2520 1395 2880 1395 2880 1755 2520 1755 2520 1395 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 1395 5445 1755 5445 1755 5805 1395 5805 1395 5445 +2 2 0 4 3 3 40 -1 20 7.500 0 0 -1 0 0 5 + 3645 5445 4005 5445 4005 5805 3645 5805 3645 5445 +4 1 3 39 -1 18 14 0.0000 4 165 135 -1170 8055 0\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 270 8100 1\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 1530 8100 2\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 2880 8100 3\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 4185 8100 4\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 5535 8055 5\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 -2160 1440 4\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 -2160 2835 3\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 -2160 4185 2\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 -2160 6885 0\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 -2160 5535 1\001 +4 1 3 39 -1 18 14 0.0000 4 165 135 6885 8055 7\001 +4 1 0 40 -1 12 12 1.5708 4 165 1800 6075 3600 diffusionHeight\001 +4 1 0 40 -1 12 12 0.0000 4 120 1680 2610 900 diffusionWidth\001 +4 1 0 40 -1 12 12 1.5708 4 120 840 -1575 5805 offsetY\001 +4 1 0 40 -1 12 12 0.0000 4 120 840 -765 7515 offsetX\001 +4 0 0 40 -1 14 12 0.0000 4 165 1560 7740 855 topTracksNb:1\001 +4 0 0 40 -1 14 12 0.0000 4 120 1560 7740 6255 botTracksNb:2\001 +4 1 0 40 -1 12 12 1.5708 4 165 1200 6525 3555 ypitches:3\001 +4 1 0 40 -1 12 12 0.0000 4 165 1200 2610 495 xpitches:6\001 +4 1 0 40 -1 14 22 0.0000 4 300 2940 -450 9450 Stack Layout 2\001 diff --git a/oroshi/doc/images/stack-layout-2.pdf b/oroshi/doc/images/stack-layout-2.pdf new file mode 100644 index 00000000..bbce18be Binary files /dev/null and b/oroshi/doc/images/stack-layout-2.pdf differ diff --git a/oroshi/doc/images/stack-layout-2.png b/oroshi/doc/images/stack-layout-2.png new file mode 100644 index 00000000..f20fe6f2 Binary files /dev/null and b/oroshi/doc/images/stack-layout-2.png differ diff --git a/oroshi/doc/images/stack-layout-3.fig b/oroshi/doc/images/stack-layout-3.fig new file mode 100644 index 00000000..4e7349fa --- /dev/null +++ b/oroshi/doc/images/stack-layout-3.fig @@ -0,0 +1,279 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 1350 675 2250 5175 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 1800 5175 1350 5175 1350 4275 1575 4275 1575 675 2025 675 + 2025 4275 2250 4275 2250 5175 1800 5175 +2 2 0 4 1 1 40 -1 20 0.000 0 0 -1 0 0 5 + 1665 4590 1890 4590 1890 4815 1665 4815 1665 4590 +2 2 0 4 3 3 41 -1 20 0.000 0 0 -1 0 0 5 + 1575 4500 1980 4500 1980 4905 1575 4905 1575 4500 +-6 +6 4050 675 4950 5175 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 4500 5175 4050 5175 4050 4275 4275 4275 4275 675 4725 675 + 4725 4275 4950 4275 4950 5175 4500 5175 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 4365 4590 4590 4590 4590 4815 4365 4815 4365 4590 +2 2 0 4 3 3 41 -1 20 0.000 0 0 -1 0 0 5 + 4275 4500 4680 4500 4680 4905 4275 4905 4275 4500 +-6 +2 1 0 1 0 7 40 -1 -1 0.000 0 0 -1 0 0 2 + -2700 10035 1800 10035 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9765 1800 9765 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9495 1800 9495 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8955 1800 8955 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2250 8145 -2250 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1800 8145 -1800 10575 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 -4275 9675 -4275 9675 11250 -2700 11250 -2700 -4275 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 4725 -1800 4725 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 6075 -1800 6075 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 3375 -1800 3375 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 2025 -1800 2025 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 675 -1800 675 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 -675 -1800 -675 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -2250 -2025 -1800 -2025 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -1575 6750 -1575 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + -225 6750 -225 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + 1125 6750 1125 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + 2475 6750 2475 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + 3825 6750 3825 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + 5175 6750 5175 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + 6525 6750 6525 7200 +2 1 0 2 0 7 41 -1 -1 6.000 0 0 -1 0 0 2 + 7875 6750 7875 7200 +2 2 0 4 3 7 41 -1 -1 10.000 0 0 -1 0 0 5 + -1575 5760 7875 5760 7875 6390 -1575 6390 -1575 5760 +2 2 0 4 3 7 41 -1 -1 10.000 0 0 -1 0 0 5 + -1575 4410 7875 4410 7875 5040 -1575 5040 -1575 4410 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 1800 -2475 1800 6300 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 4500 -2475 4500 6300 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + -270 1125 6525 1125 6525 2925 -270 2925 -270 1125 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + -450 900 6750 900 6750 3150 -450 3150 -450 900 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 315 1440 540 1440 540 1665 315 1665 315 1440 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 315 2385 540 2385 540 2610 315 2610 315 2385 +2 2 0 4 3 3 41 -1 20 0.000 0 0 -1 0 0 5 + 225 5850 630 5850 630 6255 225 6255 225 5850 +2 2 0 4 3 3 41 -1 20 0.000 0 0 -1 0 0 5 + 5625 5850 6030 5850 6030 6255 5625 6255 5625 5850 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 5715 1440 5940 1440 5940 1665 5715 1665 5715 1440 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 5715 2340 5940 2340 5940 2565 5715 2565 5715 2340 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 3015 1440 3240 1440 3240 1665 3015 1665 3015 1440 +2 2 0 4 1 1 40 -1 20 7.500 0 0 -1 0 0 5 + 3015 2340 3240 2340 3240 2565 3015 2565 3015 2340 +2 2 0 4 3 3 41 -1 20 0.000 0 0 -1 0 0 5 + 2925 -900 3330 -900 3330 -495 2925 -495 2925 -900 +2 2 1 2 18 7 40 -1 -1 6.000 0 0 -1 0 0 5 + -1575 -2025 7875 -2025 7875 6075 -1575 6075 -1575 -2025 +2 2 0 4 3 7 41 -1 -1 10.000 0 0 -1 0 0 5 + -1575 -990 7875 -990 7875 -360 -1575 -360 -1575 -990 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 6750 4725 9000 4725 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 6750 -675 9000 -675 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6570 1125 8325 1125 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6570 2925 8325 2925 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 6795 3150 7200 3150 7425 3600 8325 3600 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 6795 900 7200 900 7425 450 8325 450 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8775 -675 8775 4725 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8190 -225 8190 450 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8190 450 8190 1125 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8190 1125 8190 2925 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8190 2925 8190 3600 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6750 -225 8280 -225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6750 4275 8325 4275 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 8190 3600 8190 4275 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 14 1 1.00 60.00 60.00 + 14 1 1.00 60.00 60.00 + 8190 -270 8190 -630 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 14 1 1.00 60.00 60.00 + 14 1 1.00 60.00 60.00 + 8190 4320 8190 4680 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 135 1260 765 1260 765 6525 135 6525 135 1260 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2835 -1125 3465 -1125 3465 4050 2835 4050 2835 -1125 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5535 1260 6120 1260 6120 6525 5535 6525 5535 1260 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -450 855 -450 -2475 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + -225 1035 -225 450 225 225 225 -2475 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 6750 855 6750 -2475 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 4 + 6525 1080 6525 450 6075 225 6075 -2475 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -450 -2295 225 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 180 -2295 1800 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 1800 -2295 4500 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 4500 -2295 6075 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 6075 -2295 6705 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 14 1 1.00 60.00 60.00 + 14 1 1.00 60.00 60.00 + -1530 -2295 -495 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 14 1 1.00 60.00 60.00 + 14 1 1.00 60.00 60.00 + 6795 -2295 7830 -2295 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -1575 -3375 -1575 -2070 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7875 -2925 7875 -2070 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1575 -2745 7875 -2745 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 225 -3375 225 -2925 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + -1575 -3195 225 -3195 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 7965 6075 9450 6075 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 9000 2925 9450 2925 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 9225 2925 9225 6075 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 10575 1800 10575 1800 11250 -2700 11250 -2700 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8685 1800 8685 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 8415 1800 8415 +2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 4 + -2700 10575 -2700 8145 1800 8145 1800 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 9225 1800 9225 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -2700 10305 1800 10305 +4 1 0 40 -1 12 12 0.0000 4 105 120 -2475 10485 t\001 +4 1 0 40 -1 12 12 0.0000 4 120 240 -2475 9675 gp\001 +4 1 0 40 -1 12 12 0.0000 4 120 240 -2475 9405 xp\001 +4 1 0 40 -1 12 12 0.0000 4 75 240 -2475 9135 xo\001 +4 1 0 40 -1 12 12 0.0000 4 120 240 -2475 8595 yp\001 +4 1 0 40 -1 12 12 0.0000 4 120 240 -2475 8325 yo\001 +4 0 0 40 -1 12 12 0.0000 4 165 1680 -1575 9675 self.gatePitch\001 +4 0 0 40 -1 12 12 0.0000 4 165 1560 -1575 9405 self.xpitches\001 +4 0 0 40 -1 12 12 0.0000 4 120 2160 -1575 9135 self.activeOffsetX\001 +4 0 0 40 -1 12 12 0.0000 4 165 3120 -1575 10485 self.nImplantActiveOverlap\001 +4 0 0 40 -1 12 12 0.0000 4 120 2400 -1575 9945 self.activeSideWidth\001 +4 0 0 40 -1 12 12 0.0000 4 120 2280 -1575 8865 self.hTrackDistance\001 +4 0 0 40 -1 12 12 0.0000 4 165 1560 -1575 8595 self.ypitches\001 +4 0 0 40 -1 12 12 0.0000 4 120 2160 -1575 8325 self.offsetActiveY\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10485 T\001 +4 0 0 40 -1 14 18 0.0000 4 195 180 -2250 -720 5\001 +4 0 0 40 -1 14 18 0.0000 4 195 180 -2250 630 4\001 +4 0 0 40 -1 14 18 0.0000 4 195 180 -2250 1980 3\001 +4 0 0 40 -1 14 18 0.0000 4 195 180 -2250 3330 2\001 +4 0 0 40 -1 14 18 0.0000 4 195 180 -2250 4680 1\001 +4 0 0 40 -1 14 18 0.0000 4 195 180 -2250 6030 0\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 -2250 -2070 6\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 6570 7200 6\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 7920 7200 7\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 5220 7200 5\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 3870 7200 4\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 2520 7200 3\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 1170 7200 2\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 -180 7200 1\001 +4 0 0 41 -1 14 18 0.0000 4 195 180 -1530 7200 0\001 +4 1 0 40 -1 14 12 1.5708 4 135 240 8685 2025 yp\001 +4 1 0 40 -1 14 12 1.5708 4 120 120 8100 2025 W\001 +4 1 0 40 -1 12 12 1.5708 4 105 120 8100 855 t\001 +4 1 0 40 -1 14 12 1.5708 4 120 360 8100 135 htd\001 +4 1 0 40 -1 12 12 1.5708 4 105 120 8100 3285 t\001 +4 1 0 40 -1 14 12 1.5708 4 120 360 8100 3960 htd\001 +4 1 0 40 -1 14 12 0.0000 4 90 360 900 -2385 asw\001 +4 1 0 40 -1 12 12 0.0000 4 105 120 -135 -2385 t\001 +4 1 0 40 -1 14 12 0.0000 4 135 240 3150 -2385 gp\001 +4 1 0 40 -1 14 12 0.0000 4 135 240 3150 -2835 xp\001 +4 1 0 40 -1 14 12 0.0000 4 90 360 5265 -2385 asw\001 +4 1 0 40 -1 12 12 0.0000 4 105 120 6390 -2385 t\001 +4 1 0 40 -1 14 12 0.0000 4 90 240 -675 -3285 xo\001 +4 1 0 40 -1 14 12 1.5708 4 135 240 9090 4545 yo\001 +4 1 0 40 -1 14 22 0.0000 4 300 3360 -450 11025 self.boundingBox\001 +4 1 0 40 -1 12 12 0.0000 4 75 360 -2475 9945 asw\001 +4 1 0 40 -1 12 12 0.0000 4 120 360 -2475 8865 htd\001 +4 1 0 40 -1 12 12 0.0000 4 105 120 -2475 10215 W\001 +4 1 0 40 -1 14 12 0.0000 4 120 120 -2025 10215 U\001 +4 0 0 40 -1 16 12 0.0000 4 150 2115 -1575 10215 Transistor channel width\001 diff --git a/oroshi/doc/images/stack-layout-3.pdf b/oroshi/doc/images/stack-layout-3.pdf new file mode 100644 index 00000000..a5d5e326 Binary files /dev/null and b/oroshi/doc/images/stack-layout-3.pdf differ diff --git a/oroshi/doc/images/stack-layout-3.png b/oroshi/doc/images/stack-layout-3.png new file mode 100644 index 00000000..8300b649 Binary files /dev/null and b/oroshi/doc/images/stack-layout-3.png differ diff --git a/oroshi/doc/images/wiring-spec-1.fig b/oroshi/doc/images/wiring-spec-1.fig new file mode 100644 index 00000000..d9f0d29f --- /dev/null +++ b/oroshi/doc/images/wiring-spec-1.fig @@ -0,0 +1,37 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +2 2 0 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 5 + -1575 9090 225 9090 225 9585 -1575 9585 -1575 9090 +2 1 0 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2 + -1125 9090 -1125 9585 +2 1 0 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2 + -675 9090 -675 9585 +2 1 0 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2 + -225 9090 -225 9585 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + 0 9585 0 10125 450 10125 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + -450 9585 -450 10575 450 10575 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + -900 9585 -900 11025 450 11025 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + -1350 9585 -1350 11475 450 11475 +4 1 0 40 -1 14 24 0.0000 4 240 240 -1350 9450 G\001 +4 1 0 40 -1 14 24 0.0000 4 60 240 -900 9450 .\001 +4 1 0 40 -1 14 24 0.0000 4 255 240 0 9450 1\001 +4 1 0 40 -1 14 24 0.0000 4 240 240 -450 9450 t\001 +4 0 0 40 -1 16 16 0.0000 4 180 1125 675 11520 net name\001 +4 0 0 40 -1 16 16 0.0000 4 255 1995 675 11070 separator (a dot)\001 +4 0 0 40 -1 12 16 0.0000 4 210 1485 675 10620 t, b or z\001 +4 0 0 40 -1 16 16 0.0000 4 195 1575 675 10170 track number\001 diff --git a/oroshi/doc/images/wiring-spec-1.pdf b/oroshi/doc/images/wiring-spec-1.pdf new file mode 100644 index 00000000..6b84bfc7 Binary files /dev/null and b/oroshi/doc/images/wiring-spec-1.pdf differ diff --git a/oroshi/doc/images/wiring-spec-1.png b/oroshi/doc/images/wiring-spec-1.png new file mode 100644 index 00000000..20b4892e Binary files /dev/null and b/oroshi/doc/images/wiring-spec-1.png differ diff --git a/oroshi/doc/images/wiring-spec-2.fig b/oroshi/doc/images/wiring-spec-2.fig new file mode 100644 index 00000000..dcf168b6 --- /dev/null +++ b/oroshi/doc/images/wiring-spec-2.fig @@ -0,0 +1,172 @@ +#FIG 3.2 Produced by xfig version 3.2.5c +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 -2745 8055 1845 8820 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 8100 1800 8100 1800 8775 -2700 8775 -2700 8100 +4 1 0 40 -1 14 22 0.0000 4 300 2100 -450 8550 wiringSpec\001 +-6 +2 2 0 0 12 12 65 -1 35 0.000 0 0 -1 0 0 5 + -450 900 6075 900 6075 3150 -450 3150 -450 900 +2 2 0 1 12 7 60 -1 44 0.000 0 0 -1 0 0 5 + -270 1125 5895 1125 5895 2970 -270 2970 -270 1125 +2 2 0 4 3 7 41 -1 -1 10.000 0 0 -1 0 0 5 + -900 -225 6525 -225 6525 225 -900 225 -900 -225 +2 2 0 4 3 7 41 -1 -1 10.000 0 0 -1 0 0 5 + -900 -1350 6525 -1350 6525 -900 -900 -900 -900 -1350 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1350 -135 1575 -135 1575 2835 1350 2835 1350 -135 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4050 -135 4275 -135 4275 2835 4050 2835 4050 -135 +2 2 0 4 3 7 41 -1 -1 0.000 0 0 -1 0 0 5 + -900 4950 6525 4950 6525 5400 -900 5400 -900 4950 +2 2 0 4 3 7 41 -1 -1 10.000 0 0 -1 0 0 5 + -900 3825 6525 3825 6525 4275 -900 4275 -900 3825 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 855 5490 450 5490 450 4815 675 4815 675 675 900 675 + 900 4815 1125 4815 1125 5490 855 5490 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 2295 4365 1800 4365 1800 3690 2025 3690 2025 675 2250 675 + 2250 3690 2475 3690 2475 4365 2295 4365 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 3645 4365 3150 4365 3150 3690 3375 3690 3375 675 3600 675 + 3600 3690 3825 3690 3825 4365 3645 4365 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 0 1260 225 1260 225 5310 0 5310 0 1260 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5400 1260 5625 1260 5625 5310 5400 5310 5400 1260 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 0 5085 225 5085 225 5310 0 5310 0 5085 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 5400 5085 5625 5085 5625 5310 5400 5310 5400 5085 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 4725 5085 4950 5085 4950 5310 4725 5310 4725 5085 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 675 5085 900 5085 900 5310 675 5310 675 5085 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 2025 3915 2250 3915 2250 4140 2025 4140 2025 3915 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 3375 3915 3600 3915 3600 4140 3375 4140 3375 3915 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 1350 -135 1575 -135 1575 90 1350 90 1350 -135 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 4050 -135 4275 -135 4275 90 4050 90 4050 -135 +2 2 0 1 3 3 41 -1 20 4.000 0 0 -1 0 0 5 + 2700 -1260 2925 -1260 2925 -1035 2700 -1035 2700 -1260 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 0 1260 225 1260 225 1485 0 1485 0 1260 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 1350 2610 1575 2610 1575 2835 1350 2835 1350 2610 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 2700 2610 2925 2610 2925 2835 2700 2835 2700 2610 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 4050 2610 4275 2610 4275 2835 4050 2835 4050 2610 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 5400 1260 5625 1260 5625 1485 5400 1485 5400 1260 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 0 2565 225 2565 225 2790 0 2790 0 2565 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 1350 1260 1575 1260 1575 1485 1350 1485 1350 1260 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 4050 1260 4275 1260 4275 1485 4050 1485 4050 1260 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 5400 2610 5625 2610 5625 2835 5400 2835 5400 2610 +2 2 0 4 1 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2700 -1260 2925 -1260 2925 2835 2700 2835 2700 -1260 +2 2 0 1 1 1 50 -1 20 4.000 0 0 -1 0 0 5 + 2700 1260 2925 1260 2925 1485 2700 1485 2700 1260 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 5850 4050 7650 4050 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 5850 5175 7650 5175 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 5625 -1125 7425 -1125 +2 1 0 3 0 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 7425 4050 7875 4050 +2 1 0 3 0 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 7425 5175 7875 5175 +2 1 0 3 0 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 7200 0 7650 0 +2 1 0 3 0 7 40 -1 -1 8.000 0 0 -1 0 0 2 + 7200 -1125 7650 -1125 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 5625 0 7425 0 +2 2 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 5 + 8100 3825 8550 3825 8550 4275 8100 4275 8100 3825 +2 2 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 5 + 8100 4950 8550 4950 8550 5400 8100 5400 8100 4950 +2 2 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 5 + 7875 -225 8325 -225 8325 225 7875 225 7875 -225 +2 2 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 5 + 7875 -1350 8325 -1350 8325 -900 7875 -900 7875 -1350 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 135 5490 135 6750 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 1440 2925 1440 6750 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 2115 4410 2115 6750 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 2835 2925 2835 6750 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 3510 4500 3510 6750 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 4140 2925 4140 6795 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 5490 5490 5490 6750 +2 1 0 1 4 4 50 -1 35 0.000 0 0 -1 0 0 10 + 4995 5490 4500 5490 4500 4815 4725 4815 4725 675 4950 675 + 4950 4815 5175 4815 5175 5490 4995 5490 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 765 5625 765 6750 +2 1 3 1 0 7 40 -1 -1 16.000 0 0 -1 0 0 2 + 4815 5625 4815 6750 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + -225 7065 -225 7650 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 1125 7065 1125 7650 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 4500 7065 4500 7650 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 0 0 2 + 5850 7065 5850 7650 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 + -225 7200 1125 7200 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 + 1125 7200 4500 7200 +2 1 0 1 0 7 40 -1 -1 4.000 0 0 -1 1 1 2 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 + 4500 7200 5850 7200 +2 2 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 5 + -2700 -2025 9675 -2025 9675 8775 -2700 8775 -2700 -2025 +4 0 0 40 -1 14 18 0.0000 4 195 360 7200 -1215 t1\001 +4 0 0 40 -1 14 18 0.0000 4 195 360 7200 -90 t0\001 +4 0 0 40 -1 14 18 0.0000 4 195 360 7425 5085 b1\001 +4 0 0 40 -1 14 18 0.0000 4 195 360 7425 3960 b0\001 +4 1 0 40 -1 14 24 0.0000 4 240 240 8325 5310 B\001 +4 1 0 40 -1 14 24 0.0000 4 240 240 8100 135 D\001 +4 1 0 40 -1 14 24 0.0000 4 240 240 8100 -990 S\001 +4 1 0 40 -1 14 24 0.0000 4 240 240 8325 4185 G\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 135 6975 B.b1\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 765 6975 G.b1\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 2115 6975 G.b0\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 2835 6975 S.t1\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 3510 6975 G.b0\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 4140 6975 D.t0\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 4815 6975 B.b1\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 5490 6975 B.b1\001 +4 1 0 40 -1 14 12 0.0000 4 120 480 1440 6975 D.t0\001 +4 0 0 40 -1 14 12 0.0000 4 165 1680 -1845 6975 wiringSpec = "\001 +4 0 0 40 -1 14 12 0.0000 4 60 120 5760 6930 "\001 +4 1 0 40 -1 16 12 0.0000 4 195 975 450 7470 left dummy\001 +4 1 0 40 -1 16 12 0.0000 4 195 1080 5175 7425 right dummy\001 +4 1 0 40 -1 16 12 0.0000 4 195 2235 2835 7425 MetaTransistor (2 fingers)\001 diff --git a/oroshi/doc/images/wiring-spec-2.pdf b/oroshi/doc/images/wiring-spec-2.pdf new file mode 100644 index 00000000..0d7f5157 Binary files /dev/null and b/oroshi/doc/images/wiring-spec-2.pdf differ diff --git a/oroshi/doc/images/wiring-spec-2.png b/oroshi/doc/images/wiring-spec-2.png new file mode 100644 index 00000000..94b1ada6 Binary files /dev/null and b/oroshi/doc/images/wiring-spec-2.png differ diff --git a/oroshi/doc/open.png b/oroshi/doc/open.png new file mode 100644 index 00000000..7e740cc4 Binary files /dev/null and b/oroshi/doc/open.png differ diff --git a/oroshi/doc/tabs.css b/oroshi/doc/tabs.css new file mode 100644 index 00000000..e081c18f --- /dev/null +++ b/oroshi/doc/tabs.css @@ -0,0 +1,558 @@ + +.sm +{ + position:relative; + z-index:9999 +} +.sm,.sm ul,.sm li +{ + display:block; + list-style:none; + margin:0; + padding:2pt 7pt; + line-height:normal; + direction:ltr; + text-align:left; + -webkit-tap-highlight-color:rgba(0,0,0,0) +} +.sm-rtl,.sm-rtl ul,.sm-rtl li +{ + direction:rtl; + text-align:right +} +.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6 +{ + margin:0; + padding:0 +} +.sm ul +{ + display:none +} + +.sm li,.sm a +{ + position:relative +} +.sm a +{ + display:block +} +.sm a.disabled +{ + cursor:not-allowed +} +.sm:after +{ + content:"\00a0"; + display:block; + height:0; + font:0/0 serif; + clear:both; + visibility:hidden; + overflow:hidden +} +.sm,.sm *,.sm *:before,.sm *:after +{ + -moz-box-sizing:border-box; + -webkit-box-sizing:border-box; + box-sizing:border-box +} +#doc-content +{ + overflow:auto; + display:block; + padding:0; + margin:0; + -webkit-overflow-scrolling:touch +} +/* +.sm-dox +{ + background-image:url("tab_b.png") +} +*/ +/* +.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active +{ + padding:0 12px; + padding-right:43px; + font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif; + font-size:13px; + font-weight:bold; + line-height:36px; + text-decoration:none; + text-shadow:0 1px 1px rgba(255,255,255,0.9); + color:#283a5d; + outline:0 +} +*/ +/* +.sm-dox a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ +.sm-dox a.current +{ + color:#d23600 +} +.sm-dox a.disabled +{ + color:#bbb +} +.sm-dox a span.sub-arrow +{ + position:absolute; + top:50%; + margin-top:-14px; + left:auto; + right:3px; + width:28px; + height:28px; + overflow:hidden; + font:bold 12px/28px monospace!important; + text-align:center; + text-shadow:none; + background:rgba(255,255,255,0.5); + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px +} +.sm-dox a.highlighted span.sub-arrow:before +{ + display:block; + content:'-' +} +/* +.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a +{ + -moz-border-radius:5px 5px 0 0; + -webkit-border-radius:5px; + border-radius:5px 5px 0 0 +} +.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul +{ + -moz-border-radius:0 0 5px 5px; + -webkit-border-radius:0; + border-radius:0 0 5px 5px +} +.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted +{ + -moz-border-radius:0; + -webkit-border-radius:0; + border-radius:0 +} +*/ +/* +.sm-dox ul +{ + background:rgba(162,162,162,0.1) +} +*/ +/* +.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active +{ + font-size:12px; + border-left:8px solid transparent; + line-height:36px; + text-shadow:none; + background-color:white; + background-image:none +} +*/ +/* +.sm-dox ul a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ + + +.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active +{ + border-left:16px solid transparent +} +.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active +{ + border-left:24px solid transparent +} +.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active +{ + border-left:32px solid transparent +} +.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active +{ + border-left:40px solid transparent +} + +.sm-dox ul +{ + position:absolute; + width:12em +} +/* +.sm-dox li +{ + float:left +} +.sm-dox.sm-rtl li +{ + float:right +} +.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li +{ + float:none +} +*/ +.sm-dox a +{ + white-space:nowrap +} +.sm-dox ul a,.sm-dox.sm-vertical a +{ + white-space:normal +} +.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a +{ + white-space:nowrap +} + +/* +.sm-dox +{ + padding:0 10px; + background-image:url("tab_b.png"); + line-height:36px +} +*/ + +.sm-dox a span.sub-arrow +{ + top:50%; + margin-top:-2px; + right:12px; + width:0; + height:0; + border-width:4px; + border-style:solid dashed dashed dashed; + border-color:#283a5d transparent transparent transparent; + background:transparent; + -moz-border-radius:0; + -webkit-border-radius:0; + border-radius:0 +} +/* +.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted +{ + padding:0 12px; + background-image:url("tab_s.png"); + background-repeat:no-repeat; + background-position:right; + -moz-border-radius:0!important; + -webkit-border-radius:0; + border-radius:0!important +} +.sm-dox a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ +.sm-dox a:hover span.sub-arrow +{ + border-color:white transparent transparent transparent +} +.sm-dox a.has-submenu +{ + padding-right:24px +} +.sm-dox li +{ + border-top:0 +} +.sm-dox>li>ul:before,.sm-dox>li>ul:after +{ + content:''; + position:absolute; + top:-18px; + left:30px; + width:0; + height:0; + overflow:hidden; + border-width:9px; + border-style:dashed dashed solid dashed; + border-color:transparent transparent #bbb transparent +} +.sm-dox>li>ul:after +{ + top:-16px; + left:31px; + border-width:8px; + border-color:transparent transparent #fff transparent +} +.sm-dox ul +{ + border:1px solid #bbb; + padding:5px 0; + background:#fff; +/* + -moz-border-radius:5px!important; + -webkit-border-radius:5px; + border-radius:5px!important; +*/ + -moz-box-shadow:0 5px 9px rgba(0,0,0,0.2); + -webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2); + box-shadow:0 5px 9px rgba(0,0,0,0.2) +} +.sm-dox ul a span.sub-arrow +{ + right:8px; + top:50%; + margin-top:-5px; + border-width:5px; + border-color:transparent transparent transparent #555; + border-style:dashed dashed dashed solid +} +.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted +{ + color:#555; + background-image:none; + border:0!important; + color:#555; + background-image:none +} +/* +.sm-dox ul a:hover +{ + background-image:url("tab_a.png"); + background-repeat:repeat-x; + color:white; + text-shadow:0 1px 1px black +} +*/ +.sm-dox ul a:hover span.sub-arrow +{ + border-color:transparent transparent transparent white +} +.sm-dox span.scroll-up,.sm-dox span.scroll-down +{ + position:absolute; + display:none; + visibility:hidden; + overflow:hidden; + background:#fff; + height:36px +} +.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover +{ + background:#eee +} +.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow +{ + border-color:transparent transparent #d23600 transparent +} +.sm-dox span.scroll-down:hover span.scroll-down-arrow +{ + border-color:#d23600 transparent transparent transparent +} +.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow +{ + position:absolute; + top:0; + left:50%; + margin-left:-6px; + width:0; + height:0; + overflow:hidden; + border-width:6px; + border-style:dashed dashed solid dashed; + border-color:transparent transparent #555 transparent +} +.sm-dox span.scroll-down-arrow +{ + top:8px; + border-style:solid dashed dashed dashed; + border-color:#555 transparent transparent transparent +} +.sm-dox.sm-rtl a.has-submenu +{ + padding-right:12px; + padding-left:24px +} +.sm-dox.sm-rtl a span.sub-arrow +{ + right:auto; + left:12px +} +.sm-dox.sm-rtl.sm-vertical a.has-submenu +{ + padding:10px 20px +} +.sm-dox.sm-rtl.sm-vertical a span.sub-arrow +{ + right:auto; + left:8px; + border-style:dashed solid dashed dashed; + border-color:transparent #555 transparent transparent +} +.sm-dox.sm-rtl>li>ul:before +{ + left:auto; + right:30px +} +.sm-dox.sm-rtl>li>ul:after +{ + left:auto; + right:31px +} +.sm-dox.sm-rtl ul a.has-submenu +{ + padding:10px 20px!important +} +.sm-dox.sm-rtl ul a span.sub-arrow +{ + right:auto; + left:8px; + border-style:dashed solid dashed dashed; + border-color:transparent #555 transparent transparent +} +.sm-dox.sm-vertical +{ + padding:10px 0; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px +} +.sm-dox.sm-vertical a +{ + padding:10px 20px +} +.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted +{ + background:#fff +} +.sm-dox.sm-vertical a.disabled +{ + background-image:url("tab_b.png") +} +.sm-dox.sm-vertical a span.sub-arrow +{ + right:8px; + top:50%; + margin-top:-5px; + border-width:5px; + border-style:dashed dashed dashed solid; + border-color:transparent transparent transparent #555 +} +.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after +{ + display:none +} +.sm-dox.sm-vertical ul a +{ + padding:10px 20px +} +.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted +{ + background:#eee +} +.sm-dox.sm-vertical ul a.disabled +{ + background:#fff +} + +/* SoC Customisation. */ + +div#main-nav { + margin: 0pt; + border: 0pt; + padding: 0pt; +} + +div ul#main-menu { + margin: 0pt; + border: 0pt; + padding: 0pt; +} + +/* +.sm ul { + visibility: hidden; + overflow: hidden; + height: 0; + width: 0; +} +*/ + +.sm li { + list-style: none; +} + +ul#main-menu { + display: table; + width: 100%; +} + +ul#main-menu > li { + display: table-cell; + text-align: center; +/*width: 20%;*/ + border-top: 1px solid black; + border-bottom: 1px solid black; + border-left: none; + border-right: 1px solid black; + padding: 2pt; + font-size: 90%; +} + +ul#main-menu > li:first-child { + border-left: 1px solid black; +} + +ul#main-menu > li > a { + border-bottom: none; +} + +ul#main-menu > li:hover, ul#main-menu > li:hover > a, ul#main-menu > li > a:hover { + background-color: black; + color: white; +} + +/* +.sm li { + margin: 0pt; + list-style: none; + font-size: 90%; + border-top: 1px solid black; + border-bottom: 1px solid black; + border-left: none; + border-right: 1px solid black; + display: table-cell; + text-align: center; + padding: 2pt; + width: 5%; +} +.sm li:first-child { + border-left: 1px solid black; +} +.sm li a { + border-style: none; + border-bottom: none; +} + +.sm li:hover, .sm li:hover a, .sm li a:hover { + background-color: black; + color: white; +} +*/ + + diff --git a/oroshi/python/CMakeLists.txt b/oroshi/python/CMakeLists.txt new file mode 100644 index 00000000..25b34a60 --- /dev/null +++ b/oroshi/python/CMakeLists.txt @@ -0,0 +1,26 @@ +# -*- explicit-buffer-name: "CMakeLists.txt" -*- + + set( pythonFiles __init__.py + Rules.py + Stack.py + ParamsMatrix.py + WIP_Transistor.py + WIP_DP.py + WIP_CSP.py + ) + + install( FILES ${pythonFiles} DESTINATION ${PYTHON_SITE_PACKAGES}/oroshi ) + + +#if(BUILD_DOC) +# find_package(Doxygen) + +# if(DOXYGEN_FOUND) +# add_custom_target( doc ALL cd ${PHAROS_SOURCE_DIR}/python && ${DOXYGEN_EXECUTABLE} doxyfile ) +# install( DIRECTORY html/ DESTINATION share/doc/coriolis2/en/html/oroshi ) +# install( FILES images-sizes.css DESTINATION share/doc/coriolis2/en/html/oroshi ) +# install( DIRECTORY latex/ DESTINATION share/doc/coriolis2/en/latex/oroshi ) +# else() +# message( STATUS "doxygen not found, documentation not generated." ) +# endif() +#endif() diff --git a/oroshi/python/ParamsMatrix.py b/oroshi/python/ParamsMatrix.py new file mode 100644 index 00000000..d4392559 --- /dev/null +++ b/oroshi/python/ParamsMatrix.py @@ -0,0 +1,238 @@ +# -*- coding: utf-8 -*- + +from Hurricane import DataBase +from Hurricane import DbU +from Hurricane import Box +from Hurricane import Net +from helpers import ErrorMessage as Error +from helpers import trace + + +# Rows are stacks. +# Columns are metaTransistors. +# +# There must be the exact same number of metaTransistors in each stack. +# Storage is matrix[row][col] ie matrix[stack][metaTransistor] + +NoFlags = 0x0000 +Top = 0x0001 +Left = 0x0002 + +class ParamsMatrix ( object ): + + @staticmethod + def gateToId ( gateName ): + if len(gateName) == 1: return None + return int( gateName[1:] ) + + @staticmethod + def idToGate ( index ): + if index is None: return 'G' + return 'G'+str(index) + + @staticmethod + def idToTran ( index ): + if index is None: return 'T' + return 'T'+str(index) + + + def __init__ ( self ): + self.matrix = [ [ {} ] ] + self.rows = 1 + self.columns = 1 + return + + + def getMatrix ( self ): return self.matrix + + + def setGlobalParams ( self, w, L, M, boundingBox ): + self.matrix[0][0]['L' ] = L + self.matrix[0][0]['W' ] = w + self.matrix[0][0]['M' ] = M + self.matrix[0][0]['box' ] = boundingBox + self.matrix[0][0]['globalActiveBox' ] = Box() + return + + + def setStacks ( self, stacks ): + if not isinstance(stacks,list): + print Error( 3, 'ParamsMatrix::setGlobalParams(): argument must be of type.' ) + return + + if not len(stacks): + print Error( 3, 'ParamsMatrix::setGlobalParams(): There must be at least one Stack.' ) + return + + mtIds = [] + if len(stacks[0].metaTransistors) == 0: + print Error( 3, 'ParamsMatrix::setGlobalParams(): Stack without any meta-transistor.' ) + return + else: + for gateName in stacks[0].metaTransistors.keys(): + mtIds.append( ParamsMatrix.gateToId(gateName) ) + mtIds.sort() + + for i in range(1,len(stacks)): + if len(stacks[0].metaTransistors) != len(stacks[i].metaTransistors): + print Error( 3, 'ParamsMatrix::setGlobalParams(): Stacks %d and %d' \ + ' have different numbers of meta-transistor.' % (0,i) ) + return + + for id in mtIds: + gateName = ParamsMatrix.idToGate( id ) + if not stacks[i].metaTransistors.has_key(gateName): + print Error( 3, 'ParamsMatrix::setGlobalParams(): Stack %d ' \ + ' is missing meta-transistor "%s".' % (i,gateName) ) + return + + # Thoses parameters must be the same in all the stacks. + self.matrix[0][0]['DMCG'] = stacks[0].DMCG + self.matrix[0][0]['DMCI'] = stacks[0].DMCI + self.matrix[0][0]['DGG' ] = stacks[0].DGG + self.matrix[0][0]['DGI' ] = stacks[0].DGI + + for iStack in range(len(stacks)): + activeBox = stacks[iStack].activeBox + stackMTs = [ { 'activeBox':activeBox } ] + self.matrix[0][0]['globalActiveBox'].merge( activeBox ) + + for iMT in range(len(mtIds)): + gateName = ParamsMatrix.idToGate( mtIds[iMT] ) + tranName = ParamsMatrix.idToTran( mtIds[iMT] ) + mt = stacks[iStack].metaTransistors[ gateName ] + + stackMTs.append( { 'name':tranName } ) + for key, value in mt.items(): + stackMTs[-1][ key.split('.')[-1] ] = value + + if iStack == 0: + self.matrix[0].append( { 'name':tranName } ) + for key in stackMTs[-1].keys(): + if key == 'name' or key == 'style.geomod': continue + if key.startswith('stress.'): + self.matrix[0][-1][key] = stackMTs[-1][key] / len(stacks) + else: + self.matrix[0][-1][key] = stackMTs[-1][key] + else: + for key in stackMTs[-1].keys(): + if key == 'name' or key == 'style.geomod': continue + if key.startswith('stress.'): + self.matrix[0][-1][key] += stackMTs[-1][key] / len(stacks) + else: + self.matrix[0][-1][key] += stackMTs[-1][key] + + self.matrix.append( stackMTs ) + + return + + + def stackHeader ( self, lines, iStack ): + for i in range(28): + if i in [1, 2, 3, 4]: + if i == 1: + lines.append( '+-----------------------+' ) + self.toBoxDatasheet( lines, self.matrix[iStack][0]['activeBox'], 'Active Box', Left ) + continue + + if i == 0: lines.append( '|{0:^23s}'.format( 'Stack %d'%iStack ) ) + elif i == 27: lines.append( '+-----------------------' ) + else: lines.append( '| ' ) + + if i in [1, 14, 21, 27]: lines[-1] += '+' + else: lines[-1] += '|' + return + + + def toMtDatasheet ( self, lines, mt, comment, flags ): + if flags & Top: lines[-29] += '-----------------------+' + + lines[-28] += '{0:^23s}|'.format( mt['name']+comment ) + lines[-27] += '-----------------------+' + lines[-26] += ' BSIM4 |' + lines[-25] += ' NSint %7s |' % mt['NSint'] + lines[-24] += ' NDint %7s |' % mt['NDint'] + lines[-23] += ' NSend %7s |' % mt['NSend'] + lines[-22] += ' NDend %7s |' % mt['NDend'] + lines[-21] += ' SAeff %7.2g m |' % mt['SAeff_Bsim4'] + lines[-20] += ' SBeff %7.2g m |' % mt['SBeff_Bsim4'] + lines[-19] += ' SAinv %7.2g 1/m |' % mt['SBinv_Bsim4'] + lines[-18] += ' SBinv %7.2g 1/m |' % mt['SBinv_Bsim4'] + lines[-17] += ' alpha %7.2g m |' % mt['alpha' ] + lines[-16] += ' alphaInv %7.2g 1/m |' % mt['alphaInv' ] + lines[-15] += ' LODeffect %7.2g 1/m |' % mt['alphaInv' ] + lines[-14] += '-----------------------+' + lines[-13] += ' Crolles |' + lines[-12] += ' SAeff %7.2g m |' % mt['SAeff_Crolles'] + lines[-11] += ' SBeff %7.2g m |' % mt['SBeff_Crolles'] + lines[-10] += ' SAinv %7.2g 1/m |' % mt['SBinv_Crolles'] + lines[- 9] += ' SBinv %7.2g 1/m |' % mt['SBinv_Crolles'] + lines[- 8] += ' po2actEff %7.2g m |' % mt['po2actEff_Crolles'] + lines[- 7] += '-----------------------+' + lines[- 6] += ' Layout Parasitics |' + lines[- 5] += ' ASeff %11.2g m2 |' % mt['ASeff'] + lines[- 4] += ' PSeff %11.2g m |' % mt['PSeff'] + lines[- 3] += ' ADeff %11.2g m2 |' % mt['ADeff'] + lines[- 2] += ' PDeff %11.2g m |' % mt['PDeff'] + lines[- 1] += '-----------------------+' + return + + + def toBoxDatasheet ( self, lines, box, comment, flags ): + if flags & Left: + for i in range(3): lines.append( '|' ) + + lines[-3] += '{0:^23s}|'.format( comment ) + lines[-2] += ' bl %8s %8s |' % (DbU.getValueString(box.getXMin()), DbU.getValueString(box.getYMin())) + lines[-1] += ' tr %8s %8s |' % (DbU.getValueString(box.getXMax()), DbU.getValueString(box.getYMax())) + return + + + def toDatasheet ( self ): + lines = [] + # Matrix element [0,0] + lines.append( '+-----------------------+' ) + lines.append( '| Device Datas |' ) + lines.append( '+-----------------------+' ) + lines.append( '| L %14.2g m |' % self.matrix[0][0]['L'] ) + lines.append( '| wF %14.2g m |' % self.matrix[0][0]['W'] ) + lines.append( '| M %14.2g |' % self.matrix[0][0]['M'] ) + lines.append( '| DMCG %14.2g m |' % self.matrix[0][0]['DMCG'] ) + lines.append( '| DMCI %14.2g m |' % self.matrix[0][0]['DMCI'] ) + lines.append( '| DGG %14.2g m |' % self.matrix[0][0]['DGG'] ) + lines.append( '| DGI %14.2g m |' % self.matrix[0][0]['DGI'] ) + lines.append( '+-----------------------+' ) + self.toBoxDatasheet( lines, self.matrix[0][0]['box'], 'Bounding Box', Left ) + lines.append( '+-----------------------+' ) + self.toBoxDatasheet( lines, self.matrix[0][0]['globalActiveBox'], 'Active Box', Left ) + lines[-3] = lines[-3][0:-1] + '+' + for i in range(len(lines),28): + lines.append( '| ' ) + if i in [0, 2, 15, 22, 28]: lines[-1] += '+' + else: lines[-1] += '|' + lines.append( '+-----------------------+' ) + + # Row 0: Meta-Transistors aggregated parameters. + mts = self.matrix[0] + for iMT in range(1,len(mts)): + self.toMtDatasheet( lines, mts[iMT], ' (meta)', Top ) + + # Rows 1+: One stack and its's meta-transistors. + for iStack in range(1,len(self.matrix)): + self.stackHeader( lines, iStack ) + for iMT in range(1,len(self.matrix[iStack])): + self.toMtDatasheet( lines, self.matrix[iStack][iMT], '', NoFlags ) + + return lines + + + def __str__ ( self ): + s = '' + for line in self.toDatasheet(): s += line + '\n' + return s + + + def trace( self ): + for line in self.toDatasheet(): + trace( 100, '\t%s\n' % line ) + return diff --git a/oroshi/python/Rules.py b/oroshi/python/Rules.py new file mode 100644 index 00000000..5af2ff1b --- /dev/null +++ b/oroshi/python/Rules.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- + +from helpers import trace + + +class Rules ( object ): + + ruleSet = [ 'minEnclosure_nImplant_active' + , 'minEnclosure_pImplant_active' + , 'minSpacing_nImplant_pImplant' + , 'minSpacing_cut0' + , 'minWidth_cut0' + , 'minWidth_active' + , 'minEnclosure_active_cut0' + , 'transistorMinL' + , 'transistorMinW' + , 'minGateSpacing_poly' + , 'minSpacing_poly_active' + , 'minExtension_active_poly' + , 'minExtension_poly_active' + , 'minEnclosure_poly_cut0' + , 'minSpacing_cut0_poly' + , 'minWidth_cut0' + , 'minSpacing_cut0_active' + , 'minWidth_metal1' + , 'minSpacing_metal1' + , 'minEnclosure_metal1_cut0' + , 'minEnclosure_metal1_cut1' + , 'minWidth_cut1' + , 'minSpacing_cut1' + , 'minWidth_metal2' + , 'minSpacing_metal2' + , 'minEnclosure_metal2_cut1' + , 'minEnclosure_metal2_cut2' + , 'minWidth_cut2' + , 'minSpacing_cut2' + , 'minWidth_cut1' + , 'minSpacing_cut1' + , 'minWidth_metal3' + , 'minSpacing_metal3' + , 'minEnclosure_metal3_cut2' + ] + + def __init__ ( self, dtr ): + trace( 100, '\tRules.__init__()\n' ) + self.dtr = dtr + + for rule in Rules.ruleSet: self.addAttr(rule) + return + + def addAttr ( self, attribute ): + if self.__dict__.has_key(attribute): return + + #print 'Rules.addAttr(): %s' % attribute + value = None + words = attribute.split( '_' ) + if len(words) == 1 and words[0].endswith('Cap'): value = self.dtr.getUnitRule( words[0] ).getValue() + if len(words) < 4: value = self.dtr.getPhysicalRule( *tuple(words) ).getValue() + if not value is None: + self.__dict__[attribute] = value + + return diff --git a/oroshi/python/Stack.py b/oroshi/python/Stack.py new file mode 100644 index 00000000..e2fe7e8a --- /dev/null +++ b/oroshi/python/Stack.py @@ -0,0 +1,1575 @@ +# -*- coding: utf-8 -*- + +import copy +import datetime +from Hurricane import DataBase +from Hurricane import UpdateSession +from Hurricane import DbU +from Hurricane import Box +from Hurricane import Net +from Hurricane import Horizontal +from Hurricane import Vertical +from Hurricane import Contact +from Hurricane import Pad +from Hurricane import NetExternalComponents +from CRL import AllianceFramework +import Constant +import helpers +from helpers import ErrorMessage as Error +from helpers import trace +from Analog import Device +import oroshi + +helpers.staticInitialization( quiet=True ) +#helpers.setTraceLevel( 100 ) + +def traceMT ( mt ): + trace( 100, '+', '\tMeta-Transistor Topological Datas\n' ) + trace( 100, '\t +-------------------------------------------------+\n' ) + trace( 100, '\t | Gate name | %20s |\n' % mt['gate'] ) + trace( 100, '\t +------------+------------------------------------+\n' ) + trace( 100, '\t | NF | %10d |\n' % mt['NF'] ) + trace( 100, '\t | MIN | %10r |\n' % mt['MIN'] ) + trace( 100, '\t +------------+-----------------------+------------+\n' ) + trace( 100, '\t | Style | NSint | %10d |\n' % mt['style.NSint'] ) + trace( 100, '\t | | DSint | %10d |\n' % mt['style.NDint'] ) + trace( 100, '\t | | NSend | %10d |\n' % mt['style.NSend'] ) + trace( 100, '\t | | DSend | %10d |\n' % mt['style.NDend'] ) + trace( 100, '\t +------------+---------+-------------+------------+\n' ) + trace( 100, '\t | Stress | BSIM4 | SAeff | %10.2g |\n' % mt['stress.SAeff_Bsim4' ] ) + trace( 100, '\t | | | SBeff | %10.2g |\n' % mt['stress.SBeff_Bsim4' ] ) + trace( 100, '\t | | | SAinv | %10.2g |\n' % mt['stress.SAinv_Bsim4' ] ) + trace( 100, '\t | | | SBinv | %10.2g |\n' % mt['stress.SBinv_Bsim4' ] ) + trace( 100, '\t | | | SBinv | %10.2g |\n' % mt['stress.SBinv_Bsim4' ] ) + trace( 100, '\t | | | alpha | %10.2g |\n' % mt['stress.alpha' ] ) + trace( 100, '\t | | | alphaInv | %10.2g |\n' % mt['stress.alphaInv' ] ) + trace( 100, '\t | | | LODeffect | %10.2g |\n' % mt['stress.LODeffect' ] ) + trace( 100, '\t | +---------+-------------+------------+\n' ) + trace( 100, '\t | | Crolles | SAeff | %10.2g |\n' % mt['stress.SAeff_Crolles'] ) + trace( 100, '\t | | | SBeff | %10.2g |\n' % mt['stress.SBeff_Crolles'] ) + trace( 100, '\t | | | SAinv | %10.2g |\n' % mt['stress.SAinv_Crolles'] ) + trace( 100, '\t | | | SBinv | %10.2g |\n' % mt['stress.SBinv_Crolles'] ) + trace( 100, '\t | | | po2actEff | %10.2g |\n' % mt['stress.po2actEff_Crolles'] ) + trace( 100, '\t +------------+---------+-------------+------------+\n' ) + trace( 100, '\t | Parasitics | ASeff %10.2g m2 |\n' % mt['parasitics.ASeff'] ) + trace( 100, '\t | | PSeff %10.2g m |\n' % mt['parasitics.PSeff'] ) + trace( 100, '\t | | ADeff %10.2g m2 |\n' % mt['parasitics.ADeff'] ) + trace( 100, '\t | | PDeff %10.2g m |\n' % mt['parasitics.PDeff'] ) + trace( 100, '\t +------------+------------------------------------+\n' ) + trace( 100, '-' ) + return + + +class Wiring ( object ): + + def __init__ ( self, device, wiring ): + chain = wiring.split('.') + net = chain[0] + side = chain[1] + if net == 'B' and device.isBulkConnected(): net = 'S' + + self.net = device.getNet( net ) + self.topTrack = -1 + self.botTrack = -1 + self.wTrack = 1 + if len(chain) >= 3: self.wTrack = int(chain[2]) + length = len(side) + for i in range( 0, length/2, 2 ): + track = -2 + if side[i+1] != 'X': track = int( side[i+1] ) + + if side[i] == 't': self.topTrack = track + if side[i] == 'b': self.botTrack = track + if side[i] == 'z': pass + return + + def isDrain ( self ): return self.net.getName()[0] == 'D' + def isSource ( self ): return self.net.getName()[0] == 'S' + def isGate ( self ): return self.net.getName()[0] == 'G' + def isBulk ( self ): return self.net.getName()[0] == 'B' + + def isTop ( self ): + if self.topTrack != -1: return Stack.NorthBulk + return None + + def isBot ( self ): + if self.botTrack != -1: return Stack.SouthBulk + return None + + def getTop ( self ): return self.topTrack + def getBot ( self ): return self.botTrack + def setTop ( self, track ): self.topTrack = track + def setBot ( self, track ): self.botTrack = track + def getWTrack ( self ): return self.wTrack + + def __str__ ( self ): + s = self.net.getName() + if not self.isTop() and not self.isBot(): s += 'z' + else: + if self.isBot(): + s += '.b%d' % self.botTrack + s += '.%d' % self.wTrack + if self.isTop(): + s += '.t%d' % self.topTrack + s += '.%d' % self.wTrack + return s + + +class Bulk ( object ): + + def __init__ ( self, stack, axis, usource, utarget, flags ): + self.stack = stack + self.axis = axis + self.usource = usource + self.utarget = utarget + self.flags = flags + self.ucontacts = [] + self.ucontactsBulk = [] + return + + + def addContact ( self, upos, enabled=True ): + #if self.ucontacts: + # trace( 100, '\taddContact [ ' ) + # for pos, en in self.ucontacts: trace( 100, "%s+%s " % (DbU.getValueString(pos),en) ) + # trace( 100, '] inserting: %s+%s\n' % (DbU.getValueString(upos),enabled) ) + + if len(self.ucontacts) == 0 or self.ucontacts[-1][0] < upos: + self.ucontacts.append( (upos,enabled) ) + else: + for i in range(len(self.ucontacts)): + if self.ucontacts[i][0] > upos: + self.ucontacts.insert( i, (upos,enabled) ) + return + if self.ucontacts[i][0] == upos: + return + self.ucontacts.append( (upos,enabled) ) + return + + + def _computeContacts ( self, ucontacts, pitch ): + #trace( 100, ',+', '\tBulk._computeContacts() @%s\n' % DbU.getValueString(self.axis) ) + #trace( 100, '\thorPitch: %s\n' % DbU.getValueString(self.stack.horPitch) ) + #trace( 100, '\tbulk pitch: %s\n' % DbU.getValueString(pitch) ) + #trace( 100, '\tusource: %s\n' % DbU.getValueString(self.usource) ) + #trace( 100, '\tutarget: %s\n' % DbU.getValueString(self.utarget) ) + + icontact = 0 + ucontact = self.usource + while ucontact <= self.utarget: + #trace( 100, '\tucontact: %s\n' % DbU.getValueString(ucontact) ) + + if len(ucontacts) == 0: + ucontacts.insert( 0, (ucontact,True) ) + else: + if icontact == 0 and ucontact < ucontacts[0][0]: + if ucontacts[0][0] - ucontact >= pitch: + ucontacts.insert( 0, (ucontact,True) ) + else: + while icontact+1 < len(ucontacts) and ucontacts[icontact+1][0] < ucontact: + if icontact+1 == len(ucontacts): break + icontact += 1 + + if ucontact - ucontacts[icontact][0] >= pitch: + if icontact + 1 >= len(ucontacts) \ + or ucontacts[icontact+1][0] - ucontact >= pitch: + ucontacts.insert( icontact+1, (ucontact,True) ) + icontact += 1 + else: + ucontact = ucontacts[icontact][0] + + ucontact += pitch + + trace( 100, '-' ) + return + + + def computeContacts ( self ): + #self.ucontactsBulk = copy.deepcopy( self.ucontacts ) + + pitch = self.stack.minWidth_metal1 + self.stack.minSpacing_metal1 + pitch = max( pitch, self.stack.minWidth_cut0 + self.stack.minEnclosure_metal1_cut0*2 + self.stack.minSpacing_metal1 ) + + if self.stack.isVH: + self._computeContacts( self.ucontactsBulk, pitch ) + + pitch = max( pitch, self.stack.minWidth_cut1 + self.stack.minEnclosure_metal1_cut1*2 + self.stack.minSpacing_metal1 ) + pitch = max( pitch, self.stack.minWidth_metal2 + self.stack.minSpacing_metal2 ) + pitch = max( pitch, self.stack.minWidth_cut1 + self.stack.minEnclosure_metal2_cut1*2 + self.stack.minSpacing_metal2 ) + pitch = max( pitch, self.stack.minWidth_cut2 + self.stack.minEnclosure_metal2_cut2*2 + self.stack.minSpacing_metal2 ) + if self.stack.isVH: + pitch = max( pitch, self.stack.minWidth_metal3 + self.stack.minSpacing_metal3 ) + pitch = max( pitch, self.stack.minWidth_cut2 + self.stack.minEnclosure_metal3_cut2*2 + self.stack.minSpacing_metal3 ) + + #trace( 100, '\tOriginal ucontacts[]\n' ) + #for ucontact, enabled in self.ucontacts: + # trace( 100, '\tucontact: %s enabled:%d\n' % (DbU.getValueString(ucontact),enabled) ) + #trace( 100, '\n' ) + + self._computeContacts( self.ucontacts, pitch ) + if not self.stack.isVH: + self.ucontactsBulk = self.ucontacts + return + + + def doLayout ( self ): + active = DataBase.getDB().getTechnology().getLayer( 'active' ) + metal1 = DataBase.getDB().getTechnology().getLayer( 'metal1' ) + metal2 = DataBase.getDB().getTechnology().getLayer( 'metal2' ) + metal3 = DataBase.getDB().getTechnology().getLayer( 'metal3' ) + cut0 = DataBase.getDB().getTechnology().getLayer( 'cut0' ) + cut1 = DataBase.getDB().getTechnology().getLayer( 'cut1' ) + cut2 = DataBase.getDB().getTechnology().getLayer( 'cut2' ) + bulkNet = self.stack.bulkNet + + self.computeContacts() + + #trace( 100, '\tBulk.doLayout() @%s\n' % DbU.getValueString(self.axis) ) + + if self.flags & (Stack.NorthBulk | Stack.SouthBulk): + xsource = self.usource + xtarget = self.utarget + if not self.stack.hasWestBulk(): xsource = self.ucontacts[ 0][0] + if not self.stack.hasEastBulk(): xtarget = self.ucontacts[-1][0] + + width = self.stack.minWidth_metal1 + width = max( width, self.stack.minEnclosure_metal1_cut0*2 + self.stack.minWidth_cut0 ) + Horizontal.create( bulkNet + , metal1 + , self.axis + , width + , xsource-self.stack.wire1Width/2 + , xtarget+self.stack.wire1Width/2 ) + width = self.stack.minWidth_cut0 + 2* self.stack.minEnclosure_active_cut0 + Horizontal.create( bulkNet + , active + , self.axis + , width + , self.usource-width/2 + , self.utarget+width/2 ) + width += 2* self.stack.minEnclosure_bImplant_active + Horizontal.create( bulkNet + , self.stack.bImplantLayer + , self.axis + , width + , self.usource-width/2 + , self.utarget+width/2 ) + + for xcontact, enabled in self.ucontactsBulk: + if enabled: + Contact.create( bulkNet + , cut0 + , xcontact + , self.axis + , self.stack.minWidth_cut0 + , self.stack.minWidth_cut0 ) + + cutBb = Box( xcontact, self.axis, xcontact, self.axis ) + + #metal1EnclBb = Box( cutBb ).inflate( self.stack.minEnclosure_metal1_cut0 + self.stack.minWidth_cut0/2 ) + #Pad.create( bulkNet, metal1, metal1EnclBb ) + + for xcontact, enabled in self.ucontacts: + trace( 100, '\tucontact: %s enabled:%d\n' % (DbU.getValueString(xcontact),enabled) ) + + if enabled: + Contact.create( bulkNet + , cut1 + , xcontact + , self.axis + , self.stack.minWidth_cut1 + , self.stack.minWidth_cut1 ) + if self.stack.isVH: + Contact.create( bulkNet + , cut2 + , xcontact + , self.axis + , self.stack.minWidth_cut2 + , self.stack.minWidth_cut2 ) + + cutBb = Box( xcontact, self.axis, xcontact, self.axis ) + + metal1EnclBb = Box( cutBb ).inflate( self.stack.minEnclosure_metal1_cut1 + self.stack.minWidth_cut1/2 ) + Pad.create( bulkNet, metal1, metal1EnclBb ) + + metal2EnclBb = Box( cutBb ).inflate( self.stack.minEnclosure_metal2_cut1 + self.stack.minWidth_cut1/2 ) + if self.stack.isVH: + metal2EnclBb.merge( Box( cutBb ).inflate( self.stack.minEnclosure_metal2_cut2 + self.stack.minWidth_cut2/2 ) ) + + Pad.create( bulkNet, metal2, metal2EnclBb ) + + if self.stack.isVH: + metal3EnclBb = Box( cutBb ).inflate( self.stack.minEnclosure_metal3_cut2 + self.stack.minWidth_cut2/2 ) + Pad.create( bulkNet, metal3, metal3EnclBb ) + + if self.flags & (Stack.EastBulk | Stack.WestBulk): + metal1Width = self.stack.minWidth_metal1 + metal1Width = max( metal1Width, self.stack.minWidth_cut0 + 2*self.stack.minEnclosure_metal1_cut0 ) + metal1Width = max( metal1Width, self.stack.minWidth_cut1 + 2*self.stack.minEnclosure_metal1_cut1 ) + + Vertical.create( bulkNet + , metal1 + , self.axis + , metal1Width + , self.usource-self.stack.wire1Width/2 + , self.utarget+self.stack.wire1Width/2 ) + width = self.stack.minWidth_cut0 + 2*self.stack.minEnclosure_active_cut0 + Vertical.create( bulkNet + , active + , self.axis + , width + , self.usource-width/2 + , self.utarget+width/2 ) + width += 2*self.stack.minEnclosure_bImplant_active + Vertical.create( bulkNet + , self.stack.bImplantLayer + , self.axis + , width + , self.usource-width/2 + , self.utarget+width/2 ) + + for icontact in range(len(self.ucontacts)): + if (icontact == 0 and self.stack.hasSouthBulk()) \ + or (icontact+1 == len(self.ucontacts) and self.stack.hasNorthBulk()): continue + Contact.create( bulkNet + , cut0 + , self.axis + , self.ucontacts[icontact][0] + , self.stack.minWidth_cut0 + , self.stack.minWidth_cut0 ) + return + + +## Draw a Stack of Transistors. +# +# A Stack of Transistors is a set of transistor put into a regular +# band and connected through their sources/drains. All share the +# exact same W & L. The way they are connecteds defines what functionnality +# the Stack implement. +# +# The abutment box of the stack is adjusted so that both height and width +# are even multiples of the track pitches, so the device can be easily +# placed and handled by the mixed router. The extra space needed for +# padding is added around the active area. Due to the presence of tracks +# at the top and bottom of the stack, the active area will be horizontally +# centered but \b not vertically. +# +# The drawing of the stack is controlled through a set of variables +# (attributes) that allows to create it regardless of the technology. +# The technology is taken into account in the way those variables are +# computed and, obviously, their values. The following schematics details +# the main stack drawing variables along with their computations. +# +# \section secStackLayout Stack Layout +# +# \subsection secGatePitch Gate pitch +# +# - \c self.gatePitch : the pitch of transistors gates, inside the stack. +# It also applies to dummy transistors. +# +# \image html gate-pitch-1.png "Gate Pitch" +# \image latex gate-pitch-1.pdf "Gate Pitch" width=.9\linewidth +# +# +# \subsection secActiveSideWidth Active Side Width +# +# - \c self.activeSideWidth : the distance between the axis of the last +# transistor gate (on the left or right) and the edge of the active +# area (\e not the diffusion area). +# +# \image html active-side-width-1.png "Active Side Width" +# \image latex active-side-width-1.pdf "Active Side Width" width=.9\linewidth +# +# +# \subsection secHTrackDistance H-Track Distance +# +# - \c self.hTrackDistance : the minimal distance between either the top or +# bottom edge of the active area and the \e axis of the first track. +# +# \image html htrack-distance-1.png "H-Track distance" +# \image latex htrack-distance-1.pdf "H-Track distance" width=.9\linewidth +# +# +# \subsection secOverallVariables BoundingBox & Overall Variables +# +# - \c self.xpitches : the number of vertical track pitches needed to fully +# enclose the active area. +# - \c self.ypitches : the number of horizontal track pitches needed to fully +# enclose the active area. +# - \c self.activeOffsetX & \c self.activeOffsetY : the offsets of the active area +# from the bottom left corner of the abutment box. +# - \c self.diffusionWidth & \c self.diffusionHeight are the minimun dimensions +# required to fit the active area. +# - \c self.topTracksNb() : the number of tracks at the top of the stack. +# - \c self.botTracksNb() : the number of tracks at the bottom of the stack. +# +# \image html stack-layout-3.png "General Stack Layout" +# \image latex stack-layout-3.pdf "General Stack Layout" width=.9\linewidth +# +# +# \section secWiringSpecs Wiring Specifications +# +# Stack routing is done through vertical \c metal1 wires coming from the +# gates and diffusions areas and \c metal2 horizontal wires that can be +# either above or below the active area. \c metal2 wires (or track) goes +# through the whole stack and are assigned to one net only. A net will +# have at least one track above or below and may have both. +# +# The connections to the diffusions areas and gates of the various +# fingers are specified through a list. The stack is made of a regular +# alternation of diffusions and gates. The list tells, for each one +# starting from the left, to which net and track they are connected. +# For a stack of \f$NFs\f$ transistor fingers, the must wiring specification +# must contains \f$ 3 + (NFs-1) \times 2\f$ elements. The list is given +# through one \e string with each elements separated by one or more +# whitespace. The syntax for \e one element is detailed \ref secAtomicWiring. +# +# Track numbering scheme +# +# Tracks above (top) the active area and below (bottom) each have their +# own numbering. In both case, the count start \e from the active area. +# This, the top tracks will be numbered by increasing Y and the bottom +# tracks by \e decreasing Y. +# +# Track/Net assignement +# +# The track/net assignement is deduced from the atomic wiring specifications. +# It also allows to compute the total number of tracks needed above and +# below the active area. +# +# \image html wiring-spec-2.png "Wiring Specification" +# \image latex wiring-spec-2.pdf "Wiring Specification" width=.9\linewidth +# +# \subsection secAtomicWiring Atomic Wiring Specification +# +# An atomic wiring specification has the same syntax for either diffusions +# or gates. It \e must not comprise any whitespaces. it is made of the +# following parts: +# - The net name to connect to. +# - Whether the track is above the active area (\c "t") or below (\c "b"). +# The special case (\c "z") means that this element must be left +# unconnected (is such case possible?). +# - The number of the track. +# +# \image html wiring-spec-1.png "Atomic Wiring Specification" +# \image latex wiring-spec-1.pdf "Atomic Wiring Specification" width=.4\linewidth +# +# +# \section secStackImplDetails Stack Implementation Details +# +# The \c __setattr__() and \c __getattr__ functions have been redefined +# so that the technological values (rules) can be accessed has normal +# attributes of the Stack class, in addition to the regular ones. + + +class Stack ( object ): + + NorthBulk = 0x0004 + SouthBulk = 0x0008 + EastBulk = 0x0010 + WestBulk = 0x0020 + RingBulk = NorthBulk|SouthBulk|EastBulk|WestBulk + SourceIsolated = 0x0040 + SourceShared = 0x0080 + SourceMerged = 0x0100 + DrainIsolated = 0x0200 + DrainShared = 0x0400 + DrainMerged = 0x0800 + + rules = oroshi.getRules() + + + def __setattr__ ( self, attribute, value ): + if hasattr(Stack.rules,attribute): + print '[ERROR] Stack.%s attribute is read-only (ignored).' % attribute + return + self.__dict__[attribute] = value + return + + + def __getattr__ ( self, attribute ): + if attribute.find('_') != -1: + if attribute in [ 'minEnclosure_nImplant_active' + , 'minEnclosure_pImplant_active' + ]: + raise Error( 3, 'Stack.__getattr__(): Do not access directly rule "%s".' % attribute ) + + if self.isNmos(): + if attribute == 'minEnclosure_tImplant_active': return getattr(Stack.rules,'minEnclosure_nImplant_active') + if attribute == 'minEnclosure_bImplant_active': return getattr(Stack.rules,'minEnclosure_pImplant_active') + else: + if attribute == 'minEnclosure_tImplant_active': return getattr(Stack.rules,'minEnclosure_pImplant_active') + if attribute == 'minEnclosure_bImplant_active': return getattr(Stack.rules,'minEnclosure_nImplant_active') + + return getattr(Stack.rules,attribute) + + if self.__dict__.has_key(attribute): return self.__dict__[attribute] + return None + + + @staticmethod + def _addToTracks ( tracks, trackNb, net ): + if trackNb < len(tracks): + if tracks[trackNb] and tracks[trackNb] != net: + raise Error( 3, 'Stack._addToTracks(): Track %d is already assigned to net "%s" (requested by net "%s")' + % ( trackNb, tracks[trackNb].getName(), net.getName() ) ) + tracks[ trackNb ] = net + else: + for i in range( len(tracks), trackNb ): tracks.append( None ) + tracks.append( net ) + return + + @staticmethod + def _addToWTracks ( tracks, trackNb, net ): + if trackNb < len(tracks): + if tracks[trackNb] and tracks[trackNb] != net: + raise Error( 3, 'Stack._addToTracks(): Track %d is already assigned to net "%s" (requested by net "%s")' + % ( trackNb, tracks[trackNb].getName(), net.getName() ) ) + tracks[ trackNb ] = net + else: + for i in range( len(tracks), trackNb ): tracks.append( 0 ) + tracks.append( net ) + return + + + @staticmethod + def toGeomod ( geoFlags, nf ): + geomod = 0 + + # Check for geomod 9 & 10 first, because they require the additionnal + # condition that "nf" must be even. They lead to simpler equations in + # The BSIM4 model. + #if nf%2 == 0: + + if geoFlags == (Stack.SourceIsolated | Stack.DrainIsolated): geomod = 0 + elif geoFlags == (Stack.SourceIsolated | Stack.DrainShared ): geomod = 1 + elif geoFlags == Stack.SourceIsolated: geomod = 1 + elif geoFlags == (Stack.SourceShared | Stack.DrainIsolated): geomod = 2 + elif geoFlags == Stack.DrainIsolated : geomod = 2 + elif geoFlags == (Stack.SourceShared | Stack.DrainShared ): geomod = 3 + elif geoFlags == Stack.SourceShared: geomod = 3 + elif geoFlags == Stack.DrainShared : geomod = 3 + elif geoFlags == 0: geomod = 3 + elif geoFlags == (Stack.SourceIsolated | Stack.DrainMerged ): geomod = 4 + elif geoFlags == (Stack.SourceShared | Stack.DrainMerged ): geomod = 5 + elif geoFlags == Stack.DrainMerged : geomod = 5 + elif geoFlags == (Stack.SourceMerged | Stack.DrainIsolated): geomod = 6 + elif geoFlags == (Stack.SourceMerged | Stack.DrainShared ): geomod = 7 + elif geoFlags == Stack.SourceMerged: geomod = 7 + elif geoFlags == (Stack.SourceMerged | Stack.DrainMerged ): geomod = 8 + # Modes 9 & 10 are not clear to me, but we shouldn't need it ever. + + if geomod in [0, 4, 6, 8] and nf%2 == 0: + print '[WARNING] Stack.toGeomod(): In geomod %i, NF must be odd (%i)' % (geomod,nf) + + return geomod + + + ## [API] Constructor + # + # param rules The physical rule set. + # \param device The Hurricane AMS device into which the layout will be drawn. + # \param NERC Number of contact rows in external (first & last) diffusion connectors. + # \param NIRC Number of contact rows in middle diffusion connectors. + # param w The \b width of every transistor of the stack (aka \e fingers). + # param L The \b length of every transistor. + # param NFs The total number of fingers (dummies includeds). + # param NDs The number of dummies to put on each side of the stack. + + def __init__ ( self, device, NERC, NIRC ): + self.dimensioned = False + self.device = device + self.w = oroshi.adjustOnGrid(device.getW() / device.getM()) + self.L = oroshi.adjustOnGrid(device.getL()) + self.NDs = device.getExternalDummy() # Number of Dummies at each end of the stack. + self.NFs = device.getM() * self.metaTnb() + self.NDs*2 # Total number of Fingers (including dummies). + self.NERC = NERC + self.NIRC = NIRC + self.wirings = [] + self.topTracks = [] + self.botTracks = [] + self.flags = 0 + self.bulks = [ None, None, None, None ] # 0:North, 1:South, 2:East, 3:West. + self.metaTransistors = {} + + self.topWTracks = [] # widths top tracks + self.botWTracks = [] # widths bot tracks + + if device.isBulkConnected(): self.bulkNet = device.getNet( 'S' ) + else: self.bulkNet = device.getNet( 'B' ) + + bulkType = self.device.getBulkType() + if bulkType & 0x0001: self.flags |= Stack.NorthBulk + if bulkType & 0x0002: self.flags |= Stack.SouthBulk + if bulkType & 0x0004: self.flags |= Stack.EastBulk + if bulkType & 0x0008: self.flags |= Stack.WestBulk + + if self.isNmos(): + self.tImplantLayer = DataBase.getDB().getTechnology().getLayer( 'nImplant' ) + self.bImplantLayer = DataBase.getDB().getTechnology().getLayer( 'pImplant' ) + self.wellLayer = None + else: + self.tImplantLayer = DataBase.getDB().getTechnology().getLayer( 'pImplant' ) + self.bImplantLayer = DataBase.getDB().getTechnology().getLayer( 'nImplant' ) + self.wellLayer = DataBase.getDB().getTechnology().getLayer( 'pWell' ) + + return + + + def metaTnb ( self ): + metaT = 0 + for i in self.device.getInstances(): metaT += 1 + return metaT + + + ## [API] Set the Stack wiring specification. + # + # \param wiringSpec A string defining the connections for the + # gates and diffusion areas. + # + # For a comprehensive explanation of the wiring specification, refers + # to \ref secWiringSpecs . + + def setWirings ( self, wiringSpec ): + + trace( 100, 'SetWirings \n' ) + + restrictions = {} + for net in self.device.getNets(): + if net.getName() == 'anonymous': + restrictions[net] = Device.AllBlocked + else: + restrictions[net] = Device.NorthBlocked|Device.SouthBlocked + + hasTopBulkTrack = False + hasBotBulkTrack = False + specs = wiringSpec.split() + i = 0 + topBulkWiring = None + botBulkWiring = None + + trace( 100, specs ) + + for spec in specs: + wiring = Wiring( self.device, spec ) + self.wirings.append( wiring ) + + if wiring.isTop(): + #restrictions[wiring.net] = restrictions[wiring.net] & ~Device.NorthBlocked + if wiring.net == self.bulkNet: + hasTopBulkTrack = True + topBulkWiring = wiring + continue + Stack._addToTracks ( self.topTracks , wiring.topTrack, wiring.net ) + Stack._addToWTracks( self.topWTracks, wiring.topTrack, wiring.wTrack ) + restrictions[wiring.net] = restrictions[wiring.net] & ~Device.NorthBlocked + + if wiring.isBot(): + #restrictions[wiring.net] = restrictions[wiring.net] & ~Device.SouthBlocked + if wiring.net == self.bulkNet: + hasBotBulkTrack = True + botBulkWiring = wiring + continue + Stack._addToTracks ( self.botTracks , wiring.botTrack, wiring.net ) + Stack._addToWTracks( self.botWTracks, wiring.botTrack, wiring.wTrack ) + restrictions[wiring.net] = restrictions[wiring.net] & ~Device.SouthBlocked + + for net, flags in restrictions.items(): + self.device.setRestrictions( net, flags ) + + if self.flags & Stack.NorthBulk or hasTopBulkTrack: + if not self.topTracks or self.topTracks[-1] != self.bulkNet: + for net in self.topTracks: + if net == self.bulkNet: + raise Error( 3, 'Stack.setWirings(): Bulk track (net:"%s") must be topmost.' \ + % self.bulkNet.getName() ) + index = len(self.topTracks) + Stack._addToTracks( self.topTracks , index, self.bulkNet ) + if (topBulkWiring != None): Stack._addToWTracks( self.topWTracks, index, topBulkWiring.wTrack ) + elif (botBulkWiring != None): Stack._addToWTracks( self.topWTracks, index, botBulkWiring.wTrack ) + else: Stack._addToWTracks( self.topWTracks, index, self.device.getParameter('B.w').getValue() ) + + bulkIndex = len(self.topTracks)-1 + for wiring in self.wirings: + if wiring.net == self.bulkNet: wiring.setTop( bulkIndex ) + + Stack._addToTracks ( self.topTracks , len(self.topTracks) , None ) + Stack._addToWTracks( self.topWTracks, len(self.topWTracks), self.device.getParameter('B.w').getValue() ) + + if self.flags & Stack.SouthBulk or hasBotBulkTrack: + if not self.botTracks or self.botTracks[-1] != self.bulkNet: + for net in self.botTracks: + if net == self.bulkNet: + raise Error( 3, 'Stack.setWirings(): Bulk track (net:"%s") must be bottommost.' \ + % self.bulkNet.getName() ) + index = len(self.botTracks) + Stack._addToTracks( self.botTracks , index, self.bulkNet ) + if (botBulkWiring != None): Stack._addToWTracks( self.botWTracks, index, botBulkWiring.wTrack ) + elif (topBulkWiring != None): Stack._addToWTracks( self.botWTracks, index, topBulkWiring.wTrack ) + else: Stack._addToWTracks( self.botWTracks, index, self.device.getParameter('B.w').getValue() ) + bulkIndex = len(self.botTracks)-1 + for wiring in self.wirings: + if wiring.net == self.bulkNet: wiring.setBot( bulkIndex ) + + Stack._addToTracks ( self.botTracks , len(self.botTracks) , None ) + Stack._addToWTracks( self.botWTracks, len(self.botWTracks), self.device.getParameter('B.w').getValue() ) + + trace( 100, '\tbotTracks:%d topTracks:%d\n' % (len(self.topTracks),len(self.botTracks)) ) + for i in range(len(self.wirings)): + trace( 100, '\t| wirings[%d]: %s\n' % (i,str(self.wirings[i])) ) + if self.wirings[i].net == self.bulkNet: + if hasBotBulkTrack: self.wirings[i].setBot( len(self.botTracks)-2 ) + if hasTopBulkTrack: self.wirings[i].setTop( len(self.topTracks)-2 ) + trace( 100, '\t+ wirings[%d]: %s\n' % (i,str(self.wirings[i])) ) + + for i in range(len(self.wirings)): + gateName = self.wirings[i].net.getName() + if gateName[0] != 'G': continue + + leftMost = False + rightMost = False + if i == 1: leftMost = True + if i == len(self.wirings)-1: rightMost = True + + # MIN means "minimize the number of sources", so according to the + # number of transistor fingers, it is almost equivalent to + # "drain first". + if not self.metaTransistors.has_key(gateName): + MIN = 0 + if self.wirings[i-1].isDrain(): MIN = 1 + + self.metaTransistors[gateName] = { 'gate':self.wirings[i].net, 'MIN':MIN, 'NF':1 + , 'leftMost':leftMost, 'rightMost':rightMost + } + else: + self.metaTransistors[gateName]['NF'] += 1 + self.metaTransistors[gateName]['rightMost'] = rightMost + + # Compute style parameters for use in geomod equations. + for mt in self.metaTransistors.values(): + geoFlags = 0 + nf = mt['NF'] + if nf % 2: + mt['style.NDend'] = 1 + mt['style.NSend'] = 1 + mt['style.NDint'] = nf-1 + mt['style.NSint'] = nf-1 + if mt['leftMost']: + if mt['MIN'] == 1: geoFlags |= Stack.DrainIsolated + else: geoFlags |= Stack.SourceIsolated + else: + if mt['MIN'] == 1: geoFlags |= Stack.DrainShared + else: geoFlags |= Stack.SourceShared + if mt['leftMost']: + if mt['MIN'] == 1: geoFlags |= Stack.SourceIsolated + else: geoFlags |= Stack.DrainIsolated + else: + if mt['MIN'] == 1: geoFlags |= Stack.SourceShared + else: geoFlags |= Stack.DrainShared + else: + if mt['MIN']: + mt['style.NDend'] = 2 + mt['style.NSend'] = 0 + mt['style.NDint'] = (nf/2 - 1)*2 + mt['style.NSint'] = nf + if mt['leftMost'] or mt['rightMost']: geoFlags |= Stack.DrainIsolated + else: geoFlags |= Stack.DrainShared + else: + mt['style.NDend'] = 0 + mt['style.NSend'] = 2 + mt['style.NSint'] = (nf/2 - 1)*2 + mt['style.NDint'] = nf + if mt['leftMost'] or mt['rightMost']: geoFlags |= Stack.SourceIsolated + else: geoFlags |= Stack.SourceShared + + mt['style.geomod'] = Stack.toGeomod( geoFlags, mt['NF'] ) + return + + + def isNmos ( self ): return self.device.isNMOS() + def isPmos ( self ): return self.device.isPMOS() + def hasNorthBulk ( self ): return self.flags & Stack.NorthBulk + def hasSouthBulk ( self ): return self.flags & Stack.SouthBulk + def hasEastBulk ( self ): return self.flags & Stack.EastBulk + def hasWestBulk ( self ): return self.flags & Stack.WestBulk + def wiring ( self, i ): return self.wirings[i] + def tracksNb ( self ): return len(self.topTracks) + len(self.botTracks) + def topTracksNb ( self ): return len(self.topTracks) + def botTracksNb ( self ): return len(self.botTracks) + + def isTopTrack ( self, net ): + if net == self.bulkNet: return False + + trackIndex = 2 + if self.flags & Stack.NorthBulk: trackIndex = 3 + if trackIndex > len(self.topTracks): return False + if self.topTracks[-trackIndex] != net: return False + return True + + def isBotTrack ( self, net ): + if net == self.bulkNet: return False + + trackIndex = 2 + if self.flags & Stack.SouthBulk: trackIndex = 3 + if trackIndex > len(self.botTracks): return False + if self.botTracks[-trackIndex] != net: return False + return True + +###################################### + def tracksNbPitch ( self ): + nb = 0 + for i in range (self.topTracksNb()-1): + nb += self.topWTracks[i] + for i in range (self.botTracksNb()-1): + nb += self.botWTracks[i] + return nb + + def getBotTrackY ( self, i ): + nb = self.horPitch + for j in range(self.botTracksNb()-2-i): + nb += self.horPitch*self.botWTracks[self.botTracksNb()-2-j] + return nb + + def getTopTrackY ( self, i ): + y = (self.ypitches)*self.horPitch + self.getBotTrackY(0) + self.getHorizontalWidth(self.botWTracks[0]) + #y = self.activeOffsetY + (self.ypitches-1)*self.horPitch #- self.hTrackDistance + for j in range(i): + y += self.horPitch*self.topWTracks[j] + return y + + def getLastTopTrackY ( self ): return self.getTopTrackY(self.topTracksNb()-1) + def getLastTopWTracks ( self ): return self.topWTracks[self.topTracksNb()-2] + def getLastBotWTracks ( self ): return self.botWTracks[self.botTracksNb()-2] + def getHorizontalWidth ( self, trackSpan ): return (self.horPitch * (trackSpan - 1)) + def getHorizontalAxis ( self, trackSpan ): return self.getHorizontalWidth(trackSpan)/2 + + def getWiringWidth ( self, wiring, isTopConnect ): + if isTopConnect: return self.horPitch * (self.topWTracks[wiring.topTrack] - 1) + return self.horPitch * (self.botWTracks[wiring.botTrack] - 1) + +###################################### + def DMCI ( self ): + if not self.dimensioned: self.computeDimensions() + return self.sideActiveWidth \ + - self.L/2 \ + - self.metal1ToGate \ + - self.eDiffMetal1Width/2 + + def DMCG ( self ): + if not self.dimensioned: self.computeDimensions() + return (self.gatePitch - self.L)/2 + + def DMCGT ( self ): return 0.0 + + def DGG ( self ): + if not self.dimensioned: self.computeDimensions() + return self.gatePitch - self.L + + def DGI ( self ): + if not self.dimensioned: self.computeDimensions() + return self.sideActiveWidth - self.L/2 + + + ## [internal] Compute Stack dimensions from the technological rules. + # + # Internal function. Perform the computation of: + # - \c self.metal1Pitch + # - \c self.minWidth_metal1 + # - \c self.metal2Pitch + # - \c self.minWidth_metal2 + # - \c self.gatePitch + # - \c self.sideActiveWidth + # - \c self.hTrackDistance + # - \c self.xpitches + # - \c self.ypitches + # - \c self.activeOffsetX + # - \c self.activeOffsetY + # - \c self.boundingBox + + def computeDimensions ( self ): + if self.dimensioned: return + self.dimensioned = True + + trace( 100, '\tStack.computeDimensions(): Start time %s.\n' % str(datetime.datetime.now()) ) + + specsNb = 3 + (self.NFs - 1)*2 + if len(self.wirings) != specsNb: + raise Error( 3, [ 'Stack._computeDimension(): Wiring inconsistency,' \ + ' have %d specs but should be %d for a NFs of %d.' \ + % (len(self.wirings), specsNb, self.NFs) + ] ) + + rg = AllianceFramework.get().getRoutingGauge() + self.metal2Pitch = rg.getHorizontalPitch() + self.metal3Pitch = rg.getVerticalPitch() + self.isVH = rg.isVH() + + foundHor = False + foundVer = False + for depth in range(rg.getDepth()): + rlg = rg.getLayerGauge(depth) + if rlg.getType() == Constant.PinOnly: continue + if rlg.getDirection() == Constant.Horizontal and not foundHor: + self.horPitch = rlg.getPitch() + foundHor = True + if rlg.getDirection() == Constant.Vertical and not foundVer: + self.verPitch = rlg.getPitch() + foundVer = True + + width1 = self.minWidth_cut0 + self.minEnclosure_metal1_cut0*2 + width2 = self.minWidth_cut1 + self.minEnclosure_metal1_cut1*2 + self.wire1Width = max( self.minWidth_metal1, width1, width2 ) + + pitch1 = self.minWidth_metal2 + self.minSpacing_metal2 + pitch2 = self.minWidth_cut1 + self.minEnclosure_metal2_cut1*2 + self.minSpacing_metal2 + self.metal2TechnoPitch = max( pitch1, pitch2 ) + + if self.metal2Pitch == 0: self.metal2Pitch = self.metal2TechnoPitch + if self.metal2Pitch < self.metal2TechnoPitch: + raise Error( 3, 'Stack.computeDimensions(): Routing gauge pitch %s is inferior to technology minimum of %s.' + % ( DbU.getValueString(self.metal2Pitch) + , DbU.getValueString(self.metal2TechnoPitch) ) ) + + width1 = self.minWidth_cut1 + self.minEnclosure_metal2_cut1*2 + if self.isVH: + self.wire2Width = self.minWidth_metal2 + self.wire3Width = self.minWidth_metal3 + else: + self.wire2Width = max( self.minWidth_metal2, width1 ) + + pitch1 = self.minGateSpacing_poly + self.minWidth_cut0 + pitch2 = self.minSpacing_cut1 + self.minWidth_cut1 + self.gateVia1Pitch = max( pitch1, pitch2 ) + + pitch1 = self.minWidth_cut0 + self.minSpacing_cut0 + pitch2 = self.minWidth_cut1 + self.minSpacing_cut1 + self.contactDiffPitch = max( pitch1, pitch2 ) + self.contactDiffSide = max( self.minWidth_cut1, self.minWidth_cut0 ) + + iDiffContactWidth = self.contactDiffSide + (self.NIRC - 1)*self.contactDiffPitch + eDiffContactWidth = self.contactDiffSide + (self.NERC - 1)*self.contactDiffPitch + overlap = max( self.minEnclosure_metal1_cut0, self.minEnclosure_metal1_cut1 ) + gateVia1Side = max( self.minWidth_cut1, self.minWidth_cut0 ) + self.iDiffMetal1Width = iDiffContactWidth + overlap*2 + self.eDiffMetal1Width = eDiffContactWidth + overlap*2 + + pitch1 = self.L \ + + iDiffContactWidth \ + + self.minSpacing_cut0_poly*2 + pitch2 = self.minWidth_cut0 \ + + self.minEnclosure_poly_cut0*2 \ + + self.minGateSpacing_poly + pitch3 = self.minSpacing_metal1*2 \ + + self.iDiffMetal1Width \ + + max( self.L, gateVia1Side+2*overlap ) + self.gatePitch = max( pitch1, pitch2, pitch3 ) + self.metal1ToGate = (self.gatePitch - self.L - self.iDiffMetal1Width) / 2 + + self.sideActiveWidth = self.minEnclosure_active_cut0 \ + - self.minEnclosure_metal1_cut0 \ + + self.eDiffMetal1Width \ + + self.metal1ToGate \ + + self.L/2 + + hTrackDistance1 = self.minWidth_cut0/2 + self.minSpacing_cut0_active + hTrackDistance2 = self.minWidth_cut0/2 + self.minEnclosure_poly_cut0 + self.minSpacing_poly_active + self.hTrackDistance = max( hTrackDistance1, hTrackDistance2 ) + + vBulkDistance1 = self.minWidth_cut0/2 \ + + self.minEnclosure_active_cut0 \ + + self.minEnclosure_tImplant_active \ + + self.minEnclosure_bImplant_active + vBulkDistance2 = self.minWidth_cut0/2 \ + + self.minEnclosure_active_cut0 \ + + self.minSpacing_nImplant_pImplant + self.vBulkDistance = max( vBulkDistance1, vBulkDistance2 ) + + activeHeight = self.w + 2*self.hTrackDistance + self.ypitches = activeHeight / self.horPitch + if activeHeight % self.horPitch: self.ypitches += 1 + if (self.ypitches + self.tracksNbPitch()) % 2: self.ypitches += 1 + + diffusionWidth = (self.sideActiveWidth + self.minEnclosure_tImplant_active)*2 + (self.NFs-1)*self.gatePitch + deviceMinWidth = diffusionWidth + if self.flags & Stack.WestBulk: deviceMinWidth += self.vBulkDistance + self.verPitch + if self.flags & Stack.EastBulk: deviceMinWidth += self.vBulkDistance + self.verPitch + + self.xpitches = deviceMinWidth / self.verPitch + if self.xpitches % 2: + self.xpitches += 1 + else: + if diffusionWidth % self.verPitch: + self.xpitches += 2 + + self.activeOffsetY = self.getBotTrackY(0) + self.getHorizontalWidth(self.botWTracks[0]) \ + + self.hTrackDistance \ + + (self.ypitches*self.horPitch - activeHeight)/2 \ + + self.bbHeight = self.getLastTopTrackY() + + self.bbWidth = self.xpitches * self.verPitch + diffusionRealWidth = self.bbWidth + if self.flags & Stack.WestBulk: diffusionRealWidth -= self.vBulkDistance + self.verPitch + if self.flags & Stack.EastBulk: diffusionRealWidth -= self.vBulkDistance + self.verPitch + self.activeOffsetX = self.minEnclosure_tImplant_active + (diffusionRealWidth - diffusionWidth)/2 + if self.flags & Stack.WestBulk: self.activeOffsetX += self.vBulkDistance + self.verPitch + + self.boundingBox = Box( 0, 0, self.bbWidth, self.bbHeight ) + self.activeBox = Box( self.activeOffsetX + , self.activeOffsetY + , self.activeOffsetX + (self.NFs - 1) * self.gatePitch + 2*self.sideActiveWidth + , self.activeOffsetY + self.w + ) + + westBulkX = self.activeOffsetX + eastBulkX = self.activeOffsetX + diffusionWidth - self.minEnclosure_tImplant_active*2 + southBulkY = self.boundingBox.getYMin() + self.horPitch + northBulkY = self.boundingBox.getYMax() - self.horPitch + + + self.bulkWidth = self.minWidth_cut0 + 2*self.minEnclosure_active_cut0 + + if self.flags & Stack.EastBulk: + eastBulkX = self.boundingBox.getXMax() - self.horPitch + self.bulks[2] = Bulk( self, eastBulkX, southBulkY, northBulkY, Stack.EastBulk ) + + if self.flags & Stack.WestBulk: + westBulkX = self.horPitch + self.bulks[3] = Bulk( self, westBulkX, southBulkY, northBulkY, Stack.WestBulk ) + + if self.flags & Stack.NorthBulk: + self.bulks[0] = Bulk( self, northBulkY, westBulkX, eastBulkX, Stack.NorthBulk ) + + if self.flags & Stack.SouthBulk: + self.bulks[1] = Bulk( self, southBulkY, westBulkX, eastBulkX, Stack.SouthBulk ) + + self.DMCI = oroshi.toUnity( self.sideActiveWidth + - self.L/2 + - self.metal1ToGate + - self.eDiffMetal1Width/2 ) + self.DMCG = oroshi.toUnity( (self.gatePitch - self.L)/2 ) + self.DMCGT = 0 + self.DGG = oroshi.toUnity( self.gatePitch - self.L ) + self.DGI = oroshi.toUnity( self.sideActiveWidth - self.L/2 ) + + trace( 100, '+' ) + trace( 100, '\t +----------------------------------+\n' ) + trace( 100, '\t | Parameters |\n' ) + trace( 100, '\t +=====================+============+\n' ) + trace( 100, '\t | w (finger) | %10s |\n' % DbU.getValueString(self.w) ) + trace( 100, '\t | L | %10s |\n' % DbU.getValueString(self.L) ) + trace( 100, '\t | NFs | %10d |\n' % self.NFs ) + trace( 100, '\t +=====================+============+\n' ) + trace( 100, '\t | Computed |\n' ) + trace( 100, '\t +=====================+============+\n' ) + trace( 100, '\t | metal2 pitch | %10s |\n' % DbU.getValueString(self.metal2Pitch) ) + trace( 100, '\t | metal2 Techno pitch | %10s |\n' % DbU.getValueString(self.metal2TechnoPitch) ) + trace( 100, '\t | gatePitch | %10s |\n' % DbU.getValueString(self.gatePitch) ) + trace( 100, '\t | sideActiveWidth | %10s |\n' % DbU.getValueString(self.sideActiveWidth) ) + trace( 100, '\t | contactDiffPitch | %10s |\n' % DbU.getValueString(self.contactDiffPitch) ) + trace( 100, '\t | hTrackDistance | %10s |\n' % DbU.getValueString(self.hTrackDistance) ) + trace( 100, '\t | vBulkDistance | %10s |\n' % DbU.getValueString(self.vBulkDistance) ) + trace( 100, '\t | activeOffsetX | %10s |\n' % DbU.getValueString(self.activeOffsetX) ) + trace( 100, '\t | activeOffsetY | %10s |\n' % DbU.getValueString(self.activeOffsetY) ) + trace( 100, '\t | active pitches | %10d |\n' % self.ypitches ) + trace( 100, '\t +---------------------+------------+\n' ) + trace( 100, '\n' ) + trace( 100, '\tStack.computeDimensions(): End time %s.\n' % str(datetime.datetime.now()) ) + trace( 100, '-' ) + + for mt in self.metaTransistors.values(): + self.computeStressEffect( mt ) + self.computeLayoutParasitics( mt ) + traceMT( mt ) + return + + ## [API] Draw the complete layout. + # + # Draw the commplete layout of the Stack. + + def doLayout ( self, bbMode ): + trace( 100, '+', '\tStack.doLayout().\n' ) + + self.computeDimensions() + + if not bbMode: + UpdateSession.open() + + self.drawActive() + self.drawWell() + + xoffset = self.activeOffsetX + self.sideActiveWidth + for i in range(self.NFs): + self.drawGate( xoffset + i*self.gatePitch, self.wirings[1+2*i] ) + + for i in range(self.NFs+1): + if i == 0: # Leftmost diffusion area. + NRC = self.NERC + width = self.eDiffMetal1Width + axis = self.activeOffsetX \ + + self.sideActiveWidth \ + - self.L/2 \ + - self.metal1ToGate \ + - width/2 + elif i == self.NFs: # Rightmost diffusion area. + NRC = self.NERC + width = self.eDiffMetal1Width + axis = self.activeOffsetX \ + + self.sideActiveWidth \ + + self.gatePitch*(self.NFs - 1) \ + + self.L/2 \ + + self.metal1ToGate \ + + width/2 + else: # Middle diffusion areas. + NRC = self.NIRC + width = self.iDiffMetal1Width + axis = self.activeOffsetX \ + + self.sideActiveWidth \ + - self.gatePitch/2 \ + + self.gatePitch*i + + self.drawSourceDrain( axis, self.wirings[2*i], width, NRC ) + + capSpacing = self.minSpacing_metal2 + self.minWidth_metal2/2 + capSpacing = max( capSpacing, self.minSpacing_metal3 + self.minWidth_metal3/2 ) + + metal2 = DataBase.getDB().getTechnology().getLayer( 'metal2' ) + metal3 = DataBase.getDB().getTechnology().getLayer( 'metal3' ) + trackNb = 0 + if self.topTracks: trackNb = len(self.topTracks) + for i in range(trackNb): + if not self.topTracks[i]: continue + h = Horizontal.create( self.topTracks[i] + , metal2 + , self.getTopTrackY(i) + self.getHorizontalAxis (self.topWTracks[i]) + , self.wire2Width + self.getHorizontalWidth(self.topWTracks[i]) + , capSpacing + , self.bbWidth - capSpacing ) + if self.isVH: + h = Horizontal.create( self.topTracks[i] + , metal3 + , self.getTopTrackY(i) + self.getHorizontalAxis (self.topWTracks[i]) + , self.wire3Width + self.getHorizontalWidth(self.topWTracks[i]) + , capSpacing + , self.bbWidth - capSpacing ) + NetExternalComponents.setExternal( h ) + + trackNb = 0 + if self.botTracks: trackNb = len(self.botTracks) + for i in range(trackNb): + if not self.botTracks[i]: continue + h = Horizontal.create( self.botTracks[i] + , metal2 + , self.getBotTrackY(i) + self.getHorizontalAxis (self.botWTracks[i]) + , self.wire2Width + self.getHorizontalWidth(self.botWTracks[i]) + , capSpacing + , self.bbWidth - capSpacing ) + if self.isVH: + h = Horizontal.create( self.botTracks[i] + , metal3 + , self.getBotTrackY(i) + self.getHorizontalAxis (self.botWTracks[i]) + , self.wire3Width + self.getHorizontalWidth(self.botWTracks[i]) + , capSpacing + , self.bbWidth - capSpacing ) + NetExternalComponents.setExternal( h ) + + + for bulk in self.bulks: + if bulk: bulk.doLayout() + + UpdateSession.close() + + trace( 100, '\tStack.doLayout(): End time %s\n' %str(datetime.datetime.now()) ) + trace( 100, '-' ) + return self.boundingBox + + + def drawActive ( self ): + trace( 100, '+', '\tDrawActive().\n' ) + activeNet = self.device.getNet( 'active' ) + if not activeNet: activeNet = Net.create( self.device, 'active' ) + activeNet.setAutomatic( True ) + + tImplantNet = self.device.getNet( 'nImplant' ) + if not tImplantNet: tImplantNet = Net.create( self.device, 'nImplant' ) + tImplantNet.setAutomatic( True ) + + active = DataBase.getDB().getTechnology().getLayer( 'active' ) + width = self.w + length = (self.NFs - 1) * self.gatePitch + 2*self.sideActiveWidth + axis = width / 2 + xoffset = self.activeOffsetX + yoffset = self.activeOffsetY + segment = Horizontal.create( activeNet, active, yoffset+axis, width, xoffset, xoffset+length ) + + width = width + 2*self.minEnclosure_tImplant_active + length = length + 2*self.minEnclosure_tImplant_active + axis = width / 2 + xoffset = self.activeOffsetX - self.minEnclosure_tImplant_active + yoffset = self.activeOffsetY - self.minEnclosure_tImplant_active + segment = Horizontal.create( tImplantNet + , self.tImplantLayer + , yoffset+axis + , width + , xoffset + , xoffset+length ) + return + + + def drawWell ( self ): + if self.wellLayer: + trace( 100, '+', '\tDrawWell().\n' ) + Pad.create( self.device.getNet('anonymous'), self.wellLayer, self.boundingBox ) + return + + + def drawGate ( self, axis, wiring ): + trace( 100, '\tStack.drawGate(): %s\n' % wiring ) + + gate = DataBase.getDB().getTechnology().getLayer( 'poly' ) + cut0 = DataBase.getDB().getTechnology().getLayer( 'cut0' ) + cut1 = DataBase.getDB().getTechnology().getLayer( 'cut1' ) + cut2 = DataBase.getDB().getTechnology().getLayer( 'cut2' ) + metal1 = DataBase.getDB().getTechnology().getLayer( 'metal1' ) + metal2 = DataBase.getDB().getTechnology().getLayer( 'metal2' ) + metal3 = DataBase.getDB().getTechnology().getLayer( 'metal3' ) + width = self.L + + if wiring.isTop(): ytarget = self.getTopTrackY( wiring.topTrack ) + else: ytarget = self.activeOffsetY + self.minExtension_poly_active + self.w + + if wiring.isBot(): ysource = self.getBotTrackY( wiring.botTrack ) + else: ysource = self.activeOffsetY - self.minExtension_poly_active + + segment = Vertical.create( wiring.net, gate, axis, width, ysource, ytarget ) + + contactHeight = self.minWidth_cut0 + 2*self.minEnclosure_poly_cut0 + contactWidth = max( contactHeight, self.L ) + contactsNb = (contactWidth - 2*self.minEnclosure_poly_cut0) / self.gateVia1Pitch + if contactsNb: + contactPitch = contactWidth / contactsNb + else: + contactsNb = 1 + contactPitch = self.L + + gateVia1Overlap = max( self.minEnclosure_metal1_cut0, self.minEnclosure_metal1_cut1 ) + gateVia1Side = max( self.minWidth_cut1, self.minWidth_cut0 ) + + for connector in ( (wiring.isTop(),ytarget,True), (wiring.isBot(),ysource,False) ): + if not connector[0]: continue + + isTopConnect = connector[2] + yoffset = connector[1] + xcontact = axis - self.L/2 + contactPitch/2 + contactBb = Box( axis, yoffset ).inflate( contactWidth/2, contactHeight/2) + width = gateVia1Side + 2*gateVia1Overlap + self.getWiringWidth(wiring, isTopConnect) + y = yoffset + self.getWiringWidth(wiring, isTopConnect)/2 + rowHeight = self.horPitch + + if isTopConnect: + contactBb = Box( axis, yoffset ).inflate( contactWidth/2, contactHeight/2+self.getWiringWidth(wiring, isTopConnect)) + + Pad.create( wiring.net, gate, contactBb ) # GateExtension Contact + Horizontal.create( wiring.net + , metal1 + , y + , width + , xcontact - gateVia1Side/2 - gateVia1Overlap + , xcontact + (contactsNb-1)*contactPitch + gateVia1Side/2 + gateVia1Overlap )# M1 area + + + cut1Bb = Box() + cut2Bb = Box() + for i in range(contactsNb): + if isTopConnect: rangeWidth = range(self.topWTracks[wiring.topTrack]) + else: range(self.botWTracks[wiring.botTrack]) + + for j in rangeWidth: + contactBb = Box( xcontact, yoffset ).inflate( self.minWidth_cut0/2 ) + Pad.create( wiring.net, cut0, contactBb ) + contactBb = Box( xcontact, yoffset ).inflate( self.minWidth_cut1/2 ) + Pad.create( wiring.net, cut1, contactBb ) + cut1Bb.merge( contactBb ) + if self.isVH: + contactBb = Box( xcontact, yoffset ).inflate( self.minWidth_cut2/2 ) + Pad.create( wiring.net, cut2, contactBb ) + cut2Bb.merge( contactBb ) + yoffset += rowHeight + yoffset -= rowHeight*self.topWTracks[wiring.topTrack] + + if self.isVH: + metal2EnclBb = Box( cut1Bb ).inflate( self.minEnclosure_metal2_cut1 ) + metal2EnclBb.merge( Box( cut2Bb ).inflate( self.minEnclosure_metal2_cut2 ) ) + Pad.create( wiring.net, metal2, metal2EnclBb ) + + metal3EnclBb = Box( cut2Bb ).inflate( self.minEnclosure_metal3_cut2 ) + Pad.create( wiring.net, metal3, metal3EnclBb ) + + enable = False + if wiring.net == self.bulkNet: enable = True + if connector[0] & Stack.NorthBulk and self.bulks[0]: self.bulks[0].addContact( xcontact, enable ) + if connector[0] & Stack.SouthBulk and self.bulks[1]: self.bulks[1].addContact( xcontact, enable ) + + xcontact += contactPitch + + return + + + def drawSourceDrain ( self, axis, wiring, width, cols ): + trace( 100, '\tStack.drawSourceDrain(): %s @%s width:%s NRC=%d\n' \ + % (wiring, DbU.getValueString(axis), DbU.getValueString(width), cols ) ) + + metal1 = DataBase.getDB().getTechnology().getLayer( 'metal1' ) + metal2 = DataBase.getDB().getTechnology().getLayer( 'metal2' ) + metal3 = DataBase.getDB().getTechnology().getLayer( 'metal3' ) + cut0 = DataBase.getDB().getTechnology().getLayer( 'cut0' ) + cut1 = DataBase.getDB().getTechnology().getLayer( 'cut1' ) + cut2 = DataBase.getDB().getTechnology().getLayer( 'cut2' ) + rows = max( 1, (self.w - 2*self.minEnclosure_active_cut0) / self.contactDiffPitch ) + ypitch = self.w / rows + yoffset = self.activeOffsetY + ypitch/2 + xpitch = self.contactDiffPitch + ypitch2 = self.horPitch + xoffset = axis - (self.contactDiffPitch * (cols - 1))/2 + + if self.w < 2*self.minEnclosure_active_cut0 + self.minWidth_cut0: + active = DataBase.getDB().getTechnology().getLayer( 'active' ) + + box = Box( xoffset, yoffset, xoffset + (cols-1)*xpitch, yoffset ) + box.inflate( self.minWidth_cut0 + self.minEnclosure_active_cut0 ) + Pad.create( wiring.net, active, box ) + + box.inflate( self.minEnclosure_tImplant_active ) + Pad.create( wiring.net, self.tImplantLayer, box ) + + for j in range(rows): + for i in range(cols): + contact = Contact.create( wiring.net + , cut0 + , xoffset + i*xpitch + , yoffset + j*ypitch + , self.minWidth_cut0 + , self.minWidth_cut0 ) + + if wiring.isTop(): + ytarget = self.getTopTrackY( wiring.topTrack ) + for i in range(cols): + for j in range(self.topWTracks[wiring.topTrack]): + Contact.create( wiring.net + , cut1 + , xoffset + i*xpitch + , ytarget + j*ypitch2 + , self.minWidth_cut1 + , self.minWidth_cut1 ) + Contact.create( wiring.net + , cut2 + , xoffset + i*xpitch + , ytarget + j*ypitch2 + , self.minWidth_cut2 + , self.minWidth_cut2 ) + + enable = False + if wiring.net == self.bulkNet: enable = True + if self.bulks[0]: self.bulks[0].addContact( xoffset + i*xpitch, enable ) + + if self.isVH: + cutBb = Box( xoffset + , ytarget + , xoffset + xpitch *(cols - 1) + , ytarget + ypitch2*(self.topWTracks[wiring.topTrack] - 1) ) + + metal2EnclBb = Box( cutBb ).inflate( self.minEnclosure_metal2_cut1 + self.minWidth_cut1/2 ) + metal2EnclBb.merge( Box( cutBb ).inflate( self.minEnclosure_metal2_cut2 + self.minWidth_cut2/2 ) ) + Pad.create( wiring.net, metal2, metal2EnclBb ) + + metal3EnclBb = Box( cutBb ).inflate( self.minEnclosure_metal3_cut2 + self.minWidth_cut2/2 ) + Pad.create( wiring.net, metal3, metal3EnclBb ) + + ytarget += ypitch2*(self.topWTracks[wiring.topTrack]-1) + else: + ytarget = yoffset + ypitch*(rows - 1) + + if wiring.isBot(): + ysource = self.getBotTrackY( wiring.botTrack ) + for i in range(cols): + for j in range(self.botWTracks[wiring.botTrack]): + Contact.create( wiring.net + , cut1 + , xoffset + i*xpitch + , ysource + j*ypitch2 + , self.minWidth_cut1 + , self.minWidth_cut1 ) + Contact.create( wiring.net + , cut2 + , xoffset + i*xpitch + , ysource + j*ypitch2 + , self.minWidth_cut2 + , self.minWidth_cut2 ) + + if self.bulks[1]: + if self.isBotTrack(wiring.net) or wiring.net == self.bulkNet: + enable = False + if wiring.net == self.bulkNet: enable = True + self.bulks[1].addContact( xoffset + i*xpitch, enable ) + + if self.isVH: + cutBb = Box( xoffset + , ysource + , xoffset + xpitch *(cols - 1) + , ysource + ypitch2*(self.botWTracks[wiring.botTrack] - 1) ) + + metal2EnclBb = Box( cutBb ).inflate( self.minEnclosure_metal2_cut1 + self.minWidth_cut1/2 ) + metal2EnclBb.merge( Box( cutBb ).inflate( self.minEnclosure_metal2_cut2 + self.minWidth_cut2/2 ) ) + Pad.create( wiring.net, metal2, metal2EnclBb ) + + metal3EnclBb = Box( cutBb ).inflate( self.minEnclosure_metal3_cut2 + self.minWidth_cut2/2 ) + Pad.create( wiring.net, metal3, metal3EnclBb ) + else: + ysource = yoffset + + bcontact = Contact.create( wiring.net + , metal1 + , axis + , ysource + , width + , self.wire1Width ) + tcontact = Contact.create( wiring.net + , metal1 + , axis + , ytarget + , width + , self.wire1Width ) + segment = Vertical.create( bcontact, tcontact, metal1, axis, width ) + + return + + + def computeStressEffect ( self, mt ): + # Stress effect computation as specified in S. Youssef thesis, p.59. + eastBulkWidth = 0 + westBulkWidth = 0 + if self.flags & Stack.WestBulk: westBulkWidth = self.bulkWidth + if self.flags & Stack.EastBulk: eastBulkWidth = self.bulkWidth + + L = oroshi.toUnity( self.L ) + sumA_Bsim4 = 0.0 + sumB_Bsim4 = 0.0 + sumA_Crolles = 0.0 + sumB_Crolles = 0.0 + + for i in range(self.NFs): + if not self.wirings[i].net != mt['gate']: continue + + sa = self.DGI + westBulkWidth + i *(L + self.DGG) + sb = self.DGI + eastBulkWidth + (self.NFs - i - 1)*(L + self.DGG) + + sumA_Bsim4 += 1 / (sa + 0.5*self.DGG) + sumB_Bsim4 += 1 / (sb + 0.5*self.DGG) + sumA_Crolles += 1 / sa + sumB_Crolles += 1 / sb + + SAinv_Bsim4 = sumA_Bsim4 / mt['NF'] + SBinv_Bsim4 = sumB_Bsim4 / mt['NF'] + SAinv_Crolles = sumA_Crolles / mt['NF'] + SBinv_Crolles = sumB_Crolles / mt['NF'] + + mt['stress.SAinv_Bsim4'] = SAinv_Bsim4 + mt['stress.SBinv_Bsim4'] = SBinv_Bsim4 + mt['stress.SAeff_Bsim4'] = 1 / SAinv_Bsim4 + mt['stress.SBeff_Bsim4'] = 1 / SBinv_Bsim4 + mt['stress.LODeffect' ] = 1 / SAinv_Bsim4 + 1 / SBinv_Bsim4 + mt['stress.alpha' ] = 2 / ( SAinv_Bsim4 + SBinv_Bsim4 ) + mt['stress.alphaInv' ] = 1 / mt['stress.alpha'] + + mt['stress.SAinv_Crolles' ] = SAinv_Crolles + mt['stress.SBinv_Crolles' ] = SBinv_Crolles + mt['stress.SAeff_Crolles' ] = 1 / SAinv_Crolles + mt['stress.SBeff_Crolles' ] = 1 / SBinv_Crolles + mt['stress.po2actEff_Crolles'] = 2 / ( SAinv_Crolles + SBinv_Crolles ) + + return + + + def computeLayoutParasitics ( self, mt ): + #trace( 100, '\tStack.computeLayoutParasitics(): %s\n' % str(mt) ) + + NSend = mt['style.NSend'] + NDend = mt['style.NDend'] + NSint = mt['style.NSint'] + NDint = mt['style.NDint'] + NF = mt['NF'] + Weff = oroshi.toUnity( self.w ) + DMCI = self.DMCI + DMCG = self.DMCG + DMCGT = self.DMCGT + + if mt['style.geomod'] == 0: + ASeff = NSend * ( DMCG + DMCI - DMCGT) * Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend * ( 2*(DMCG + DMCI - DMCGT) + Weff) + NSint * 2*(DMCG - DMCGT) + ADeff = NDend * ( DMCG + DMCI - DMCGT) * Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * ( 2*(DMCG + DMCI - DMCGT) + Weff) + NDint * 2*(DMCG - DMCGT) + elif mt['style.geomod'] == 1: + ASeff = NSend * (DMCG + DMCI - DMCGT) * Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend * ( 2*(DMCG + DMCI - DMCGT) + Weff) + NSint *2*(DMCG - DMCGT) + ADeff = NDend * (DMCG - DMCGT)*Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * 2*(DMCG - DMCGT) + NDint *2*(DMCG - DMCGT) + elif mt['style.geomod'] == 2: + ASeff = NSend * (DMCG - DMCGT) * Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend * 2 * (DMCG - DMCGT) + NSint *2*(DMCG - DMCGT) + ADeff = NDend * (DMCG + DMCI - DMCGT) * Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * ( 2*(DMCG + DMCI - DMCGT) + Weff) + NDint *2*(DMCG - DMCGT) + elif mt['style.geomod'] == 3: + ASeff = NSend *(DMCG - DMCGT) * Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend *2*(DMCG - DMCGT) + NSint *2*(DMCG - DMCGT) + ADeff = NDend *(DMCG + DMCI - DMCGT) * Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * ( 2*(DMCG + DMCI - DMCGT) + Weff) + NDint *2*(DMCG - DMCGT) + elif mt['style.geomod'] == 4: + ASeff = NSend * (DMCG + DMCI - DMCGT) * Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend * ( 2*(DMCG + DMCI - DMCGT) * Weff) + NSint *2*(DMCG - DMCGT) + ADeff = NDend * (DMDG - DMCGT)*Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * 2*(DMDG - DMCGT) + NDint *2*(DMCG - DMCGT) + elif mt['style.geomod'] == 5: + ASeff = NSend *(DMCG - DMCGT)*Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend * 2 *(DMCG - DMCGT) + NSint*2*(DMCG - DMCGT) + ADeff = NDend *(DMDG - DMCGT) * Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * ( 2*(DMDG - DMCGT) * Weff) + NDint*2*(DMCG - DMCGT) + elif mt['style.geomod'] == 5: + ASeff = NSend *(DMDG - DMCGT)*Weff + NSint *(DMDG - DMCGT)*Weff + PSeff = NSend *2*(DMCG - DMCGT) + NSint*2*(DMCG - DMCGT) + ADeff = NDend *(DMCG + DMCI - DMCGT) * Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * ( 2*(DMCG + DMCI - DMCGT) * Weff) + NDint*2*(DMCG - DMCGT) + elif mt['style.geomod'] == 6: + ASeff = NSend *(DMDG - DMCGT)*Weff + NSint *(DMDG - DMCGT)*Weff + PSeff = NSend *2*(DMCG - DMCGT) + NSint*2*(DMCG - DMCGT) + ADeff = NDend *(DMCG + DMCI - DMCGT) * Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend * ( 2*(DMCG + DMCI - DMCGT) * Weff) + NDint*2*(DMCG - DMCGT) + elif mt['style.geomod'] == 7: + ASeff = NSend *(DMDG - DMCGT)*Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend *2*(DMDG - DMCGT) + NSint*2*(DMCG - DMCGT) + ADeff = NDend *(DMCG - DMCGT)*Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend *2*(DMCG - DMCGT) + NDint*2*(DMCG - DMCGT) + elif mt['style.geomod'] == 8: + ASeff = NSend *(DMDG - DMCGT)*Weff + NSint *(DMCG - DMCGT)*Weff + PSeff = NSend *2*(DMDG - DMCGT) + NSint*2*(DMCG - DMCGT) + ADeff = NDend *(DMDG - DMCGT)*Weff + NDint *(DMCG - DMCGT)*Weff + PDeff = NDend *2*(DMDG - DMCGT) + NDint*2*(DMCG - DMCGT) + elif mt['style.geomod'] == 9: + ASeff = (DMCG + DMCI - DMCGT) * Weff + (NF-1) *(DMCG - DMCGT)*Weff + PSeff = (2*(DMCG + DMCI - DMCGT) + Weff) + (NF-1)*2*(DMCG - DMCGT) + ADeff = NF *(DMCG - DMCGT)*Weff + PDeff = NF* 2*(DMCG - DMCGT) + elif mt['style.geomod'] == 10: + ASeff = NF *(DMCG - DMCGT)*Weff + PSeff = NF* 2*(DMCG - DMCGT) + ADeff = (DMCG + DMCI - DMCGT) * Weff + (NF-1) *(DMCG - DMCGT)*Weff + PDeff = (2*(DMCG + DMCI - DMCGT) + Weff) + (NF-1)*2*(DMCG - DMCGT) + else: + raise Error( 3, 'Stack.computeLayoutParasitics(): Unknown GEOMOD %s for meta-transistor \"%s\".' + % ( mt['style.geomod'], mt['gate'].getName() ) ) + + mt['parasitics.ASeff'] = ASeff + mt['parasitics.PSeff'] = PSeff + mt['parasitics.ADeff'] = ADeff + mt['parasitics.PDeff'] = PDeff + + return diff --git a/oroshi/python/WIP_CSP.py b/oroshi/python/WIP_CSP.py new file mode 100644 index 00000000..2fb88a77 --- /dev/null +++ b/oroshi/python/WIP_CSP.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- + +from Hurricane import DataBase +from Hurricane import UpdateSession +from Hurricane import DbU +from Hurricane import Box +import helpers +from helpers import trace + +helpers.staticInitialization( quiet=True ) +helpers.setTraceLevel( 1000 ) + +import Analog +import ParamsMatrix +import Stack +import oroshi + + +def checkCoherency ( args ): + message = '[ERROR] CommonSourcePair.checkCoherency():\n' + + techno = DataBase..getDB().getTechnology() + rules = Analog.getRules( techno, Analog.Flag.StandardRules ) + + M = args.getM() + mMax = args.getW() / rules['transistorMinW'] + if M > mMax: + message += \ + ' W/M ratio must be greater than transistor minimal width (%d)\n' \ + ' Please increase W or decrease M.' \ + % rules['transistorMinW'] + return False, message + + mint = args.getMInt() + if mint != 2: + message += ' For interdigitaded layout style, Mint *must* be equal to 2 (not %d)\n' % mint + return False, message + + return True, '' + + +def layout ( device, args, bbMode ): + + trace( 100, ',+', '\tWIP_CSP.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()) + d1w = str(device.getParameter( 'D1.w' ).getValue()) + d2w = str(device.getParameter( 'D2.w' ).getValue()) + gw = str(device.getParameter( 'G.w' ).getValue()) + sw = str(device.getParameter( 'S.w' ).getValue()) + + diffMap = { 'D1w':str(device.getParameter( 'D1.w' ).getValue()) + , 'D2w':str(device.getParameter( 'D2.w' ).getValue()) + , 'Sw' :str(device.getParameter( 'S.w' ).getValue()) + , 'Gw' :str(device.getParameter( 'G.w' ).getValue()) + , 'Bw' :str(device.getParameter( 'B.w' ).getValue()) + } + + M = device.getM() + remain = M % device.getMint() + westWirings = '' + eastWirings = '' + for i in range(device.getExternalDummy()): + westWirings = westWirings + 'B.bX.{Bw} B.bX.{Bw} ' + eastWirings = ' B.bX.{Bw} B.bX.{Bw}' + eastWirings + if remain: + westWirings = westWirings + 'D1.t0.{D1w} G.b0.{Gw} ' + eastWirings = ' G.b0.{Gw} D2.t3.{D2w}' + eastWirings + westWirings = westWirings + 'S.b1.{Sw} ' + + mintWirings = '' + for i in range( (M / device.getMint())*2 ): + if (i + remain) % 2: mintWirings += 'G.b0.{Gw} D2.t1.{D2w} G.b0.{Gw} S.b1.{Sw} ' + else: mintWirings += 'G.b0.{Gw} D1.t0.{D1w} G.b0.{Gw} S.b1.{Sw} ' + + wirings = westWirings + mintWirings + eastWirings + + 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() + trace( 100, '---' ) + + return paramsMatrix.getMatrix() diff --git a/oroshi/python/WIP_DP.py b/oroshi/python/WIP_DP.py new file mode 100644 index 00000000..f65dc867 --- /dev/null +++ b/oroshi/python/WIP_DP.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- + +from Hurricane import DataBase +from Hurricane import UpdateSession +from Hurricane import DbU +from Hurricane import Box +import helpers +from helpers import trace + +helpers.staticInitialization( quiet=True ) +helpers.setTraceLevel( 1000 ) + +import Analog +import ParamsMatrix +import Stack +import oroshi + + +def checkCoherency ( args ): + message = '[ERROR] DifferentialPair.checkCoherency():\n' + + techno = DataBase.getDB().getTechnology() + rules = Analog.getRules( techno, Analog.Flag.StandardRules ) + + M = args.getM() + mMax = args.getW() / rules['transistorMinW'] + if M > mMax: + message += \ + ' W/M ratio must be greater than transistor minimal width (%d)\n' \ + ' Please increase W or decrease M.' \ + % rules['transistorMinW'] + return False, message + + mint = args.getMInt() + if mint != 2: + message += ' For interdigitaded layout style, Mint *must* be equal to 2 (not %d)\n' % mint + return False, message + + return True, '' + + +def layout ( device, args, bbMode ): + + trace( 100, ',+', '\tWIP_DP.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()) + d1w = str(device.getParameter( 'D1.w' ).getValue()) + d2w = str(device.getParameter( 'D2.w' ).getValue()) + g1w = str(device.getParameter( 'G1.w' ).getValue()) + g2w = str(device.getParameter( 'G2.w' ).getValue()) + sw = str(device.getParameter( 'S.w' ).getValue()) + + diffMap = { 'D1w':str(device.getParameter( 'D1.w' ).getValue()) + , 'D2w':str(device.getParameter( 'D2.w' ).getValue()) + , 'Sw' :str(device.getParameter( 'S.w' ).getValue()) + , 'G1w':str(device.getParameter( 'G1.w' ).getValue()) + , 'G2w':str(device.getParameter( 'G2.w' ).getValue()) + , 'Bw' :str(device.getParameter( 'B.w' ).getValue()) + } + + M = device.getM() + remain = M % device.getMint() + westWirings = '' + eastWirings = '' + for i in range(device.getExternalDummy()): + westWirings = westWirings + 'B.bX.{Bw} B.bX.{Bw} ' + eastWirings = ' B.bX.{Bw} B.bX.{Bw}' + eastWirings + if remain: + westWirings = westWirings + 'D1.b1.{D1w} G1.b0.{G1w} ' + eastWirings = ' G2.t0.{G2w} D2.t1.{D2w}' + eastWirings + westWirings = westWirings + 'S.b2.{Sw} ' + + + mintWirings = '' + for i in range( (M / device.getMint())*2 ): + if (i + remain) % 2: mintWirings += 'G2.t0.{G2w} D2.t1.{D2w} G2.t0.{G2w} S.b2.{Sw} ' + else: mintWirings += 'G1.b0.{G1w} D1.b1.{D1w} G1.b0.{G1w} S.b2.{Sw} ' + + wirings = westWirings + mintWirings + eastWirings + + 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() + trace( 100, '---' ) + + return paramsMatrix.getMatrix() diff --git a/oroshi/python/WIP_Transistor.py b/oroshi/python/WIP_Transistor.py new file mode 100644 index 00000000..b6d831b4 --- /dev/null +++ b/oroshi/python/WIP_Transistor.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +from Hurricane import DataBase +from Hurricane import UpdateSession +from Hurricane import DbU +from Hurricane import Box +import helpers +from helpers import trace + +helpers.staticInitialization( quiet=True ) +helpers.setTraceLevel( 1000 ) + +import Analog +import ParamsMatrix +import Stack +import oroshi + + +def checkCoherency ( args ): + message = '[ERROR] Transistor.checkCoherency():\n' + + techno = DataBase.getDB().getTechnology() + rules = oroshi.getRules() + + mMax = args.getW() / rules.transistorMinW + if args.getM() > mMax: + message += \ + ' W/M ratio must be greater than transistor minimal width (%d)\n' \ + ' Please increase W or decrease M.' \ + % rules['transistorMinW'] + return (False, message) + + return (True, "") + + +def layout ( device, args, 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() + trace( 100, '---' ) + + return paramsMatrix.getMatrix() diff --git a/oroshi/python/__init__.py b/oroshi/python/__init__.py new file mode 100644 index 00000000..68c82797 --- /dev/null +++ b/oroshi/python/__init__.py @@ -0,0 +1,36 @@ + +from Hurricane import DbU +from Hurricane import DataBase +import Rules + + +rules = None + + +class Flag ( object ): + + StandardRules = 0x0001 + MIMRules = 0x0002 + AllRules = StandardRules|MIMRules + + +def getRules (): + global rules + if not rules: + rules = Rules.Rules( DataBase.getDB().getTechnology() ) + return rules + + +def toNano ( value ): return DbU.toPhysical( value, DbU.UnitPowerNano ) +def toMicro ( value ): return DbU.toPhysical( value, DbU.UnitPowerMicro ) +def toUnity ( value ): return DbU.toPhysical( value, DbU.UnitPowerUnity ) + + +def adjustOnGrid ( unit, mode='upper' ): + if mode == 'upper': return DbU.getOnPhysicalGrid(unit, DbU.SnapModeSuperior) + elif mode == 'lower': return DbU.getOnPhysicalGrid(unit, DbU.SnapModeInferior) + elif mode == 'near' : return DbU.getOnPhysicalGrid(unit, DbU.SnapModeNearest ) + else: + print '[ERROR] oroshi.adjustOnGrid(): "%s" is not a valid mode.' % mode + print ' ("upper", "lower" or "near")' + return 0 diff --git a/unicorn/doc/unicorn/html/UnicornGui_8h_source.html b/unicorn/doc/unicorn/html/UnicornGui_8h_source.html index 5cbb510c..9de0812c 100644 --- a/unicorn/doc/unicorn/html/UnicornGui_8h_source.html +++ b/unicorn/doc/unicorn/html/UnicornGui_8h_source.html @@ -158,7 +158,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/annotated.html b/unicorn/doc/unicorn/html/annotated.html index 324e9c26..67fa67af 100644 --- a/unicorn/doc/unicorn/html/annotated.html +++ b/unicorn/doc/unicorn/html/annotated.html @@ -59,7 +59,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 742423ba..2253f50c 100644 --- a/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui-members.html +++ b/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui-members.html @@ -81,7 +81,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 96fad605..bbd51304 100644 --- a/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui.html +++ b/unicorn/doc/unicorn/html/classUnicorn_1_1UnicornGui.html @@ -200,7 +200,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/classes.html b/unicorn/doc/unicorn/html/classes.html index de146f1e..bea36499 100644 --- a/unicorn/doc/unicorn/html/classes.html +++ b/unicorn/doc/unicorn/html/classes.html @@ -62,7 +62,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html b/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html index 839bcbe6..d1608bb4 100644 --- a/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html +++ b/unicorn/doc/unicorn/html/dir_4aa09a10ca668c28f3c8e57fb374580b.html @@ -55,7 +55,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 9d8e946e..5019da0e 100644 --- a/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/unicorn/doc/unicorn/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -55,7 +55,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/files.html b/unicorn/doc/unicorn/html/files.html index 9f628e8f..648dc56b 100644 --- a/unicorn/doc/unicorn/html/files.html +++ b/unicorn/doc/unicorn/html/files.html @@ -55,7 +55,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/functions.html b/unicorn/doc/unicorn/html/functions.html index 59c3b1b9..05777d29 100644 --- a/unicorn/doc/unicorn/html/functions.html +++ b/unicorn/doc/unicorn/html/functions.html @@ -72,7 +72,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/functions_func.html b/unicorn/doc/unicorn/html/functions_func.html index c467ba7c..eb0b6c0c 100644 --- a/unicorn/doc/unicorn/html/functions_func.html +++ b/unicorn/doc/unicorn/html/functions_func.html @@ -72,7 +72,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/hierarchy.html b/unicorn/doc/unicorn/html/hierarchy.html index 7ca1cc86..9a7611f1 100644 --- a/unicorn/doc/unicorn/html/hierarchy.html +++ b/unicorn/doc/unicorn/html/hierarchy.html @@ -59,7 +59,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/index.html b/unicorn/doc/unicorn/html/index.html index 1f81ff6e..2503c737 100644 --- a/unicorn/doc/unicorn/html/index.html +++ b/unicorn/doc/unicorn/html/index.html @@ -45,7 +45,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/namespaceUnicorn.html b/unicorn/doc/unicorn/html/namespaceUnicorn.html index d407b8fa..cc4daa52 100644 --- a/unicorn/doc/unicorn/html/namespaceUnicorn.html +++ b/unicorn/doc/unicorn/html/namespaceUnicorn.html @@ -64,7 +64,7 @@ Classes
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/namespaces.html b/unicorn/doc/unicorn/html/namespaces.html index 7ad7661c..9785bdce 100644 --- a/unicorn/doc/unicorn/html/namespaces.html +++ b/unicorn/doc/unicorn/html/namespaces.html @@ -55,7 +55,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/html/pages.html b/unicorn/doc/unicorn/html/pages.html index adf7e657..74edf0ba 100644 --- a/unicorn/doc/unicorn/html/pages.html +++ b/unicorn/doc/unicorn/html/pages.html @@ -53,7 +53,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/unicorn/doc/unicorn/latex/refman.tex b/unicorn/doc/unicorn/latex/refman.tex index 9931993e..c7e66b54 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.5}\\ \vspace*{0.5cm} - {\small Sat Aug 18 2018 22:39:43}\\ + {\small Mon Oct 1 2018 14:29:13}\\ \end{center} \end{titlepage} diff --git a/unicorn/src/coriolis.py b/unicorn/src/coriolis.py index 810fd6ed..fe3aed55 100755 --- a/unicorn/src/coriolis.py +++ b/unicorn/src/coriolis.py @@ -142,7 +142,7 @@ if location & Location.SetBasePythonPath: pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'crlcore') ) pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'stratus') ) pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'cumulus') ) -pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'pharos' ) ) +pythonPath.insert( 0, os.path.join(coriolisTop,pythonSitePackages,'oroshi' ) ) pythonPath.export() pythonPath.show() diff --git a/vlsisapd/doc/html/agds.html b/vlsisapd/doc/html/agds.html index 73227d34..f1c0873e 100644 --- a/vlsisapd/doc/html/agds.html +++ b/vlsisapd/doc/html/agds.html @@ -165,7 +165,7 @@ Python
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/annotated.html b/vlsisapd/doc/html/annotated.html index 80d3bc73..26a03c1f 100644 --- a/vlsisapd/doc/html/annotated.html +++ b/vlsisapd/doc/html/annotated.html @@ -103,7 +103,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/cif.html b/vlsisapd/doc/html/cif.html index 4dad3070..573f49c9 100644 --- a/vlsisapd/doc/html/cif.html +++ b/vlsisapd/doc/html/cif.html @@ -129,7 +129,7 @@ Python
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b27f2760..aa21c346 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b38e1087..af983218 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 @@ -200,7 +200,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a9f546f8..d5f87727 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 @@ -115,7 +115,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 d20cfc24..e45d1195 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 @@ -106,7 +106,7 @@ std::string  - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 a6aba3e9..31cbfdc9 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 @@ -148,7 +148,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 dde0521c..e73e181d 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 @@ -113,7 +113,7 @@ Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 eb06724d..fb2fe7d5 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6ac2dadc..cb857ba7 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 6dad541a..9c43d69c 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 @@ -222,7 +222,7 @@ const std::string & 
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 e8a68cb5..81a93b48 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 @@ -456,7 +456,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_name.html b/vlsisapd/doc/html/class_name.html index 9fd79817..0e28d219 100644 --- a/vlsisapd/doc/html/class_name.html +++ b/vlsisapd/doc/html/class_name.html @@ -36,7 +36,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_bloc.html b/vlsisapd/doc/html/class_open_chams_1_1_bloc.html index 86c7bbc4..539e0a14 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_bloc.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_bloc.html @@ -132,7 +132,7 @@ bool 
                                                                                            - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_circuit.html b/vlsisapd/doc/html/class_open_chams_1_1_circuit.html index 1432a708..7d4ba5b8 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_circuit.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_circuit.html @@ -392,7 +392,7 @@ Static Public Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_d_d_p.html b/vlsisapd/doc/html/class_open_chams_1_1_d_d_p.html index 88607e8a..aeecb13d 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_d_d_p.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_d_d_p.html @@ -47,7 +47,7 @@ Inheritance diagram for DDP:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_d_slicing_node.html b/vlsisapd/doc/html/class_open_chams_1_1_d_slicing_node.html index 277828bc..63726992 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_d_slicing_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_d_slicing_node.html @@ -47,7 +47,7 @@ Inheritance diagram for DSlicingNode:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_designer_cstr_o_c.html b/vlsisapd/doc/html/class_open_chams_1_1_designer_cstr_o_c.html index 8847fb9f..491c06bd 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_designer_cstr_o_c.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_designer_cstr_o_c.html @@ -47,7 +47,7 @@ Inheritance diagram for DesignerCstrOC:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_device.html b/vlsisapd/doc/html/class_open_chams_1_1_device.html index 257918ae..3eb2ea3c 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_device.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_device.html @@ -188,7 +188,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_equation.html b/vlsisapd/doc/html/class_open_chams_1_1_equation.html index 00532a31..86aa1a8f 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_equation.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_equation.html @@ -50,7 +50,7 @@ Inheritance diagram for Equation:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_group.html b/vlsisapd/doc/html/class_open_chams_1_1_group.html index bb10ef63..07184cfd 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_group.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_group.html @@ -239,7 +239,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_h_slicing_node.html b/vlsisapd/doc/html/class_open_chams_1_1_h_slicing_node.html index 8946fc1a..67de761b 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_h_slicing_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_h_slicing_node.html @@ -48,7 +48,7 @@ Inheritance diagram for HSlicingNode:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_h_v_slicing_node.html b/vlsisapd/doc/html/class_open_chams_1_1_h_v_slicing_node.html index 2ea788f5..ed34b954 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_h_v_slicing_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_h_v_slicing_node.html @@ -49,7 +49,7 @@ Inheritance diagram for HVSlicingNode:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_high_level_cstr.html b/vlsisapd/doc/html/class_open_chams_1_1_high_level_cstr.html index b6f56370..6bf65ba4 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_high_level_cstr.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_high_level_cstr.html @@ -47,7 +47,7 @@ Inheritance diagram for HighLevelCstr:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_instance.html b/vlsisapd/doc/html/class_open_chams_1_1_instance.html index 028bb339..f2cf3a40 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_instance.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_instance.html @@ -112,7 +112,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_instance_point.html b/vlsisapd/doc/html/class_open_chams_1_1_instance_point.html index 63812729..e2c50a8b 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_instance_point.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_instance_point.html @@ -110,7 +110,7 @@ const std::string &  - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_intermediate_point.html b/vlsisapd/doc/html/class_open_chams_1_1_intermediate_point.html index 3d2b978c..14c18472 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_intermediate_point.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_intermediate_point.html @@ -110,7 +110,7 @@ double 
                                                                                            - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_layout.html b/vlsisapd/doc/html/class_open_chams_1_1_layout.html index 55ccce76..3a7d6fa7 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_layout.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_layout.html @@ -163,7 +163,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_n_r_c_cstr.html b/vlsisapd/doc/html/class_open_chams_1_1_n_r_c_cstr.html index 7c858c32..823cf897 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_n_r_c_cstr.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_n_r_c_cstr.html @@ -47,7 +47,7 @@ Inheritance diagram for NRCCstr:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_net.html b/vlsisapd/doc/html/class_open_chams_1_1_net.html index 5b5217b2..fd07a7fd 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_net.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_net.html @@ -266,7 +266,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_net_1_1_connection.html b/vlsisapd/doc/html/class_open_chams_1_1_net_1_1_connection.html index 399aaa8a..62f3c494 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_net_1_1_connection.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_net_1_1_connection.html @@ -93,7 +93,7 @@ const std::string &  - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_netlist.html b/vlsisapd/doc/html/class_open_chams_1_1_netlist.html index 77b51224..f08cd125 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_netlist.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_netlist.html @@ -301,7 +301,7 @@ bool 
                                                                                            - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_node.html b/vlsisapd/doc/html/class_open_chams_1_1_node.html index 3d775ac7..6d5bc79d 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_node.html @@ -152,7 +152,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_open_chams_exception.html b/vlsisapd/doc/html/class_open_chams_1_1_open_chams_exception.html index c32c5938..99194070 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_open_chams_exception.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_open_chams_exception.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_operator.html b/vlsisapd/doc/html/class_open_chams_1_1_operator.html index c0bb379f..3e6a3cb9 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_operator.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_operator.html @@ -109,7 +109,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_operator_1_1_constraint.html b/vlsisapd/doc/html/class_open_chams_1_1_operator_1_1_constraint.html index 20d51617..425b5085 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_operator_1_1_constraint.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_operator_1_1_constraint.html @@ -104,7 +104,7 @@ const std::string &  - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_parameters.html b/vlsisapd/doc/html/class_open_chams_1_1_parameters.html index 19602d0c..67838851 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_parameters.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_parameters.html @@ -129,7 +129,7 @@ bool 
                                                                                            - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_port.html b/vlsisapd/doc/html/class_open_chams_1_1_port.html index 3856d57e..7da610a3 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_port.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_port.html @@ -136,7 +136,7 @@ double  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_port_point.html b/vlsisapd/doc/html/class_open_chams_1_1_port_point.html index 7ba59a5e..917d6779 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_port_point.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_port_point.html @@ -96,7 +96,7 @@ unsigned  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_r_slicing_node.html b/vlsisapd/doc/html/class_open_chams_1_1_r_slicing_node.html index b0d2f23b..65bff59b 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_r_slicing_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_r_slicing_node.html @@ -47,7 +47,7 @@ Inheritance diagram for RSlicingNode:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_schematic.html b/vlsisapd/doc/html/class_open_chams_1_1_schematic.html index d121d30d..96f33794 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_schematic.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_schematic.html @@ -144,7 +144,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_schematic_1_1_infos.html b/vlsisapd/doc/html/class_open_chams_1_1_schematic_1_1_infos.html index f1621d3f..3682712c 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_schematic_1_1_infos.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_schematic_1_1_infos.html @@ -104,7 +104,7 @@ double  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_simul_model.html b/vlsisapd/doc/html/class_open_chams_1_1_simul_model.html index 492acc07..b92901b4 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_simul_model.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_simul_model.html @@ -161,7 +161,7 @@ unsigned  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_sizing.html b/vlsisapd/doc/html/class_open_chams_1_1_sizing.html index 86db836c..5d1bd325 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_sizing.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_sizing.html @@ -180,7 +180,7 @@ bool  - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_slicing_node.html b/vlsisapd/doc/html/class_open_chams_1_1_slicing_node.html index 0cce0635..37fa62a5 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_slicing_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_slicing_node.html @@ -51,7 +51,7 @@ Inheritance diagram for SlicingNode:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_transistor.html b/vlsisapd/doc/html/class_open_chams_1_1_transistor.html index f7f3e951..47301a03 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_transistor.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_transistor.html @@ -254,7 +254,7 @@ const std::string &  - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_v_slicing_node.html b/vlsisapd/doc/html/class_open_chams_1_1_v_slicing_node.html index 5ea60540..d9a76426 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_v_slicing_node.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_v_slicing_node.html @@ -48,7 +48,7 @@ Inheritance diagram for VSlicingNode:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/class_open_chams_1_1_wire.html b/vlsisapd/doc/html/class_open_chams_1_1_wire.html index 6d59e723..1161dff3 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_wire.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_wire.html @@ -167,7 +167,7 @@ bool 
                                                                                            - Generated by doxygen 1.8.5 on Sat Aug 18 2018 + Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page diff --git a/vlsisapd/doc/html/class_open_chams_1_1_wire_point.html b/vlsisapd/doc/html/class_open_chams_1_1_wire_point.html index 350fc270..8d372e9b 100644 --- a/vlsisapd/doc/html/class_open_chams_1_1_wire_point.html +++ b/vlsisapd/doc/html/class_open_chams_1_1_wire_point.html @@ -51,7 +51,7 @@ Inheritance diagram for WirePoint:
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 98898379..2f374db9 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 @@ std::string > &  - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9eda1fcb..88c6de52 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 @@ -375,7 +375,7 @@ std::string 
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 16cc80bc..cc795951 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 @@ -140,7 +140,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 9bc862ab..cd712256 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 @@ -214,7 +214,7 @@ std::string > & 
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 c906e613..ea25415d 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 @@ std::string > & 
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 cbdcd8d6..d0407983 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 @@ std::string > & 
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 3bae5d48..f21577a1 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 @@ -137,7 +137,7 @@ Protected Member Functions
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 45bbc047..646a5b6f 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 11fab996..680135d8 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 @@ -273,7 +273,7 @@ std::string > & 
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 b80ee4fb..13e921bf 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 5d5432d9..d0a10932 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 @@ -140,7 +140,7 @@ Additional Inherited Members
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/classes.html b/vlsisapd/doc/html/classes.html index 70150317..0481c6d0 100644 --- a/vlsisapd/doc/html/classes.html +++ b/vlsisapd/doc/html/classes.html @@ -77,7 +77,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/contact.html b/vlsisapd/doc/html/contact.html index be5e0e4c..8ea9fea1 100644 --- a/vlsisapd/doc/html/contact.html +++ b/vlsisapd/doc/html/contact.html @@ -43,7 +43,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_16663e997a305b34a6de63a94b7c64a5.html b/vlsisapd/doc/html/dir_16663e997a305b34a6de63a94b7c64a5.html index 13a53d92..9cf50c6d 100644 --- a/vlsisapd/doc/html/dir_16663e997a305b34a6de63a94b7c64a5.html +++ b/vlsisapd/doc/html/dir_16663e997a305b34a6de63a94b7c64a5.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_2e9643828817c97812213788475aab5c.html b/vlsisapd/doc/html/dir_2e9643828817c97812213788475aab5c.html index e808e561..b3a3d141 100644 --- a/vlsisapd/doc/html/dir_2e9643828817c97812213788475aab5c.html +++ b/vlsisapd/doc/html/dir_2e9643828817c97812213788475aab5c.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_44cf75b6f4d33f3b1de8b5b6d95c4767.html b/vlsisapd/doc/html/dir_44cf75b6f4d33f3b1de8b5b6d95c4767.html index 2142e45c..638bd27c 100644 --- a/vlsisapd/doc/html/dir_44cf75b6f4d33f3b1de8b5b6d95c4767.html +++ b/vlsisapd/doc/html/dir_44cf75b6f4d33f3b1de8b5b6d95c4767.html @@ -48,7 +48,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_4c2a900f04506337a917f3b1377e2113.html b/vlsisapd/doc/html/dir_4c2a900f04506337a917f3b1377e2113.html index 61994c09..7e48f1c8 100644 --- a/vlsisapd/doc/html/dir_4c2a900f04506337a917f3b1377e2113.html +++ b/vlsisapd/doc/html/dir_4c2a900f04506337a917f3b1377e2113.html @@ -55,7 +55,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_4edc6cb509aee81bf131e74f57ae2ac2.html b/vlsisapd/doc/html/dir_4edc6cb509aee81bf131e74f57ae2ac2.html index d814ff64..264ea0e3 100644 --- a/vlsisapd/doc/html/dir_4edc6cb509aee81bf131e74f57ae2ac2.html +++ b/vlsisapd/doc/html/dir_4edc6cb509aee81bf131e74f57ae2ac2.html @@ -53,7 +53,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_5ae6c17f233c8279b5a5e75367c9c1fd.html b/vlsisapd/doc/html/dir_5ae6c17f233c8279b5a5e75367c9c1fd.html index 766f8663..d445f6df 100644 --- a/vlsisapd/doc/html/dir_5ae6c17f233c8279b5a5e75367c9c1fd.html +++ b/vlsisapd/doc/html/dir_5ae6c17f233c8279b5a5e75367c9c1fd.html @@ -50,7 +50,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_5ddae980bfca85f3a0fc4acc697df818.html b/vlsisapd/doc/html/dir_5ddae980bfca85f3a0fc4acc697df818.html index 70e9e540..4446b3dd 100644 --- a/vlsisapd/doc/html/dir_5ddae980bfca85f3a0fc4acc697df818.html +++ b/vlsisapd/doc/html/dir_5ddae980bfca85f3a0fc4acc697df818.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_62a21cda08e84450be03057c75fe6c87.html b/vlsisapd/doc/html/dir_62a21cda08e84450be03057c75fe6c87.html index 3c224335..8bd186d5 100644 --- a/vlsisapd/doc/html/dir_62a21cda08e84450be03057c75fe6c87.html +++ b/vlsisapd/doc/html/dir_62a21cda08e84450be03057c75fe6c87.html @@ -88,7 +88,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_7f66ebb56c27e5e012a274d82b424fec.html b/vlsisapd/doc/html/dir_7f66ebb56c27e5e012a274d82b424fec.html index 6bd404fc..2cae0b54 100644 --- a/vlsisapd/doc/html/dir_7f66ebb56c27e5e012a274d82b424fec.html +++ b/vlsisapd/doc/html/dir_7f66ebb56c27e5e012a274d82b424fec.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_84965cd3b8bdf3f7096a0b1a38f3ff74.html b/vlsisapd/doc/html/dir_84965cd3b8bdf3f7096a0b1a38f3ff74.html index af649890..9665a99f 100644 --- a/vlsisapd/doc/html/dir_84965cd3b8bdf3f7096a0b1a38f3ff74.html +++ b/vlsisapd/doc/html/dir_84965cd3b8bdf3f7096a0b1a38f3ff74.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_b0cebf84aafce3f1ce34a5b9287487be.html b/vlsisapd/doc/html/dir_b0cebf84aafce3f1ce34a5b9287487be.html index a8101b82..f9229c3b 100644 --- a/vlsisapd/doc/html/dir_b0cebf84aafce3f1ce34a5b9287487be.html +++ b/vlsisapd/doc/html/dir_b0cebf84aafce3f1ce34a5b9287487be.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_cc47161e5a891225af1545e3c32d2b04.html b/vlsisapd/doc/html/dir_cc47161e5a891225af1545e3c32d2b04.html index 9d52505d..139e0f3b 100644 --- a/vlsisapd/doc/html/dir_cc47161e5a891225af1545e3c32d2b04.html +++ b/vlsisapd/doc/html/dir_cc47161e5a891225af1545e3c32d2b04.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_cfcd2a6b137fd73839de8493b8cf8e71.html b/vlsisapd/doc/html/dir_cfcd2a6b137fd73839de8493b8cf8e71.html index 32325ab0..4f6f2189 100644 --- a/vlsisapd/doc/html/dir_cfcd2a6b137fd73839de8493b8cf8e71.html +++ b/vlsisapd/doc/html/dir_cfcd2a6b137fd73839de8493b8cf8e71.html @@ -52,7 +52,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_e2caf2e1baa789cd2ae3140760971ecd.html b/vlsisapd/doc/html/dir_e2caf2e1baa789cd2ae3140760971ecd.html index 48df5ff2..d9581dac 100644 --- a/vlsisapd/doc/html/dir_e2caf2e1baa789cd2ae3140760971ecd.html +++ b/vlsisapd/doc/html/dir_e2caf2e1baa789cd2ae3140760971ecd.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_eb55033f12c957f0b0d23cc4e1dc88bb.html b/vlsisapd/doc/html/dir_eb55033f12c957f0b0d23cc4e1dc88bb.html index 72a9c8d0..6482dde8 100644 --- a/vlsisapd/doc/html/dir_eb55033f12c957f0b0d23cc4e1dc88bb.html +++ b/vlsisapd/doc/html/dir_eb55033f12c957f0b0d23cc4e1dc88bb.html @@ -89,7 +89,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_f10e074351c7de29d121422ddc53fdd9.html b/vlsisapd/doc/html/dir_f10e074351c7de29d121422ddc53fdd9.html index a17e85c3..06c88afe 100644 --- a/vlsisapd/doc/html/dir_f10e074351c7de29d121422ddc53fdd9.html +++ b/vlsisapd/doc/html/dir_f10e074351c7de29d121422ddc53fdd9.html @@ -51,7 +51,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_f402dd818ece141eaa163f9b534afb62.html b/vlsisapd/doc/html/dir_f402dd818ece141eaa163f9b534afb62.html index 32c7efc7..15325394 100644 --- a/vlsisapd/doc/html/dir_f402dd818ece141eaa163f9b534afb62.html +++ b/vlsisapd/doc/html/dir_f402dd818ece141eaa163f9b534afb62.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_f5f235c9d985a49201c6621a8b780fb2.html b/vlsisapd/doc/html/dir_f5f235c9d985a49201c6621a8b780fb2.html index 41ce44c0..5803278f 100644 --- a/vlsisapd/doc/html/dir_f5f235c9d985a49201c6621a8b780fb2.html +++ b/vlsisapd/doc/html/dir_f5f235c9d985a49201c6621a8b780fb2.html @@ -57,7 +57,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_f70a8257f58d0d2fd08ab2c7f39ed5b0.html b/vlsisapd/doc/html/dir_f70a8257f58d0d2fd08ab2c7f39ed5b0.html index fc53dc6d..b0a352c6 100644 --- a/vlsisapd/doc/html/dir_f70a8257f58d0d2fd08ab2c7f39ed5b0.html +++ b/vlsisapd/doc/html/dir_f70a8257f58d0d2fd08ab2c7f39ed5b0.html @@ -44,7 +44,7 @@ Directories
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_f96c5c2ea4407f1c5a4effd34e21f46e.html b/vlsisapd/doc/html/dir_f96c5c2ea4407f1c5a4effd34e21f46e.html index 330bbd44..c084d79d 100644 --- a/vlsisapd/doc/html/dir_f96c5c2ea4407f1c5a4effd34e21f46e.html +++ b/vlsisapd/doc/html/dir_f96c5c2ea4407f1c5a4effd34e21f46e.html @@ -58,7 +58,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dir_f98d6d61d512f6cad4e8fb729014711e.html b/vlsisapd/doc/html/dir_f98d6d61d512f6cad4e8fb729014711e.html index 5a803515..a4fb73d0 100644 --- a/vlsisapd/doc/html/dir_f98d6d61d512f6cad4e8fb729014711e.html +++ b/vlsisapd/doc/html/dir_f98d6d61d512f6cad4e8fb729014711e.html @@ -46,7 +46,7 @@ Files
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/dtr.html b/vlsisapd/doc/html/dtr.html index ed3a91a8..a3678034 100644 --- a/vlsisapd/doc/html/dtr.html +++ b/vlsisapd/doc/html/dtr.html @@ -191,7 +191,7 @@ Driver
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions.html b/vlsisapd/doc/html/functions.html index 7fb5ac31..67479acf 100644 --- a/vlsisapd/doc/html/functions.html +++ b/vlsisapd/doc/html/functions.html @@ -119,7 +119,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x62.html b/vlsisapd/doc/html/functions_0x62.html index bec7a739..009f0473 100644 --- a/vlsisapd/doc/html/functions_0x62.html +++ b/vlsisapd/doc/html/functions_0x62.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x63.html b/vlsisapd/doc/html/functions_0x63.html index 9f76d8bf..d8f2837d 100644 --- a/vlsisapd/doc/html/functions_0x63.html +++ b/vlsisapd/doc/html/functions_0x63.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x64.html b/vlsisapd/doc/html/functions_0x64.html index 48e905e2..f4b9ade4 100644 --- a/vlsisapd/doc/html/functions_0x64.html +++ b/vlsisapd/doc/html/functions_0x64.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x67.html b/vlsisapd/doc/html/functions_0x67.html index b24b212d..03a2d1e6 100644 --- a/vlsisapd/doc/html/functions_0x67.html +++ b/vlsisapd/doc/html/functions_0x67.html @@ -296,7 +296,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x68.html b/vlsisapd/doc/html/functions_0x68.html index 8280b452..f44e3e92 100644 --- a/vlsisapd/doc/html/functions_0x68.html +++ b/vlsisapd/doc/html/functions_0x68.html @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x69.html b/vlsisapd/doc/html/functions_0x69.html index a7960ebf..26df5c12 100644 --- a/vlsisapd/doc/html/functions_0x69.html +++ b/vlsisapd/doc/html/functions_0x69.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x6c.html b/vlsisapd/doc/html/functions_0x6c.html index 19392b7b..35829db9 100644 --- a/vlsisapd/doc/html/functions_0x6c.html +++ b/vlsisapd/doc/html/functions_0x6c.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x6d.html b/vlsisapd/doc/html/functions_0x6d.html index 6f763d13..25f14dfb 100644 --- a/vlsisapd/doc/html/functions_0x6d.html +++ b/vlsisapd/doc/html/functions_0x6d.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x6e.html b/vlsisapd/doc/html/functions_0x6e.html index eb8a3e3c..46282659 100644 --- a/vlsisapd/doc/html/functions_0x6e.html +++ b/vlsisapd/doc/html/functions_0x6e.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x6f.html b/vlsisapd/doc/html/functions_0x6f.html index 4b931af5..598d4bbd 100644 --- a/vlsisapd/doc/html/functions_0x6f.html +++ b/vlsisapd/doc/html/functions_0x6f.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x70.html b/vlsisapd/doc/html/functions_0x70.html index 3cf20d00..666d1c63 100644 --- a/vlsisapd/doc/html/functions_0x70.html +++ b/vlsisapd/doc/html/functions_0x70.html @@ -46,7 +46,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x72.html b/vlsisapd/doc/html/functions_0x72.html index 04b08981..cb1c91c7 100644 --- a/vlsisapd/doc/html/functions_0x72.html +++ b/vlsisapd/doc/html/functions_0x72.html @@ -47,7 +47,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x73.html b/vlsisapd/doc/html/functions_0x73.html index 24590bb4..ef44f2d5 100644 --- a/vlsisapd/doc/html/functions_0x73.html +++ b/vlsisapd/doc/html/functions_0x73.html @@ -112,7 +112,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x74.html b/vlsisapd/doc/html/functions_0x74.html index c27ef867..f09b3064 100644 --- a/vlsisapd/doc/html/functions_0x74.html +++ b/vlsisapd/doc/html/functions_0x74.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x76.html b/vlsisapd/doc/html/functions_0x76.html index 8a3f6eaa..acf969c4 100644 --- a/vlsisapd/doc/html/functions_0x76.html +++ b/vlsisapd/doc/html/functions_0x76.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_0x77.html b/vlsisapd/doc/html/functions_0x77.html index 257e80bb..54f134cf 100644 --- a/vlsisapd/doc/html/functions_0x77.html +++ b/vlsisapd/doc/html/functions_0x77.html @@ -43,7 +43,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_enum.html b/vlsisapd/doc/html/functions_enum.html index dd13825e..2d124e28 100644 --- a/vlsisapd/doc/html/functions_enum.html +++ b/vlsisapd/doc/html/functions_enum.html @@ -38,7 +38,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func.html b/vlsisapd/doc/html/functions_func.html index 81a5dca1..621e8c2d 100644 --- a/vlsisapd/doc/html/functions_func.html +++ b/vlsisapd/doc/html/functions_func.html @@ -119,7 +119,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x62.html b/vlsisapd/doc/html/functions_func_0x62.html index 136e45f9..8ccb1b43 100644 --- a/vlsisapd/doc/html/functions_func_0x62.html +++ b/vlsisapd/doc/html/functions_func_0x62.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x63.html b/vlsisapd/doc/html/functions_func_0x63.html index 70fbcbc4..8249d40c 100644 --- a/vlsisapd/doc/html/functions_func_0x63.html +++ b/vlsisapd/doc/html/functions_func_0x63.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x64.html b/vlsisapd/doc/html/functions_func_0x64.html index 57a103d6..9dfb3560 100644 --- a/vlsisapd/doc/html/functions_func_0x64.html +++ b/vlsisapd/doc/html/functions_func_0x64.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x67.html b/vlsisapd/doc/html/functions_func_0x67.html index 0adfe45a..c6fb5e9f 100644 --- a/vlsisapd/doc/html/functions_func_0x67.html +++ b/vlsisapd/doc/html/functions_func_0x67.html @@ -296,7 +296,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x68.html b/vlsisapd/doc/html/functions_func_0x68.html index 43e87812..66ce0330 100644 --- a/vlsisapd/doc/html/functions_func_0x68.html +++ b/vlsisapd/doc/html/functions_func_0x68.html @@ -71,7 +71,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x69.html b/vlsisapd/doc/html/functions_func_0x69.html index bc5e16fe..bacdcc97 100644 --- a/vlsisapd/doc/html/functions_func_0x69.html +++ b/vlsisapd/doc/html/functions_func_0x69.html @@ -64,7 +64,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x6c.html b/vlsisapd/doc/html/functions_func_0x6c.html index df4cf814..8917e14a 100644 --- a/vlsisapd/doc/html/functions_func_0x6c.html +++ b/vlsisapd/doc/html/functions_func_0x6c.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x6d.html b/vlsisapd/doc/html/functions_func_0x6d.html index af033ddc..0d1502d0 100644 --- a/vlsisapd/doc/html/functions_func_0x6d.html +++ b/vlsisapd/doc/html/functions_func_0x6d.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x6e.html b/vlsisapd/doc/html/functions_func_0x6e.html index 4a372694..162d1bcb 100644 --- a/vlsisapd/doc/html/functions_func_0x6e.html +++ b/vlsisapd/doc/html/functions_func_0x6e.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x6f.html b/vlsisapd/doc/html/functions_func_0x6f.html index 6c3eac11..3d36ab4f 100644 --- a/vlsisapd/doc/html/functions_func_0x6f.html +++ b/vlsisapd/doc/html/functions_func_0x6f.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x70.html b/vlsisapd/doc/html/functions_func_0x70.html index 181c3bf2..7e4a4c73 100644 --- a/vlsisapd/doc/html/functions_func_0x70.html +++ b/vlsisapd/doc/html/functions_func_0x70.html @@ -46,7 +46,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x72.html b/vlsisapd/doc/html/functions_func_0x72.html index dc8ff9f2..53588ed8 100644 --- a/vlsisapd/doc/html/functions_func_0x72.html +++ b/vlsisapd/doc/html/functions_func_0x72.html @@ -47,7 +47,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x73.html b/vlsisapd/doc/html/functions_func_0x73.html index ee213a3c..68c8d516 100644 --- a/vlsisapd/doc/html/functions_func_0x73.html +++ b/vlsisapd/doc/html/functions_func_0x73.html @@ -112,7 +112,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x74.html b/vlsisapd/doc/html/functions_func_0x74.html index 4912da48..f95cb459 100644 --- a/vlsisapd/doc/html/functions_func_0x74.html +++ b/vlsisapd/doc/html/functions_func_0x74.html @@ -40,7 +40,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x76.html b/vlsisapd/doc/html/functions_func_0x76.html index abe180a5..c7c64984 100644 --- a/vlsisapd/doc/html/functions_func_0x76.html +++ b/vlsisapd/doc/html/functions_func_0x76.html @@ -37,7 +37,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/functions_func_0x77.html b/vlsisapd/doc/html/functions_func_0x77.html index 425e7142..672b0d47 100644 --- a/vlsisapd/doc/html/functions_func_0x77.html +++ b/vlsisapd/doc/html/functions_func_0x77.html @@ -43,7 +43,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/hierarchy.html b/vlsisapd/doc/html/hierarchy.html index a630c298..42588973 100644 --- a/vlsisapd/doc/html/hierarchy.html +++ b/vlsisapd/doc/html/hierarchy.html @@ -98,7 +98,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/index.html b/vlsisapd/doc/html/index.html index ff64d13b..0cd231b1 100644 --- a/vlsisapd/doc/html/index.html +++ b/vlsisapd/doc/html/index.html @@ -58,7 +58,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/openchams.html b/vlsisapd/doc/html/openchams.html index e70e90b8..4d137a4f 100644 --- a/vlsisapd/doc/html/openchams.html +++ b/vlsisapd/doc/html/openchams.html @@ -917,7 +917,7 @@ Driver
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/pages.html b/vlsisapd/doc/html/pages.html index 8efec850..5411a919 100644 --- a/vlsisapd/doc/html/pages.html +++ b/vlsisapd/doc/html/pages.html @@ -39,7 +39,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/spice.html b/vlsisapd/doc/html/spice.html index 303a1f58..39ff80ef 100644 --- a/vlsisapd/doc/html/spice.html +++ b/vlsisapd/doc/html/spice.html @@ -639,7 +639,7 @@ Driver
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 Return to top of page
                                                                                            diff --git a/vlsisapd/doc/html/struct_open_chams_1_1map__item.html b/vlsisapd/doc/html/struct_open_chams_1_1map__item.html index 5ec0c525..2b118910 100644 --- a/vlsisapd/doc/html/struct_open_chams_1_1map__item.html +++ b/vlsisapd/doc/html/struct_open_chams_1_1map__item.html @@ -38,7 +38,7 @@
                                                                                            - +
                                                                                            Generated by doxygen 1.8.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 36abe80a..911dc7e4 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.5 on Sat Aug 18 2018Generated by doxygen 1.8.5 on Mon Oct 1 2018 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 0c3dd5e3..8d957b54 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 95b0a53b..f391f500 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 18b01ac6..2c8e0047 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 691e42cf..42ad257e 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_open_chams_1_1_bloc.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_bloc.pdf index ed92b7e3..162a7e94 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_bloc.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_bloc.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_d_d_p.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_d_d_p.pdf index 73779739..a7b3c346 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_d_d_p.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_d_d_p.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_d_slicing_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_d_slicing_node.pdf index ed20d181..ae1169c1 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_d_slicing_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_d_slicing_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_designer_cstr_o_c.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_designer_cstr_o_c.pdf index 7e352968..92f2ab17 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_designer_cstr_o_c.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_designer_cstr_o_c.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_device.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_device.pdf index 7585c064..1aaceb1d 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_device.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_device.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_equation.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_equation.pdf index 90daf4ec..9440475a 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_equation.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_equation.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_group.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_group.pdf index b046f644..03b2bdd3 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_group.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_group.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_h_slicing_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_h_slicing_node.pdf index 49f70578..0e237f37 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_h_slicing_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_h_slicing_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_h_v_slicing_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_h_v_slicing_node.pdf index 385c3994..2f0c5514 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_h_v_slicing_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_h_v_slicing_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_high_level_cstr.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_high_level_cstr.pdf index 62c50320..90aae06f 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_high_level_cstr.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_high_level_cstr.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_instance.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_instance.pdf index 1e4a5299..043c1514 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_instance.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_instance.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_instance_point.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_instance_point.pdf index 8af04042..d3b55bdf 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_instance_point.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_instance_point.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_intermediate_point.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_intermediate_point.pdf index a39402ed..228e34cf 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_intermediate_point.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_intermediate_point.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_n_r_c_cstr.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_n_r_c_cstr.pdf index 85c022c0..5ed20d9c 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_n_r_c_cstr.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_n_r_c_cstr.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_node.pdf index 880fb50f..58989a99 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_port_point.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_port_point.pdf index fab2d466..dc3de998 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_port_point.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_port_point.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_r_slicing_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_r_slicing_node.pdf index 014ea432..5be5a798 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_r_slicing_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_r_slicing_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_slicing_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_slicing_node.pdf index 37ad48ca..1002906b 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_slicing_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_slicing_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_v_slicing_node.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_v_slicing_node.pdf index 279edf51..1ac78b04 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_v_slicing_node.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_v_slicing_node.pdf differ diff --git a/vlsisapd/doc/latex/class_open_chams_1_1_wire_point.pdf b/vlsisapd/doc/latex/class_open_chams_1_1_wire_point.pdf index aa7e3692..b65bf867 100644 Binary files a/vlsisapd/doc/latex/class_open_chams_1_1_wire_point.pdf and b/vlsisapd/doc/latex/class_open_chams_1_1_wire_point.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 b70d3f93..3db81bd3 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 9c6a1f05..326c1f98 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 22bdfb2a..73fd026c 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 f20d8bf7..59a1a9a7 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 5648fb0b..74359a05 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 618a755d..5eb59476 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 c1608e0c..9804013f 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 diff --git a/vlsisapd/doc/latex/refman.tex b/vlsisapd/doc/latex/refman.tex index fe59d60a..5d3acc14 100644 --- a/vlsisapd/doc/latex/refman.tex +++ b/vlsisapd/doc/latex/refman.tex @@ -67,8 +67,8 @@ \fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} \fancyfoot[LE]{\fancyplain{}{}} \fancyfoot[CE]{\fancyplain{}{}} -\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Sat Aug 18 2018 22\-:39\-:34 for V\-L\-S\-I S\-A\-P\-D by Doxygen }} -\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Sat Aug 18 2018 22\-:39\-:34 for V\-L\-S\-I S\-A\-P\-D by Doxygen }} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Oct 1 2018 14\-:29\-:03 for V\-L\-S\-I S\-A\-P\-D by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Oct 1 2018 14\-:29\-:03 for V\-L\-S\-I S\-A\-P\-D by Doxygen }} \fancyfoot[CO]{\fancyplain{}{}} \fancyfoot[RO]{\fancyplain{}{}} \renewcommand{\footrulewidth}{0.4pt} @@ -120,7 +120,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.5}\\ \vspace*{0.5cm} -{\small Sat Aug 18 2018 22:39:34}\\ +{\small Mon Oct 1 2018 14:29:03}\\ \end{center} \end{titlepage} \clearemptydoublepage