Comprehensive reorganisation of the Python part of Coriolis.
* Move all Python stuff under a common Python namespace "coriolis". * Instead of having a series subtrees for each tool, integrate everything in one common tree. So now, all components can be located either with an absolute path from "coriolis" or, inside cross-reference themselves through relatives imports. * As a consequence, we only need to add ".../site-packages/coriolis/" to the PYTHONPATH, and not a whole bunch of subdirectories. And nothing, if installed in-system. * The tree of free technologies configuration files is also moved below "coriolis/technos" instead of "/etc". * Supressed "cumulus" level for the plugins. * All python modules are rewritten using relative imports except for the configuration files that uses absolute import as they can be cloned outside of the tree to serve as templates. * Change: In boostrap/FindPythonSitePackages, include "/coriolis" in Python_CORIOLISARCH and Python_CORIOLISLIB. Provide a Python_SITELIB *without* "/coriolis" appended. * Change: In cumulus/plugins/__init__.loadPlugins(), must prefix modules read in the plugins directory by "coriolis.plugins.". No longer need to add their path to sys.path. * Change: In crlcore/python/technos/nodeX/*/devices.py, the scripts of the layouts generators must be prefixed by "coriolis.oroshi.". * Change: In CRL::System CTOR, no longer add the pathes of the various plugins to sys.path. Only "site-packages/coriolis/". * New: In Utilities::Path::toPyModePath(), new method to convert a filesystem path into a python module path. Examples: "coriolis/plugins/block" --> "coriolis.plugins.block". "coriolis/plugins/rsave.py" --> "coriolis.plugins.rsave". * Change: In katanaEngine::_runKatanaEngine(), rename the hook script initHook.py. No longer need to modify sys.path. * Change: In BoraEngine::_runBoraEngine(), rename the hook script initHook.py. No longer need to modify sys.path. * Change: In UnicornGui::_runUnicornInit(), rename the hook script initHook.py. No longer need to modify sys.path. * Change: In cumulus.plugins.chip.constants, put the constants outside __init__.py to avoid a loop at initialization.
This commit is contained in:
parent
c37e6ff953
commit
1557d613ae
|
@ -9,7 +9,7 @@ if(UNIX AND NOT POETRY)
|
|||
|
||||
execute_process(COMMAND "${Python_EXECUTABLE}" "-c" "${SCRIPT}"
|
||||
RESULT_VARIABLE RETURN_CODE
|
||||
OUTPUT_VARIABLE Python_CORIOLISARCH
|
||||
OUTPUT_VARIABLE Python_SITEARCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
|
@ -19,7 +19,7 @@ if(UNIX AND NOT POETRY)
|
|||
|
||||
execute_process(COMMAND "${Python_EXECUTABLE}" "-c" "${SCRIPT}"
|
||||
RESULT_VARIABLE RETURN_CODE
|
||||
OUTPUT_VARIABLE Python_CORIOLISLIB
|
||||
OUTPUT_VARIABLE Python_SITELIB
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
|
@ -29,12 +29,15 @@ if(UNIX AND NOT POETRY)
|
|||
set(FindPythonSitePackages_FOUND FALSE)
|
||||
endif(RETURN_CODE EQUAL 0)
|
||||
|
||||
set(Python_CORIOLISARCH "lib${LIB_SUFFIX}/${Python_CORIOLISARCH}"
|
||||
CACHE STRING "Python platform dependent install directory." FORCE)
|
||||
set(Python_CORIOLISLIB "lib${LIB_SUFFIX}/${Python_CORIOLISLIB}"
|
||||
CACHE STRING "Python platform independent install directory." FORCE)
|
||||
set(Python_CORIOLISARCH "lib${LIB_SUFFIX}/${Python_SITEARCH}/coriolis"
|
||||
CACHE STRING "Python platform dependent install directory (Coriolis modules)." FORCE)
|
||||
set(Python_SITELIB "lib${LIB_SUFFIX}/${Python_SITELIB}"
|
||||
CACHE STRING "Python platform independent install directory." FORCE)
|
||||
set(Python_CORIOLISLIB "${Python_SITELIB}/coriolis"
|
||||
CACHE STRING "Python platform independent install directory (Coriolis modules)." FORCE)
|
||||
mark_as_advanced(Python_CORIOLISARCH)
|
||||
mark_as_advanced(Python_CORIOLISLIB)
|
||||
mark_as_advanced(Python_SITELIB)
|
||||
|
||||
if(FindPythonSitePackages_FOUND)
|
||||
if(NOT FindPythonSitePackages_FIND_QUIETLY)
|
||||
|
|
|
@ -288,12 +288,12 @@ if __name__ == "__main__":
|
|||
if os.path.isdir(pyPackageDir):
|
||||
sitePackagesDir = pyPackageDir
|
||||
break
|
||||
strippedPythonPath = "%s:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s/crlcore:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s/cumulus:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s/cumulus/plugins:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s/stratus:" % (sitePackagesDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s:" % (sysconfDir) + strippedPythonPath
|
||||
strippedPythonPath = "%s" % (sitePackagesDir) + strippedPythonPath
|
||||
#strippedPythonPath = "%s/crlcore:" % (sitePackagesDir) + strippedPythonPath
|
||||
#strippedPythonPath = "%s/cumulus:" % (sitePackagesDir) + strippedPythonPath
|
||||
#strippedPythonPath = "%s/cumulus/plugins:" % (sitePackagesDir) + strippedPythonPath
|
||||
#strippedPythonPath = "%s/stratus:" % (sitePackagesDir) + strippedPythonPath
|
||||
#strippedPythonPath = "%s:" % (sysconfDir) + strippedPythonPath
|
||||
shellScriptSh += 'PYTHONPATH="%(PYTHONPATH)s";' \
|
||||
'export PYTHONPATH;'
|
||||
shellScriptCsh += 'setenv PYTHONPATH "%(PYTHONPATH)s";'
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
|
||||
install ( FILES boraInit.py DESTINATION ${Python_CORIOLISLIB}/bora )
|
||||
install ( FILES initHook.py DESTINATION ${Python_CORIOLISLIB}/bora )
|
||||
|
|
|
@ -16,7 +16,7 @@ def boraHook ( **kw ):
|
|||
if 'bora' in kw:
|
||||
bora = kw['bora']
|
||||
else:
|
||||
print( ErrorMessage( 3, 'boraHook(): Must be run from a BoraEngine.' ))
|
||||
print( ErrorMessage( 3, 'bora.initHook(): Must be run from a BoraEngine.' ))
|
||||
return
|
||||
try:
|
||||
userInit = os.path.join( os.getcwd(), 'coriolis2/bora.py' )
|
|
@ -111,17 +111,17 @@ namespace Bora {
|
|||
void BoraEngine::_runBoraInit ()
|
||||
{
|
||||
Utilities::Path pythonSitePackages = System::getPath("pythonSitePackages");
|
||||
Utilities::Path systemConfDir = pythonSitePackages / "bora";
|
||||
Utilities::Path systemConfFile = systemConfDir / "boraInit.py";
|
||||
Utilities::Path confFile = "coriolis/bora/initHook.py";
|
||||
Utilities::Path systemConfFile = pythonSitePackages / confFile;
|
||||
|
||||
if (systemConfFile.exists()) {
|
||||
Isobar::Script::addPath( systemConfDir.toString() );
|
||||
//Isobar::Script::addPath( systemConfDir.toString() );
|
||||
|
||||
dbo_ptr<Isobar::Script> script = Isobar::Script::create( systemConfFile.stem().toString() );
|
||||
dbo_ptr<Isobar::Script> script = Isobar::Script::create( confFile.toPyModPath() );
|
||||
script->addKwArgument( "bora" , (PyObject*)PyBoraEngine_Link(this) );
|
||||
script->runFunction ( "boraHook", getCell() );
|
||||
|
||||
Isobar::Script::removePath( systemConfDir.toString() );
|
||||
//Isobar::Script::removePath( systemConfDir.toString() );
|
||||
} else {
|
||||
cerr << Warning( "Bora system configuration file:\n <%s> not found."
|
||||
, systemConfFile.toString().c_str() ) << endl;
|
||||
|
|
|
@ -41,6 +41,5 @@
|
|||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(python)
|
||||
add_subdirectory(etc)
|
||||
add_subdirectory(cmake_modules)
|
||||
add_subdirectory(doc)
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
|
||||
install( DIRECTORY common DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY symbolic DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node45 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node180 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node600 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
|
|
@ -1,136 +0,0 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, 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 : "./node180/scn6m_deep_09/devices.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
|
||||
import common.devices
|
||||
from common.devices import addDevice
|
||||
|
||||
chamsDir = helpers.sysConfDir + '/share/coriolis2/'
|
||||
spiceDir = chamsDir + 'spice/'
|
||||
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( 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' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'MultiCapacitor'
|
||||
#, spice = spiceDir+'MIM_OneCapacitor.spi'
|
||||
#, connectors = ( 'T1', 'B1' )
|
||||
, layouts = ( ('Matrix', 'capacitormatrix.py' ),
|
||||
)
|
||||
)
|
||||
addDevice( name = 'Resistor'
|
||||
#, spice = spiceDir+'MIM_OneCapacitor.spi'
|
||||
, connectors = ( 'PIN1', 'PIN2' )
|
||||
, layouts = ( ('Snake', 'resistorsnake.py' ),
|
||||
)
|
||||
)
|
||||
|
|
@ -1,7 +1,15 @@
|
|||
|
||||
install( FILES __init__.py DESTINATION ${Python_CORIOLISLIB} )
|
||||
install( FILES helpers/__init__.py DESTINATION ${Python_CORIOLISLIB}/helpers )
|
||||
install( FILES helpers/io.py DESTINATION ${Python_CORIOLISLIB}/helpers )
|
||||
install( FILES helpers/utils.py DESTINATION ${Python_CORIOLISLIB}/helpers )
|
||||
install( FILES helpers/overlay.py DESTINATION ${Python_CORIOLISLIB}/helpers )
|
||||
install( FILES helpers/analogtechno.py DESTINATION ${Python_CORIOLISLIB}/helpers )
|
||||
install( FILES helpers/technology.py DESTINATION ${Python_CORIOLISLIB}/helpers )
|
||||
|
||||
install( FILES technos/__init__.py DESTINATION ${Python_CORIOLISLIB}/technos )
|
||||
install( DIRECTORY technos/common DESTINATION ${Python_CORIOLISLIB}/technos )
|
||||
install( DIRECTORY technos/symbolic DESTINATION ${Python_CORIOLISLIB}/technos )
|
||||
install( DIRECTORY technos/node600 DESTINATION ${Python_CORIOLISLIB}/technos )
|
||||
install( DIRECTORY technos/node180 DESTINATION ${Python_CORIOLISLIB}/technos )
|
||||
install( DIRECTORY technos/node45 DESTINATION ${Python_CORIOLISLIB}/technos )
|
||||
|
|
|
@ -39,11 +39,10 @@ if not sysModules:
|
|||
for moduleName in sys.modules.keys():
|
||||
sysModules.add( moduleName )
|
||||
|
||||
import Hurricane
|
||||
import Viewer
|
||||
import CRL
|
||||
import helpers.io
|
||||
from helpers.io import ErrorMessage
|
||||
from ..Hurricane import DbU, DataBase, Net
|
||||
from ..Viewer import Graphics
|
||||
from ..CRL import AllianceFramework
|
||||
from .io import ErrorMessage, WarningMessage
|
||||
|
||||
|
||||
def irange ( value ):
|
||||
|
@ -77,67 +76,6 @@ def truncPath ( path, maxlength=80 ):
|
|||
return '...' + os.sep + trunc
|
||||
|
||||
|
||||
def textStackTrace ( trace, showIndent=True, scriptPath=None ):
|
||||
indent = ''
|
||||
if showIndent: indent = ' '
|
||||
s = ''
|
||||
if scriptPath:
|
||||
if len(scriptPath) > 100:
|
||||
filename = scriptPath[-100:]
|
||||
filename = '.../' + filename[ filename.find('/')+1 : ]
|
||||
|
||||
if showIndent: s += '[ERROR] '
|
||||
s += 'An exception occured while loading the Python script module:\n'
|
||||
s += indent + '\"{}\"\n' % (filename)
|
||||
s += indent + 'You should check for simple python errors in this module.\n\n'
|
||||
|
||||
s += indent + 'Python stack trace:\n'
|
||||
maxdepth = len( trace )
|
||||
for depth in range( maxdepth ):
|
||||
filename, line, function, code = trace[ maxdepth-depth-1 ]
|
||||
if len(filename) > 58:
|
||||
filename = filename[-58:]
|
||||
filename = '.../' + filename[ filename.find('/')+1 : ]
|
||||
#s += indent + '[%02d] %45s:%-5d in \"{}()\"' % ( maxdepth-depth-1, filename, line, function )
|
||||
s += indent + '#{} in {:>25}() at {}:{}\n'.format( depth, function, filename, line )
|
||||
return s
|
||||
|
||||
|
||||
def showStackTrace ( trace ):
|
||||
print( textStackTrace( trace, True ))
|
||||
return
|
||||
|
||||
|
||||
def textPythonTrace ( scriptPath=None, e=None, tryContinue=True ):
|
||||
s = ''
|
||||
if scriptPath:
|
||||
if len(scriptPath) > 100:
|
||||
filename = scriptPath[-100:]
|
||||
filename = '.../' + filename[ filename.find('/')+1 : ]
|
||||
else:
|
||||
filename = scriptPath
|
||||
s += '[ERROR] An exception occured while loading the Python script module:\n'
|
||||
s += ' \"{}\"\n'.format(filename)
|
||||
s += ' You should check for simple python errors in this module.\n'
|
||||
if isinstance(e,helpers.io.ErrorMessage):
|
||||
trace = e.trace
|
||||
s += textStackTrace( trace )
|
||||
if e:
|
||||
s += ' Error was:\n'
|
||||
s += ' {}\n'.format(e)
|
||||
else:
|
||||
#trace = traceback.extract_tb( sys.exc_info()[2] )
|
||||
print( traceback.format_exc() )
|
||||
if tryContinue:
|
||||
s += ' Trying to continue anyway...'
|
||||
return s
|
||||
|
||||
|
||||
def showPythonTrace ( scriptPath=None, e=None, tryContinue=True ):
|
||||
print( textPythonTrace( scriptPath, e, tryContinue ))
|
||||
return
|
||||
|
||||
|
||||
class Dots ( object ):
|
||||
|
||||
def __init__ (self, header="", width=73):
|
||||
|
@ -260,13 +198,13 @@ def overload ( defaultParameters, parameters ):
|
|||
return tuple(overloadParameters)
|
||||
|
||||
|
||||
def l ( value ): return Hurricane.DbU.fromLambda( value )
|
||||
def u ( value ): return Hurricane.DbU.fromPhysical( value, Hurricane.DbU.UnitPowerMicro )
|
||||
def n ( value ): return Hurricane.DbU.fromPhysical( value, Hurricane.DbU.UnitPowerNano )
|
||||
def l ( value ): return DbU.fromLambda( value )
|
||||
def u ( value ): return DbU.fromPhysical( value, DbU.UnitPowerMicro )
|
||||
def n ( value ): return DbU.fromPhysical( value, DbU.UnitPowerNano )
|
||||
|
||||
|
||||
def onFGrid ( u ):
|
||||
oneGrid = Hurricane.DbU.fromGrid( 1.0 )
|
||||
oneGrid = DbU.fromGrid( 1.0 )
|
||||
if u % oneGrid:
|
||||
u -= (u % oneGrid)
|
||||
return u
|
||||
|
@ -313,7 +251,7 @@ def setNdaTopDir ( ndaTopDirArg ):
|
|||
global ndaTopDir
|
||||
|
||||
if not os.path.isdir(ndaTopDirArg):
|
||||
print( helpers.io.WarningMessage( 'helpers.setNdaTopDir(): Directory "{}" does not exists.'.format( ndaTopDirArg )))
|
||||
print( WarningMessage( 'helpers.setNdaTopDir(): Directory "{}" does not exists.'.format( ndaTopDirArg )))
|
||||
else:
|
||||
ndaTopDir = ndaTopDirArg
|
||||
sys.path.append( os.path.join(ndaTopDir,'etc/coriolis2') )
|
||||
|
@ -379,20 +317,20 @@ def setSysConfDir ( quiet=False ):
|
|||
|
||||
def netDirectionToStr ( netDir ):
|
||||
flags = [ '-', '-', '-', '-', '-' ]
|
||||
if netDir & Hurricane.Net.Direction.DirIn: flags[0] = 'i'
|
||||
if netDir & Hurricane.Net.Direction.DirOut: flags[1] = 'o'
|
||||
if netDir & Hurricane.Net.Direction.ConnTristate: flags[2] = 't'
|
||||
if netDir & Hurricane.Net.Direction.ConnWiredOr: flags[3] = 'w'
|
||||
if netDir & Net.Direction.DirIn: flags[0] = 'i'
|
||||
if netDir & Net.Direction.DirOut: flags[1] = 'o'
|
||||
if netDir & Net.Direction.ConnTristate: flags[2] = 't'
|
||||
if netDir & Net.Direction.ConnWiredOr: flags[3] = 'w'
|
||||
|
||||
s = flags[0]+flags[1]+flags[2]+flags[3]+' '
|
||||
if netDir == Hurricane.Net.Direction.UNDEFINED: s += '(UNDEFINED)'
|
||||
elif netDir == Hurricane.Net.Direction.IN: s += '(IN)'
|
||||
elif netDir == Hurricane.Net.Direction.OUT: s += '(OUT)'
|
||||
elif netDir == Hurricane.Net.Direction.INOUT: s += '(INOUT)'
|
||||
elif netDir == Hurricane.Net.Direction.TRISTATE: s += '(TRISTATE)'
|
||||
elif netDir == Hurricane.Net.Direction.TRANSCV: s += '(TRANSCV)'
|
||||
elif netDir == Hurricane.Net.Direction.WOR_OUT: s += '(WOR_OUT)'
|
||||
elif netDir == Hurricane.Net.Direction.WOR_INOUT: s += '(WOR_INOUT)'
|
||||
if netDir == Net.Direction.UNDEFINED: s += '(UNDEFINED)'
|
||||
elif netDir == Net.Direction.IN: s += '(IN)'
|
||||
elif netDir == Net.Direction.OUT: s += '(OUT)'
|
||||
elif netDir == Net.Direction.INOUT: s += '(INOUT)'
|
||||
elif netDir == Net.Direction.TRISTATE: s += '(TRISTATE)'
|
||||
elif netDir == Net.Direction.TRANSCV: s += '(TRANSCV)'
|
||||
elif netDir == Net.Direction.WOR_OUT: s += '(WOR_OUT)'
|
||||
elif netDir == Net.Direction.WOR_INOUT: s += '(WOR_INOUT)'
|
||||
else: s += '(UNKNOWN)'
|
||||
return s
|
||||
|
||||
|
@ -410,10 +348,10 @@ def unloadUserSettings ():
|
|||
warning = ''
|
||||
if refcount > 3:
|
||||
warning = '(NOTE: More than 3 refcount %d)' % refcount
|
||||
#print( helpers.io.WarningMessage( [ 'Configuration module "{}" has more than 3 references ({})".' \
|
||||
# .format(moduleName,refcount)
|
||||
# , 'May be unable to unload it from the Python process.'
|
||||
# ] ))
|
||||
#print( WarningMessage( [ 'Configuration module "{}" has more than 3 references ({})".' \
|
||||
# .format(moduleName,refcount)
|
||||
# , 'May be unable to unload it from the Python process.'
|
||||
# ] ))
|
||||
print( ' - {:-34} {:-35}'.format( '"{}".'.format(moduleName), warning ))
|
||||
del sys.modules[ moduleName ]
|
||||
confModules = set()
|
||||
|
@ -421,7 +359,7 @@ def unloadUserSettings ():
|
|||
|
||||
|
||||
def loadUserSettings ():
|
||||
if Hurricane.DataBase.getDB() is not None:
|
||||
if DataBase.getDB() is not None:
|
||||
print( ' o DataBase already initialized, skip loading of "./coriolis2/settings.py".' )
|
||||
return True
|
||||
rvalue = False
|
||||
|
@ -431,9 +369,9 @@ def loadUserSettings ():
|
|||
import coriolis2.settings
|
||||
rvalue = True
|
||||
else:
|
||||
print( helpers.io.WarningMessage( [ 'User\'s settings directory "{}" exists, but do not contains "__init__.py".'.format( './coriolis2/' )
|
||||
, '(path:"{}")'.format( os.path.abspath(os.getcwd()) )
|
||||
] ))
|
||||
print( WarningMessage( [ 'User\'s settings directory "{}" exists, but do not contains "__init__.py".'.format( './coriolis2/' )
|
||||
, '(path:"{}")'.format( os.path.abspath(os.getcwd()) )
|
||||
] ))
|
||||
else:
|
||||
import symbolic.cmos
|
||||
tagConfModules()
|
||||
|
@ -452,8 +390,8 @@ def tagConfModules ():
|
|||
|
||||
def resetCoriolis ():
|
||||
print( ' o Full reset of Coriolis/Hurricane databases.' )
|
||||
CRL.AllianceFramework.get().destroy()
|
||||
Viewer.Graphics.get().clear()
|
||||
Hurricane.DataBase.getDB().destroy()
|
||||
AllianceFramework.get().destroy()
|
||||
Graphics.get().clear()
|
||||
DataBase.getDB().destroy()
|
||||
unloadUserSettings()
|
||||
return
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# -*- Mode:Python -*-
|
||||
#
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2015-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2015-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -18,11 +18,8 @@
|
|||
import os
|
||||
import os.path
|
||||
import sys
|
||||
import Hurricane
|
||||
from Hurricane import DbU
|
||||
from Hurricane import DataBase
|
||||
from Hurricane import Layer
|
||||
from helpers.io import catch, ErrorMessage, WarningMessage
|
||||
from ..Hurricane import DbU, DataBase, Layer
|
||||
from .io import catch, ErrorMessage, WarningMessage
|
||||
|
||||
|
||||
tech = None
|
||||
|
|
|
@ -19,10 +19,70 @@ import os
|
|||
import os.path
|
||||
import re
|
||||
import traceback
|
||||
import Cfg
|
||||
import helpers
|
||||
from Hurricane import UpdateSession
|
||||
import Viewer
|
||||
from .. import Cfg
|
||||
from ..Hurricane import UpdateSession
|
||||
from ..Viewer import Graphics, ErrorWidget
|
||||
|
||||
|
||||
def textStackTrace ( trace, showIndent=True, scriptPath=None ):
|
||||
indent = ''
|
||||
if showIndent: indent = ' '
|
||||
s = ''
|
||||
if scriptPath:
|
||||
if len(scriptPath) > 100:
|
||||
filename = scriptPath[-100:]
|
||||
filename = '.../' + filename[ filename.find('/')+1 : ]
|
||||
|
||||
if showIndent: s += '[ERROR] '
|
||||
s += 'An exception occured while loading the Python script module:\n'
|
||||
s += indent + '\"{}\"\n' % (filename)
|
||||
s += indent + 'You should check for simple python errors in this module.\n\n'
|
||||
|
||||
s += indent + 'Python stack trace:\n'
|
||||
maxdepth = len( trace )
|
||||
for depth in range( maxdepth ):
|
||||
filename, line, function, code = trace[ maxdepth-depth-1 ]
|
||||
if len(filename) > 58:
|
||||
filename = filename[-58:]
|
||||
filename = '.../' + filename[ filename.find('/')+1 : ]
|
||||
#s += indent + '[%02d] %45s:%-5d in \"{}()\"' % ( maxdepth-depth-1, filename, line, function )
|
||||
s += indent + '#{} in {:>25}() at {}:{}\n'.format( depth, function, filename, line )
|
||||
return s
|
||||
|
||||
|
||||
def showStackTrace ( trace ):
|
||||
print( textStackTrace( trace, True ))
|
||||
return
|
||||
|
||||
|
||||
def textPythonTrace ( scriptPath=None, e=None, tryContinue=True ):
|
||||
s = ''
|
||||
if scriptPath:
|
||||
if len(scriptPath) > 100:
|
||||
filename = scriptPath[-100:]
|
||||
filename = '.../' + filename[ filename.find('/')+1 : ]
|
||||
else:
|
||||
filename = scriptPath
|
||||
s += '[ERROR] An exception occured while loading the Python script module:\n'
|
||||
s += ' \"{}\"\n'.format(filename)
|
||||
s += ' You should check for simple python errors in this module.\n'
|
||||
if isinstance(e,ErrorMessage):
|
||||
trace = e.trace
|
||||
s += textStackTrace( trace )
|
||||
if e:
|
||||
s += ' Error was:\n'
|
||||
s += ' {}\n'.format(e)
|
||||
else:
|
||||
#trace = traceback.extract_tb( sys.exc_info()[2] )
|
||||
print( traceback.format_exc() )
|
||||
if tryContinue:
|
||||
s += ' Trying to continue anyway...'
|
||||
return s
|
||||
|
||||
|
||||
def showPythonTrace ( scriptPath=None, e=None, tryContinue=True ):
|
||||
print( textPythonTrace( scriptPath, e, tryContinue ))
|
||||
return
|
||||
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
|
@ -100,10 +160,10 @@ class ErrorMessage ( Exception ):
|
|||
@staticmethod
|
||||
def show ( code, *arguments ):
|
||||
e = ErrorMessage( code, *arguments )
|
||||
if not Viewer.Graphics.get().isEnabled():
|
||||
if not Graphics.get().isEnabled():
|
||||
raise e
|
||||
tryCont = Viewer.ErrorWidget.run( e.getLinesAsString()
|
||||
, helpers.textStackTrace( e.trace, False, e.scriptPath ))
|
||||
tryCont = ErrorWidget.run( e.getLinesAsString()
|
||||
, textStackTrace( e.trace, False, e.scriptPath ))
|
||||
if not tryCont: raise e
|
||||
return
|
||||
|
||||
|
@ -122,10 +182,10 @@ def catch ( errorObject ):
|
|||
em.trace = traceback.extract_tb( sys.exc_info()[2] )
|
||||
#em.scriptPath = __file__
|
||||
print( em )
|
||||
print( helpers.textStackTrace( em.trace, True, em.scriptPath ))
|
||||
if Viewer.Graphics.get().isEnabled():
|
||||
Viewer.ErrorWidget.run( em.getLinesAsString()
|
||||
, helpers.textStackTrace( em.trace, False, em.scriptPath ))
|
||||
print( textStackTrace( em.trace, True, em.scriptPath ))
|
||||
if Graphics.get().isEnabled():
|
||||
ErrorWidget.run( em.getLinesAsString()
|
||||
, textStackTrace( em.trace, False, em.scriptPath ))
|
||||
if UpdateSession.getStackSize() > 0: UpdateSession.close()
|
||||
return
|
||||
|
||||
|
|
|
@ -25,9 +25,9 @@ Contains:
|
|||
* ``overlay.CfgCache`` : A cache for Cfg parameters.
|
||||
"""
|
||||
|
||||
import Cfg
|
||||
import Hurricane
|
||||
from .io import isVL
|
||||
from .. import Cfg
|
||||
from .. import Hurricane
|
||||
from .io import isVL
|
||||
|
||||
|
||||
class UpdateSession ( object ):
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
Some helpers to create or load a technology and it's libraries.
|
||||
"""
|
||||
|
||||
from Hurricane import DataBase, Library, BasicLayer, Layer, ViaLayer
|
||||
from ..Hurricane import DataBase, Library, BasicLayer, Layer, ViaLayer
|
||||
|
||||
|
||||
__all__ = [ 'safeGetLibrary', 'createBL', 'setEnclosures' ]
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
install( FILES __init__.py DESTINATION ${SYS_CONF_DIR} )
|
||||
install( FILES __init__.py DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY common DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY symbolic DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node45 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node180 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install( DIRECTORY node600 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,9 +13,9 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from Hurricane import DataBase
|
||||
import helpers.io
|
||||
from helpers.io import ErrorMessage
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.helpers import stype
|
||||
from coriolis.helpers.io import catch, ErrorMessage
|
||||
|
||||
|
||||
def loadGdsLayers ( gdsLayersTable ):
|
||||
|
@ -32,13 +32,13 @@ def loadGdsLayers ( gdsLayersTable ):
|
|||
if not isinstance(gdsiiLayer,int):
|
||||
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
|
||||
,'GDSII layer number is not of int type (%s).' \
|
||||
% helpers.stype(gdsiiLayer)
|
||||
% stype(gdsiiLayer)
|
||||
,str(entry)
|
||||
] )
|
||||
if not isinstance(gdsiiDatatype,int):
|
||||
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
|
||||
,'GDSII layer Datatype is not of int type (%s).' \
|
||||
% helpers.stype(gdsiiDatatype)
|
||||
% stype(gdsiiDatatype)
|
||||
,str(entry)
|
||||
] )
|
||||
|
||||
|
@ -55,5 +55,5 @@ def loadGdsLayers ( gdsLayersTable ):
|
|||
basicLayer.setGds2Datatype( gdsiiDatatype )
|
||||
|
||||
except Exception as e:
|
||||
helpers.io.catch( e )
|
||||
catch( e )
|
||||
return
|
|
@ -1,24 +1,23 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, 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 |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/analog.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers
|
||||
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import technoDir
|
||||
|
||||
p = Cfg.getParamString( 'analog.techno' )
|
||||
p.setString( 'Analog_technology_has_not_been_set' )
|
||||
p.flags = Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist
|
||||
|
||||
#Cfg.getParamString( 'analog.devices' ).setString( helpers.technoDir+'/devices.conf' )
|
||||
#Cfg.getParamString( 'analog.devices' ).setString( technoDir+'/devices.conf' )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
|
||||
import string
|
||||
from helpers.io import ErrorMessage
|
||||
from coriolis.helpers.io import ErrorMessage
|
||||
|
||||
|
||||
stdColors = \
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,10 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from Hurricane import DataBase
|
||||
import helpers.io
|
||||
from helpers.io import ErrorMessage
|
||||
from helpers.io import WarningMessage
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.helpers.io import catch, ErrorMessage, WarningMessage
|
||||
|
||||
|
||||
tech = DataBase.getDB().getTechnology()
|
||||
|
@ -42,5 +40,5 @@ def addDevice ( **kw ):
|
|||
print( WarningMessage( 'common.addDevice(): Missing layouts on device "{}".' \
|
||||
.format( kw['name'] )))
|
||||
except Exception as e:
|
||||
helpers.io.catch( e )
|
||||
catch( e )
|
||||
return
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,11 +13,11 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import Viewer
|
||||
from helpers import overlay, l, u, n
|
||||
from common.colors import toRGB
|
||||
from common.patterns import toHexa
|
||||
import coriolis.Cfg as Cfg
|
||||
import coriolis.Viewer as Viewer
|
||||
from coriolis.helpers import overlay, l, u, n
|
||||
from coriolis.technos.common.colors import toRGB
|
||||
from coriolis.technos.common.patterns import toHexa
|
||||
|
||||
|
||||
def createStyles ( scale=1.0 ):
|
|
@ -1,19 +1,19 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, 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 |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/etesian.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import coriolis.Cfg as Cfg
|
||||
|
||||
|
||||
param = Cfg.getParamDouble( 'etesian.aspectRatio' )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,7 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import coriolis.Cfg as Cfg
|
||||
|
||||
|
||||
layout = Cfg.Configuration.get().getLayout()
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,7 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import coriolis.Cfg as Cfg
|
||||
|
||||
|
||||
Cfg.getParamBool( 'misc.catchCore' ).setBool( False )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Universit 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Universit 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -15,10 +15,8 @@
|
|||
|
||||
import sys
|
||||
import math
|
||||
import helpers
|
||||
from helpers import irange
|
||||
from helpers.io import ErrorMessage
|
||||
from helpers.io import WarningMessage
|
||||
from coriolis.helpers import irange
|
||||
from coriolis.helpers.io import ErrorMessage, WarningMessage
|
||||
|
||||
|
||||
class Pattern ( object ):
|
|
@ -1,19 +1,19 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, 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 |
|
||||
# | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./etc/common/stratus1.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import coriolis.Cfg as Cfg
|
||||
|
||||
layout = Cfg.Configuration.get().getLayout()
|
||||
layout.addTab ( 'stratus1', 'Stratus1' )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,16 +13,10 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from helpers import l, u, n
|
||||
from Hurricane import DataBase
|
||||
from Hurricane import Technology
|
||||
from Hurricane import Layer
|
||||
from Hurricane import BasicLayer
|
||||
from Hurricane import DiffusionLayer
|
||||
from Hurricane import TransistorLayer
|
||||
from Hurricane import RegularLayer
|
||||
from Hurricane import ContactLayer
|
||||
from Hurricane import ViaLayer
|
||||
from coriolis.helpers import l, u, n
|
||||
from coriolis.Hurricane import DataBase, Technology, Layer, BasicLayer, \
|
||||
DiffusionLayer, TransistorLayer, \
|
||||
RegularLayer, ContactLayer, ViaLayer
|
||||
|
||||
|
||||
tech = DataBase.getDB().getTechnology()
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,31 +13,32 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 1, ' o Loading "node180.scn6m_deep_09" technology.' )
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath, tagConfModules
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 1, ' o Loading "node180.scn6m_deep_09" technology.' )
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
from Hurricane import DataBase
|
||||
from CRL import System
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.CRL import System
|
||||
|
||||
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
|
||||
|
||||
DataBase.create()
|
||||
System.get()
|
||||
|
||||
import node180.scn6m_deep_09.misc
|
||||
import node180.scn6m_deep_09.technology
|
||||
import node180.scn6m_deep_09.display
|
||||
import node180.scn6m_deep_09.analog
|
||||
import node180.scn6m_deep_09.alliance
|
||||
import node180.scn6m_deep_09.etesian
|
||||
import node180.scn6m_deep_09.kite
|
||||
import node180.scn6m_deep_09.plugins
|
||||
import node180.scn6m_deep_09.stratus1
|
||||
import node180.scn6m_deep_09.devices
|
||||
import node180.scn6m_deep_09.dtr_scn6m_deep_09
|
||||
from . import misc
|
||||
from . import technology
|
||||
from . import display
|
||||
from . import analog
|
||||
from . import alliance
|
||||
from . import etesian
|
||||
from . import kite
|
||||
from . import plugins
|
||||
from . import stratus1
|
||||
from . import devices
|
||||
from . import dtr_scn6m_deep_09
|
||||
|
||||
Cfg.Configuration.popDefaultPriority()
|
||||
|
||||
helpers.tagConfModules()
|
||||
tagConfModules()
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,13 +13,13 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import os
|
||||
import os.path
|
||||
from CRL import Environment
|
||||
from CRL import AllianceFramework
|
||||
from coriolis.CRL import Environment, AllianceFramework
|
||||
|
||||
allianceTop = None
|
||||
if 'ALLIANCE_TOP' in os.environ:
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
#import common.analog
|
||||
#from ...common import analog
|
|
@ -0,0 +1,137 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2023, 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 : "./node180/scn6m_deep_09/devices.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
from coriolis.helpers import truncPath, sysConfDir
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
from ...common import devices
|
||||
from ...common.devices import addDevice
|
||||
|
||||
chamsDir = sysConfDir + '/share/coriolis2/'
|
||||
spiceDir = chamsDir + 'spice/'
|
||||
|
||||
addDevice( name = 'DifferentialPairBulkConnected'
|
||||
, spice = spiceDir+'DiffPairBulkConnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'G1', 'G2', 'S' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.DP_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.DP_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.DP_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.DP_interdigitated.py' )
|
||||
, ('WIP DP' , 'coriolis.oroshi.wip_dp.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'DifferentialPairBulkUnconnected'
|
||||
, spice = spiceDir+'DiffPairBulkUnconnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'G1', 'G2', 'S', 'B' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.DP_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.DP_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.DP_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.DP_interdigitated.py' )
|
||||
, ('WIP DP' , 'coriolis.oroshi.wip_dp.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'LevelShifterBulkUnconnected'
|
||||
, spice = spiceDir+'LevelShifterBulkUnconnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S1', 'S2', 'B' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.LS_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.LS_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.LS_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.LS_interdigitated.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'TransistorBulkConnected'
|
||||
, spice = spiceDir+'TransistorBulkConnected.spi'
|
||||
, connectors = ( 'D', 'G', 'S' )
|
||||
, layouts = ( ('Rotate transistor', 'coriolis.oroshi.Transistor_rotate.py')
|
||||
, ('Common transistor', 'coriolis.oroshi.Transistor_common.py')
|
||||
, ('WIP Transistor' , 'coriolis.oroshi.wip_transistor.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'TransistorBulkUnconnected'
|
||||
, spice = spiceDir+'TransistorBulkUnconnected.spi'
|
||||
, connectors = ( 'D', 'G', 'S', 'B' )
|
||||
, layouts = ( ('Rotate transistor', 'coriolis.oroshi.Transistor_rotate.py')
|
||||
, ('Common transistor', 'coriolis.oroshi.Transistor_common.py')
|
||||
, ('WIP Transistor' , 'coriolis.oroshi.wip_transistor.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'CrossCoupledPairBulkConnected'
|
||||
, spice = spiceDir+'CCPairBulkConnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.CCP_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.CCP_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.CCP_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.CCP_interdigitated.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'CrossCoupledPairBulkUnconnected'
|
||||
, spice = spiceDir+'CCPairBulkUnconnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S', 'B' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.CCP_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.CCP_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.CCP_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.CCP_interdigitated.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'CommonSourcePairBulkConnected'
|
||||
, spice = spiceDir+'CommonSourcePairBulkConnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S', 'G' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.CSP_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.CSP_symmetrical.py' )
|
||||
, ('Interdigitated' , 'coriolis.oroshi.CSP_interdigitated.py' )
|
||||
, ('WIP CSP' , 'coriolis.oroshi.wip_csp.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'CommonSourcePairBulkUnconnected'
|
||||
, spice = spiceDir+'CommonSourcePairBulkUnconnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S', 'G', 'B' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.CSP_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.CSP_symmetrical.py' )
|
||||
, ('Interdigitated' , 'coriolis.oroshi.CSP_interdigitated.py' )
|
||||
, ('WIP CSP' , 'coriolis.oroshi.wip_csp.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'SimpleCurrentMirrorBulkConnected'
|
||||
, spice = spiceDir+'CurrMirBulkConnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.SCM_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.SCM_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.SCM_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.SCM_interdigitated.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'SimpleCurrentMirrorBulkUnconnected'
|
||||
, spice = spiceDir+'CurrMirBulkUnconnected.spi'
|
||||
, connectors = ( 'D1', 'D2', 'S', 'B' )
|
||||
, layouts = ( ('Horizontal M2' , 'coriolis.oroshi.SCM_horizontalM2.py' )
|
||||
, ('Symmetrical' , 'coriolis.oroshi.SCM_symmetrical.py' )
|
||||
, ('Common centroid', 'coriolis.oroshi.SCM_2DCommonCentroid.py')
|
||||
, ('Interdigitated' , 'coriolis.oroshi.SCM_interdigitated.py' )
|
||||
)
|
||||
)
|
||||
addDevice( name = 'MultiCapacitor'
|
||||
#, spice = spiceDir+'MIM_OneCapacitor.spi'
|
||||
#, connectors = ( 'T1', 'B1' )
|
||||
, layouts = ( ('Matrix', 'coriolis.oroshi.capacitormatrix.py' ),
|
||||
)
|
||||
)
|
||||
addDevice( name = 'Resistor'
|
||||
#, spice = spiceDir+'MIM_OneCapacitor.spi'
|
||||
, connectors = ( 'PIN1', 'PIN2' )
|
||||
, layouts = ( ('Snake', 'coriolis.oroshi.resistorsnake.py' ),
|
||||
)
|
||||
)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,9 +13,10 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import common.display
|
||||
from ...common import display
|
||||
|
||||
common.display.createStyles( scale=0.5 )
|
||||
display.createStyles( scale=0.5 )
|
|
@ -8,14 +8,12 @@
|
|||
#
|
||||
# Used revision 8.00 of May 11, 2009.
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
from Hurricane import DbU
|
||||
from helpers.analogtechno import Length
|
||||
from helpers.analogtechno import Area
|
||||
from helpers.analogtechno import Asymmetric
|
||||
from helpers.analogtechno import loadAnalogTechno
|
||||
from coriolis.Hurricane import DbU
|
||||
from coriolis.helpers.analogtechno import Length, Area, Asymmetric, loadAnalogTechno
|
||||
|
||||
|
||||
analogTechnologyTable = \
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import common.etesian
|
||||
from ...common import etesian
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,17 +13,16 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath, l, u, n
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
from Hurricane import DataBase
|
||||
from CRL import AllianceFramework
|
||||
from CRL import RoutingGauge
|
||||
from CRL import RoutingLayerGauge
|
||||
from CRL import CellGauge
|
||||
from helpers import l, n, u
|
||||
import common.kite
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.CRL import AllianceFramework, RoutingGauge, \
|
||||
RoutingLayerGauge, CellGauge
|
||||
|
||||
from ...common import kite
|
||||
|
||||
|
||||
p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import common.misc
|
||||
from ...common import misc
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import common.patterns
|
||||
from ...common import patterns
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne University 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,11 +13,10 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
|
||||
from helpers import l, u, n
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath, l, u, n
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 )
|
||||
Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Universié 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,11 +13,12 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import common.stratus1
|
||||
from ...common import stratus1
|
||||
|
||||
Cfg.getParamString( "stratus1.format" ).setString( "vst" )
|
||||
Cfg.getParamString( "stratus1.simulator" ).setString( "asimut" )
|
|
@ -13,12 +13,11 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from helpers import l, u, n
|
||||
from Hurricane import DbU
|
||||
from Hurricane import DataBase
|
||||
from Hurricane import Technology
|
||||
from coriolis.helpers import truncPath, l, u, n
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
from coriolis.Hurricane import DbU, DataBase, Technology
|
||||
|
||||
tech = DataBase.getDB().getTechnology()
|
||||
if tech:
|
||||
|
@ -32,8 +31,8 @@ DbU.setGridsPerLambda ( 18 )
|
|||
DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) )
|
||||
DbU.setPolygonStep ( DbU.fromGrid ( 9.0) )
|
||||
|
||||
import common
|
||||
from common.technology import *
|
||||
from ...common import loadGdsLayers
|
||||
from ...common.technology import *
|
||||
|
||||
# Redefine all size from the "cmos" common part.
|
||||
NWELL.setExtentionCap( nWell, l(4.0) )
|
||||
|
@ -225,4 +224,4 @@ gdsLayersTable = \
|
|||
]
|
||||
|
||||
|
||||
common.loadGdsLayers( gdsLayersTable )
|
||||
loadGdsLayers( gdsLayersTable )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,30 +13,31 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 1, ' o Loading "node45.freepdk45" technology.' )
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath, tagConfModules
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 1, ' o Loading "node45.freepdk45" technology.' )
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
from Hurricane import DataBase
|
||||
from CRL import System
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.CRL import System
|
||||
|
||||
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
|
||||
|
||||
DataBase.create()
|
||||
System.get()
|
||||
|
||||
import node45.freepdk45.misc
|
||||
import node45.freepdk45.technology
|
||||
import node45.freepdk45.display
|
||||
import node45.freepdk45.analog
|
||||
import node45.freepdk45.alliance
|
||||
import node45.freepdk45.etesian
|
||||
import node45.freepdk45.kite
|
||||
import node45.freepdk45.plugins
|
||||
import node45.freepdk45.stratus1
|
||||
import node45.freepdk45.devices
|
||||
from .freepdk45 import misc
|
||||
from .freepdk45 import technology
|
||||
from .freepdk45 import display
|
||||
from .freepdk45 import analog
|
||||
from .freepdk45 import alliance
|
||||
from .freepdk45 import etesian
|
||||
from .freepdk45 import kite
|
||||
from .freepdk45 import plugins
|
||||
from .freepdk45 import stratus1
|
||||
from .freepdk45 import devices
|
||||
|
||||
Cfg.Configuration.popDefaultPriority()
|
||||
|
||||
helpers.tagConfModules()
|
||||
tagConfModules()
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2020, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,13 +13,13 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import os
|
||||
import os.path
|
||||
from CRL import Environment
|
||||
from CRL import AllianceFramework
|
||||
from coriolis.CRL import Environment, AllianceFramework
|
||||
|
||||
|
||||
allianceTop = None
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2020, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
#import common.analog
|
||||
#from ...common import analog
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2020, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,14 +13,15 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath, sysConfDir
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.devices
|
||||
from common.devices import addDevice
|
||||
from ...common import devices
|
||||
from ...common.devices import addDevice
|
||||
|
||||
|
||||
chamsDir = helpers.sysConfDir + '/share/coriolis2/'
|
||||
chamsDir = sysConfDir + '/share/coriolis2/'
|
||||
spiceDir = chamsDir + 'spice/'
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2020, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,10 +13,10 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.display
|
||||
from ...common import display
|
||||
|
||||
|
||||
common.display.createStyles( scale=0.5 )
|
||||
display.createStyles( scale=0.5 )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.etesian
|
||||
from ...common import etesian
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,17 +13,15 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
import coriolis.Cgf as Cfg
|
||||
from coriolis.helpers import truncPath, l, u, n
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
from Hurricane import DataBase
|
||||
from CRL import AllianceFramework
|
||||
from CRL import RoutingGauge
|
||||
from CRL import RoutingLayerGauge
|
||||
from CRL import CellGauge
|
||||
from helpers import l, n, u
|
||||
import common.kite
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.CRL import AllianceFramework, RoutingGauge, \
|
||||
RoutingLayerGauge, CellGauge
|
||||
from ...common import kite
|
||||
|
||||
|
||||
p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.misc
|
||||
from ...common import misc
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.patterns
|
||||
from ...common import patterns
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,11 +13,10 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
|
||||
from helpers import l, u, n
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath, l, u, n
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 )
|
||||
Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,11 +13,12 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.stratus1
|
||||
from ...common import stratus1
|
||||
|
||||
|
||||
Cfg.getParamString( "stratus1.format" ).setString( "vst" )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,13 +13,11 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath, l, u, n
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
from helpers import l, u, n
|
||||
from Hurricane import DbU
|
||||
from Hurricane import DataBase
|
||||
from Hurricane import Technology
|
||||
from coriolis.Hurricane import DbU, DataBase, Technology
|
||||
|
||||
|
||||
def setEnclosures ( layer, subLayer, enclosures ):
|
||||
|
@ -47,8 +45,8 @@ DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) )
|
|||
DbU.setPolygonStep ( DbU.fromGrid ( 1.0) )
|
||||
|
||||
|
||||
import common
|
||||
from common.technology import *
|
||||
from ..common import loadGdsLayers
|
||||
from ..common.technology import *
|
||||
|
||||
# Rules for real layers.
|
||||
metal1 .setMinimalSpacing( u( 0.065) )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,30 +13,31 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import Cfg
|
||||
import helpers.io
|
||||
helpers.io.vprint( 1, ' o Loading "node600/phenitec" technology.' )
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
import coriolis.Cfg as Cfg
|
||||
from coriolis.helpers import truncPath, tagConfModules
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 1, ' o Loading "node600/phenitec" technology.' )
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
from Hurricane import DataBase
|
||||
from CRL import System
|
||||
from coriolis.Hurricane import DataBase
|
||||
from coriolis.CRL import System
|
||||
|
||||
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
|
||||
|
||||
if not DataBase.getDB(): DataBase.create()
|
||||
System.get()
|
||||
|
||||
import node600.phenitec.misc
|
||||
import node600.phenitec.technology
|
||||
import node600.phenitec.display
|
||||
import node600.phenitec.analog
|
||||
import node600.phenitec.alliance
|
||||
import node600.phenitec.etesian
|
||||
import node600.phenitec.kite
|
||||
import node600.phenitec.plugins
|
||||
import node600.phenitec.stratus1
|
||||
import node600.phenitec.devices
|
||||
from .phenitec import misc
|
||||
from .phenitec import technology
|
||||
from .phenitec import display
|
||||
from .phenitec import analog
|
||||
from .phenitec import alliance
|
||||
from .phenitec import etesian
|
||||
from .phenitec import kite
|
||||
from .phenitec import plugins
|
||||
from .phenitec import stratus1
|
||||
from .phenitec import devices
|
||||
|
||||
Cfg.Configuration.popDefaultPriority()
|
||||
|
||||
helpers.tagConfModules()
|
||||
tagConfModules()
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) Sorbonne Université 2019-2021, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,13 +13,13 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
|
||||
|
||||
import os
|
||||
import os.path
|
||||
from CRL import Environment
|
||||
from CRL import AllianceFramework
|
||||
from coriolis.CRL import Environment, AllianceFramework
|
||||
|
||||
|
||||
allianceTop = None
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
#import common.analog
|
||||
#from ...common import analog
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,14 +13,15 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath, sysConfDir
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.devices
|
||||
from common.devices import addDevice
|
||||
from ...common import devices
|
||||
from ...common.devices import addDevice
|
||||
|
||||
|
||||
chamsDir = helpers.sysConfDir + '/share/coriolis2/'
|
||||
chamsDir = sysConfDir + '/share/coriolis2/'
|
||||
spiceDir = chamsDir + 'spice/'
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,10 +13,10 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.display
|
||||
from ...common import display
|
||||
|
||||
|
||||
common.display.createStyles( scale=0.5 )
|
||||
display.createStyles( scale=0.5 )
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2019-2019, All Rights Reserved
|
||||
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
|
@ -13,7 +13,8 @@
|
|||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
import helpers.io
|
||||
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) )
|
||||
from coriolis.helpers import truncPath
|
||||
from coriolis.helpers.io import vprint
|
||||
vprint( 2, ' - "%s".' % truncPath(__file__) )
|
||||
|
||||
import common.etesian
|
||||
from ...common import etesian
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue