2020-04-08 04:24:42 -05:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
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.
2023-02-27 15:14:32 -06:00
|
|
|
from ..Hurricane import DataBase, UpdateSession, DbU, Box, Net
|
|
|
|
from ..Analog import Device
|
|
|
|
from ..helpers import trace, l, u, n
|
|
|
|
from ..helpers.io import catch
|
|
|
|
from . import getRules, paramsmatrix
|
|
|
|
from .resistorsnake import Resistor
|
2020-04-08 04:24:42 -05:00
|
|
|
|
2020-04-10 05:15:23 -05:00
|
|
|
#helpers.setTraceLevel( 100 )
|
2020-04-08 04:24:42 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def checkCoherency ( device, bbMode ):
|
|
|
|
message = 'Resistor.checkCoherency(): device "%s".\n' % device.getName()
|
|
|
|
|
|
|
|
techno = DataBase.getDB().getTechnology()
|
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.
2023-02-27 15:14:32 -06:00
|
|
|
rules = getRules()
|
2020-04-08 04:24:42 -05:00
|
|
|
|
|
|
|
resistance = device.getParameter( 'R' )
|
|
|
|
if resistance is None:
|
|
|
|
message += ' Missing "resistance" parameter on %s' % str(device)
|
|
|
|
return (False, message)
|
|
|
|
|
|
|
|
return (True, "")
|
|
|
|
|
|
|
|
|
|
|
|
def layout ( device, bbMode ):
|
|
|
|
|
|
|
|
trace( 100, ',+', '\tResistor.layout() called for "%s".\n' % device.getName())
|
|
|
|
|
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.
2023-02-27 15:14:32 -06:00
|
|
|
paramsMatrix = paramsmatrix.ParamsMatrix()
|
2020-04-08 04:24:42 -05:00
|
|
|
|
|
|
|
try:
|
|
|
|
resistance = device.getParameter( 'R' ).getValue()
|
|
|
|
width = device.getParameter( 'W' ).getValue()
|
|
|
|
length = device.getParameter( 'L' ).getValue()
|
|
|
|
bends = device.getParameter( 'bends' ).getValue()
|
|
|
|
|
2022-07-13 04:20:55 -05:00
|
|
|
width = u( 8.0)
|
|
|
|
length = u(100.0)
|
|
|
|
bends = 1
|
|
|
|
trace( 100, '\tpR:{0}\n'.format(device.getParameter('R')) )
|
2020-04-08 04:24:42 -05:00
|
|
|
trace( 100, '\tpW:{0}\n'.format(device.getParameter('W')) )
|
2022-07-13 04:20:55 -05:00
|
|
|
trace( 100, '\tpL:{0}\n'.format(device.getParameter('L')) )
|
2020-04-08 04:24:42 -05:00
|
|
|
trace( 100, '\tresistance:{0}, width:{1}, length:{2}\n'.format(resistance,width,length) )
|
|
|
|
|
|
|
|
typeArg = 'UnknownType'
|
|
|
|
if device.isRPOLYH(): typeArg = 'RPOLYH'
|
|
|
|
if device.isRPOLY2PH(): typeArg = 'RPOLY2PH'
|
|
|
|
|
|
|
|
netsArg = [ device.getNet('t1'), device.getNet('t2') ]
|
|
|
|
|
|
|
|
resistor = Resistor( device
|
|
|
|
, netsArg
|
|
|
|
, typeArg
|
|
|
|
, resistance
|
|
|
|
, resDim={ 'width':width, 'length':length }
|
|
|
|
, direction='vertical'
|
|
|
|
, bends=bends
|
|
|
|
, shape=135
|
|
|
|
)
|
|
|
|
resistor.create()
|
|
|
|
|
|
|
|
for net in netsArg:
|
|
|
|
device.setRestrictions( net, Device.SouthBlocked|Device.NorthBlocked )
|
|
|
|
|
|
|
|
paramsMatrix.setGlobalCapacitorParams( device.getAbutmentBox() )
|
|
|
|
trace( 100, '++' )
|
|
|
|
#paramsMatrix.trace()
|
|
|
|
|
2022-07-13 04:20:55 -05:00
|
|
|
except Exception as e:
|
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.
2023-02-27 15:14:32 -06:00
|
|
|
catch( e )
|
2020-04-08 04:24:42 -05:00
|
|
|
|
|
|
|
trace( 100, '---' )
|
|
|
|
|
|
|
|
return paramsMatrix.getMatrix()
|