123 lines
5.5 KiB
Python
123 lines
5.5 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
|
||
|
try:
|
||
|
import sys
|
||
|
import os.path
|
||
|
import optparse
|
||
|
import Cfg
|
||
|
import Hurricane
|
||
|
import Viewer
|
||
|
from helpers import showPythonTrace
|
||
|
import CRL
|
||
|
import Unicorn
|
||
|
import Tutorial
|
||
|
except ImportError, e:
|
||
|
serror = str(e)
|
||
|
if serror.startswith('No module named'):
|
||
|
module = serror.split()[-1]
|
||
|
print '[ERROR] The <%s> python module or symbol cannot be loaded.' % module
|
||
|
print ' Please check the integrity of the <coriolis> package.'
|
||
|
if serror.find('cannot open shared object file'):
|
||
|
library = serror.split(':')[0]
|
||
|
print '[ERROR] The <%s> shared library cannot be loaded.' % library
|
||
|
print ' Under RHEL 6, you must be under devtoolset-2.'
|
||
|
print ' (scl enable devtoolset-2 bash)'
|
||
|
sys.exit(1)
|
||
|
except Exception, e:
|
||
|
print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python'
|
||
|
print ' modules. Something may be wrong at Python/C API level.\n'
|
||
|
print ' %s' % e
|
||
|
sys.exit(2)
|
||
|
|
||
|
|
||
|
def setCgtBanner ( banner ):
|
||
|
banner.setName('tutu')
|
||
|
banner.setPurpose('Tutorial for Users')
|
||
|
return banner
|
||
|
|
||
|
|
||
|
def credits ():
|
||
|
s = ''
|
||
|
s += ' Tool Credits\n'
|
||
|
s += ' Hurricane .................... Remy Escassut & Christian Masson\n'
|
||
|
return s
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
|
||
|
try:
|
||
|
usage = str(setCgtBanner(CRL.Banner()))
|
||
|
usage += '\ncgt [options]'
|
||
|
|
||
|
parser = optparse.OptionParser(usage)
|
||
|
parser.add_option( '--no-init' , action='store_true', dest='noInit' , help='Do not load any initialization.')
|
||
|
parser.add_option( '-c', '--cell' , type='string' , dest='cell' , help='The name of the cell to load, whithout extension.')
|
||
|
parser.add_option( '--acm-sigda-89' , type='string' , dest='acmSigdaName' , help='An ACM/SIGDA 89 bench name to load, whithout extension.')
|
||
|
parser.add_option( '--blif' , type='string' , dest='blifName' , help='A Blif (Yosys) design name to load, whithout extension.')
|
||
|
parser.add_option( '--ispd-05' , type='string' , dest='ispd05name' , help='An ISPD 05 bench (placement) name to load, whithout extension.')
|
||
|
parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.')
|
||
|
parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose' , help='Second level of verbosity.')
|
||
|
parser.add_option( '-i', '--info' , action='store_true', dest='info' , help='Display lots of informational messages.')
|
||
|
parser.add_option( '--paranoid' , action='store_true', dest='paranoid' , help='Display everything that *may be* suspicious...')
|
||
|
parser.add_option( '-b', '--bug' , action='store_true', dest='bug' , help='Display bug related messages.')
|
||
|
parser.add_option( '--show-conf' , action='store_true', dest='showConf' , help='Display Kite configuration.')
|
||
|
parser.add_option( '-D', '--core-dump' , action='store_true', dest='coreDump' , help='Enable core-dump when a crash occurs.')
|
||
|
parser.add_option( '-L', '--log-mode' , action='store_true', dest='logMode' , help='Disable ANSI escape sequences in console output.')
|
||
|
(options, args) = parser.parse_args()
|
||
|
args.insert(0, 'tutu')
|
||
|
|
||
|
flags = 0
|
||
|
if options.noInit:
|
||
|
flags |= CRL.AllianceFramework.NoPythonInit
|
||
|
|
||
|
af = CRL.AllianceFramework.create( flags )
|
||
|
print af.getEnvironment().getPrint()
|
||
|
|
||
|
Cfg.Configuration.pushDefaultPriority(Cfg.Parameter.Priority.CommandLine)
|
||
|
|
||
|
if options.coreDump: Cfg.getParamBool ('misc.catchCore' ).setBool(False)
|
||
|
if options.verbose: Cfg.getParamBool ('misc.verboseLevel1').setBool(True)
|
||
|
if options.veryVerbose: Cfg.getParamBool ('misc.verboseLevel2').setBool(True)
|
||
|
if options.info: Cfg.getParamBool ('misc.info' ).setBool(True)
|
||
|
if options.paranoid: Cfg.getParamBool ('misc.paranoid' ).setBool(True)
|
||
|
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)
|
||
|
|
||
|
Cfg.Configuration.popDefaultPriority()
|
||
|
|
||
|
cell = None
|
||
|
if options.acmSigdaName:
|
||
|
cell = CRL.AcmSigda.load(options.acmSigdaName)
|
||
|
elif options.ispd05name:
|
||
|
cell = CRL.Ispd05.load(options.ispd05name)
|
||
|
elif options.blifName:
|
||
|
cell = CRL.Blif.load(options.blifName)
|
||
|
elif options.cell:
|
||
|
cell = af.getCell(options.cell, CRL.Catalog.State.Views)
|
||
|
|
||
|
# Run in graphic mode.
|
||
|
ha = Viewer.HApplication.create(args)
|
||
|
Viewer.Graphics.enable()
|
||
|
|
||
|
unicorn = Unicorn.UnicornGui.create()
|
||
|
unicorn.setApplicationName ('tutu')
|
||
|
unicorn.registerTool (Tutorial.GraphicTutorialEngine.grab())
|
||
|
unicorn.setLayerVisible ("grid" , False);
|
||
|
unicorn.setLayerVisible ("text.instance" , False);
|
||
|
unicorn.setLayerVisible ("text.component", False);
|
||
|
|
||
|
setCgtBanner(unicorn.getBanner())
|
||
|
print unicorn.getBanner()
|
||
|
print credits()
|
||
|
|
||
|
if cell: unicorn.setCell(cell)
|
||
|
unicorn.show()
|
||
|
ha.qtExec()
|
||
|
|
||
|
except Exception, e:
|
||
|
showPythonTrace( sys.argv[0], e )
|
||
|
|
||
|
sys.exit(0)
|