Remove simulated annealing placer Nimbus/Metis/Mauka.

This commit is contained in:
Jean-Paul Chaput 2015-03-17 22:50:00 +01:00
parent 5dc60415e7
commit 393b5a735f
12 changed files with 78 additions and 103 deletions

View File

@ -14,9 +14,9 @@ projects = [ { 'name' : "importeds"
, "vlsisapd" , "vlsisapd"
, "hurricane" , "hurricane"
, "crlcore" , "crlcore"
, "nimbus" #, "nimbus"
, "metis" #, "metis"
, "mauka" #, "mauka"
, "etesian" , "etesian"
, "knik" , "knik"
, "katabatic" , "katabatic"

View File

@ -90,9 +90,9 @@ def coriolisConfigure():
, (helpers.symbolicDir+'/patterns.conf', SystemFile|PatternsHelper) , (helpers.symbolicDir+'/patterns.conf', SystemFile|PatternsHelper)
, (helpers.symbolicDir+'/display.conf' , SystemFile|DisplayHelper) , (helpers.symbolicDir+'/display.conf' , SystemFile|DisplayHelper)
, (helpers.symbolicDir+'/misc.conf' , SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/misc.conf' , SystemFile|ConfigurationHelper)
, (helpers.symbolicDir+'/hMetis.conf' , SystemFile|ConfigurationHelper) #, (helpers.symbolicDir+'/hMetis.conf' , SystemFile|ConfigurationHelper)
, (helpers.symbolicDir+'/nimbus.conf' , SystemFile|ConfigurationHelper) #, (helpers.symbolicDir+'/nimbus.conf' , SystemFile|ConfigurationHelper)
, (helpers.symbolicDir+'/mauka.conf' , SystemFile|ConfigurationHelper) #, (helpers.symbolicDir+'/mauka.conf' , SystemFile|ConfigurationHelper)
, (helpers.symbolicDir+'/etesian.conf' , SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/etesian.conf' , SystemFile|ConfigurationHelper)
, (helpers.symbolicDir+'/kite.conf' , SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/kite.conf' , SystemFile|ConfigurationHelper)
, (helpers.symbolicDir+'/stratus1.conf', SystemFile|ConfigurationHelper) , (helpers.symbolicDir+'/stratus1.conf', SystemFile|ConfigurationHelper)

View File

@ -6,7 +6,7 @@ import Cfg
from Hurricane import * from Hurricane import *
from helpers import ErrorMessage from helpers import ErrorMessage
import CRL import CRL
import Mauka #import Mauka
#import Knik #import Knik
#import Kite #import Kite

View File

@ -45,9 +45,9 @@ try:
import helpers import helpers
from helpers import ErrorMessage from helpers import ErrorMessage
from helpers import WarningMessage from helpers import WarningMessage
import Nimbus #import Nimbus
import Metis #import Metis
import Mauka #import Mauka
import Etesian import Etesian
import Katabatic import Katabatic
import Kite import Kite

View File

@ -26,7 +26,7 @@ try:
import helpers import helpers
from helpers import trace from helpers import trace
from helpers import ErrorMessage from helpers import ErrorMessage
import Mauka #import Mauka
import Etesian import Etesian
import Unicorn import Unicorn
import plugins import plugins

View File

@ -42,9 +42,9 @@ try:
import helpers import helpers
from helpers import trace from helpers import trace
from helpers import ErrorMessage from helpers import ErrorMessage
import Nimbus #import Nimbus
import Metis #import Metis
import Mauka #import Mauka
import Katabatic import Katabatic
import Kite import Kite
import Unicorn import Unicorn

View File

@ -15,9 +15,9 @@ try:
import Viewer import Viewer
import CRL import CRL
from helpers import ErrorMessage from helpers import ErrorMessage
import Nimbus #import Nimbus
import Metis #import Metis
import Mauka #import Mauka
import Etesian import Etesian
import Katabatic import Katabatic
import Kite import Kite

View File

@ -1327,18 +1327,18 @@ class Model :
############################################################################# #############################################################################
############################## Place and route ############################## ############################## Place and route ##############################
############################################################################# #############################################################################
def getCore ( self ) : #def getCore ( self ) :
'''This function returns the instance "core" : the only one which is not a pad''' # '''This function returns the instance "core" : the only one which is not a pad'''
from placeandroute import isPad # from placeandroute import isPad
cores = [] # cores = []
for instance in self._hur_cell.getInstances(): # for instance in self._hur_cell.getInstances():
if not isPad ( instance ): # if not isPad ( instance ):
cores.append ( instance ) # cores.append ( instance )
if len(cores) == 0 : err = "\n[Stratus ERROR] getCore : No core found.\n" # 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" # 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) != 1 : raise Exception ( err )
return cores[0] # return cores[0]

View File

@ -36,7 +36,7 @@ try:
from st_net import * from st_net import *
from st_instance import * from st_instance import *
from st_placement import * from st_placement import *
from st_placeAndRoute import * #from st_placeAndRoute import *
from st_ref import * from st_ref import *
from st_generate import * from st_generate import *
from st_const import * from st_const import *
@ -73,6 +73,7 @@ DoStop = 0x0004
def buildModel ( name, flags ): def buildModel ( name, flags ):
try: try:
print name
module = __import__( name, globals(), locals(), name ) module = __import__( name, globals(), locals(), name )
if not module.__dict__.has_key(name): if not module.__dict__.has_key(name):
print '[ERROR] Stratus module <%s> do not contains a design of the same name.' % 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 '[ERROR] The <%s> Stratus design cannot be loaded.' % module
print ' Please check your design hierarchy.' print ' Please check your design hierarchy.'
print e
sys.exit(1) sys.exit(1)
except Exception, e: except Exception, e:
print '[ERROR] A strange exception occurred while loading the Stratus' print '[ERROR] A strange exception occurred while loading the Stratus'

View File

@ -24,9 +24,9 @@
find_package(VLSISAPD REQUIRED) find_package(VLSISAPD REQUIRED)
find_package(HURRICANE REQUIRED) find_package(HURRICANE REQUIRED)
find_package(CORIOLIS REQUIRED) find_package(CORIOLIS REQUIRED)
find_package(NIMBUS REQUIRED) #find_package(NIMBUS REQUIRED)
find_package(METIS REQUIRED) #find_package(METIS REQUIRED)
find_package(MAUKA REQUIRED) #find_package(MAUKA REQUIRED)
find_package(ETESIAN REQUIRED) find_package(ETESIAN REQUIRED)
find_package(KNIK REQUIRED) find_package(KNIK REQUIRED)
find_package(KATABATIC REQUIRED) find_package(KATABATIC REQUIRED)

View File

@ -55,14 +55,14 @@ using namespace Hurricane;
#include "crlcore/DefExport.h" #include "crlcore/DefExport.h"
using namespace CRL; using namespace CRL;
#include "nimbus/NimbusEngine.h" // #include "nimbus/NimbusEngine.h"
using namespace Nimbus; // using namespace Nimbus;
#include "metis/MetisEngine.h" // #include "metis/MetisEngine.h"
using namespace Metis; // using namespace Metis;
#include "mauka/GraphicMaukaEngine.h" // #include "mauka/GraphicMaukaEngine.h"
using namespace Mauka; // using namespace Mauka;
#include "etesian/GraphicEtesianEngine.h" #include "etesian/GraphicEtesianEngine.h"
using namespace Etesian; using namespace Etesian;
@ -327,7 +327,7 @@ int main ( int argc, char *argv[] )
dbo_ptr<UnicornGui> unicorn ( UnicornGui::create() ); dbo_ptr<UnicornGui> unicorn ( UnicornGui::create() );
unicorn->setApplicationName ( QObject::tr("cgt") ); unicorn->setApplicationName ( QObject::tr("cgt") );
unicorn->registerTool ( Mauka::GraphicMaukaEngine::grab() ); //unicorn->registerTool ( Mauka::GraphicMaukaEngine::grab() );
unicorn->registerTool ( Etesian::GraphicEtesianEngine::grab() ); unicorn->registerTool ( Etesian::GraphicEtesianEngine::grab() );
//unicorn->registerTool ( Knik::GraphicKnikEngine::grab() ); //unicorn->registerTool ( Knik::GraphicKnikEngine::grab() );
unicorn->registerTool ( Kite::GraphicKiteEngine::grab() ); unicorn->registerTool ( Kite::GraphicKiteEngine::grab() );
@ -354,40 +354,40 @@ int main ( int argc, char *argv[] )
if ( quadriPlace and annealingPlace ) if ( quadriPlace and annealingPlace )
annealingPlace = false; annealingPlace = false;
if ( not MetisEngine::isHMetisCapable() and quadriPlace ) { // if ( not MetisEngine::isHMetisCapable() and quadriPlace ) {
cerr << Warning("hMETIS is not avalaible, revert to simulated annealing.") << endl; // cerr << Warning("hMETIS is not avalaible, revert to simulated annealing.") << endl;
annealingPlace = true; // annealingPlace = true;
quadriPlace = false; // quadriPlace = false;
} // }
bool runMaukaTool = quadriPlace or annealingPlace; // bool runMaukaTool = quadriPlace or annealingPlace;
if ( runMaukaTool ) { // if ( runMaukaTool ) {
NimbusEngine* nimbus = NULL; // NimbusEngine* nimbus = NULL;
MetisEngine* metis = NULL; // MetisEngine* metis = NULL;
MaukaEngine* mauka = NULL; // MaukaEngine* mauka = NULL;
nimbus = NimbusEngine::create ( cell ); // nimbus = NimbusEngine::create ( cell );
if ( showConf ) nimbus->printConfiguration(); // if ( showConf ) nimbus->printConfiguration();
if ( annealingPlace ) { // if ( annealingPlace ) {
Cfg::getParamPercentage("mauka.standardAnnealing")->setBool ( true ); // Cfg::getParamPercentage("mauka.standardAnnealing")->setBool ( true );
} // }
if ( quadriPlace ) { // if ( quadriPlace ) {
metis = MetisEngine::create ( cell ); // metis = MetisEngine::create ( cell );
if ( showConf ) metis->printConfiguration(); // if ( showConf ) metis->printConfiguration();
MetisEngine::doQuadriPart ( cell ); // MetisEngine::doQuadriPart ( cell );
MaukaEngine::regroupOverloadedGCells ( cell ); // MaukaEngine::regroupOverloadedGCells ( cell );
} // }
mauka = MaukaEngine::create ( cell ); // mauka = MaukaEngine::create ( cell );
if ( showConf ) mauka->printConfiguration(); // if ( showConf ) mauka->printConfiguration();
mauka->Run (); // mauka->Run ();
} // }
if ( detailedRoute and not (loadGlobal or globalRoute) ) globalRoute = true; if ( detailedRoute and not (loadGlobal or globalRoute) ) globalRoute = true;

View File

@ -8,9 +8,6 @@ try:
import Hurricane import Hurricane
import Viewer import Viewer
import CRL import CRL
import Nimbus
import Metis
import Mauka
import Etesian import Etesian
import Katabatic import Katabatic
import Kite 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( '-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( '-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( '-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', '--place' , action='store_true', dest='place' , help='Run the analytical placer (Etesian).')
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( '-G', '--global-route' , action='store_true', dest='globalRoute' , help='Run the global router (Knik).') 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( '-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.') 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.bug: Cfg.getParamBool ('misc.bug' ).setBool(True)
if options.logMode: Cfg.getParamBool ('misc.logMode' ).setBool(True) if options.logMode: Cfg.getParamBool ('misc.logMode' ).setBool(True)
if options.showConf: Cfg.getParamBool ('misc.showConf' ).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.minPSize: Cfg.getParamInt ('metis.numberOfInstancesStopCriterion').setInt(options.minPSize)
if options.hTracksLocal: Cfg.getParamInt ('kite.hTracksReservedLocal').setInt(options.hTracksLocal) if options.hTracksLocal: Cfg.getParamInt ('kite.hTracksReservedLocal').setInt(options.hTracksLocal)
if options.vTracksLocal: Cfg.getParamInt ('kite.vTracksReservedLocal').setInt(options.vTracksLocal) if options.vTracksLocal: Cfg.getParamInt ('kite.vTracksReservedLocal').setInt(options.vTracksLocal)
@ -156,12 +151,11 @@ if __name__ == '__main__':
elif options.cell: elif options.cell:
cell = af.getCell(options.cell, CRL.Catalog.State.Views) cell = af.getCell(options.cell, CRL.Catalog.State.Views)
else: else:
quadPlace = False place = False
annealingPlace = False loadGlobal = False
loadGlobal = False saveGlobal = False
saveGlobal = False globalRoute = False
globalRoute = False detailRoute = False
detailRoute = False
if not options.textMode: if not options.textMode:
# Run in graphic mode. # Run in graphic mode.
@ -170,7 +164,6 @@ if __name__ == '__main__':
unicorn = Unicorn.UnicornGui.create() unicorn = Unicorn.UnicornGui.create()
unicorn.setApplicationName ('cgt') unicorn.setApplicationName ('cgt')
unicorn.registerTool (Mauka.GraphicMaukaEngine.grab())
unicorn.registerTool (Etesian.GraphicEtesianEngine.grab()) unicorn.registerTool (Etesian.GraphicEtesianEngine.grab())
unicorn.registerTool (Kite.GraphicKiteEngine.grab()) unicorn.registerTool (Kite.GraphicKiteEngine.grab())
#unicorn.setAnonNetSelectable(False) #unicorn.setAnonNetSelectable(False)
@ -192,32 +185,12 @@ if __name__ == '__main__':
# Run in command line mode. # Run in command line mode.
kiteSuccess = False kiteSuccess = False
if quadPlace or annealingPlace: runEtesianTool = place
loadGlobal = False
globalRoute = True
if quadPlace and annealingPlace:
annealingPlace = False
runMaukaTool = quadPlace or annealingPlace if runEtesianTool:
etesian = Nimbus.NimbusEngine.create(cell)
if runMaukaTool: #if options.showConf: etesian.printConfiguration()
nimbus = Nimbus.NimbusEngine.create(cell) etesian.run()
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 detailRoute and not (loadGlobal or globalRoute): globalRoute = True if detailRoute and not (loadGlobal or globalRoute): globalRoute = True
runKiteTool = loadGlobal or globalRoute or detailRoute runKiteTool = loadGlobal or globalRoute or detailRoute