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:
Jean-Paul Chaput 2023-02-27 22:14:32 +01:00
parent c37e6ff953
commit 1557d613ae
284 changed files with 5917 additions and 6225 deletions

View File

@ -9,7 +9,7 @@ if(UNIX AND NOT POETRY)
execute_process(COMMAND "${Python_EXECUTABLE}" "-c" "${SCRIPT}" execute_process(COMMAND "${Python_EXECUTABLE}" "-c" "${SCRIPT}"
RESULT_VARIABLE RETURN_CODE RESULT_VARIABLE RETURN_CODE
OUTPUT_VARIABLE Python_CORIOLISARCH OUTPUT_VARIABLE Python_SITEARCH
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
@ -19,7 +19,7 @@ if(UNIX AND NOT POETRY)
execute_process(COMMAND "${Python_EXECUTABLE}" "-c" "${SCRIPT}" execute_process(COMMAND "${Python_EXECUTABLE}" "-c" "${SCRIPT}"
RESULT_VARIABLE RETURN_CODE RESULT_VARIABLE RETURN_CODE
OUTPUT_VARIABLE Python_CORIOLISLIB OUTPUT_VARIABLE Python_SITELIB
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
@ -29,12 +29,15 @@ if(UNIX AND NOT POETRY)
set(FindPythonSitePackages_FOUND FALSE) set(FindPythonSitePackages_FOUND FALSE)
endif(RETURN_CODE EQUAL 0) endif(RETURN_CODE EQUAL 0)
set(Python_CORIOLISARCH "lib${LIB_SUFFIX}/${Python_CORIOLISARCH}" set(Python_CORIOLISARCH "lib${LIB_SUFFIX}/${Python_SITEARCH}/coriolis"
CACHE STRING "Python platform dependent install directory." FORCE) CACHE STRING "Python platform dependent install directory (Coriolis modules)." FORCE)
set(Python_CORIOLISLIB "lib${LIB_SUFFIX}/${Python_CORIOLISLIB}" set(Python_SITELIB "lib${LIB_SUFFIX}/${Python_SITELIB}"
CACHE STRING "Python platform independent install directory." FORCE) 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_CORIOLISARCH)
mark_as_advanced(Python_CORIOLISLIB) mark_as_advanced(Python_CORIOLISLIB)
mark_as_advanced(Python_SITELIB)
if(FindPythonSitePackages_FOUND) if(FindPythonSitePackages_FOUND)
if(NOT FindPythonSitePackages_FIND_QUIETLY) if(NOT FindPythonSitePackages_FIND_QUIETLY)

View File

@ -288,12 +288,12 @@ if __name__ == "__main__":
if os.path.isdir(pyPackageDir): if os.path.isdir(pyPackageDir):
sitePackagesDir = pyPackageDir sitePackagesDir = pyPackageDir
break break
strippedPythonPath = "%s:" % (sitePackagesDir) + strippedPythonPath strippedPythonPath = "%s" % (sitePackagesDir) + strippedPythonPath
strippedPythonPath = "%s/crlcore:" % (sitePackagesDir) + strippedPythonPath #strippedPythonPath = "%s/crlcore:" % (sitePackagesDir) + strippedPythonPath
strippedPythonPath = "%s/cumulus:" % (sitePackagesDir) + strippedPythonPath #strippedPythonPath = "%s/cumulus:" % (sitePackagesDir) + strippedPythonPath
strippedPythonPath = "%s/cumulus/plugins:" % (sitePackagesDir) + strippedPythonPath #strippedPythonPath = "%s/cumulus/plugins:" % (sitePackagesDir) + strippedPythonPath
strippedPythonPath = "%s/stratus:" % (sitePackagesDir) + strippedPythonPath #strippedPythonPath = "%s/stratus:" % (sitePackagesDir) + strippedPythonPath
strippedPythonPath = "%s:" % (sysconfDir) + strippedPythonPath #strippedPythonPath = "%s:" % (sysconfDir) + strippedPythonPath
shellScriptSh += 'PYTHONPATH="%(PYTHONPATH)s";' \ shellScriptSh += 'PYTHONPATH="%(PYTHONPATH)s";' \
'export PYTHONPATH;' 'export PYTHONPATH;'
shellScriptCsh += 'setenv PYTHONPATH "%(PYTHONPATH)s";' shellScriptCsh += 'setenv PYTHONPATH "%(PYTHONPATH)s";'

View File

@ -1,2 +1,2 @@
install ( FILES boraInit.py DESTINATION ${Python_CORIOLISLIB}/bora ) install ( FILES initHook.py DESTINATION ${Python_CORIOLISLIB}/bora )

View File

@ -16,7 +16,7 @@ def boraHook ( **kw ):
if 'bora' in kw: if 'bora' in kw:
bora = kw['bora'] bora = kw['bora']
else: else:
print( ErrorMessage( 3, 'boraHook(): Must be run from a BoraEngine.' )) print( ErrorMessage( 3, 'bora.initHook(): Must be run from a BoraEngine.' ))
return return
try: try:
userInit = os.path.join( os.getcwd(), 'coriolis2/bora.py' ) userInit = os.path.join( os.getcwd(), 'coriolis2/bora.py' )

View File

@ -111,17 +111,17 @@ namespace Bora {
void BoraEngine::_runBoraInit () void BoraEngine::_runBoraInit ()
{ {
Utilities::Path pythonSitePackages = System::getPath("pythonSitePackages"); Utilities::Path pythonSitePackages = System::getPath("pythonSitePackages");
Utilities::Path systemConfDir = pythonSitePackages / "bora"; Utilities::Path confFile = "coriolis/bora/initHook.py";
Utilities::Path systemConfFile = systemConfDir / "boraInit.py"; Utilities::Path systemConfFile = pythonSitePackages / confFile;
if (systemConfFile.exists()) { 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->addKwArgument( "bora" , (PyObject*)PyBoraEngine_Link(this) );
script->runFunction ( "boraHook", getCell() ); script->runFunction ( "boraHook", getCell() );
Isobar::Script::removePath( systemConfDir.toString() ); //Isobar::Script::removePath( systemConfDir.toString() );
} else { } else {
cerr << Warning( "Bora system configuration file:\n <%s> not found." cerr << Warning( "Bora system configuration file:\n <%s> not found."
, systemConfFile.toString().c_str() ) << endl; , systemConfFile.toString().c_str() ) << endl;

View File

@ -41,6 +41,5 @@
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(python) add_subdirectory(python)
add_subdirectory(etc)
add_subdirectory(cmake_modules) add_subdirectory(cmake_modules)
add_subdirectory(doc) add_subdirectory(doc)

View File

@ -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 )

View File

@ -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' ),
)
)

View File

@ -1,7 +1,15 @@
install( FILES __init__.py DESTINATION ${Python_CORIOLISLIB} )
install( FILES helpers/__init__.py DESTINATION ${Python_CORIOLISLIB}/helpers ) install( FILES helpers/__init__.py DESTINATION ${Python_CORIOLISLIB}/helpers )
install( FILES helpers/io.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/utils.py DESTINATION ${Python_CORIOLISLIB}/helpers )
install( FILES helpers/overlay.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/analogtechno.py DESTINATION ${Python_CORIOLISLIB}/helpers )
install( FILES helpers/technology.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 )

View File

@ -39,11 +39,10 @@ if not sysModules:
for moduleName in sys.modules.keys(): for moduleName in sys.modules.keys():
sysModules.add( moduleName ) sysModules.add( moduleName )
import Hurricane from ..Hurricane import DbU, DataBase, Net
import Viewer from ..Viewer import Graphics
import CRL from ..CRL import AllianceFramework
import helpers.io from .io import ErrorMessage, WarningMessage
from helpers.io import ErrorMessage
def irange ( value ): def irange ( value ):
@ -77,67 +76,6 @@ def truncPath ( path, maxlength=80 ):
return '...' + os.sep + trunc 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 ): class Dots ( object ):
def __init__ (self, header="", width=73): def __init__ (self, header="", width=73):
@ -260,13 +198,13 @@ def overload ( defaultParameters, parameters ):
return tuple(overloadParameters) return tuple(overloadParameters)
def l ( value ): return Hurricane.DbU.fromLambda( value ) def l ( value ): return DbU.fromLambda( value )
def u ( value ): return Hurricane.DbU.fromPhysical( value, Hurricane.DbU.UnitPowerMicro ) def u ( value ): return DbU.fromPhysical( value, DbU.UnitPowerMicro )
def n ( value ): return Hurricane.DbU.fromPhysical( value, Hurricane.DbU.UnitPowerNano ) def n ( value ): return DbU.fromPhysical( value, DbU.UnitPowerNano )
def onFGrid ( u ): def onFGrid ( u ):
oneGrid = Hurricane.DbU.fromGrid( 1.0 ) oneGrid = DbU.fromGrid( 1.0 )
if u % oneGrid: if u % oneGrid:
u -= (u % oneGrid) u -= (u % oneGrid)
return u return u
@ -313,7 +251,7 @@ def setNdaTopDir ( ndaTopDirArg ):
global ndaTopDir global ndaTopDir
if not os.path.isdir(ndaTopDirArg): 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: else:
ndaTopDir = ndaTopDirArg ndaTopDir = ndaTopDirArg
sys.path.append( os.path.join(ndaTopDir,'etc/coriolis2') ) sys.path.append( os.path.join(ndaTopDir,'etc/coriolis2') )
@ -379,20 +317,20 @@ def setSysConfDir ( quiet=False ):
def netDirectionToStr ( netDir ): def netDirectionToStr ( netDir ):
flags = [ '-', '-', '-', '-', '-' ] flags = [ '-', '-', '-', '-', '-' ]
if netDir & Hurricane.Net.Direction.DirIn: flags[0] = 'i' if netDir & Net.Direction.DirIn: flags[0] = 'i'
if netDir & Hurricane.Net.Direction.DirOut: flags[1] = 'o' if netDir & Net.Direction.DirOut: flags[1] = 'o'
if netDir & Hurricane.Net.Direction.ConnTristate: flags[2] = 't' if netDir & Net.Direction.ConnTristate: flags[2] = 't'
if netDir & Hurricane.Net.Direction.ConnWiredOr: flags[3] = 'w' if netDir & Net.Direction.ConnWiredOr: flags[3] = 'w'
s = flags[0]+flags[1]+flags[2]+flags[3]+' ' s = flags[0]+flags[1]+flags[2]+flags[3]+' '
if netDir == Hurricane.Net.Direction.UNDEFINED: s += '(UNDEFINED)' if netDir == Net.Direction.UNDEFINED: s += '(UNDEFINED)'
elif netDir == Hurricane.Net.Direction.IN: s += '(IN)' elif netDir == Net.Direction.IN: s += '(IN)'
elif netDir == Hurricane.Net.Direction.OUT: s += '(OUT)' elif netDir == Net.Direction.OUT: s += '(OUT)'
elif netDir == Hurricane.Net.Direction.INOUT: s += '(INOUT)' elif netDir == Net.Direction.INOUT: s += '(INOUT)'
elif netDir == Hurricane.Net.Direction.TRISTATE: s += '(TRISTATE)' elif netDir == Net.Direction.TRISTATE: s += '(TRISTATE)'
elif netDir == Hurricane.Net.Direction.TRANSCV: s += '(TRANSCV)' elif netDir == Net.Direction.TRANSCV: s += '(TRANSCV)'
elif netDir == Hurricane.Net.Direction.WOR_OUT: s += '(WOR_OUT)' elif netDir == Net.Direction.WOR_OUT: s += '(WOR_OUT)'
elif netDir == Hurricane.Net.Direction.WOR_INOUT: s += '(WOR_INOUT)' elif netDir == Net.Direction.WOR_INOUT: s += '(WOR_INOUT)'
else: s += '(UNKNOWN)' else: s += '(UNKNOWN)'
return s return s
@ -410,10 +348,10 @@ def unloadUserSettings ():
warning = '' warning = ''
if refcount > 3: if refcount > 3:
warning = '(NOTE: More than 3 refcount %d)' % refcount warning = '(NOTE: More than 3 refcount %d)' % refcount
#print( helpers.io.WarningMessage( [ 'Configuration module "{}" has more than 3 references ({})".' \ #print( WarningMessage( [ 'Configuration module "{}" has more than 3 references ({})".' \
# .format(moduleName,refcount) # .format(moduleName,refcount)
# , 'May be unable to unload it from the Python process.' # , 'May be unable to unload it from the Python process.'
# ] )) # ] ))
print( ' - {:-34} {:-35}'.format( '"{}".'.format(moduleName), warning )) print( ' - {:-34} {:-35}'.format( '"{}".'.format(moduleName), warning ))
del sys.modules[ moduleName ] del sys.modules[ moduleName ]
confModules = set() confModules = set()
@ -421,7 +359,7 @@ def unloadUserSettings ():
def loadUserSettings (): 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".' ) print( ' o DataBase already initialized, skip loading of "./coriolis2/settings.py".' )
return True return True
rvalue = False rvalue = False
@ -431,9 +369,9 @@ def loadUserSettings ():
import coriolis2.settings import coriolis2.settings
rvalue = True rvalue = True
else: else:
print( helpers.io.WarningMessage( [ 'User\'s settings directory "{}" exists, but do not contains "__init__.py".'.format( './coriolis2/' ) print( WarningMessage( [ 'User\'s settings directory "{}" exists, but do not contains "__init__.py".'.format( './coriolis2/' )
, '(path:"{}")'.format( os.path.abspath(os.getcwd()) ) , '(path:"{}")'.format( os.path.abspath(os.getcwd()) )
] )) ] ))
else: else:
import symbolic.cmos import symbolic.cmos
tagConfModules() tagConfModules()
@ -452,8 +390,8 @@ def tagConfModules ():
def resetCoriolis (): def resetCoriolis ():
print( ' o Full reset of Coriolis/Hurricane databases.' ) print( ' o Full reset of Coriolis/Hurricane databases.' )
CRL.AllianceFramework.get().destroy() AllianceFramework.get().destroy()
Viewer.Graphics.get().clear() Graphics.get().clear()
Hurricane.DataBase.getDB().destroy() DataBase.getDB().destroy()
unloadUserSettings() unloadUserSettings()
return return

View File

@ -2,7 +2,7 @@
# -*- Mode:Python -*- # -*- Mode:Python -*-
# #
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -18,11 +18,8 @@
import os import os
import os.path import os.path
import sys import sys
import Hurricane from ..Hurricane import DbU, DataBase, Layer
from Hurricane import DbU from .io import catch, ErrorMessage, WarningMessage
from Hurricane import DataBase
from Hurricane import Layer
from helpers.io import catch, ErrorMessage, WarningMessage
tech = None tech = None

View File

@ -19,10 +19,70 @@ import os
import os.path import os.path
import re import re
import traceback import traceback
import Cfg from .. import Cfg
import helpers from ..Hurricane import UpdateSession
from Hurricane import UpdateSession from ..Viewer import Graphics, ErrorWidget
import Viewer
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 @staticmethod
def show ( code, *arguments ): def show ( code, *arguments ):
e = ErrorMessage( code, *arguments ) e = ErrorMessage( code, *arguments )
if not Viewer.Graphics.get().isEnabled(): if not Graphics.get().isEnabled():
raise e raise e
tryCont = Viewer.ErrorWidget.run( e.getLinesAsString() tryCont = ErrorWidget.run( e.getLinesAsString()
, helpers.textStackTrace( e.trace, False, e.scriptPath )) , textStackTrace( e.trace, False, e.scriptPath ))
if not tryCont: raise e if not tryCont: raise e
return return
@ -122,10 +182,10 @@ def catch ( errorObject ):
em.trace = traceback.extract_tb( sys.exc_info()[2] ) em.trace = traceback.extract_tb( sys.exc_info()[2] )
#em.scriptPath = __file__ #em.scriptPath = __file__
print( em ) print( em )
print( helpers.textStackTrace( em.trace, True, em.scriptPath )) print( textStackTrace( em.trace, True, em.scriptPath ))
if Viewer.Graphics.get().isEnabled(): if Graphics.get().isEnabled():
Viewer.ErrorWidget.run( em.getLinesAsString() ErrorWidget.run( em.getLinesAsString()
, helpers.textStackTrace( em.trace, False, em.scriptPath )) , textStackTrace( em.trace, False, em.scriptPath ))
if UpdateSession.getStackSize() > 0: UpdateSession.close() if UpdateSession.getStackSize() > 0: UpdateSession.close()
return return

View File

@ -25,9 +25,9 @@ Contains:
* ``overlay.CfgCache`` : A cache for Cfg parameters. * ``overlay.CfgCache`` : A cache for Cfg parameters.
""" """
import Cfg from .. import Cfg
import Hurricane from .. import Hurricane
from .io import isVL from .io import isVL
class UpdateSession ( object ): class UpdateSession ( object ):

View File

@ -17,7 +17,7 @@
Some helpers to create or load a technology and it's libraries. 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' ] __all__ = [ 'safeGetLibrary', 'createBL', 'setEnclosures' ]

View File

@ -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 )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,9 +13,9 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
from Hurricane import DataBase from coriolis.Hurricane import DataBase
import helpers.io from coriolis.helpers import stype
from helpers.io import ErrorMessage from coriolis.helpers.io import catch, ErrorMessage
def loadGdsLayers ( gdsLayersTable ): def loadGdsLayers ( gdsLayersTable ):
@ -32,13 +32,13 @@ def loadGdsLayers ( gdsLayersTable ):
if not isinstance(gdsiiLayer,int): if not isinstance(gdsiiLayer,int):
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.' raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
,'GDSII layer number is not of int type (%s).' \ ,'GDSII layer number is not of int type (%s).' \
% helpers.stype(gdsiiLayer) % stype(gdsiiLayer)
,str(entry) ,str(entry)
] ) ] )
if not isinstance(gdsiiDatatype,int): if not isinstance(gdsiiDatatype,int):
raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.' raise ErrorMessage( 1, ['Incoherency in <gdsLayersTable> entry.'
,'GDSII layer Datatype is not of int type (%s).' \ ,'GDSII layer Datatype is not of int type (%s).' \
% helpers.stype(gdsiiDatatype) % stype(gdsiiDatatype)
,str(entry) ,str(entry)
] ) ] )
@ -55,5 +55,5 @@ def loadGdsLayers ( gdsLayersTable ):
basicLayer.setGds2Datatype( gdsiiDatatype ) basicLayer.setGds2Datatype( gdsiiDatatype )
except Exception as e: except Exception as e:
helpers.io.catch( e ) catch( e )
return return

View File

@ -1,24 +1,23 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
# | Alliance / Hurricane Interface | # | Alliance / Hurricane Interface |
# | | # | |
# | Author : Jean-Paul CHAPUT | # | Author : Jean-Paul CHAPUT |
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr | # | E-mail : Jean-Paul.Chaput@lip6.fr |
# | =============================================================== | # | =============================================================== |
# | Python : "./etc/common/analog.py" | # | Python : "./etc/common/analog.py" |
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers from coriolis.helpers import technoDir
p = Cfg.getParamString( 'analog.techno' ) p = Cfg.getParamString( 'analog.techno' )
p.setString( 'Analog_technology_has_not_been_set' ) p.setString( 'Analog_technology_has_not_been_set' )
p.flags = Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist 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' )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -14,7 +14,7 @@
import string import string
from helpers.io import ErrorMessage from coriolis.helpers.io import ErrorMessage
stdColors = \ stdColors = \

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,10 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
from Hurricane import DataBase from coriolis.Hurricane import DataBase
import helpers.io from coriolis.helpers.io import catch, ErrorMessage, WarningMessage
from helpers.io import ErrorMessage
from helpers.io import WarningMessage
tech = DataBase.getDB().getTechnology() tech = DataBase.getDB().getTechnology()
@ -42,5 +40,5 @@ def addDevice ( **kw ):
print( WarningMessage( 'common.addDevice(): Missing layouts on device "{}".' \ print( WarningMessage( 'common.addDevice(): Missing layouts on device "{}".' \
.format( kw['name'] ))) .format( kw['name'] )))
except Exception as e: except Exception as e:
helpers.io.catch( e ) catch( e )
return return

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,11 +13,11 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import Viewer import coriolis.Viewer as Viewer
from helpers import overlay, l, u, n from coriolis.helpers import overlay, l, u, n
from common.colors import toRGB from coriolis.technos.common.colors import toRGB
from common.patterns import toHexa from coriolis.technos.common.patterns import toHexa
def createStyles ( scale=1.0 ): def createStyles ( scale=1.0 ):

View File

@ -1,19 +1,19 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
# | Alliance / Hurricane Interface | # | Alliance / Hurricane Interface |
# | | # | |
# | Author : Jean-Paul CHAPUT | # | Author : Jean-Paul CHAPUT |
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr | # | E-mail : Jean-Paul.Chaput@lip6.fr |
# | =============================================================== | # | =============================================================== |
# | Python : "./etc/common/etesian.py" | # | Python : "./etc/common/etesian.py" |
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
param = Cfg.getParamDouble( 'etesian.aspectRatio' ) param = Cfg.getParamDouble( 'etesian.aspectRatio' )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,7 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
layout = Cfg.Configuration.get().getLayout() layout = Cfg.Configuration.get().getLayout()

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | 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 ) Cfg.getParamBool( 'misc.catchCore' ).setBool( False )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -15,10 +15,8 @@
import sys import sys
import math import math
import helpers from coriolis.helpers import irange
from helpers import irange from coriolis.helpers.io import ErrorMessage, WarningMessage
from helpers.io import ErrorMessage
from helpers.io import WarningMessage
class Pattern ( object ): class Pattern ( object ):

View File

@ -1,19 +1,19 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
# | Alliance / Hurricane Interface | # | Alliance / Hurricane Interface |
# | | # | |
# | Author : Jean-Paul CHAPUT | # | Author : Jean-Paul CHAPUT |
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr | # | E-mail : Jean-Paul.Chaput@lip6.fr |
# | =============================================================== | # | =============================================================== |
# | Python : "./etc/common/stratus1.py" | # | Python : "./etc/common/stratus1.py" |
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
layout = Cfg.Configuration.get().getLayout() layout = Cfg.Configuration.get().getLayout()
layout.addTab ( 'stratus1', 'Stratus1' ) layout.addTab ( 'stratus1', 'Stratus1' )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,16 +13,10 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
from helpers import l, u, n from coriolis.helpers import l, u, n
from Hurricane import DataBase from coriolis.Hurricane import DataBase, Technology, Layer, BasicLayer, \
from Hurricane import Technology DiffusionLayer, TransistorLayer, \
from Hurricane import Layer RegularLayer, ContactLayer, ViaLayer
from Hurricane import BasicLayer
from Hurricane import DiffusionLayer
from Hurricane import TransistorLayer
from Hurricane import RegularLayer
from Hurricane import ContactLayer
from Hurricane import ViaLayer
tech = DataBase.getDB().getTechnology() tech = DataBase.getDB().getTechnology()

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,31 +13,32 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath, tagConfModules
helpers.io.vprint( 1, ' o Loading "node180.scn6m_deep_09" technology.' ) from coriolis.helpers.io import vprint
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) vprint( 1, ' o Loading "node180.scn6m_deep_09" technology.' )
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
from Hurricane import DataBase from coriolis.Hurricane import DataBase
from CRL import System from coriolis.CRL import System
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile ) Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
DataBase.create() DataBase.create()
System.get() System.get()
import node180.scn6m_deep_09.misc from . import misc
import node180.scn6m_deep_09.technology from . import technology
import node180.scn6m_deep_09.display from . import display
import node180.scn6m_deep_09.analog from . import analog
import node180.scn6m_deep_09.alliance from . import alliance
import node180.scn6m_deep_09.etesian from . import etesian
import node180.scn6m_deep_09.kite from . import kite
import node180.scn6m_deep_09.plugins from . import plugins
import node180.scn6m_deep_09.stratus1 from . import stratus1
import node180.scn6m_deep_09.devices from . import devices
import node180.scn6m_deep_09.dtr_scn6m_deep_09 from . import dtr_scn6m_deep_09
Cfg.Configuration.popDefaultPriority() Cfg.Configuration.popDefaultPriority()
helpers.tagConfModules() tagConfModules()

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,13 +13,13 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
import os import os
import os.path import os.path
from CRL import Environment from coriolis.CRL import Environment, AllianceFramework
from CRL import AllianceFramework
allianceTop = None allianceTop = None
if 'ALLIANCE_TOP' in os.environ: if 'ALLIANCE_TOP' in os.environ:

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
#import common.analog #from ...common import analog

View File

@ -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' ),
)
)

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,9 +13,10 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) 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 )

View File

@ -8,14 +8,12 @@
# #
# Used revision 8.00 of May 11, 2009. # Used revision 8.00 of May 11, 2009.
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
from Hurricane import DbU from coriolis.Hurricane import DbU
from helpers.analogtechno import Length from coriolis.helpers.analogtechno import Length, Area, Asymmetric, loadAnalogTechno
from helpers.analogtechno import Area
from helpers.analogtechno import Asymmetric
from helpers.analogtechno import loadAnalogTechno
analogTechnologyTable = \ analogTechnologyTable = \

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
import common.etesian from ...common import etesian

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,17 +13,16 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath, l, u, n
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
from Hurricane import DataBase from coriolis.Hurricane import DataBase
from CRL import AllianceFramework from coriolis.CRL import AllianceFramework, RoutingGauge, \
from CRL import RoutingGauge RoutingLayerGauge, CellGauge
from CRL import RoutingLayerGauge
from CRL import CellGauge from ...common import kite
from helpers import l, n, u
import common.kite
p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 ) p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
import common.misc from ...common import misc

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
import common.patterns from ...common import patterns

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,11 +13,10 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath, l, u, n
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
from helpers import l, u, n
Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 ) Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 )
Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) ) Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,11 +13,12 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) 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.format" ).setString( "vst" )
Cfg.getParamString( "stratus1.simulator" ).setString( "asimut" ) Cfg.getParamString( "stratus1.simulator" ).setString( "asimut" )

View File

@ -13,12 +13,11 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath, l, u, n
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
from helpers import l, u, n vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
from Hurricane import DbU
from Hurricane import DataBase from coriolis.Hurricane import DbU, DataBase, Technology
from Hurricane import Technology
tech = DataBase.getDB().getTechnology() tech = DataBase.getDB().getTechnology()
if tech: if tech:
@ -32,8 +31,8 @@ DbU.setGridsPerLambda ( 18 )
DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) ) DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) )
DbU.setPolygonStep ( DbU.fromGrid ( 9.0) ) DbU.setPolygonStep ( DbU.fromGrid ( 9.0) )
import common from ...common import loadGdsLayers
from common.technology import * from ...common.technology import *
# Redefine all size from the "cmos" common part. # Redefine all size from the "cmos" common part.
NWELL.setExtentionCap( nWell, l(4.0) ) NWELL.setExtentionCap( nWell, l(4.0) )
@ -225,4 +224,4 @@ gdsLayersTable = \
] ]
common.loadGdsLayers( gdsLayersTable ) loadGdsLayers( gdsLayersTable )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,30 +13,31 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath, tagConfModules
helpers.io.vprint( 1, ' o Loading "node45.freepdk45" technology.' ) from coriolis.helpers.io import vprint
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) vprint( 1, ' o Loading "node45.freepdk45" technology.' )
vprint( 2, ' - "%s".' % truncPath(__file__) )
from Hurricane import DataBase from coriolis.Hurricane import DataBase
from CRL import System from coriolis.CRL import System
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile ) Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
DataBase.create() DataBase.create()
System.get() System.get()
import node45.freepdk45.misc from .freepdk45 import misc
import node45.freepdk45.technology from .freepdk45 import technology
import node45.freepdk45.display from .freepdk45 import display
import node45.freepdk45.analog from .freepdk45 import analog
import node45.freepdk45.alliance from .freepdk45 import alliance
import node45.freepdk45.etesian from .freepdk45 import etesian
import node45.freepdk45.kite from .freepdk45 import kite
import node45.freepdk45.plugins from .freepdk45 import plugins
import node45.freepdk45.stratus1 from .freepdk45 import stratus1
import node45.freepdk45.devices from .freepdk45 import devices
Cfg.Configuration.popDefaultPriority() Cfg.Configuration.popDefaultPriority()
helpers.tagConfModules() tagConfModules()

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,13 +13,13 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import os import os
import os.path import os.path
from CRL import Environment from coriolis.CRL import Environment, AllianceFramework
from CRL import AllianceFramework
allianceTop = None allianceTop = None

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
#import common.analog #from ...common import analog

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,14 +13,15 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath, sysConfDir
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.devices from ...common import devices
from common.devices import addDevice from ...common.devices import addDevice
chamsDir = helpers.sysConfDir + '/share/coriolis2/' chamsDir = sysConfDir + '/share/coriolis2/'
spiceDir = chamsDir + 'spice/' spiceDir = chamsDir + 'spice/'

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,10 +13,10 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.display from ...common import display
display.createStyles( scale=0.5 )
common.display.createStyles( scale=0.5 )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.etesian from ...common import etesian

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,17 +13,15 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cgf as Cfg
import helpers.io from coriolis.helpers import truncPath, l, u, n
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
from Hurricane import DataBase from coriolis.Hurricane import DataBase
from CRL import AllianceFramework from coriolis.CRL import AllianceFramework, RoutingGauge, \
from CRL import RoutingGauge RoutingLayerGauge, CellGauge
from CRL import RoutingLayerGauge from ...common import kite
from CRL import CellGauge
from helpers import l, n, u
import common.kite
p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 ) p = Cfg.getParamDouble ( 'lefImport.minTerminalWidth' ).setDouble ( 0.0 )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.misc from ...common import misc

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.patterns from ...common import patterns

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,11 +13,10 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath, l, u, n
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
from helpers import l, u, n
Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 ) Cfg.getParamInt ( "chip.block.rails.count" ).setInt ( 5 )
Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) ) Cfg.getParamInt ( "chip.block.rails.hWidth" ).setInt ( l( 24) )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,11 +13,12 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.stratus1 from ...common import stratus1
Cfg.getParamString( "stratus1.format" ).setString( "vst" ) Cfg.getParamString( "stratus1.format" ).setString( "vst" )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,13 +13,11 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath, l, u, n
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
from helpers import l, u, n from coriolis.Hurricane import DbU, DataBase, Technology
from Hurricane import DbU
from Hurricane import DataBase
from Hurricane import Technology
def setEnclosures ( layer, subLayer, enclosures ): def setEnclosures ( layer, subLayer, enclosures ):
@ -47,8 +45,8 @@ DbU.setSymbolicSnapGridStep( DbU.fromLambda( 1.0) )
DbU.setPolygonStep ( DbU.fromGrid ( 1.0) ) DbU.setPolygonStep ( DbU.fromGrid ( 1.0) )
import common from ..common import loadGdsLayers
from common.technology import * from ..common.technology import *
# Rules for real layers. # Rules for real layers.
metal1 .setMinimalSpacing( u( 0.065) ) metal1 .setMinimalSpacing( u( 0.065) )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,30 +13,31 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import Cfg import coriolis.Cfg as Cfg
import helpers.io from coriolis.helpers import truncPath, tagConfModules
helpers.io.vprint( 1, ' o Loading "node600/phenitec" technology.' ) from coriolis.helpers.io import vprint
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) vprint( 1, ' o Loading "node600/phenitec" technology.' )
vprint( 2, ' - "%s".' % truncPath(__file__) )
from Hurricane import DataBase from coriolis.Hurricane import DataBase
from CRL import System from coriolis.CRL import System
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile ) Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.ConfigurationFile )
if not DataBase.getDB(): DataBase.create() if not DataBase.getDB(): DataBase.create()
System.get() System.get()
import node600.phenitec.misc from .phenitec import misc
import node600.phenitec.technology from .phenitec import technology
import node600.phenitec.display from .phenitec import display
import node600.phenitec.analog from .phenitec import analog
import node600.phenitec.alliance from .phenitec import alliance
import node600.phenitec.etesian from .phenitec import etesian
import node600.phenitec.kite from .phenitec import kite
import node600.phenitec.plugins from .phenitec import plugins
import node600.phenitec.stratus1 from .phenitec import stratus1
import node600.phenitec.devices from .phenitec import devices
Cfg.Configuration.popDefaultPriority() Cfg.Configuration.popDefaultPriority()
helpers.tagConfModules() tagConfModules()

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,13 +13,13 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "{}".'.format(helpers.truncPath(__file__)) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "{}".'.format(truncPath(__file__)) )
import os import os
import os.path import os.path
from CRL import Environment from coriolis.CRL import Environment, AllianceFramework
from CRL import AllianceFramework
allianceTop = None allianceTop = None

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
#import common.analog #from ...common import analog

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,14 +13,15 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath, sysConfDir
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.devices from ...common import devices
from common.devices import addDevice from ...common.devices import addDevice
chamsDir = helpers.sysConfDir + '/share/coriolis2/' chamsDir = sysConfDir + '/share/coriolis2/'
spiceDir = chamsDir + 'spice/' spiceDir = chamsDir + 'spice/'

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,10 +13,10 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) from coriolis.helpers.io import vprint
vprint( 2, ' - "%s".' % truncPath(__file__) )
import common.display from ...common import display
display.createStyles( scale=0.5 )
common.display.createStyles( scale=0.5 )

View File

@ -1,6 +1,6 @@
# This file is part of the Coriolis Software. # 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 | # | C O R I O L I S |
@ -13,7 +13,8 @@
# +-----------------------------------------------------------------+ # +-----------------------------------------------------------------+
import helpers.io from coriolis.helpers import truncPath
helpers.io.vprint( 2, ' - "%s".' % helpers.truncPath(__file__) ) 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