Remove simulated annealing placer Nimbus/Metis/Mauka.
This commit is contained in:
parent
5dc60415e7
commit
393b5a735f
|
@ -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"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue