From 393b5a735f05d852826b66dbfac3ca507e115757 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Tue, 17 Mar 2015 22:50:00 +0100 Subject: [PATCH] Remove simulated annealing placer Nimbus/Metis/Mauka. --- bootstrap/build.conf | 6 +- crlcore/python/coriolisInit.py | 6 +- cumulus/src/placeandroute.py | 2 +- cumulus/src/plugins/ChipPlugin.py | 6 +- cumulus/src/plugins/ClockTreePlugin.py | 2 +- cumulus/src/plugins/clocktree/ClockTree.py | 6 +- documentation/examples/AM2901/doChip.py | 6 +- stratus1/src/stratus/st_model.py | 22 ++++---- stratus1/src/stratus/stratus.py | 4 +- unicorn/CMakeLists.txt | 6 +- unicorn/src/CgtMain.cpp | 64 +++++++++++----------- unicorn/src/cgt.py | 51 ++++------------- 12 files changed, 78 insertions(+), 103 deletions(-) diff --git a/bootstrap/build.conf b/bootstrap/build.conf index 3b6a5bc0..0c145caf 100644 --- a/bootstrap/build.conf +++ b/bootstrap/build.conf @@ -14,9 +14,9 @@ projects = [ { 'name' : "importeds" , "vlsisapd" , "hurricane" , "crlcore" - , "nimbus" - , "metis" - , "mauka" + #, "nimbus" + #, "metis" + #, "mauka" , "etesian" , "knik" , "katabatic" diff --git a/crlcore/python/coriolisInit.py b/crlcore/python/coriolisInit.py index b22f23c9..e60895f3 100644 --- a/crlcore/python/coriolisInit.py +++ b/crlcore/python/coriolisInit.py @@ -90,9 +90,9 @@ def coriolisConfigure(): , (helpers.symbolicDir+'/patterns.conf', SystemFile|PatternsHelper) , (helpers.symbolicDir+'/display.conf' , SystemFile|DisplayHelper) , (helpers.symbolicDir+'/misc.conf' , SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/hMetis.conf' , SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/nimbus.conf' , SystemFile|ConfigurationHelper) - , (helpers.symbolicDir+'/mauka.conf' , SystemFile|ConfigurationHelper) + #, (helpers.symbolicDir+'/hMetis.conf' , SystemFile|ConfigurationHelper) + #, (helpers.symbolicDir+'/nimbus.conf' , SystemFile|ConfigurationHelper) + #, (helpers.symbolicDir+'/mauka.conf' , SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/etesian.conf' , SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/kite.conf' , SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/stratus1.conf', SystemFile|ConfigurationHelper) diff --git a/cumulus/src/placeandroute.py b/cumulus/src/placeandroute.py index c359c1ee..ad08e86f 100644 --- a/cumulus/src/placeandroute.py +++ b/cumulus/src/placeandroute.py @@ -6,7 +6,7 @@ import Cfg from Hurricane import * from helpers import ErrorMessage import CRL -import Mauka +#import Mauka #import Knik #import Kite diff --git a/cumulus/src/plugins/ChipPlugin.py b/cumulus/src/plugins/ChipPlugin.py index 6829f366..93219970 100644 --- a/cumulus/src/plugins/ChipPlugin.py +++ b/cumulus/src/plugins/ChipPlugin.py @@ -45,9 +45,9 @@ try: import helpers from helpers import ErrorMessage from helpers import WarningMessage - import Nimbus - import Metis - import Mauka + #import Nimbus + #import Metis + #import Mauka import Etesian import Katabatic import Kite diff --git a/cumulus/src/plugins/ClockTreePlugin.py b/cumulus/src/plugins/ClockTreePlugin.py index f90f2797..54978b66 100755 --- a/cumulus/src/plugins/ClockTreePlugin.py +++ b/cumulus/src/plugins/ClockTreePlugin.py @@ -26,7 +26,7 @@ try: import helpers from helpers import trace from helpers import ErrorMessage - import Mauka + #import Mauka import Etesian import Unicorn import plugins diff --git a/cumulus/src/plugins/clocktree/ClockTree.py b/cumulus/src/plugins/clocktree/ClockTree.py index a27f9f00..53509980 100755 --- a/cumulus/src/plugins/clocktree/ClockTree.py +++ b/cumulus/src/plugins/clocktree/ClockTree.py @@ -42,9 +42,9 @@ try: import helpers from helpers import trace from helpers import ErrorMessage - import Nimbus - import Metis - import Mauka + #import Nimbus + #import Metis + #import Mauka import Katabatic import Kite import Unicorn diff --git a/documentation/examples/AM2901/doChip.py b/documentation/examples/AM2901/doChip.py index 324c2903..60b04a3d 100755 --- a/documentation/examples/AM2901/doChip.py +++ b/documentation/examples/AM2901/doChip.py @@ -15,9 +15,9 @@ try: import Viewer import CRL from helpers import ErrorMessage - import Nimbus - import Metis - import Mauka + #import Nimbus + #import Metis + #import Mauka import Etesian import Katabatic import Kite diff --git a/stratus1/src/stratus/st_model.py b/stratus1/src/stratus/st_model.py index 0b7ace14..f4fc20de 100644 --- a/stratus1/src/stratus/st_model.py +++ b/stratus1/src/stratus/st_model.py @@ -1327,18 +1327,18 @@ class Model : ############################################################################# ############################## Place and route ############################## ############################################################################# - def getCore ( self ) : - '''This function returns the instance "core" : the only one which is not a pad''' + #def getCore ( self ) : + # '''This function returns the instance "core" : the only one which is not a pad''' - from placeandroute import isPad + # from placeandroute import isPad - cores = [] - for instance in self._hur_cell.getInstances(): - if not isPad ( instance ): - cores.append ( instance ) + # cores = [] + # for instance in self._hur_cell.getInstances(): + # if not isPad ( instance ): + # cores.append ( instance ) - if len(cores) == 0 : err = "\n[Stratus ERROR] getCore : No core found.\n" - elif len(cores) > 1 : err = "\n[Stratus ERROR] getCore : More than one core found.\n" - if len(cores) != 1 : raise Exception ( err ) + # if len(cores) == 0 : err = "\n[Stratus ERROR] getCore : No core found.\n" + # elif len(cores) > 1 : err = "\n[Stratus ERROR] getCore : More than one core found.\n" + # if len(cores) != 1 : raise Exception ( err ) - return cores[0] + # return cores[0] diff --git a/stratus1/src/stratus/stratus.py b/stratus1/src/stratus/stratus.py index aa1cc453..1bb7316d 100644 --- a/stratus1/src/stratus/stratus.py +++ b/stratus1/src/stratus/stratus.py @@ -36,7 +36,7 @@ try: from st_net import * from st_instance import * from st_placement import * - from st_placeAndRoute import * + #from st_placeAndRoute import * from st_ref import * from st_generate import * from st_const import * @@ -73,6 +73,7 @@ DoStop = 0x0004 def buildModel ( name, flags ): try: + print name module = __import__( name, globals(), locals(), name ) if not module.__dict__.has_key(name): print '[ERROR] Stratus module <%s> do not contains a design of the same name.' % name @@ -95,6 +96,7 @@ def buildModel ( name, flags ): print '[ERROR] The <%s> Stratus design cannot be loaded.' % module print ' Please check your design hierarchy.' + print e sys.exit(1) except Exception, e: print '[ERROR] A strange exception occurred while loading the Stratus' diff --git a/unicorn/CMakeLists.txt b/unicorn/CMakeLists.txt index fc25aac1..7fd76f47 100644 --- a/unicorn/CMakeLists.txt +++ b/unicorn/CMakeLists.txt @@ -24,9 +24,9 @@ find_package(VLSISAPD REQUIRED) find_package(HURRICANE REQUIRED) find_package(CORIOLIS REQUIRED) - find_package(NIMBUS REQUIRED) - find_package(METIS REQUIRED) - find_package(MAUKA REQUIRED) +#find_package(NIMBUS REQUIRED) +#find_package(METIS REQUIRED) +#find_package(MAUKA REQUIRED) find_package(ETESIAN REQUIRED) find_package(KNIK REQUIRED) find_package(KATABATIC REQUIRED) diff --git a/unicorn/src/CgtMain.cpp b/unicorn/src/CgtMain.cpp index 09e6668d..27729efe 100644 --- a/unicorn/src/CgtMain.cpp +++ b/unicorn/src/CgtMain.cpp @@ -55,14 +55,14 @@ using namespace Hurricane; #include "crlcore/DefExport.h" using namespace CRL; -#include "nimbus/NimbusEngine.h" -using namespace Nimbus; +// #include "nimbus/NimbusEngine.h" +// using namespace Nimbus; -#include "metis/MetisEngine.h" -using namespace Metis; +// #include "metis/MetisEngine.h" +// using namespace Metis; -#include "mauka/GraphicMaukaEngine.h" -using namespace Mauka; +// #include "mauka/GraphicMaukaEngine.h" +// using namespace Mauka; #include "etesian/GraphicEtesianEngine.h" using namespace Etesian; @@ -327,7 +327,7 @@ int main ( int argc, char *argv[] ) dbo_ptr unicorn ( UnicornGui::create() ); unicorn->setApplicationName ( QObject::tr("cgt") ); - unicorn->registerTool ( Mauka::GraphicMaukaEngine::grab() ); + //unicorn->registerTool ( Mauka::GraphicMaukaEngine::grab() ); unicorn->registerTool ( Etesian::GraphicEtesianEngine::grab() ); //unicorn->registerTool ( Knik::GraphicKnikEngine::grab() ); unicorn->registerTool ( Kite::GraphicKiteEngine::grab() ); @@ -354,40 +354,40 @@ int main ( int argc, char *argv[] ) if ( quadriPlace and annealingPlace ) annealingPlace = false; - if ( not MetisEngine::isHMetisCapable() and quadriPlace ) { - cerr << Warning("hMETIS is not avalaible, revert to simulated annealing.") << endl; + // if ( not MetisEngine::isHMetisCapable() and quadriPlace ) { + // cerr << Warning("hMETIS is not avalaible, revert to simulated annealing.") << endl; - annealingPlace = true; - quadriPlace = false; - } + // annealingPlace = true; + // quadriPlace = false; + // } - bool runMaukaTool = quadriPlace or annealingPlace; + // bool runMaukaTool = quadriPlace or annealingPlace; - if ( runMaukaTool ) { - NimbusEngine* nimbus = NULL; - MetisEngine* metis = NULL; - MaukaEngine* mauka = NULL; + // if ( runMaukaTool ) { + // NimbusEngine* nimbus = NULL; + // MetisEngine* metis = NULL; + // MaukaEngine* mauka = NULL; - nimbus = NimbusEngine::create ( cell ); - if ( showConf ) nimbus->printConfiguration(); + // nimbus = NimbusEngine::create ( cell ); + // if ( showConf ) nimbus->printConfiguration(); - if ( annealingPlace ) { - Cfg::getParamPercentage("mauka.standardAnnealing")->setBool ( true ); - } + // if ( annealingPlace ) { + // Cfg::getParamPercentage("mauka.standardAnnealing")->setBool ( true ); + // } - if ( quadriPlace ) { - metis = MetisEngine::create ( cell ); - if ( showConf ) metis->printConfiguration(); + // if ( quadriPlace ) { + // metis = MetisEngine::create ( cell ); + // if ( showConf ) metis->printConfiguration(); - MetisEngine::doQuadriPart ( cell ); - MaukaEngine::regroupOverloadedGCells ( cell ); - } + // MetisEngine::doQuadriPart ( cell ); + // MaukaEngine::regroupOverloadedGCells ( cell ); + // } - mauka = MaukaEngine::create ( cell ); - if ( showConf ) mauka->printConfiguration(); + // mauka = MaukaEngine::create ( cell ); + // if ( showConf ) mauka->printConfiguration(); - mauka->Run (); - } + // mauka->Run (); + // } if ( detailedRoute and not (loadGlobal or globalRoute) ) globalRoute = true; diff --git a/unicorn/src/cgt.py b/unicorn/src/cgt.py index 72d8637f..b4e96f2e 100755 --- a/unicorn/src/cgt.py +++ b/unicorn/src/cgt.py @@ -8,9 +8,6 @@ try: import Hurricane import Viewer import CRL - import Nimbus - import Metis - import Mauka import Etesian import Katabatic import Kite @@ -102,9 +99,7 @@ if __name__ == '__main__': parser.add_option( '-L', '--log-mode' , action='store_true', dest='logMode' , help='Disable ANSI escape sequences in console output.') parser.add_option( '-t', '--text' , action='store_true', dest='textMode' , help='Run in command line mode.') parser.add_option( '-m', '--margin' , type='float' , dest='margin' , help='Percentage of free area to add to the minimal placement area.') - parser.add_option( '-Q', '--quadri-place' , action='store_true', dest='quadPlace' , help='Performs a quadri-partitionnement as first placement stage.') - parser.add_option( '-P', '--annealing' , action='store_true', dest='annealingPlace' , help='Place using simulated annealing.') - parser.add_option( '--min-psize' , type='int' , dest='minPSize' , help='Sets the size of a leaf partition (quadripartition stage).') + parser.add_option( '-P', '--place' , action='store_true', dest='place' , help='Run the analytical placer (Etesian).') parser.add_option( '-G', '--global-route' , action='store_true', dest='globalRoute' , help='Run the global router (Knik).') parser.add_option( '-g', '--load-global' , action='store_true', dest='loadGlobal' , help='Reload a global routing from disk.') parser.add_option( '--save-global' , action='store_true', dest='saveGlobal' , help='Save the global routing solution.') @@ -132,7 +127,7 @@ if __name__ == '__main__': if options.bug: Cfg.getParamBool ('misc.bug' ).setBool(True) if options.logMode: Cfg.getParamBool ('misc.logMode' ).setBool(True) if options.showConf: Cfg.getParamBool ('misc.showConf' ).setBool(True) - if options.margin: Cfg.getParamPercentage('nimbus.spaceMargin').setPercentage(options.margin) + if options.margin: Cfg.getParamPercentage('etesian.spaceMargin').setPercentage(options.margin) if options.minPSize: Cfg.getParamInt ('metis.numberOfInstancesStopCriterion').setInt(options.minPSize) if options.hTracksLocal: Cfg.getParamInt ('kite.hTracksReservedLocal').setInt(options.hTracksLocal) if options.vTracksLocal: Cfg.getParamInt ('kite.vTracksReservedLocal').setInt(options.vTracksLocal) @@ -156,12 +151,11 @@ if __name__ == '__main__': elif options.cell: cell = af.getCell(options.cell, CRL.Catalog.State.Views) else: - quadPlace = False - annealingPlace = False - loadGlobal = False - saveGlobal = False - globalRoute = False - detailRoute = False + place = False + loadGlobal = False + saveGlobal = False + globalRoute = False + detailRoute = False if not options.textMode: # Run in graphic mode. @@ -170,7 +164,6 @@ if __name__ == '__main__': unicorn = Unicorn.UnicornGui.create() unicorn.setApplicationName ('cgt') - unicorn.registerTool (Mauka.GraphicMaukaEngine.grab()) unicorn.registerTool (Etesian.GraphicEtesianEngine.grab()) unicorn.registerTool (Kite.GraphicKiteEngine.grab()) #unicorn.setAnonNetSelectable(False) @@ -192,32 +185,12 @@ if __name__ == '__main__': # Run in command line mode. kiteSuccess = False - if quadPlace or annealingPlace: - loadGlobal = False - globalRoute = True - if quadPlace and annealingPlace: - annealingPlace = False + runEtesianTool = place - runMaukaTool = quadPlace or annealingPlace - - if runMaukaTool: - nimbus = Nimbus.NimbusEngine.create(cell) - if options.showConf: nimbus.printConfiguration() - - if annealingPlace: - Cfg.getParamPercentage('mauka.standardAnnealing').setBool(True); - - if quadPlace: - metis = Metis.MetisEngine.create(cell) - if options.showConf: metis.printConfiguration() - - Metis.MetisEngine.doQuadriPart(cell) - Mauka.MaukaEngine.regroupOverloadedGCells(cell) - - mauka = Mauka.MaukaEngine.create(cell) - if options.showConf: mauka.printConfiguration() - - mauka.run() + if runEtesianTool: + etesian = Nimbus.NimbusEngine.create(cell) + #if options.showConf: etesian.printConfiguration() + etesian.run() if detailRoute and not (loadGlobal or globalRoute): globalRoute = True runKiteTool = loadGlobal or globalRoute or detailRoute