Added support for multiple symbolic+real technology in configuration.

In CRL Core, the layout of the files under "/coriolis2/etc" changes.
Instead of having them directly under "etc", they are now replicated,
in subdirectories. Each subdirectory having the name of the associated
symbolic or real technology (they are kept separated). We have, for
now:
* etc/cmos/    : symbolic, the Alliance original one.
* etc/vsc200/  : symbolic, for G. Petley vsclib.
* etc/hcmos9/  : real, generic fake (130nm).
To tell which pair (symbolic,real) technologies must be used we create
a *second* (sigh) configuration file "coriolis2_techno.conf", and it's
hidden counterpart in the user's account, to set it up. It needs to be
separate because it is read as early as possible and select which set
of configuration files would be read.

Also add support up to METAL8 and POLY2 in CRL core and it's Alliance
parser/drivers.
This commit is contained in:
Jean-Paul Chaput 2014-05-21 14:50:22 +02:00
parent b98afd8385
commit 4439d3a142
35 changed files with 1698 additions and 486 deletions

View File

@ -1,22 +1,15 @@
install ( FILES technology_symbolic.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology_cmos130_s2r.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES misc.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES hMetis.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES nimbus.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES mauka.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES kite.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES alliance.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES patterns.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES display.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES stratus1.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES coriolis2_techno.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( DIRECTORY cmos DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( DIRECTORY vsc200 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( DIRECTORY hcmos9 DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES environment.alliance.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.symbolic.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.cmos130.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.cmos65.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.ams035.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.freePDK45.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.fake.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES display.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES tools.configuration.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES environment.alliance.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.symbolic.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.cmos130.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.cmos65.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.ams035.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.freePDK45.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES technology.fake.s2r.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES display.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )
install ( FILES tools.configuration.xml DESTINATION ${SYS_CONF_DIR}/coriolis2 )

View File

@ -1,14 +1,15 @@
# -*- Mode:Python -*-
cellsTop = '/soc/alliance/cells/'
cellsTop = '/soc/alliance/cells/'
allianceConfig = \
( ( 'SYMBOLIC_TECHNOLOGY', helpers.sysConfDir+'/technology.symbolic.xml' )
, ( 'REAL_TECHNOLOGY' , helpers.sysConfDir+'/technology.cmos130.s2r.xml')
, ( 'DISPLAY' , helpers.sysConfDir+'/display.xml' )
( ( 'SYMB_TECHNO_NAME' , helpers.symbolicTechno )
, ( 'REAL_TECHNO_NAME' , helpers.realTechno )
, ( 'SYMBOLIC_TECHNOLOGY', helpers.symbolicDir+'/technology.conf' )
, ( 'REAL_TECHNOLOGY' , helpers.realDir +'/technology.conf' )
, ( 'DISPLAY' , helpers.sysConfDir +'/display.xml' )
, ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'sxlib' , Environment.Append)

View File

@ -132,6 +132,7 @@ stylesTable = \
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'antihash0.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'antihash1.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'poids2.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'poly2' , { 'color':'Orange' , 'pattern':'poids2.8' , 'border':1, 'threshold':1.50 })
# Routing Layers.
, (Group , 'Routing Layers')
@ -142,6 +143,8 @@ stylesTable = \
, (Drawing, 'metal4', { 'color':'Green' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal5', { 'color':'Yellow' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal6', { 'color':'Violet' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal7', { 'color':'Red' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal8', { 'color':'Blue' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
# Cuts (VIA holes).
, (Group , 'Cuts (VIA holes)')
@ -151,6 +154,8 @@ stylesTable = \
, (Drawing, 'cut3', { 'color':'Green' , 'threshold':0.80 })
, (Drawing, 'cut4', { 'color':'Yellow' , 'threshold':0.80 })
, (Drawing, 'cut5', { 'color':'Violet' , 'threshold':0.80 })
, (Drawing, 'cut6', { 'color':'Red' , 'threshold':0.80 })
, (Drawing, 'cut7', { 'color':'Blue' , 'threshold':0.80 })
# MIM6.
, (Group , 'MIM6')
@ -167,6 +172,8 @@ stylesTable = \
, (Drawing, 'blockage4', { 'color':'Green' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage5', { 'color':'Yellow' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage6', { 'color':'Violet' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage7', { 'color':'Red' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage8', { 'color':'Blue' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
# Knick & Kite.
, (Group , 'Knick & Kite')
@ -303,6 +310,7 @@ stylesTable = \
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'diffusion.32' , 'border':0, 'threshold':1.50 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'active.32' , 'border':0, 'threshold':1.50 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'antipoids2.32', 'border':1, 'threshold':1.50 })
, (Drawing, 'poly2' , { 'color':'Orange' , 'pattern':'antipoids2.32', 'border':1, 'threshold':1.50 })
# Group: Routing Layers.
, (Group , 'Routing Layers')

View File

@ -1,4 +1,3 @@
# -*- Mode:Python -*-
viewerConfig = { 'precision':2, 'gridstep':1.0 }
@ -24,6 +23,7 @@ realLayersTable = \
, ('pImplant' , BasicLayer.Material.pImplant)
, ('active' , BasicLayer.Material.active )
, ('poly' , BasicLayer.Material.poly )
, ('poly2' , BasicLayer.Material.poly )
, ('cut0' , BasicLayer.Material.cut ) # Routing Layers & VIA Cuts.
, ('metal1' , BasicLayer.Material.metal ) # WARNING: order *is* meaningful.
, ('cut1' , BasicLayer.Material.cut )
@ -36,6 +36,10 @@ realLayersTable = \
, ('metal5' , BasicLayer.Material.metal )
, ('cut5' , BasicLayer.Material.cut )
, ('metal6' , BasicLayer.Material.metal )
, ('cut6' , BasicLayer.Material.cut )
, ('metal7' , BasicLayer.Material.metal )
, ('cut7' , BasicLayer.Material.cut )
, ('metal8' , BasicLayer.Material.metal )
, ('topmim6' , BasicLayer.Material.other ) # For Capacitances & Pads.
, ('botmim6' , BasicLayer.Material.other )
, ('padopen' , BasicLayer.Material.other )
@ -51,6 +55,8 @@ realLayersTable = \
, ('blockage4' , BasicLayer.Material.blockage, 'metal4')
, ('blockage5' , BasicLayer.Material.blockage, 'metal5')
, ('blockage6' , BasicLayer.Material.blockage, 'metal6')
, ('blockage7' , BasicLayer.Material.blockage, 'metal7')
, ('blockage8' , BasicLayer.Material.blockage, 'metal8')
, ('gmetalh' , BasicLayer.Material.metal ) # Special BasicLayers for Knik & Kite Routers.
, ('gcut' , BasicLayer.Material.cut ) # *Must be after all others*
, ('gmetalv' , BasicLayer.Material.metal )
@ -75,12 +81,15 @@ symbolicLayersTable = \
, ('NTRANS' , TypeTransistor, ('nImplant' , 'active', 'poly', None ))
, ('PTRANS' , TypeTransistor, ('pImplant' , 'active', 'poly', 'nWell'))
, ('POLY' , TypeRegular , ('poly' ,))
, ('POLY2' , TypeRegular , ('poly2' ,))
, ('METAL1' , TypeRegular , ('metal1' ,))
, ('METAL2' , TypeRegular , ('metal2' ,))
, ('METAL3' , TypeRegular , ('metal3' ,))
, ('METAL4' , TypeRegular , ('metal4' ,))
, ('METAL5' , TypeRegular , ('metal5' ,))
, ('METAL6' , TypeRegular , ('metal6' ,))
, ('METAL7' , TypeRegular , ('metal7' ,))
, ('METAL8' , TypeRegular , ('metal8' ,))
, ('CONT_BODY_N', TypeContact , ('nImplant' , 'active', 'cut0', 'metal1', 'nWell'))
, ('CONT_BODY_P', TypeContact , ('pImplant' , 'active', 'cut0', 'metal1', 'pWell'))
, ('CONT_DIF_N' , TypeContact , ('nImplant' , 'active', 'cut0', 'metal1', None ))
@ -91,12 +100,16 @@ symbolicLayersTable = \
, ('VIA34' , TypeVia , ( 'metal3', 'cut3', 'metal4'))
, ('VIA45' , TypeVia , ( 'metal4', 'cut4', 'metal5'))
, ('VIA56' , TypeVia , ( 'metal5', 'cut5', 'metal6'))
, ('VIA67' , TypeVia , ( 'metal6', 'cut6', 'metal7'))
, ('VIA78' , TypeVia , ( 'metal7', 'cut7', 'metal8'))
, ('BLOCKAGE1' , TypeRegular , ('blockage1', ))
, ('BLOCKAGE2' , TypeRegular , ('blockage2', ))
, ('BLOCKAGE3' , TypeRegular , ('blockage3', ))
, ('BLOCKAGE4' , TypeRegular , ('blockage4', ))
, ('BLOCKAGE5' , TypeRegular , ('blockage5', ))
, ('BLOCKAGE6' , TypeRegular , ('blockage6', ))
, ('BLOCKAGE7' , TypeRegular , ('blockage7', ))
, ('BLOCKAGE8' , TypeRegular , ('blockage8', ))
, ('gcontact' , TypeVia , ('gmetalh' , 'gcut', 'gmetalv'))
)
@ -107,7 +120,6 @@ symbolicLayersTable = \
# it applies, an optional real layer in case where there is
# more than one, and the dimension name.
# * value : the rule (dimension) value expressed in lambda.
symbolicRulesTable = \
( ('NWELL.nWell.extention.cap' , 0.0)
, ('PWELL.pWell.extention.cap' , 0.0)
@ -159,6 +171,8 @@ symbolicRulesTable = \
, ('POLY.minimum.width' , 1.0)
, ('POLY.poly.extention.cap' , 0.5)
, ('POLY2.minimum.width' , 1.0)
, ('POLY2.poly.extention.cap' , 0.5)
# Routing Layers.
, ('METAL1.minimum.width' , 1.0)
@ -173,6 +187,10 @@ symbolicRulesTable = \
, ('METAL5.metal5.extention.cap' , 1.0)
, ('METAL6.minimum.width' , 2.0)
, ('METAL6.metal6.extention.cap' , 1.0)
, ('METAL7.minimum.width' , 2.0)
, ('METAL7.metal6.extention.cap' , 1.0)
, ('METAL8.minimum.width' , 2.0)
, ('METAL8.metal6.extention.cap' , 1.0)
# Contacts (i.e. Active <--> Metal).
, ('CONT_BODY_N.minimum.side' , 1.0)
@ -217,6 +235,12 @@ symbolicRulesTable = \
, ('VIA56.minimum.side' , 1.0)
, ('VIA56.metal5.enclosure' , 0.5)
, ('VIA56.metal6.enclosure' , 0.5)
, ('VIA67.minimum.side' , 1.0)
, ('VIA67.metal6.enclosure' , 0.5)
, ('VIA67.metal7.enclosure' , 0.5)
, ('VIA78.minimum.side' , 1.0)
, ('VIA78.metal7.enclosure' , 0.5)
, ('VIA78.metal8.enclosure' , 0.5)
# Blockages.
, ('BLOCKAGE1.minimum.width' , 1.0)
@ -231,6 +255,10 @@ symbolicRulesTable = \
, ('BLOCKAGE5.blockage5.extention.cap' , 1.0)
, ('BLOCKAGE6.minimum.width' , 2.0)
, ('BLOCKAGE6.blockage6.extention.cap' , 1.0)
, ('BLOCKAGE7.minimum.width' , 2.0)
, ('BLOCKAGE7.blockage6.extention.cap' , 1.0)
, ('BLOCKAGE8.minimum.width' , 2.0)
, ('BLOCKAGE8.blockage6.extention.cap' , 1.0)
)
@ -239,8 +267,9 @@ symbolicRulesTable = \
workingLayersTable = \
[ 'cut0', 'cut1' , 'cut2' , 'cut3' , 'cut4' , 'cut5'
, 'POLY', 'METAL1' , 'METAL2' , 'METAL3' , 'METAL4' , 'METAL5' , 'METAL6'
, 'BLOCKAGE1', 'BLOCKAGE2', 'BLOCKAGE3', 'BLOCKAGE4', 'BLOCKAGE5', 'BLOCKAGE6'
, 'VIA12' , 'VIA23' , 'VIA34' , 'VIA45' , 'VIA56'
, 'gcut', 'gmetalh' , 'gmetalv' , 'gcontact'
, 'POLY', 'POLY2'
, 'METAL1' , 'METAL2' , 'METAL3' , 'METAL4' , 'METAL5' , 'METAL6' , 'METAL7' , 'METAL8'
, 'BLOCKAGE1', 'BLOCKAGE2', 'BLOCKAGE3', 'BLOCKAGE4', 'BLOCKAGE5', 'BLOCKAGE6', 'BLOCKAGE7', 'BLOCKAGE8'
, 'VIA12' , 'VIA23' , 'VIA34' , 'VIA45' , 'VIA56'
, 'gcut', 'gmetalh', 'gmetalv', 'gcontact'
]

View File

@ -0,0 +1,4 @@
# -*- Mode:Python -*-
symbolicTechno = 'cmos'
realTechno = 'hcmos9'

View File

@ -0,0 +1,52 @@
# -*- Mode:Python -*-
cellsTop = '/usr/share/pharosc/alliance/cells/'
allianceConfig = \
( ( 'SYMB_TECHNO_NAME' , helpers.symbolicTechno )
, ( 'REAL_TECHNO_NAME' , helpers.realTechno )
, ( 'SYMBOLIC_TECHNOLOGY', helpers.symbolicDir+'/technology.conf' )
, ( 'REAL_TECHNOLOGY' , helpers.realDir +'/technology.conf' )
, ( 'DISPLAY' , helpers.sysConfDir +'/display.xml' )
, ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'vsclib' , Environment.Append)
, ) )
, ( 'SCALE_X' , 100)
, ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*')
, ( 'BLOCKAGE' , '^blockage[Nn]et*')
)
# Format of routingGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width) )
routingGaugesTable = {}
routingGaugesTable['sxlib'] = \
( ( 'METAL1', ( RoutingLayerGauge.Vertical , RoutingLayerGauge.PinOnly, 0, 0.0, 0, 5, 2, 2 ) )
, ( 'METAL2', ( RoutingLayerGauge.Horizontal, RoutingLayerGauge.Default, 1, 7.0, 0, 5, 2, 2 ) )
, ( 'METAL3', ( RoutingLayerGauge.Vertical , RoutingLayerGauge.Default, 2, 0.0, 0, 5, 2, 2 ) )
, ( 'METAL4', ( RoutingLayerGauge.Horizontal, RoutingLayerGauge.Default, 3, 0.0, 0, 5, 2, 2 ) )
, ( 'METAL5', ( RoutingLayerGauge.Vertical , RoutingLayerGauge.Default, 4, 0.0, 0, 5, 2, 2 ) )
#, ( 'METAL6', ( RoutingLayerGauge.Horizontal, RoutingLayerGauge.Default, 5, 0.0, 0, 5, 2, 2 ) )
#, ( 'METAL7', ( RoutingLayerGauge.Vertical , RoutingLayerGauge.Default, 6, 0.0, 0, 5, 2, 2 ) )
)
# Format of cellGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_PIN, xy_common_pitch, slice_height, slice_step )
cellGaugesTable = {}
cellGaugesTable['sxlib'] = ('metal2', 5.0, 50.0, 5.0)

View File

@ -0,0 +1,357 @@
# -*- Mode:Python -*-
defaultStyle = 'Printer.Coriolis'
stylesTable = \
( ( (Style , 'Alliance.Coriolis [black]', 'Alliance Coriolis Look - black background')
, (Darkening, 1.0, 3.0, 2.5)
# Group: Viewer.
, (Group , 'Viewer')
, (Drawing, 'fallback' , { 'color':'Gray238' , 'border':1, 'pattern':'55AA55AA55AA55AA' })
, (Drawing, 'background' , { 'color':'Gray50' , 'border':1 })
, (Drawing, 'foreground' , { 'color':'White' , 'border':1 })
, (Drawing, 'rubber' , { 'color':'192,0,192' , 'border':2, 'threshold':0.02 })
, (Drawing, 'phantom' , { 'color':'Seashell4' , 'border':1 })
, (Drawing, 'boundaries' , { 'color':'208,199,192', 'border':1, 'pattern':'0000000000000000', 'threshold':0 })
, (Drawing, 'marker' , { 'color':'80,250,80' , 'border':1 })
, (Drawing, 'selectionDraw' , { 'color':'White' , 'border':1 })
, (Drawing, 'selectionFill' , { 'color':'White' , 'border':1 })
, (Drawing, 'grid' , { 'color':'White' , 'border':1, 'threshold':2.0 })
, (Drawing, 'spot' , { 'color':'White' , 'border':2, 'threshold':6.0 })
, (Drawing, 'ghost' , { 'color':'White' , 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'White' , 'border':1, 'threshold':0.0 })
, (Drawing, 'text.instance' , { 'color':'Black' , 'border':1, 'threshold':4.0 })
, (Drawing, 'text.reference' , { 'color':'White' , 'border':1, 'threshold':20.0 })
, (Drawing, 'undef' , { 'color':'Violet' , 'border':0, 'pattern':'2244118822441188' })
, (Drawing, 'mauka.container', { 'color':'Magenta4' , 'border':4, 'pattern':'0000000000000000', 'goMatched':False })
# Group: Active Layer.
, (Group , 'Active Layer')
, (Drawing, 'nWell' , { 'color':'Tan' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.5 })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'55AA55AA55AA55AA', 'threshold':1.50 })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.50 })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.50 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'antihash1.8' , 'threshold':1.50 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.50 })
# Group: Routing Layer.
, (Group , 'Routing Layer')
, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80 })
, (Drawing, 'metal2' , { 'color':'Aqua' , 'pattern':'light_antihash0.8' , 'threshold':0.02 })
, (Drawing, 'metal3' , { 'color':'LightPink', 'pattern':'light_antihash1.8' , 'threshold':0.02 })
, (Drawing, 'metal4' , { 'color':'Green' , 'pattern':'light_antihash2.8' , 'threshold':0.02 })
, (Drawing, 'metal5' , { 'color':'Yellow' , 'pattern':'1144114411441144' , 'threshold':0.02 })
, (Drawing, 'metal6' , { 'color':'Violet' , 'pattern':'light_antihash0.8' , 'threshold':0.02 })
# Group: Cuts (VIA holes).
, (Group , 'Cuts (VIA Holes)')
, (Drawing, 'cut0', { 'color':'0,150,150', 'threshold':1.50 })
, (Drawing, 'cut1', { 'color':'Aqua' , 'threshold':0.80 })
, (Drawing, 'cut2', { 'color':'LightPink', 'threshold':0.80 })
, (Drawing, 'cut3', { 'color':'Green' , 'threshold':0.80 })
, (Drawing, 'cut4', { 'color':'Yellow' , 'threshold':0.80 })
, (Drawing, 'cut5', { 'color':'Violet' , 'threshold':0.80 })
# Group: MIM6.
, (Group , 'MIM6')
, (Drawing, 'topmim6', { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80 })
, (Drawing, 'botmim6', { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80 })
, (Drawing, 'padopen', { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80 })
, (Drawing, 'alucap' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80 })
# Group: Blockages.
, (Group , 'Blockages')
, (Drawing, 'blockage1', { 'color':'Blue' , 'pattern':'006070381c0e0703' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage2', { 'color':'Aqua' , 'pattern':'8103060c183060c0' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage3', { 'color':'LightPink', 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage4', { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage5', { 'color':'Yellow' , 'pattern':'1144114411441144' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage6', { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80, 'border':2 })
# Group: Knik & Kite.
, (Group , 'Knik & Kite')
, (Drawing, 'SPL1' , { 'color':'Red' })
, (Drawing, 'AutoLayer', { 'color':'Magenta' })
, (Drawing, 'gmetalh' , { 'color':'128,255,200', 'pattern':'light_antihash0.8', 'border':1 })
, (Drawing, 'gmetalv' , { 'color':'200,200,255', 'pattern':'light_antihash1.8', 'border':1 })
, (Drawing, 'gcut' , { 'color':'255,255,190', 'border':1 })
)
# ----------------------------------------------------------------------
# Style: Alliance.Coriolis [white].
, ( (Style , 'Alliance.Coriolis [white]', 'Alliance Coriolis Look - white background')
, (Inherit , 'Alliance.Coriolis [black]')
, (Darkening, 1.0, 3.0, 2.5)
, (Group , 'Viewer')
, (Drawing, 'fallback' , { 'color':'Black', 'border':1, 'pattern':'55AA55AA55AA55AA' })
, (Drawing, 'background' , { 'color':'White', 'border':1 })
, (Drawing, 'foreground' , { 'color':'Black', 'border':1 })
, (Drawing, 'selectionDraw', { 'color':'Black', 'border':1 })
, (Drawing, 'selectionFill', { 'color':'Black', 'border':1 })
, (Drawing, 'grid' , { 'color':'Black', 'border':1, 'threshold':6.0 })
, (Drawing, 'spot' , { 'color':'Black', 'border':1, 'threshold':6.0 })
, (Drawing, 'ghost' , { 'color':'Black', 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'Black', 'border':1, 'threshold':0.0 })
, (Drawing, 'text.instance', { 'color':'Black', 'border':1, 'threshold':4.0 })
, (Drawing, 'undef' , { 'color':'Black', 'border':0, 'pattern':'2244118822441188' })
)
# ----------------------------------------------------------------------
# Style: Alliance.Classic [black]
, ( (Style, 'Alliance.Classic [black]', 'Alliance Classic Look - black background')
, (Darkening, 1.0, 3.0, 2.5)
# Viewer.
, (Group , 'Viewer')
, (Drawing, 'fallback' , { 'color':'Gray238' , 'border':1, 'pattern':'55AA55AA55AA55AA' })
, (Drawing, 'background' , { 'color':'Gray50' , 'border':1 })
, (Drawing, 'foreground' , { 'color':'White' , 'border':1 })
, (Drawing, 'rubber' , { 'color':'192,0,192' , 'border':4, 'threshold':0.02 })
, (Drawing, 'phantom' , { 'color':'Seashell4' , 'border':1 })
, (Drawing, 'boundaries' , { 'color':'208,199,192', 'border':1, 'pattern':'0000000000000000', 'threshold':0 })
, (Drawing, 'marker' , { 'color':'80,250,80' , 'border':1 })
, (Drawing, 'selectionDraw' , { 'color':'White' , 'border':1 })
, (Drawing, 'selectionFill' , { 'color':'White' , 'border':1 })
, (Drawing, 'grid' , { 'color':'White' , 'border':1, 'threshold':2.0 })
, (Drawing, 'spot' , { 'color':'White' , 'border':2, 'threshold':6.0 })
, (Drawing, 'ghost' , { 'color':'White' , 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'White' , 'border':1, 'threshold':0.0 })
, (Drawing, 'text.instance' , { 'color':'White' , 'border':1, 'threshold':4.0 })
, (Drawing, 'text.reference', { 'color':'White' , 'border':1, 'threshold':20.0 })
, (Drawing, 'undef' , { 'color':'Violet' , 'border':0, 'pattern':'2244118822441188' })
# Active Layers.
, (Group , 'Active Layers')
, (Drawing, 'nWell' , { 'color':'Tan' , 'pattern':'urgo.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'urgo.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'antihash0.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'antihash0.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'antihash1.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'poids2.8' , 'border':1, 'threshold':1.50 })
, (Drawing, 'poly2' , { 'color':'Magenta4' , 'pattern':'poids2.8' , 'border':1, 'threshold':1.50 })
# Routing Layers.
, (Group , 'Routing Layers')
#, (Drawing, 'metal1', { 'color':'Blue' , 'pattern':'light_antislash0.8', 'border':1, 'threshold':0.80 })
, (Drawing, 'metal1', { 'color':'Blue' , 'pattern':'slash.8' , 'border':1, 'threshold':0.80 })
, (Drawing, 'metal2', { 'color':'Aqua' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal3', { 'color':'LightPink', 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal4', { 'color':'Green' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal5', { 'color':'Yellow' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal6', { 'color':'Violet' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal7', { 'color':'Red' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal8', { 'color':'Blue' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.02 })
# Cuts (VIA holes).
, (Group , 'Cuts (VIA holes)')
, (Drawing, 'cut0', { 'color':'0,150,150', 'threshold':1.50 })
, (Drawing, 'cut1', { 'color':'Aqua' , 'threshold':0.80 })
, (Drawing, 'cut2', { 'color':'LightPink', 'threshold':0.80 })
, (Drawing, 'cut3', { 'color':'Green' , 'threshold':0.80 })
, (Drawing, 'cut4', { 'color':'Yellow' , 'threshold':0.80 })
, (Drawing, 'cut5', { 'color':'Violet' , 'threshold':0.80 })
, (Drawing, 'cut6', { 'color':'Red' , 'threshold':0.80 })
, (Drawing, 'cut7', { 'color':'Blue' , 'threshold':0.80 })
# MIM6.
, (Group , 'MIM6')
, (Drawing, 'topmim6', { 'color':'Blue' , 'pattern':'poids2.32' , 'threshold':0.80 })
, (Drawing, 'botmim6', { 'color':'Aqua' , 'pattern':'light_antihash0.8' , 'threshold':0.80 })
, (Drawing, 'padopen', { 'color':'LightPink', 'pattern':'light_antihash1.8' , 'threshold':0.80 })
, (Drawing, 'alucap' , { 'color':'Green' , 'pattern':'light_antihash2.8' , 'threshold':0.80 })
# Blockages.
, (Group , 'Blockages')
, (Drawing, 'blockage1', { 'color':'Blue' , 'pattern':'light_antislash0.8', 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage2', { 'color':'Aqua' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage3', { 'color':'LightPink', 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage4', { 'color':'Green' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage5', { 'color':'Yellow' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage6', { 'color':'Violet' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage7', { 'color':'Red' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage8', { 'color':'Blue' , 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
# Knick & Kite.
, (Group , 'Knick & Kite')
, (Drawing, 'SPL1' , { 'color':'Red' })
, (Drawing, 'AutoLayer', { 'color':'Magenta' })
, (Drawing, 'gmetalh' , { 'color':'128,255,200', 'pattern':'antislash2.32' , 'border':1 })
, (Drawing, 'gmetalv' , { 'color':'200,200,255', 'pattern':'light_antihash1.8', 'border':1 })
, (Drawing, 'gcut' , { 'color':'255,255,190', 'border':1 })
)
# ----------------------------------------------------------------------
# Style: Alliance.Classic [white]
, ( (Style, 'Alliance.Classic [white]', 'Alliance Classic Look - white background')
, (Inherit , 'Alliance.Classic [black]')
, (Darkening, 1.0, 3.0, 2.5)
# Group: Viewer.
, (Group , 'Viewer')
, (Drawing, 'fallback' , { 'color':'Black', 'border':1, 'pattern':'55AA55AA55AA55AA' })
, (Drawing, 'background' , { 'color':'White', 'border':1 })
, (Drawing, 'foreground' , { 'color':'Black', 'border':1 })
, (Drawing, 'selectionDraw' , { 'color':'Black', 'border':1 })
, (Drawing, 'selectionFill' , { 'color':'Black', 'border':1 })
, (Drawing, 'grid' , { 'color':'Black', 'border':1, 'threshold':6.0 })
, (Drawing, 'spot' , { 'color':'Black', 'border':1, 'threshold':6.0 })
, (Drawing, 'ghost' , { 'color':'Black', 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'Black', 'border':1, 'threshold':0.0 })
, (Drawing, 'text.instance' , { 'color':'Black', 'border':1, 'threshold':4.0 })
, (Drawing, 'text.reference', { 'color':'Black', 'border':1, 'threshold':20.0 })
, (Drawing, 'undef' , { 'color':'Black', 'border':0, 'pattern':'2244118822441188' })
)
# ----------------------------------------------------------------------
# Style: Ispd Global Route [black]
, ( (Style, 'Ispd Global Route', 'ISPD Global Route Look - black background')
, (Inherit , 'Alliance.Classic [black]')
, (Darkening, 1.0, 3.0, 2.5)
# Group: Viewer.
, (Group , 'Viewer')
, (Drawing, 'background', { 'color':'Black' , 'border':1 })
, (Drawing, 'rubber' , { 'color':'192,0,192', 'border':1, 'threshold':0 })
# Group: Knik & Kite.
, (Group , 'Knik & Kite')
, (Drawing, 'gmetalh' , { 'color':'128,255,200', 'pattern':'light_antihash0.8' , 'border':1, 'threshold':0 })
, (Drawing, 'gmetalv' , { 'color':'200,200,255', 'pattern':'light_antihash1.8' , 'border':1, 'threshold':0 })
, (Drawing, 'gcontact', { 'color':'255,255,190', 'border':1, 'threshold':0 })
)
# ----------------------------------------------------------------------
# Style: Layout Design [black].
, ( (Style, 'Layout Design', 'Useful for debugging layout - black background')
, (Inherit , 'Alliance.Classic [black]')
, (Darkening, 1.0, 3.0, 2.5)
# Active Layers.
, (Group , 'Active Layers')
, (Drawing, 'nWell' , { 'color':'Tan' , 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
# Routing Layers.
, (Group , 'Routing Layers')
, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'0000000000000000', 'threshold':0.80, 'border':2 })
, (Drawing, 'metal2' , { 'color':'Aqua' , 'pattern':'0000000000000000', 'threshold':0.40, 'border':2 })
, (Drawing, 'metal3' , { 'color':'LightPink', 'pattern':'0000000000000000', 'threshold':0.02, 'border':2 })
, (Drawing, 'metal4' , { 'color':'Green' , 'pattern':'0000000000000000', 'threshold':0.02, 'border':2 })
, (Drawing, 'metal5' , { 'color':'Yellow' , 'pattern':'0000000000000000', 'threshold':0.02, 'border':2 })
, (Drawing, 'metal6' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.02, 'border':2 })
# Cuts (VIA holes).
, (Group , 'Cuts (VIA holes)')
, (Drawing, 'cut0' , { 'color':'0,150,150', 'pattern':'poids4.8' , 'threshold':1.50, 'border':1 })
, (Drawing, 'cut1' , { 'color':'Aqua' , 'pattern':'0000000000000000', 'threshold':0.80, 'border':1 })
, (Drawing, 'cut2' , { 'color':'LightPink', 'pattern':'0000000000000000', 'threshold':0.80, 'border':1 })
, (Drawing, 'cut3' , { 'color':'Green' , 'pattern':'0000000000000000', 'threshold':0.80, 'border':1 })
, (Drawing, 'cut4' , { 'color':'Yellow' , 'pattern':'0000000000000000', 'threshold':0.80, 'border':1 })
, (Drawing, 'cut5' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.80, 'border':1 })
)
# ----------------------------------------------------------------------
# Style: Layout Design [white].
, ( (Style, 'Layout Design White', 'Useful for debugging layout - white background')
, (Inherit , 'Layout Design')
, (Darkening, 1.0, 3.0, 2.5)
# Group: Viewer.
, (Group , 'Viewer')
, (Drawing, 'background' , { 'color':'White', 'border':1 })
, (Drawing, 'grid' , { 'color':'Black', 'border':1, 'threshold':2.0 })
, (Drawing, 'spot' , { 'color':'Black', 'border':1, 'threshold':2.0 })
, (Drawing, 'text.ruler' , { 'color':'Black', 'border':1, 'threshold':0.0 })
, (Drawing, 'text.reference', { 'color':'Black', 'border':1, 'threshold':20.0 })
# Group: Active Layers.
, (Group , 'Active Layers')
, (Drawing, 'active', { 'color':'175,175,175', 'pattern':'0000000000000000', 'threshold':1.50, 'border':2 })
)
# ----------------------------------------------------------------------
# Style: Look for Printers [white].
, ( (Style, 'Printer.Coriolis', 'Coriolis Look for Printers')
, (Darkening, 1.0, 3.0, 2.5)
# Group: Viewer.
, (Group , 'Viewer')
, (Drawing, 'fallback' , { 'color':'Gray238' , 'border':1, 'pattern':'55AA55AA55AA55AA' })
, (Drawing, 'background' , { 'color':'White' , 'border':1 })
, (Drawing, 'foreground' , { 'color':'Black' , 'border':1 })
, (Drawing, 'rubber' , { 'color':'192,0,192', 'border':4, 'threshold':0.02 })
, (Drawing, 'phantom' , { 'color':'Seashell4', 'border':1 })
, (Drawing, 'boundaries' , { 'color':'Black' , 'border':1, 'pattern':'0000000000000000', 'threshold':0 })
, (Drawing, 'marker' , { 'color':'80,250,80', 'border':1 })
, (Drawing, 'selectionDraw' , { 'color':'Black' , 'border':1 })
, (Drawing, 'selectionFill' , { 'color':'Black' , 'border':1 })
, (Drawing, 'grid' , { 'color':'Black' , 'border':1, 'threshold':2.0 })
, (Drawing, 'spot' , { 'color':'Black' , 'border':2, 'threshold':6.0 })
, (Drawing, 'ghost' , { 'color':'Black' , 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'Black' , 'border':1, 'threshold':0.0 })
, (Drawing, 'text.instance' , { 'color':'Black' , 'border':1, 'threshold':4.0 })
, (Drawing, 'text.reference' , { 'color':'Black' , 'border':1, 'threshold':20.0 })
, (Drawing, 'undef' , { 'color':'Violet' , 'border':0, 'pattern':'2244118822441188' })
, (Drawing, 'mauka.container', { 'color':'Magenta4' , 'border':4, 'pattern':'0000000000000000', 'goMatched':False })
# Group: Active Layers.
, (Group , 'Active Layers')
, (Drawing, 'nWell' , { 'color':'Tan' , 'pattern':'antipoids2.32', 'border':1, 'threshold':1.50 })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'antipoids2.32', 'border':1, 'threshold':1.50 })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'diffusion.32' , 'border':0, 'threshold':1.50 })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'diffusion.32' , 'border':0, 'threshold':1.50 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'active.32' , 'border':0, 'threshold':1.50 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'antipoids2.32', 'border':1, 'threshold':1.50 })
, (Drawing, 'poly2' , { 'color':'Magenta4' , 'pattern':'antipoids2.8' , 'border':1, 'threshold':1.50 })
# Group: Routing Layers.
, (Group , 'Routing Layers')
, (Drawing, 'metal1', { 'color':'Blue' , 'pattern':'slash.32' , 'border':1, 'threshold':0.02 })
, (Drawing, 'metal2', { 'color':'Aqua' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02 })
, (Drawing, 'metal3', { 'color':'LightPink', 'pattern':'antislash3.32', 'border':1, 'threshold':0.02 })
, (Drawing, 'metal4', { 'color':'Green' , 'pattern':'antislash4.32', 'border':1, 'threshold':0.02 })
, (Drawing, 'metal5', { 'color':'Yellow' , 'pattern':'antislash5.32', 'border':1, 'threshold':0.02 })
, (Drawing, 'metal6', { 'color':'Violet' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02 })
# Group: Cuts (VIA holes)
, (Group , 'Cuts (VIA holes)')
, (Drawing, 'cut0', { 'color':'Blue' , 'pattern':'poids2.8' , 'border':2, 'threshold':1.50 })
, (Drawing, 'cut1', { 'color':'Aqua' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.80 })
, (Drawing, 'cut2', { 'color':'LightPink', 'pattern':'poids2.8' , 'border':2, 'threshold':0.80 })
, (Drawing, 'cut3', { 'color':'Green' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.80 })
, (Drawing, 'cut4', { 'color':'Yellow' , 'pattern':'poids2.8' , 'border':2, 'threshold':0.80 })
, (Drawing, 'cut5', { 'color':'Violet' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.80 })
# Group: MIM6.
, (Group , 'MIM6')
, (Drawing, 'topmim6', { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80 })
, (Drawing, 'botmim6', { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80 })
, (Drawing, 'padopen', { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80 })
, (Drawing, 'alucap' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80 })
# Group: Blockages.
, (Group , 'Blockages')
, (Drawing, 'blockage1', { 'color':'Blue' , 'pattern':'006070381c0e0703' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage2', { 'color':'Aqua' , 'pattern':'8103060c183060c0' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage3', { 'color':'LightPink', 'pattern':'poids4.8' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage4', { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage5', { 'color':'Yellow' , 'pattern':'1144114411441144' , 'threshold':0.80, 'border':2 })
, (Drawing, 'blockage6', { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80, 'border':2 })
# Group: Knik & Kite.
, (Group , 'Knik & Kite')
, (Drawing, 'SPL1' , { 'color':'Red' })
, (Drawing, 'AutoLayer', { 'color':'Magenta' })
, (Drawing, 'gmetalh' , { 'color':'128,255,200', 'pattern':'light_antihash0.8' , 'border':1 })
, (Drawing, 'gmetalv' , { 'color':'200,200,255', 'pattern':'light_antihash1.8' , 'border':1 })
, (Drawing, 'gcut' , { 'color':'255,255,190', 'border':1 })
)
)

View File

@ -0,0 +1,61 @@
# -*- Mode:Python -*-
# hMETIS parameters.
parametersTable = \
( ("metis.globalConnectionsWeightRatio" , TypeInt ,1 )
, ("metis.numberOfInstancesStopCriterion", TypeInt ,45 )
, ("metis.numberOfTriedBisections" , TypeInt ,10 )
, ("metis.partOrKWayHMetis" , TypeBool ,True )
, ("metis.tuneHMetisParameters" , TypeBool ,False)
, ("metis.ubFactor" , TypeInt ,0 )
, ("metis.CType", TypeEnumerate ,1
, { 'values':( ("Hybrid First Choice", 1)
, ("First Choice" , 2)
, ("Greedy First" , 3)
, ("Hyper Edge" , 4)
, ("Edge" , 5) ) }
)
, ("metis.RType", TypeEnumerate ,1
, { 'values':( ("Fiduccia-Mattheyses" , 1)
, ("One Way Fidducia-Mattheyses" , 2)
, ("Early Exit Fidducia-Mattheyses", 3) ) }
)
, ("metis.VCycle", TypeEnumerate ,0
, { 'values':( ("No V-Cycle Refinement" , 0)
, ("On Each Final Bisections" , 1)
, ("On Best Intermediate Solutions", 2)
, ("On All Intermediate Solutions" , 3) ) }
)
, ("metis.Reconst", TypeEnumerate ,0
, { 'values':( ("Ignore cuts Hyper Edges" , 0)
, ("Keep parts of cuts Hyper Edges", 1) ) }
)
, ("metis.debug", TypeEnumerate ,0
, { 'values':( ("Disabled" , 0)
, ("Coarsening Stage" , 1)
, ("Initial Partitioning", 2)
, ("Refinement" , 4)
, ("Multiple Runs" , 8)
, ("More Multiples Runs" , 16) ) }
)
, ("metis.tuneHMetisParameters", TypeBool, True
, { 'slaves':( "metis.CType"
, "metis.numberOfTriedBisections"
, "metis.CType"
, "metis.RType"
, "metis.VCycle"
, "metis.Reconst"
, "metis.debug"
) }
)
)
# The layout of hMetis is integrated in Mauka.
layoutTable = ()

View File

@ -0,0 +1,37 @@
# -*- Mode:Python -*-
parametersTable = \
( ("katabatic.globalLengthThreshold",TypeInt ,1450 ) # Katabatic parameters.
, ("katabatic.saturateRatio" ,TypePercentage,80 )
, ("katabatic.saturateRp" ,TypeInt ,8 )
# Kite parameters.
, ("kite.hEdgeCapacity" ,TypePercentage,85 , { 'min':0, 'max':110 } )
, ("kite.vEdgeCapacity" ,TypePercentage,85 , { 'min':0, 'max':110 } )
, ("kite.eventsLimit" ,TypeInt ,4000002)
, ("kite.ripupCost" ,TypeInt ,3 , { 'min':0 } )
, ("kite.strapRipupLimit" ,TypeInt ,16 , { 'min':1 } )
, ("kite.localRipupLimit" ,TypeInt ,9 , { 'min':1 } )
, ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
, ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
)
# Kite Layout.
layoutTable = \
( (TypeTab , "Kite", "kite" )
, (TypeTitle , "Katabatic - Routing Database" )
, (TypeOption , "katabatic.saturateRatio" , "Saturate Ratio (%)" , 0 )
, (TypeOption , "katabatic.saturateRp" , "Saturate RoutingPad" , 0 )
, (TypeOption , "katabatic.globalLengthThreshold", "Global Length Threshold", 0 )
, (TypeRule ,)
, (TypeTitle , "Kite - Detailed Router" )
, (TypeOption , "kite.edgeCapacity" , "Edge Capacity (%)" , 0 )
, (TypeOption , "kite.eventsLimit" , "Events Limit" , 0 )
, (TypeOption , "kite.ripupCost" , "Ripup Cost" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeSection, "Ripup Limits", 1 )
, (TypeOption , "kite.strapRipupLimit" , "Straps" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeOption , "kite.localRipupLimit" , "Locals" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeOption , "kite.globalRipupLimit" , "Globals" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeOption , "kite.longGlobalRipupLimit", "Long Globals", 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeRule ,)
)

View File

@ -0,0 +1,48 @@
# -*- Mode:Python -*-
# Mauka parameters.
parametersTable = \
( ('mauka.partOrKWayHMetis' , TypeBool , False )
, ('mauka.annealingBinMult' , TypePercentage, 5 )
, ('mauka.annealingNetMult' , TypePercentage, 90 )
, ('mauka.annealingRowMult' , TypePercentage, 5 )
, ('mauka.ignorePins' , TypeBool , False )
, ('mauka.insertFeeds' , TypeBool , True )
, ('mauka.plotBins' , TypeBool , True )
, ('mauka.searchRatio' , TypePercentage, 50 )
, ('mauka.standardAnnealing', TypeBool , True )
)
layoutTable = \
( (TypeTab , 'Mauka', 'mauka')
# hMETIS part.
, (TypeTitle , 'hMetis - Partitionner')
, (TypeOption, "metis.partOrKWayHMetis" , "Recursive 2-Parts (vs. K-Way)", 0 )
, (TypeOption, "metis.numberOfInstancesStopCriterion", "Partition Size Stop" , 0 )
, (TypeOption, "metis.globalConnectionsWeightRatio" , "Global Connections Weight" , 0 )
, (TypeOption, "metis.ubFactor" , "UB Factor" , 0 )
, (TypeOption, "metis.tuneHMetisParameters" , "Tune hMETIS Parameters" , 1 )
, (TypeOption, "metis.numberOfTriedBisections" , "# of tried bisections" , 1 )
, (TypeOption, "metis.CType" , "CType" , 1 )
, (TypeOption, "metis.RType" , "RType" , 1 )
, (TypeOption, "metis.VCycle" , "V-Cycle" , 1 )
, (TypeOption, "metis.Reconst" , "Reconst" , 1 )
# Nimbus part.
, (TypeTitle , "Mauka - Placer")
, (TypeOption, "nimbus.pinsPlacement", "Pins Placement" , 0 )
, (TypeOption, "nimbus.aspectRatio" , "Aspect Ratio, X/Y (%)", 1 )
, (TypeOption, "nimbus.spaceMargin" , "Space Margin" , 1 )
, (TypeRule ,)
# Mauka part.
, (TypeOption, "mauka.standardAnnealing", "Standart Annealing" , 0 )
, (TypeOption, "mauka.ignorePins" , "Ignore Pins" , 0 )
, (TypeOption, "mauka.plotBins" , "Plot Bins" , 0 )
, (TypeOption, "mauka.insertFeeds" , "Insert Feeds" , 0 )
, (TypeOption, "mauka.searchRatio" , "Search Ratio (%)" , 1 )
, (TypeOption, "mauka.annealingNetMult" , "Annealing Net Mult (%)", 1 )
, (TypeOption, "mauka.annealingBinMult" , "Annealing Bin Mult (%)", 1 )
, (TypeOption, "mauka.annealingRowMult" , "Annealing Row Mult (%)", 1 )
, (TypeRule ,)
)

View File

@ -0,0 +1,66 @@
# -*- Mode:Python -*-
parametersTable = \
( ('misc.catchCore' , TypeBool, False)
, ('misc.info' , TypeBool, False)
, ('misc.bug' , TypeBool, False)
, ('misc.logMode' , TypeBool, False)
, ('misc.verboseLevel1', TypeBool, True )
, ('misc.verboseLevel2', TypeBool, False)
, ('misc.traceLevel' , TypeInt , 1000, {'min':0} )
, ("viewer.printer.mode", TypeEnumerate ,1
, { 'values':( ("Cell Mode" , 1)
, ("Design Mode", 2) ) }
)
# Those enumerated values *must* match QPrinter::PaperSize.
, ("viewer.printer.paper", TypeEnumerate ,0
, { 'values':( ("A4" , 0)
, ("B5" , 1)
, ("Letter" , 2)
, ("Legal" , 3)
, ("Executive", 4)
, ("A0" , 5)
, ("A1" , 6)
, ("A2" , 7)
, ("A3" , 8)
, ("A5" , 9)
, ("A6" , 10)
, ("A7" , 11)
, ("A8" , 12)
, ("A9" , 13)
, ("B0" , 14)
, ("B1" , 15)
, ("B10" , 16)
, ("B2" , 17)
, ("B3" , 18)
, ("B4" , 19)
, ("B6" , 20)
, ("B7" , 21)
, ("B8" , 22)
, ("B9" , 23)
, ("C5E" , 24)
, ("Comm10E" , 25)
, ("DLE" , 26)
, ("Folio" , 27)
, ("Ledger" , 28)
, ("Tabloid" , 29)
, ("Custom" , 30) ) }
)
)
layoutTable = \
( (TypeTab , 'Misc.', 'misc')
, (TypeTitle , 'Miscellaneous')
, (TypeOption, 'misc.catchCore' , 'Catch Core Dumps' , 1)
, (TypeOption, 'misc.verboseLevel1' , 'Verbose' , 0)
, (TypeOption, 'misc.verboseLevel2' , 'Very Verbose' , 0)
, (TypeOption, 'misc.info' , 'Show Info' , 0)
, (TypeOption, 'misc.logMode' , 'Output is a TTY' , 0)
, (TypeOption, 'misc.traceLevel' , 'Trace Level' , 1)
, (TypeTitle , 'Print/Snapshot Parameters')
, (TypeOption, 'viewer.printer.mode' , 'Printer/Snapshot Mode', 1)
, (TypeOption, 'viewer.printer.paper', 'Paper Size' , 0)
)

View File

@ -0,0 +1,15 @@
# -*- Mode:Python -*-
# Nimbus parameters.
parametersTable = \
( ('nimbus.aspectRatio' , TypePercentage, 100 , { 'min':10, 'max':1000 } )
, ("nimbus.pinsPlacement", TypeBool , False )
, ("nimbus.spaceMargin" , TypePercentage, 40 )
, ("nimbus.cellGauge" , TypeString , "sxlib", { 'flags':Cfg.Parameter.Flags.AllRequirements} )
, ("nimbus.routingGauge" , TypeString , "sxlib", { 'flags':Cfg.Parameter.Flags.AllRequirements} )
)
# layoutTable is defined inside Mauka.
layoutTable = ()

View File

@ -0,0 +1,575 @@
# -*- mode:Python -*-
patternsTable = ( { 'name':'slash.8' , 'bits':[ ' X X'
, ' X X '
, ' X X '
, 'X X '
, ' X X'
, ' X X '
, ' X X '
, 'X X ' ] }
, { 'name':'hash.8' , 'bits':[ 'XXX XXX '
, 'XX XXX X'
, 'X XXX XX'
, ' XXX XXX'
, 'XXX XXX '
, 'XX XXX X'
, 'X XXX XX'
, ' XXX XXX' ] }
, { 'name':'urgo.8' , 'bits':[ 'XXX XXXX' # feffffffefffffff
, 'XXXXXXXX'
, 'XXXXXXXX'
, 'XXXXXXXX'
, 'XXXXXXX '
, 'XXXXXXXX'
, 'XXXXXXXX'
, 'XXXXXXXX' ] }
, { 'name':'antihash0.8' , 'bits':[ ' XXX XXX' # 77bbddee77bbddee
, 'X XXX XX'
, 'XX XXX X'
, 'XXX XXX '
, ' XXX XXX'
, 'X XXX XX'
, 'XX XXX X'
, 'XXX XXX ' ] }
, { 'name':'antihash1.8' , 'bits':[ 'X XXX XX' # bbddee77bbddee77
, 'XX XXX X'
, 'XXX XXX '
, ' XXX XXX'
, 'X XXX XX'
, 'XX XXX X'
, 'XXX XXX '
, ' XXX XXX' ] }
, { 'name':'poids2.8' , 'bits':[ 'X X X X ' # aa55aa55aa55aa55
, ' X X X X'
, 'X X X X '
, ' X X X X'
, 'X X X X '
, ' X X X X'
, 'X X X X '
, ' X X X X' ] }
, { 'name':'poids4.8' , 'bits':[ 'X X ' # 8800220088002200
, ' '
, ' X X '
, ' '
, 'X X '
, ' '
, ' X X '
, ' ' ] }
, { 'name':'antipoids2.8' , 'bits':[ ' # # # #' # 55aa55aa55aa55aa
, '# # # # '
, ' # # # #'
, '# # # # '
, ' # # # #'
, '# # # # '
, ' # # # #'
, '# # # # ' ] }
, { 'name':'light_antihash0.8' , 'bits':[ 'X X ' # 8822882288228822
, ' X X '
, 'X X '
, ' X X '
, 'X X '
, ' X X '
, 'X X '
, ' X X ' ] }
, { 'name':'light_antihash1.8' , 'bits':[ ' X X ' # 4411441144114411
, ' X X'
, ' X X '
, ' X X'
, ' X X '
, ' X X'
, ' X X '
, ' X X' ] }
, { 'name':'light_antihash2.8' , 'bits':[ ' X X ' # 2288228822882288
, 'X X '
, ' X X '
, 'X X '
, ' X X '
, 'X X '
, ' X X '
, 'X X ' ] }
, { 'name':'light_antislash0.8' , 'bits':[ 'X X ' # 8844221188442211
, ' X X '
, ' X X '
, ' X X'
, 'X X '
, ' X X '
, ' X X '
, ' X X' ] }
, { 'name':'urgo.32' , 'bits':[ 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
, ' XXXXXXXXXXXXXXXXXXXXXXXXXX '
, ' XXXXXXXXXXXXXXXXXXXXXXXXXX '
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXXXX' ] }
, { 'name':'slash.32' , 'bits':[ ' X X'
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X'
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X ' ] }
, { 'name':'antihash0.32' , 'bits':[ ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX'
, 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX '
, ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX'
, 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX ' ] }
, { 'name':'antihash1.32' , 'bits':[ 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX '
, ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX'
, 'XXXX XXXXXXXXXXXXXXX XXXXXXXXXXX'
, 'XXXXX XXXXXXXXXXXXXXX XXXXXXXXXX'
, 'XXXXXX XXXXXXXXXXXXXXX XXXXXXXXX'
, 'XXXXXXX XXXXXXXXXXXXXXX XXXXXXXX'
, 'XXXXXXXX XXXXXXXXXXXXXXX XXXXXXX'
, 'XXXXXXXXX XXXXXXXXXXXXXXX XXXXXX'
, 'XXXXXXXXXX XXXXXXXXXXXXXXX XXXXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXXXX XXXX'
, 'XXXXXXXXXXXX XXXXXXXXXXXXXXX XXX'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXXXX XX'
, 'XXXXXXXXXXXXXX XXXXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX '
, ' XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX'
, 'X XXXXXXXXXXXXXXX XXXXXXXXXXXXXX'
, 'XX XXXXXXXXXXXXXXX XXXXXXXXXXXXX'
, 'XXX XXXXXXXXXXXXXXX XXXXXXXXXXXX' ] }
, { 'name':'poids2.32' , 'bits':[ ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' ' ] }
, { 'name':'poids4.32' , 'bits':[ ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' '
, ' '
, ' XX XX '
, ' XX XX '
, ' ' ] }
, { 'name':'antipoids2.32' , 'bits':[ ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' '
, ' '
, ' XX XX XX XX '
, ' XX XX XX XX '
, ' ' ] }
, { 'name':'antislash.32' , 'bits':[ 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X'
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X' ] }
, { 'name':'antislash2.32' , 'bits':[ 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X ' ] }
, { 'name':'antislash3.32' , 'bits':[ ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X ' ] }
, { 'name':'antislash4.32' , 'bits':[ ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X ' ] }
, { 'name':'antislash5.32' , 'bits':[ ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, ' X X '
, 'X X ' ] }
, { 'name':'diffusion.32' , 'bits':[ 'XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX'
, 'X XXXXXXXXXX XXXXXXXXX'
, 'XX XXXXXXXXXX XXXXXXXX'
, 'XXX XXXXXXXXXX XXXXXXX'
, 'XXXX XXXXXXXXXX XXXXXX'
, 'XXXXX XXXXXXXXXX XXXXX'
, 'XXXXXX XXXXXXXXXX XXXX'
, 'XXXXXXX XXXXXXXXXX XXX'
, 'XXXXXXXX XXXXXXXXXX XX'
, 'XXXXXXXXX XXXXXXXXXX X'
, 'XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX '
, ' XXXXXXXXXX XXXXXXXXXX'
, 'X XXXXXXXXXX XXXXXXXXX'
, 'XX XXXXXXXXXX XXXXXXXX'
, 'XXX XXXXXXXXXX XXXXXXX'
, 'XXXX XXXXXXXXXX XXXXXX'
, 'XXXXX XXXXXXXXXX XXXXX'
, 'XXXXXX XXXXXXXXXX XXXX'
, 'XXXXXXX XXXXXXXXXX XXX'
, 'XXXXXXXX XXXXXXXXXX XX'
, 'XXXXXXXXX XXXXXXXXXX X' ] }
, { 'name':'active.32' , 'bits':[ ' XXXXXXXXXXXXX XXXXXXXXXXXXX'
, 'X XXXXXXXXXXXXX XXXXXXXXXXXX'
, 'XX XXXXXXXXXXXXX XXXXXXXXXXX'
, 'XXX XXXXXXXXXXXXX XXXXXXXXXX'
, 'XXXX XXXXXXXXXXXXX XXXXXXXXX'
, 'XXXXX XXXXXXXXXXXXX XXXXXXXX'
, 'XXXXXX XXXXXXXXXXXXX XXXXXXX'
, 'XXXXXXX XXXXXXXXXXXXX XXXXXX'
, 'XXXXXXXX XXXXXXXXXXXXX XXXXX'
, 'XXXXXXXXX XXXXXXXXXXXXX XXXX'
, 'XXXXXXXXXX XXXXXXXXXXXXX XXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXX XX'
, 'XXXXXXXXXXXX XXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXX '
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX '
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX '
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX'
, 'X XXXXXXXXXXXXX XXXXXXXXXXXX'
, 'XX XXXXXXXXXXXXX XXXXXXXXXXX'
, 'XXX XXXXXXXXXXXXX XXXXXXXXXX'
, 'XXXX XXXXXXXXXXXXX XXXXXXXXX'
, 'XXXXX XXXXXXXXXXXXX XXXXXXXX'
, 'XXXXXX XXXXXXXXXXXXX XXXXXXX'
, 'XXXXXXX XXXXXXXXXXXXX XXXXXX'
, 'XXXXXXXX XXXXXXXXXXXXX XXXXX'
, 'XXXXXXXXX XXXXXXXXXXXXX XXXX'
, 'XXXXXXXXXX XXXXXXXXXXXXX XXX'
, 'XXXXXXXXXXX XXXXXXXXXXXXX XX'
, 'XXXXXXXXXXXX XXXXXXXXXXXXX X'
, 'XXXXXXXXXXXXX XXXXXXXXXXXXX '
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX '
, ' XXXXXXXXXXXXX XXXXXXXXXXXXX ' ] }
)

View File

@ -0,0 +1,20 @@
# -*- Mode:Python -*-
# Status1 parameters.
parametersTable = \
( ("stratus1.mappingName", TypeString, helpers.sysConfDir+"/stratus2sxlib.xml",
{ 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } )
, ("stratus1.format" , TypeString, "vst")
, ("stratus1.simulator" , TypeString, "asimut")
,)
# Stratus1 tab layout.
layoutTable = \
( (TypeTab ,"Stratus1", "stratus1" )
, (TypeTitle , "Stratus1 - Netlist & Layout Capture" )
, (TypeOption, "stratus1.mappingName", "Virtual Library Translation", 0, 2 )
, (TypeOption, "stratus1.format" , "Netlist Format (vst, vhd)" , 0, 2 )
, (TypeOption, "stratus1.simulator" , "Simulator" , 0, 2 )
)

View File

@ -0,0 +1,280 @@
# -*- Mode:Python -*-
viewerConfig = { 'precision':2, 'gridstep':1.0 }
# Format of <realLayerTable>:
# The third parameter must be present only for blockage material.
# ('layer_name' , MATERIAL , ASSOCIATED ROUTING)
#
# Note: concerning the LayerMask, real layers are implementeds as BasicLayer,
# and are associated to exactly one bit of the mask. Symbolic layers
# then combine BasicLayer to create composite objects, an thus can have
# a mask which have multiple bits set. Getting the mask from a layer
# is straigthforward, but the reverse is not true. One mask may match
# multiple symbolic layers. To overcome this ambiguity we introduce the
# concept of "working layer", which, for one given mask tells the layer
# that will be returned (generally the symbolic one).
realLayersTable = \
( ('nWell' , BasicLayer.Material.nWell ) # Non-Routing Layers.
, ('pWell' , BasicLayer.Material.pWell )
, ('nImplant' , BasicLayer.Material.nImplant)
, ('pImplant' , BasicLayer.Material.pImplant)
, ('active' , BasicLayer.Material.active )
, ('poly' , BasicLayer.Material.poly )
, ('poly2' , BasicLayer.Material.poly )
, ('cut0' , BasicLayer.Material.cut ) # Routing Layers & VIA Cuts.
, ('metal1' , BasicLayer.Material.metal ) # WARNING: order *is* meaningful.
, ('cut1' , BasicLayer.Material.cut )
, ('metal2' , BasicLayer.Material.metal )
, ('cut2' , BasicLayer.Material.cut )
, ('metal3' , BasicLayer.Material.metal )
, ('cut3' , BasicLayer.Material.cut )
, ('metal4' , BasicLayer.Material.metal )
, ('cut4' , BasicLayer.Material.cut )
, ('metal5' , BasicLayer.Material.metal )
, ('cut5' , BasicLayer.Material.cut )
, ('metal6' , BasicLayer.Material.metal )
, ('cut6' , BasicLayer.Material.cut )
, ('metal7' , BasicLayer.Material.metal )
, ('cut7' , BasicLayer.Material.cut )
, ('metal8' , BasicLayer.Material.metal )
, ('topmim6' , BasicLayer.Material.other ) # For Capacitances & Pads.
, ('botmim6' , BasicLayer.Material.other )
, ('padopen' , BasicLayer.Material.other )
, ('alucap' , BasicLayer.Material.other )
, ('text.cell' , BasicLayer.Material.other ) # Misc. non-physical layers.
, ('text.instance', BasicLayer.Material.other ) # Used by the software for visualization
, ('SPL1' , BasicLayer.Material.other ) # purposes only.
, ('AutoLayer' , BasicLayer.Material.other )
, ('blockage1' , BasicLayer.Material.blockage, 'metal1') # Blockages
, ('blockage2' , BasicLayer.Material.blockage, 'metal2')
, ('blockage3' , BasicLayer.Material.blockage, 'metal3')
, ('blockage4' , BasicLayer.Material.blockage, 'metal4')
, ('blockage5' , BasicLayer.Material.blockage, 'metal5')
, ('blockage6' , BasicLayer.Material.blockage, 'metal6')
, ('blockage7' , BasicLayer.Material.blockage, 'metal7')
, ('blockage8' , BasicLayer.Material.blockage, 'metal8')
, ('gmetalh' , BasicLayer.Material.metal ) # Special BasicLayers for Knik & Kite Routers.
, ('gcut' , BasicLayer.Material.cut ) # *Must be after all others*
, ('gmetalv' , BasicLayer.Material.metal )
)
# Format of <symbolicLayersTable>:
# The length of the list of real layers depends on the type.
# In some case, the last of the list may be optional, it must be
# sets to None and not left empty.
#
# ('SYMB_LAYER' , Type , (LIST_OF_REAL_LAYERS) )
symbolicLayersTable = \
( ('NWELL' , TypeRegular , ('nWell' ,))
, ('PWELL' , TypeRegular , ('pWell' ,))
, ('NTIE' , TypeDiffusion , ('nImplant' , 'active', 'nWell'))
, ('PTIE' , TypeDiffusion , ('pImplant' , 'active', 'pWell'))
, ('NDIF' , TypeDiffusion , ('nImplant' , 'active', None ))
, ('PDIF' , TypeDiffusion , ('pImplant' , 'active', None ))
, ('GATE' , TypeDiffusion , ('poly' , 'active', None ))
, ('NTRANS' , TypeTransistor, ('nImplant' , 'active', 'poly', None ))
, ('PTRANS' , TypeTransistor, ('pImplant' , 'active', 'poly', 'nWell'))
, ('POLY' , TypeRegular , ('poly' ,))
, ('POLY2' , TypeRegular , ('poly2' ,))
, ('METAL1' , TypeRegular , ('metal1' ,))
, ('METAL2' , TypeRegular , ('metal2' ,))
, ('METAL3' , TypeRegular , ('metal3' ,))
, ('METAL4' , TypeRegular , ('metal4' ,))
, ('METAL5' , TypeRegular , ('metal5' ,))
, ('METAL6' , TypeRegular , ('metal6' ,))
, ('METAL7' , TypeRegular , ('metal7' ,))
, ('METAL8' , TypeRegular , ('metal8' ,))
, ('CONT_BODY_N', TypeContact , ('nImplant' , 'active', 'cut0', 'metal1', 'nWell'))
, ('CONT_BODY_P', TypeContact , ('pImplant' , 'active', 'cut0', 'metal1', 'pWell'))
, ('CONT_DIF_N' , TypeContact , ('nImplant' , 'active', 'cut0', 'metal1', None ))
, ('CONT_DIF_P' , TypeContact , ('pImplant' , 'active', 'cut0', 'metal1', None ))
, ('CONT_POLY' , TypeVia , ( 'poly' , 'cut0', 'metal1'))
, ('VIA12' , TypeVia , ( 'metal1', 'cut1', 'metal2'))
, ('VIA23' , TypeVia , ( 'metal2', 'cut2', 'metal3'))
, ('VIA34' , TypeVia , ( 'metal3', 'cut3', 'metal4'))
, ('VIA45' , TypeVia , ( 'metal4', 'cut4', 'metal5'))
, ('VIA56' , TypeVia , ( 'metal5', 'cut5', 'metal6'))
, ('VIA67' , TypeVia , ( 'metal6', 'cut6', 'metal7'))
, ('VIA78' , TypeVia , ( 'metal7', 'cut7', 'metal8'))
, ('BLOCKAGE1' , TypeRegular , ('blockage1', ))
, ('BLOCKAGE2' , TypeRegular , ('blockage2', ))
, ('BLOCKAGE3' , TypeRegular , ('blockage3', ))
, ('BLOCKAGE4' , TypeRegular , ('blockage4', ))
, ('BLOCKAGE5' , TypeRegular , ('blockage5', ))
, ('BLOCKAGE6' , TypeRegular , ('blockage6', ))
, ('BLOCKAGE7' , TypeRegular , ('blockage7', ))
, ('BLOCKAGE8' , TypeRegular , ('blockage8', ))
, ('gcontact' , TypeVia , ('gmetalh' , 'gcut', 'gmetalv'))
)
# Format of <symbolicRulesTable>:
# Each entry is a pair of (string, value).
# * string: a synthetic way to designate the symbolic layer on which
# it applies, an optional real layer in case where there is
# more than one, and the dimension name.
# * value : the rule (dimension) value expressed in lambda.
symbolicRulesTable = \
( ('NWELL.nWell.extention.cap' , 4.0)
, ('PWELL.pWell.extention.cap' , 4.0)
, ('NTIE.minimum.width' , 3.0)
, ('NTIE.nWell.extention.cap' , 3.0)
, ('NTIE.nWell.extention.width' , 1.0)
, ('NTIE.nImplant.extention.cap' , 3.0)
, ('NTIE.nImplant.extention.width' , 1.0)
, ('NTIE.active.extention.cap' , 2.0)
, ('NTIE.active.extention.width' , 0.0)
, ('PTIE.minimum.width' , 3.0)
, ('PTIE.pWell.extention.cap' , 3.0)
, ('PTIE.pWell.extention.width' , 1.0)
, ('PTIE.pImplant.extention.cap' , 1.0)
, ('PTIE.pImplant.extention.width' , 1.0)
, ('PTIE.active.extention.cap' , 2.0)
, ('PTIE.active.extention.width' , 0.0)
, ('NDIF.minimum.width' , 3.0)
, ('NDIF.nImplant.extention.cap' , 5.0)
, ('NDIF.nImplant.extention.width' , 3.0)
, ('NDIF.active.extention.cap' , 2.0)
, ('NDIF.active.extention.width' , 0.0)
, ('PDIF.minimum.width' , 3.0)
, ('PDIF.pImplant.extention.cap' , 5.0)
, ('PDIF.pImplant.extention.width' , 3.0)
, ('PDIF.active.extention.cap' , 2.0)
, ('PDIF.active.extention.width' , 0.0)
, ('GATE.minimum.width' , 1.0)
, ('GATE.poly.extention.cap' , 1.5)
, ('NTRANS.minimum.width' , 2.0)
, ('NTRANS.nImplant.extention.cap' , 3.0)
, ('NTRANS.nImplant.extention.width' , 8.0)
, ('NTRANS.active.extention.cap' , 0.0)
, ('NTRANS.active.extention.width' , 5.0)
, ('NTRANS.poly.extention.cap' , 4.0)
, ('NTRANS.poly.extention.width' , 0.0)
, ('PTRANS.minimum.width' , 1.0)
, ('PTRANS.nWell.extention.cap' , 3.0)
, ('PTRANS.nWell.extention.width' , 8.0)
, ('PTRANS.pImplant.extention.cap' , 3.0)
, ('PTRANS.pImplant.extention.width' , 8.0)
, ('PTRANS.active.extention.cap' , 0.0)
, ('PTRANS.active.extention.width' , 5.0)
, ('PTRANS.poly.extention.cap' , 4.0)
, ('PTRANS.poly.extention.width' , 0.0)
, ('POLY.minimum.width' , 2.0)
, ('POLY.poly.extention.cap' , 1.0)
, ('POLY2.minimum.width' , 2.0)
, ('POLY2.poly2.extention.cap' , 2.0)
# Routing Layers.
, ('METAL1.minimum.width' , 1.0)
, ('METAL1.metal1.extention.cap' , 2.0)
, ('METAL2.minimum.width' , 1.0)
, ('METAL2.metal2.extention.cap' , 2.0)
, ('METAL3.minimum.width' , 1.0)
, ('METAL3.metal3.extention.cap' , 2.0)
, ('METAL4.minimum.width' , 1.0)
, ('METAL4.metal4.extention.cap' , 2.0)
, ('METAL5.minimum.width' , 2.0)
, ('METAL5.metal5.extention.cap' , 2.0)
, ('METAL6.minimum.width' , 2.0)
, ('METAL6.metal6.extention.cap' , 4.0)
, ('METAL7.minimum.width' , 2.0)
, ('METAL7.metal6.extention.cap' , 4.0)
, ('METAL8.minimum.width' , 2.0)
, ('METAL8.metal6.extention.cap' , 4.0)
# Contacts (i.e. Active <--> Metal).
, ('CONT_BODY_N.minimum.side' , 2.0)
, ('CONT_BODY_N.nWell.enclosure' , 3.0)
, ('CONT_BODY_N.nImplant.enclosure' , 3.0)
, ('CONT_BODY_N.active.enclosure' , 2.0)
, ('CONT_BODY_N.metal1.enclosure' , 1.0)
, ('CONT_BODY_P.minimum.side' , 2.0)
, ('CONT_BODY_P.pWell.enclosure' , 3.0)
, ('CONT_BODY_P.pImplant.enclosure' , 3.0)
, ('CONT_BODY_P.active.enclosure' , 2.0)
, ('CONT_BODY_P.metal1.enclosure' , 1.0)
, ('CONT_DIF_N.minimum.side' , 2.0)
, ('CONT_DIF_N.nImplant.enclosure' , 2.0)
, ('CONT_DIF_N.active.enclosure' , 2.0)
, ('CONT_DIF_N.metal1.enclosure' , 1.0)
, ('CONT_DIF_P.minimum.side' , 2.0)
, ('CONT_DIF_P.pImplant.enclosure' , 2.0)
, ('CONT_DIF_P.active.enclosure' , 2.0)
, ('CONT_DIF_P.metal1.enclosure' , 1.0)
, ('CONT_POLY.minimum.width' , 2.0)
, ('CONT_POLY.poly.enclosure' , 2.0)
, ('CONT_POLY.metal1.enclosure' , 1.0)
# VIAs (i.e. Metal <--> Metal).
, ('VIA12.minimum.side' , 2.0)
, ('VIA12.metal1.enclosure' , 1.0)
, ('VIA12.metal2.enclosure' , 1.0)
, ('VIA23.minimum.side' , 2.0)
, ('VIA23.metal2.enclosure' , 1.0)
, ('VIA23.metal3.enclosure' , 1.0)
, ('VIA34.minimum.side' , 2.0)
, ('VIA34.metal3.enclosure' , 1.0)
, ('VIA34.metal4.enclosure' , 1.0)
, ('VIA45.minimum.side' , 2.0)
, ('VIA45.metal4.enclosure' , 1.0)
, ('VIA45.metal5.enclosure' , 1.0)
, ('VIA56.minimum.side' , 2.0)
, ('VIA56.metal5.enclosure' , 3.0)
, ('VIA56.metal6.enclosure' , 3.0)
, ('VIA67.minimum.side' , 2.0)
, ('VIA67.metal6.enclosure' , 3.0)
, ('VIA67.metal7.enclosure' , 3.0)
, ('VIA78.minimum.side' , 2.0)
, ('VIA78.metal7.enclosure' , 3.0)
, ('VIA78.metal8.enclosure' , 3.0)
# Blockages.
, ('BLOCKAGE1.minimum.width' , 1.0)
, ('BLOCKAGE1.blockage1.extention.cap' , 2.0)
, ('BLOCKAGE2.minimum.width' , 2.0)
, ('BLOCKAGE2.blockage2.extention.cap' , 2.0)
, ('BLOCKAGE3.minimum.width' , 2.0)
, ('BLOCKAGE3.blockage3.extention.cap' , 2.0)
, ('BLOCKAGE4.minimum.width' , 2.0)
, ('BLOCKAGE4.blockage4.extention.cap' , 2.0)
, ('BLOCKAGE5.minimum.width' , 2.0)
, ('BLOCKAGE5.blockage5.extention.cap' , 2.0)
, ('BLOCKAGE6.minimum.width' , 2.0)
, ('BLOCKAGE6.blockage6.extention.cap' , 4.0)
, ('BLOCKAGE7.minimum.width' , 2.0)
, ('BLOCKAGE7.blockage6.extention.cap' , 4.0)
, ('BLOCKAGE8.minimum.width' , 2.0)
, ('BLOCKAGE8.blockage6.extention.cap' , 4.0)
)
# Format of <symbolicRulesTable>:
# This is a simple list of Real & Symbolic layers.
workingLayersTable = \
[ 'cut0', 'cut1' , 'cut2' , 'cut3' , 'cut4' , 'cut5'
, 'POLY', 'POLY2'
, 'METAL1' , 'METAL2' , 'METAL3' , 'METAL4' , 'METAL5' , 'METAL6' , 'METAL7' , 'METAL8'
, 'BLOCKAGE1', 'BLOCKAGE2', 'BLOCKAGE3', 'BLOCKAGE4', 'BLOCKAGE5', 'BLOCKAGE6', 'BLOCKAGE7', 'BLOCKAGE8'
, 'VIA12' , 'VIA23' , 'VIA34' , 'VIA45' , 'VIA56'
, 'gcut', 'gmetalh', 'gmetalv', 'gcontact'
]

View File

@ -1,8 +1,7 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2008-2013, All Rights Reserved
// Copyright (c) UPMC 2008-2014, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
@ -507,6 +506,8 @@ namespace CRL {
Environment::Environment ()
: _CORIOLIS_TOP (CORIOLIS_TOP)
, _SYMB_TECHNO_NAME ("<notset>")
, _REAL_TECHNO_NAME ("<notset>")
, _displayStyle ()
, _SCALE_X (10)
, _SYMBOLIC_TECHNOLOGY("")

View File

@ -1,8 +1,7 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2008-2013, All Rights Reserved
// Copyright (c) UPMC 2008-2014, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |

View File

@ -1,8 +1,7 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2012, All Rights Reserved
// Copyright (c) UPMC/LIP6 2008-2014, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
@ -11,7 +10,7 @@
// | Author : Christophe Alexandre |
// | E-mail : Christophe.Alexandre@asim.lip6.fr |
// | =============================================================== |
// | C++ Header : "./ParsersDrivers.h" |
// | C++ Header : "./ApDriver.h" |
// +-----------------------------------------------------------------+
@ -81,6 +80,7 @@ bool toMBKLayer ( const char*& mbkLayer
tableLayer [ "NTRANS" ] = "NTRANS";
tableLayer [ "PTRANS" ] = "PTRANS";
tableLayer [ "POLY" ] = "POLY";
tableLayer [ "POLY2" ] = "POLY2";
tableLayer [ "METAL1" ] = "ALU1";
tableLayer [ "METAL2" ] = "ALU2";
@ -88,6 +88,8 @@ bool toMBKLayer ( const char*& mbkLayer
tableLayer [ "METAL4" ] = "ALU4";
tableLayer [ "METAL5" ] = "ALU5";
tableLayer [ "METAL6" ] = "ALU6";
tableLayer [ "METAL7" ] = "ALU7";
tableLayer [ "METAL8" ] = "ALU8";
tableLayer [ "BLOCKAGE1" ] = "TALU1";
tableLayer [ "BLOCKAGE2" ] = "TALU2";
@ -95,6 +97,8 @@ bool toMBKLayer ( const char*& mbkLayer
tableLayer [ "BLOCKAGE4" ] = "TALU4";
tableLayer [ "BLOCKAGE5" ] = "TALU5";
tableLayer [ "BLOCKAGE6" ] = "TALU6";
tableLayer [ "BLOCKAGE7" ] = "TALU7";
tableLayer [ "BLOCKAGE8" ] = "TALU8";
tableConnector [ "METAL1" ] = "CALU1";
tableConnector [ "METAL2" ] = "CALU2";
@ -102,23 +106,30 @@ bool toMBKLayer ( const char*& mbkLayer
tableConnector [ "METAL4" ] = "CALU4";
tableConnector [ "METAL5" ] = "CALU5";
tableConnector [ "METAL6" ] = "CALU6";
tableConnector [ "METAL7" ] = "CALU7";
tableConnector [ "METAL8" ] = "CALU8";
tableContact [ "CONT_BODY_N" ] = "CONT_BODY_N";
tableContact [ "CONT_BODY_P" ] = "CONT_BODY_P";
tableContact [ "CONT_DIF_N" ] = "CONT_DIF_N";
tableContact [ "CONT_DIF_P" ] = "CONT_DIF_P";
tableContact [ "CONT_POLY" ] = "CONT_POLY";
tableContact [ "CONT_POLY2" ] = "CONT_POLY2";
tableContact [ "VIA12" ] = "CONT_VIA";
tableContact [ "VIA23" ] = "CONT_VIA2";
tableContact [ "VIA34" ] = "CONT_VIA3";
tableContact [ "VIA45" ] = "CONT_VIA4";
tableContact [ "VIA56" ] = "CONT_VIA5";
tableContact [ "VIA67" ] = "CONT_VIA6";
tableContact [ "VIA78" ] = "CONT_VIA7";
tableContact [ "METAL1" ] = "CONT_TURN1";
tableContact [ "METAL2" ] = "CONT_TURN2";
tableContact [ "METAL3" ] = "CONT_TURN3";
tableContact [ "METAL4" ] = "CONT_TURN4";
tableContact [ "METAL5" ] = "CONT_TURN5";
tableContact [ "METAL6" ] = "CONT_TURN6";
tableContact [ "METAL7" ] = "CONT_TURN7";
tableContact [ "METAL8" ] = "CONT_TURN8";
}
map<const Name,const char*>::iterator it;

View File

@ -1,8 +1,7 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2008-2012, All Rights Reserved
// Copyright (c) UPMC/LIP6 2008-2014, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
@ -214,6 +213,7 @@ namespace {
_layerInformations.add ( "NTRANS" , "NTRANS" , false, false );
_layerInformations.add ( "PTRANS" , "PTRANS" , false, false );
_layerInformations.add ( "POLY" , "POLY" , false, false );
_layerInformations.add ( "POLY2" , "POLY2" , false, false );
_layerInformations.add ( "ALU1" , "METAL1" , false, false );
_layerInformations.add ( "ALU2" , "METAL2" , false, false );
@ -221,6 +221,8 @@ namespace {
_layerInformations.add ( "ALU4" , "METAL4" , false, false );
_layerInformations.add ( "ALU5" , "METAL5" , false, false );
_layerInformations.add ( "ALU6" , "METAL6" , false, false );
_layerInformations.add ( "ALU7" , "METAL7" , false, false );
_layerInformations.add ( "ALU8" , "METAL8" , false, false );
_layerInformations.add ( "CALU1" , "METAL1" , true, false );
_layerInformations.add ( "CALU2" , "METAL2" , true, false );
@ -228,6 +230,8 @@ namespace {
_layerInformations.add ( "CALU4" , "METAL4" , true, false );
_layerInformations.add ( "CALU5" , "METAL5" , true, false );
_layerInformations.add ( "CALU6" , "METAL6" , true, false );
_layerInformations.add ( "CALU7" , "METAL7" , true, false );
_layerInformations.add ( "CALU8" , "METAL8" , true, false );
_layerInformations.add ( "TALU1" , "BLOCKAGE1" , false, true );
_layerInformations.add ( "TALU2" , "BLOCKAGE2" , false, true );
@ -235,23 +239,30 @@ namespace {
_layerInformations.add ( "TALU4" , "BLOCKAGE4" , false, true );
_layerInformations.add ( "TALU5" , "BLOCKAGE5" , false, true );
_layerInformations.add ( "TALU6" , "BLOCKAGE6" , false, true );
_layerInformations.add ( "TALU7" , "BLOCKAGE7" , false, true );
_layerInformations.add ( "TALU8" , "BLOCKAGE8" , false, true );
_layerInformations.add ( "CONT_BODY_N", "CONT_BODY_N", false, false );
_layerInformations.add ( "CONT_BODY_P", "CONT_BODY_P", false, false );
_layerInformations.add ( "CONT_DIF_N" , "CONT_DIF_N" , false, false );
_layerInformations.add ( "CONT_DIF_P" , "CONT_DIF_P" , false, false );
_layerInformations.add ( "CONT_POLY" , "CONT_POLY" , false, false );
_layerInformations.add ( "CONT_POLY2" , "CONT_POLY2" , false, false );
_layerInformations.add ( "CONT_VIA" , "VIA12" , false, false );
_layerInformations.add ( "CONT_VIA2" , "VIA23" , false, false );
_layerInformations.add ( "CONT_VIA3" , "VIA34" , false, false );
_layerInformations.add ( "CONT_VIA4" , "VIA45" , false, false );
_layerInformations.add ( "CONT_VIA5" , "VIA56" , false, false );
_layerInformations.add ( "CONT_VIA6" , "VIA67" , false, false );
_layerInformations.add ( "CONT_VIA7" , "VIA78" , false, false );
_layerInformations.add ( "CONT_TURN1" , "METAL1" , false, false );
_layerInformations.add ( "CONT_TURN2" , "METAL2" , false, false );
_layerInformations.add ( "CONT_TURN3" , "METAL3" , false, false );
_layerInformations.add ( "CONT_TURN4" , "METAL4" , false, false );
_layerInformations.add ( "CONT_TURN5" , "METAL5" , false, false );
_layerInformations.add ( "CONT_TURN6" , "METAL6" , false, false );
_layerInformations.add ( "CONT_TURN7" , "METAL7" , false, false );
_layerInformations.add ( "CONT_TURN8" , "METAL8" , false, false );
}
}
@ -515,7 +526,7 @@ namespace {
void ApParser::_parseVia ()
{
static DbU::Unit XVIA, YVIA;
static DbU::Unit XVIA, YVIA;
static Net* net;
static LayerInformation* layerInfo;

View File

@ -1,8 +1,7 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2008-2013, All Rights Reserved
// Copyright (c) UPMC 2008-2014, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
@ -37,6 +36,8 @@ namespace CRL {
~Environment ();
// Accessors.
inline const std::string& getCORIOLIS_TOP () const;
inline const std::string& getSYMB_TECHNO_NAME () const;
inline const std::string& getREAL_TECHNO_NAME () const;
inline const std::string& getDisplayStyle () const;
inline long getSCALE_X () const;
inline const std::string& getSYMBOLIC_TECHNOLOGY () const;
@ -64,6 +65,8 @@ namespace CRL {
void validate () const;
void loadFromXml ( const std::string& path="", bool warnNotFound=true );
void loadFromShell ();
inline void setSYMB_TECHNO_NAME ( const char* value );
inline void setREAL_TECHNO_NAME ( const char* value );
inline void setDisplayStyle ( const char* );
inline void setSCALE_X ( long value );
inline void setSYMBOLIC_TECHNOLOGY ( const char* value );
@ -89,6 +92,8 @@ namespace CRL {
protected:
// Internal: Attributes.
std::string _CORIOLIS_TOP;
std::string _SYMB_TECHNO_NAME;
std::string _REAL_TECHNO_NAME;
std::string _displayStyle;
long _SCALE_X;
std::string _SYMBOLIC_TECHNOLOGY;
@ -118,6 +123,8 @@ namespace CRL {
// Inline Member Functions.
inline const std::string& Environment::getCORIOLIS_TOP () const { return _CORIOLIS_TOP; }
inline const std::string& Environment::getSYMB_TECHNO_NAME () const { return _SYMB_TECHNO_NAME; }
inline const std::string& Environment::getREAL_TECHNO_NAME () const { return _REAL_TECHNO_NAME; }
inline const std::string& Environment::getDisplayStyle () const { return _displayStyle; }
inline long Environment::getSCALE_X () const { return _SCALE_X; }
inline const std::string& Environment::getSYMBOLIC_TECHNOLOGY () const { return _SYMBOLIC_TECHNOLOGY; }
@ -135,6 +142,8 @@ namespace CRL {
inline const std::string& Environment::getCATALOG () const { return _CATALOG; }
inline SearchPath& Environment::getLIBRARIES () { return _LIBRARIES; }
inline void Environment::setSYMB_TECHNO_NAME ( const char* value ) { _SYMB_TECHNO_NAME = value; }
inline void Environment::setREAL_TECHNO_NAME ( const char* value ) { _REAL_TECHNO_NAME = value; }
inline void Environment::setDisplayStyle ( const char* value ) { _displayStyle = value; }
inline void Environment::setSCALE_X ( long value ) { _SCALE_X = value; }
inline void Environment::setSYMBOLIC_TECHNOLOGY ( const char* value ) { _SYMBOLIC_TECHNOLOGY = value; }

View File

@ -60,6 +60,8 @@ DisabledByXml = 0x0200
def coriolisConfigure():
global symbolicTechno
confHelpers = ( ('allianceConfig' , Alliance.loadAllianceConfig , SystemMandatory|DisabledByXml|AllianceHelper)
, ('routingGaugesTable', Alliance.loadRoutingGaugesTable, SystemMandatory|DisabledByXml|AllianceHelper)
, ('cellGaugesTable' , Alliance.loadCellGaugesTable , SystemMandatory|DisabledByXml|AllianceHelper)
@ -77,23 +79,48 @@ def coriolisConfigure():
Cfg.Configuration.pushDefaultPriority ( Cfg.Parameter.Priority.ConfigurationFile )
confFiles = [ (helpers.sysConfDir+'/alliance.conf', SystemFile|AllianceHelper)
, (helpers.sysConfDir+'/patterns.conf', SystemFile|PatternsHelper)
, (helpers.sysConfDir+'/display.conf' , SystemFile|DisplayHelper)
, (helpers.sysConfDir+'/misc.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/hMetis.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/nimbus.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/mauka.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/kite.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/stratus1.conf', SystemFile|ConfigurationHelper)
technoFiles = [ helpers.sysConfDir+'/coriolis2_techno.conf' ]
if os.getenv('HOME'):
technoFiles += [ os.getenv('HOME')+'/.coriolis2_techno.conf' ]
technoFiles += [ os.getcwd()+'/.coriolis2_techno.conf' ]
technoFiles.reverse()
for technoFile in technoFiles:
if os.path.isfile(technoFile):
print ' - Loading \"%s\".' % helpers.truncPath(technoFile)
execfile(technoFile,moduleGlobals)
break
if moduleGlobals.has_key('symbolicTechno'):
helpers.symbolicTechno = symbolicTechno
helpers.symbolicDir = os.path.join( helpers.sysConfDir, symbolicTechno )
else:
print '[ERROR] The symbolic technology name is not set. Using <cmos>.'
if moduleGlobals.has_key('realTechno'):
helpers.realTechno = realTechno
helpers.realDir = os.path.join( helpers.sysConfDir, realTechno )
else:
print '[ERROR] The real technology name is not set. Using <hcmos9>.'
confFiles = [ (helpers.sysConfDir+'/'+symbolicTechno+'/alliance.conf', SystemFile|AllianceHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/patterns.conf', SystemFile|PatternsHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/display.conf' , SystemFile|DisplayHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/misc.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/hMetis.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/nimbus.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/mauka.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/kite.conf' , SystemFile|ConfigurationHelper)
, (helpers.sysConfDir+'/'+symbolicTechno+'/stratus1.conf', SystemFile|ConfigurationHelper)
]
if os.getenv('HOME'): confFiles += [ (os.getenv('HOME')+'/.coriolis2.conf', 0) ]
if os.getenv('HOME'):
confFiles += [ (os.getenv('HOME')+'/.coriolis2.conf', 0) ]
else:
w = WarningMessage(['The <HOME> environment variable is not defined, this is most unusual.'
,'It prevents the loading of ${HOME}/.coriolis2.conf'])
print w
confFiles += [ (os.getcwd()+'/.coriolis2.conf', 0) ]
confFiles += [ (os.getcwd()+'/.coriolis2.conf', 0) ]
if helpers.xmlCompatMode:
Alliance.loadCompatXml()

View File

@ -27,6 +27,9 @@ def xmlToConf ( xmlPath ):
if filename.endswith('.xml'):
hasExtention = True
filename = filename[:-4]
if filename.endswith('.conf'):
hasExtention = True
filename = filename[:-5]
filename = filename.replace('.','_')
confPath = os.sep.join(components[:-1] + [filename])
if hasExtention:
@ -49,6 +52,8 @@ def _loadAllianceConfig ( af, allianceConfig ):
])
key, value = entry
if key == 'SYMB_TECHNO_NAME': env.setSYMB_TECHNO_NAME(value)
if key == 'REAL_TECHNO_NAME': env.setREAL_TECHNO_NAME(value)
if key == 'SYMBOLIC_TECHNOLOGY': env.setSYMBOLIC_TECHNOLOGY(value)
if key == 'REAL_TECHNOLOGY': env.setREAL_TECHNOLOGY(value)
if key == 'DISPLAY': env.setDISPLAY(value)

View File

@ -18,16 +18,21 @@ displayFile = '<displayFile has not been set>'
stdColors = \
{ 'Black' : '0,0,0'
, 'Gray50' : '50,50,50'
, 'Gray50' : '050,050,050'
, 'Gray238' : '238,238,238'
, 'White' : '255,255,255'
, 'Seashell4' : '139,134,130'
, 'Red' : '255,0,0' # Shade of Reds.
, 'OrangeRed' : "255,69,0"
, 'DarkOrange' : "255,140,0"
, 'Orange' : "255,165,0"
, 'Wheat' : "245,222,179"
, 'LightPink' : '255,182,193'
, 'Green' : '0,255,0' # Shade of Green.
, 'LawnGreen' : '124,252,0'
, 'Blue' : '0,0,255' # Shade of Blue.
, 'Aqua' : '0,255,255'
, 'BlueViolet' : '138,43,226'
, 'Violet' : '238;130;238' # Shade of Violets.
, 'Magenta' : '255,0,255'
, 'Magenta4' : '139,0,139'

View File

@ -14,10 +14,12 @@ from Hurricane import TransistorLayer
from Hurricane import RegularLayer
from Hurricane import ContactLayer
from Hurricane import ViaLayer
from CRL import AllianceFramework
from helpers import ErrorMessage
symbolicFile = '<No symbolic file specified>'
symbolicTechno = None
symbolicFile = '<No symbolic file specified>'
class SymbolicLayerType ( object ):
@ -272,8 +274,10 @@ def load ( symbolicPath ):
, ('workingLayersTable' , loadWorkingLayers )
)
global symbolicTechno
global symbolicFile
symbolicFile = os.path.basename(symbolicPath)
symbolicFile = os.path.basename(symbolicPath)
symbolicTechno = AllianceFramework.get().getEnvironment().getSYMB_TECHNO_NAME()
confGlobals = globals()
execfile(symbolicPath,confGlobals)

View File

@ -1,8 +1,7 @@
# -*- mode:Python -*-
#
# This file is part of the Coriolis Software.
# Copyright (c) UPMC/LIP6 2012-2012, All Rights Reserved
# Copyright (c) UPMC 2012-2014, All Rights Reserved
#
# +-----------------------------------------------------------------+
# | C O R I O L I S |
@ -26,8 +25,12 @@ import re
import traceback
import Hurricane
sysConfDir = None
xmlCompatMode = False
sysConfDir = None
xmlCompatMode = False
symbolicTechno = 'cmos'
symbolicDir = None
realTechno = 'hcmos9'
realDir = None
def stype ( o ): return str(type(o)).split("'")[1]
@ -155,4 +158,7 @@ for (modulePath,moduleLine,contextType,lineContent) in traceback.extract_stack()
else:
raise ErrorMessage( 1, [ 'Cannot locate the directoty holding the configuration files.'
, 'The path is something ending by <.../etc/coriolis2>.'] )
symbolicDir = os.path.join( sysConfDir, symbolicTechno )
realDir = os.path.join( sysConfDir, realTechno )
break

View File

@ -1,423 +0,0 @@
import Viewer
# Black & White.
Black = "0,0,0"
Gray50 = "50,50,50"
Gray238 = "238,238,238"
White = "255,255,255"
Seashell4 = "139,134,130"
# Shade of Reds.
Red = "255,0,0"
LightPink = "255,182,193"
# Shade of Green.
Green = "0,255,0"
LawnGreen = "124,252,0"
# Shade of Blue.
Blue = "0,0,255"
Aqua = "0,255,255"
# Shade of Violets.
Violet = "238;130;238"
Magenta = "255,0,255"
Magenta4 = "139,0,139"
# Shade of Browns
Tan = "210,180,140"
# Shade of Yellows.
Yellow = "255,255,0"
LightYellow = "255,255,224"
# Patterns.
Urgo = "feffffffefffffff"
# =============================================================================
# Aliance.Coriolis [black]
def loadAllianceCoriolisBlackStyle ():
style = Viewer.DisplayStyle("Alliance.Coriolis [black]")
style.setDescription("Alliance Coriolis Look - black background")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Viewer group.
style.addDrawingStyle(group="Viewer", name="fallback" , color=Gray238 , border=1, pattern="55AA55AA55AA55AA")
style.addDrawingStyle(group="Viewer", name="background" , color=Gray50 , border=1)
style.addDrawingStyle(group="Viewer", name="foreground" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="rubber" , color="192,0,192" , border=2, threshold=0.02)
style.addDrawingStyle(group="Viewer", name="phantom" , color=Seashell4 , border=1)
style.addDrawingStyle(group="Viewer", name="boundaries" , color="208,199,192", border=1, pattern="0000000000000000", threshold=0)
style.addDrawingStyle(group="Viewer", name="marker" , color="80,250,80" , border=1)
style.addDrawingStyle(group="Viewer", name="selectionDraw" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="selectionFill" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="grid" , color=White , border=1, threshold=2.0)
style.addDrawingStyle(group="Viewer", name="spot" , color=White , border=2, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="ghost" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="text.ruler" , color=White , border=1, threshold=0.0)
style.addDrawingStyle(group="Viewer", name="text.instance" , color=Black , border=1, threshold=4.0)
style.addDrawingStyle(group="Viewer", name="text.reference" , color=White , border=1, threshold=20.0)
style.addDrawingStyle(group="Viewer", name="undef" , color=Violet , border=0, pattern="2244118822441188")
style.addDrawingStyle(group="Viewer", name="mauka.container", color=Magenta4 , border=4, pattern="0000000000000000", goMatched="false")
# Active Layer group.
style.addDrawingStyle(group="Active Layer", name="nWell" , color=Tan , pattern="55AA55AA55AA55AA", threshold=1.5)
style.addDrawingStyle(group="Active Layer", name="pWell" , color=LightYellow, pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layer", name="nImplant", color=LawnGreen , pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layer", name="pImplant", color=Yellow , pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layer", name="active" , color=White , pattern="bbddee77bbddee77", threshold=1.50)
style.addDrawingStyle(group="Active Layer", name="poly" , color=Red , pattern="55AA55AA55AA55AA", threshold=1.50)
# Routing Layer group.
style.addDrawingStyle(group="Routing Layer", name="metal1" , color=Blue , pattern="AA55AA55AA55AA55", threshold=0.80)
style.addDrawingStyle(group="Routing Layer", name="metal2" , color=Aqua , pattern="8822882288228822", threshold=0.40)
style.addDrawingStyle(group="Routing Layer", name="metal3" , color=LightPink, pattern="4411441144114411", threshold=0.02)
style.addDrawingStyle(group="Routing Layer", name="metal4" , color=Green , pattern="2288228822882288", threshold=0.02)
style.addDrawingStyle(group="Routing Layer", name="metal5" , color=Yellow , pattern="1144114411441144", threshold=0.02)
style.addDrawingStyle(group="Routing Layer", name="metal6" , color=Violet , pattern="8822882288228822", threshold=0.02)
# Cuts (VIA holes) group.
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut0", color="0,150,150", threshold=1.50)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut1", color=Aqua , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut2", color=LightPink , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut3", color=Green , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut4", color=Yellow , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut5", color=Violet , threshold=0.80)
# MIM6 group.
style.addDrawingStyle(group="MIM6", name="topmim6", color=Blue , pattern="AA55AA55AA55AA55", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="botmim6", color=Aqua , pattern="8822882288228822", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="padopen", color=LightPink, pattern="4411441144114411", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="alucap" , color=Green , pattern="2288228822882288", threshold=0.80)
# Blockages group.
style.addDrawingStyle(group="Blockages", name="blockage1", color=Blue , pattern="006070381c0e0703", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage2", color=Aqua , pattern="8103060c183060c0", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage3", color=LightPink, pattern="8800220088002200", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage4", color=Green , pattern="2288228822882288", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage5", color=Yellow , pattern="1144114411441144", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage6", color=Violet , pattern="8822882288228822", threshold=0.80, border=2)
# Knik & Kite group.
style.addDrawingStyle(group="Knik & Kite", name="SPL1" , color=Red)
style.addDrawingStyle(group="Knik & Kite", name="AutoLayer", color=Magenta)
style.addDrawingStyle(group="Knik & Kite", name="gmetalh" , color="128,255,200", pattern="8822882288228822", border=1)
style.addDrawingStyle(group="Knik & Kite", name="gmetalv" , color="200,200,255", pattern="4411441144114411", border=1)
style.addDrawingStyle(group="Knik & Kite", name="gcut" , color="255,255,190", border=1)
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# Aliance.Coriolis [white]
def loadAllianceCoriolisWhiteStyle ():
style = Viewer.DisplayStyle("Alliance.Coriolis [white]")
style.setDescription("Alliance Coriolis Look - white background")
style.inheritFrom("Alliance.Coriolis [black]")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
style.addDrawingStyle(group="Viewer", name="fallback" , color=Black, border=1, pattern="55AA55AA55AA55AA")
style.addDrawingStyle(group="Viewer", name="background" , color=White, border=1)
style.addDrawingStyle(group="Viewer", name="foreground" , color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="selectionDraw", color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="selectionFill", color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="grid" , color=Black, border=1, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="spot" , color=Black, border=1, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="ghost" , color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="text.ruler" , color=Black, border=1, threshold=0.0)
style.addDrawingStyle(group="Viewer", name="text.instance", color=Black, border=1, threshold=4.0)
style.addDrawingStyle(group="Viewer", name="undef" , color=Black, border=0, pattern="2244118822441188")
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# Aliance.Classic [black]
def loadAllianceClassicBlackStyle ():
style = Viewer.DisplayStyle("Alliance.Classic [black]")
style.setDescription("Alliance Standard Look - black background")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Viewer.
style.addDrawingStyle(group="Viewer", name="fallback" , color=Gray238 , border=1, pattern="55AA55AA55AA55AA")
style.addDrawingStyle(group="Viewer", name="background" , color=Gray50 , border=1)
style.addDrawingStyle(group="Viewer", name="foreground" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="rubber" , color="192,0,192" , border=4, threshold=0.02)
style.addDrawingStyle(group="Viewer", name="phantom" , color=Seashell4 , border=1)
style.addDrawingStyle(group="Viewer", name="boundaries" , color="208,199,192", border=1, pattern="0000000000000000", threshold=0)
style.addDrawingStyle(group="Viewer", name="marker" , color="80,250,80" , border=1)
style.addDrawingStyle(group="Viewer", name="selectionDraw" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="selectionFill" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="grid" , color=White , border=1, threshold=2.0)
style.addDrawingStyle(group="Viewer", name="spot" , color=White , border=2, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="ghost" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="text.ruler" , color=White , border=1, threshold=0.0)
style.addDrawingStyle(group="Viewer", name="text.instance" , color=White , border=1, threshold=4.0)
style.addDrawingStyle(group="Viewer", name="text.reference", color=White , border=1, threshold=20.0)
style.addDrawingStyle(group="Viewer", name="undef" , color=Violet , border=0, pattern="2244118822441188")
# Active Layers.
style.addDrawingStyle(group="Active Layers", name="nWell" , color=Tan , pattern=Urgo, border=1, threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="pWell" , color=LightYellow, pattern=Urgo, border=1, threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="nImplant", color=LawnGreen , pattern="77bbddee77bbddee", border=1, threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="pImplant", color=Yellow , pattern="77bbddee77bbddee", border=1, threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="active" , color=White , pattern="bbddee77bbddee77", border=1, threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="poly" , color=Red , pattern="aa55aa55aa55aa55", border=1, threshold=1.50)
# Routing Layers.
style.addDrawingStyle(group="Routing Layers", name="metal1", color=Blue , pattern="8844221188442211", border=1, threshold=0.80)
style.addDrawingStyle(group="Routing Layers", name="metal2", color=Aqua , pattern="8800220088002200", border=1, threshold=0.40)
style.addDrawingStyle(group="Routing Layers", name="metal3", color=LightPink, pattern="8800220088002200", border=1, threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal4", color=Green , pattern="8800220088002200", border=1, threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal5", color=Yellow , pattern="8800220088002200", border=1, threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal6", color=Violet , pattern="8800220088002200", border=1, threshold=0.02)
# Cuts (VIA holes).
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut0", color="0,150,150", threshold=1.50)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut1", color=Aqua , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut2", color=LightPink , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut3", color=Green , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut4", color=Yellow , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut5", color=Violet , threshold=0.80)
# MIM6.
style.addDrawingStyle(group="MIM6", name="topmim6", color=Blue , pattern="AA55AA55AA55AA55", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="botmim6", color=Aqua , pattern="8822882288228822", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="padopen", color=LightPink, pattern="4411441144114411", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="alucap" , color=Green , pattern="2288228822882288", threshold=0.80)
# Blockages.
style.addDrawingStyle(group="Blockages", name="blockage1", color=Blue , pattern="8844221188442211", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage2", color=Aqua , pattern="8800220088002200", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage3", color=LightPink, pattern="8800220088002200", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage4", color=Green , pattern="8800220088002200", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage5", color=Yellow , pattern="8800220088002200", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage6", color=Violet , pattern="8800220088002200", threshold=0.80, border=2)
# Knik & Kite.
style.addDrawingStyle(group="Knik & Kite", name="SPL1" , color=Red)
style.addDrawingStyle(group="Knik & Kite", name="AutoLayer", color=Magenta)
style.addDrawingStyle(group="Knik & Kite", name="gmetalh" , color="128,255,200", pattern="8822882288228822", border=1)
style.addDrawingStyle(group="Knik & Kite", name="gmetalv" , color="200,200,255", pattern="4411441144114411", border=1)
style.addDrawingStyle(group="Knik & Kite", name="gcut" , color="255,255,190", border=1)
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# Aliance.Classic [white]
def loadAllianceClassicWhiteStyle ():
style = Viewer.DisplayStyle("Alliance.Classic [white]")
style.inheritFrom("Alliance.Classic [black]")
style.setDescription("Alliance Standard Look - white background")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Viewer.
style.addDrawingStyle(group="Viewer", name="fallback" , color=Black, border=1, pattern="55AA55AA55AA55AA")
style.addDrawingStyle(group="Viewer", name="background" , color=White, border=1)
style.addDrawingStyle(group="Viewer", name="foreground" , color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="selectionDraw" , color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="selectionFill" , color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="grid" , color=Black, border=1, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="spot" , color=Black, border=1, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="ghost" , color=Black, border=1)
style.addDrawingStyle(group="Viewer", name="text.ruler" , color=Black, border=1, threshold=0.0)
style.addDrawingStyle(group="Viewer", name="text.instance" , color=Black, border=1, threshold=4.0)
style.addDrawingStyle(group="Viewer", name="text.reference", color=Black, border=1, threshold=20.0)
style.addDrawingStyle(group="Viewer", name="undef" , color=Black, border=0, pattern="2244118822441188")
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# ISPD Global Route.
def loadIspdGlobalRouteBlackStyle ():
style = Viewer.DisplayStyle("Ispd Global Route")
style.inheritFrom("Alliance.Classic [black]")
style.setDescription("ISPD Global Route Look -black background")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Viewer.
style.addDrawingStyle(group="Viewer", name="background", color=Black , border=1)
style.addDrawingStyle(group="Viewer", name="rubber" , color="192,0,192", border=1, threshold=0)
# Knik & Kite.
style.addDrawingStyle(group="Knik & Kite", name="gmetalh" , color="128,255,200", pattern="8822882288228822", border=1, threshold=0)
style.addDrawingStyle(group="Knik & Kite", name="gmetalv" , color="200,200,255", pattern="4411441144114411", border=1, threshold=0)
style.addDrawingStyle(group="Knik & Kite", name="gcontact", color="255,255,190", border=1, threshold=0)
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# Layout Design [black].
def loadLayoutDesignBlackStyle ():
style = Viewer.DisplayStyle("Layout Design")
style.inheritFrom("Alliance.Classic [black]")
style.setDescription("Useful for debugging layout - black background")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Active Layers.
style.addDrawingStyle(group="Active Layers", name="nWell" , color=Tan , pattern="0000000000000000", threshold=1.50, border=2)
style.addDrawingStyle(group="Active Layers", name="pWell" , color=LightYellow, pattern="0000000000000000", threshold=1.50, border=2)
style.addDrawingStyle(group="Active Layers", name="nImplant", color=LawnGreen , pattern="0000000000000000", threshold=1.50, border=2)
style.addDrawingStyle(group="Active Layers", name="pImplant", color=Yellow , pattern="0000000000000000", threshold=1.50, border=2)
style.addDrawingStyle(group="Active Layers", name="active" , color=White , pattern="0000000000000000", threshold=1.50, border=2)
style.addDrawingStyle(group="Active Layers", name="poly" , color=Red , pattern="0000000000000000", threshold=1.50, border=2)
# Routing Layers.
style.addDrawingStyle(group="Routing Layers", name="metal1", color=Blue , pattern="0000000000000000", threshold=0.80, border=2)
style.addDrawingStyle(group="Routing Layers", name="metal2", color=Aqua , pattern="0000000000000000", threshold=0.40, border=2)
style.addDrawingStyle(group="Routing Layers", name="metal3", color=LightPink, pattern="0000000000000000", threshold=0.02, border=2)
style.addDrawingStyle(group="Routing Layers", name="metal4", color=Green , pattern="0000000000000000", threshold=0.02, border=2)
style.addDrawingStyle(group="Routing Layers", name="metal5", color=Yellow , pattern="0000000000000000", threshold=0.02, border=2)
style.addDrawingStyle(group="Routing Layers", name="metal6", color=Violet , pattern="0000000000000000", threshold=0.02, border=2)
# Cuts (VIA holes)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut0", color="0,150,150", pattern="8800220088002200", threshold=1.50, border=1)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut1", color=Aqua , pattern="0000000000000000", threshold=0.80, border=1)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut2", color=LightPink , pattern="0000000000000000", threshold=0.80, border=1)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut3", color=Green , pattern="0000000000000000", threshold=0.80, border=1)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut4", color=Yellow , pattern="0000000000000000", threshold=0.80, border=1)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut5", color=Violet , pattern="0000000000000000", threshold=0.80, border=1)
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# Layout Design [white].
def loadLayoutDesignWhiteStyle ():
style = Viewer.DisplayStyle("Layout Design White")
style.inheritFrom("Layout Design")
style.setDescription("Useful for debugging layout - white background")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Viewer.
style.addDrawingStyle(group="Viewer", name="background" , color=White, border=1)
style.addDrawingStyle(group="Viewer", name="grid" , color=Black, border=1, threshold=2.0)
style.addDrawingStyle(group="Viewer", name="spot" , color=Black, border=1, threshold=2.0)
style.addDrawingStyle(group="Viewer", name="text.ruler" , color=Black, border=1, threshold=0.0)
style.addDrawingStyle(group="Viewer", name="text.reference", color=Black, border=1, threshold=20.0)
# Active Layers.
style.addDrawingStyle(group="Active Layers", name="active", color="175,175,175", pattern="0000000000000000", threshold=1.50, border=2)
Viewer.Graphics.addStyle ( style )
return
# =============================================================================
# Layout Design [white].
def loadPrinterCoriolisStyle ():
style = Viewer.DisplayStyle("Printer.Coriolis")
style.setDescription("Coriolis Look for Printers")
style.setDarkening(Viewer.DisplayStyle.HSVr( 1.0, 3.0, 2.5 ))
# Viewer.
style.addDrawingStyle(group="Viewer", name="fallback" , color=Gray238 , border=1, pattern="55AA55AA55AA55AA")
style.addDrawingStyle(group="Viewer", name="background" , color=White , border=1)
style.addDrawingStyle(group="Viewer", name="foreground" , color=Black , border=1)
style.addDrawingStyle(group="Viewer", name="rubber" , color="192,0,192", border=4, threshold=0.02)
style.addDrawingStyle(group="Viewer", name="phantom" , color=Seashell4 , border=1)
style.addDrawingStyle(group="Viewer", name="boundaries" , color=Black , border=1, pattern="0000000000000000", threshold=0)
style.addDrawingStyle(group="Viewer", name="marker" , color="80,250,80", border=1)
style.addDrawingStyle(group="Viewer", name="selectionDraw" , color=Black , border=1)
style.addDrawingStyle(group="Viewer", name="selectionFill" , color=Black , border=1)
style.addDrawingStyle(group="Viewer", name="grid" , color=Black , border=1, threshold=2.0)
style.addDrawingStyle(group="Viewer", name="spot" , color=Black , border=2, threshold=6.0)
style.addDrawingStyle(group="Viewer", name="ghost" , color=Black , border=1)
style.addDrawingStyle(group="Viewer", name="text.ruler" , color=Black , border=1, threshold=0.0)
style.addDrawingStyle(group="Viewer", name="text.instance" , color=Black , border=1, threshold=4.0)
style.addDrawingStyle(group="Viewer", name="text.reference" , color=Black , border=1, threshold=20.0)
style.addDrawingStyle(group="Viewer", name="undef" , color=Violet , border=0, pattern="2244118822441188")
style.addDrawingStyle(group="Viewer", name="mauka.container", color=Magenta4 , border=4, pattern="0000000000000000", goMatched="false")
# Active Layers.
style.addDrawingStyle(group="Active Layers", name="nWell" , color=Tan , pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="pWell" , color=LightYellow, pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="nImplant", color=LawnGreen , pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="pImplant", color=Yellow , pattern="55AA55AA55AA55AA", threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="active" , color=White , pattern="bbddee77bbddee77", threshold=1.50)
style.addDrawingStyle(group="Active Layers", name="poly" , color=Red , pattern="55AA55AA55AA55AA", threshold=1.50)
# Routing Layers.
style.addDrawingStyle(group="Routing Layers", name="metal1", color=Black , pattern="AA55AA55AA55AA55", threshold=0.80)
style.addDrawingStyle(group="Routing Layers", name="metal2", color=Black , pattern="8822882288228822", threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal3", color=Black , pattern="4411441144114411", threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal4", color="127,127,127", pattern="2288228822882288", threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal5", color="127,127,127", pattern="1144114411441144", threshold=0.02)
style.addDrawingStyle(group="Routing Layers", name="metal6", color=Black , pattern="8822882288228822", threshold=0.02)
# Cuts (VIA holes)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut0", color=Black , threshold=1.50)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut1", color=Black , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut2", color=Black , threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut3", color="127,127,12 7", threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut4", color="127,127,12 7", threshold=0.80)
style.addDrawingStyle(group="Cuts (VIA holes)", name="cut5", color=Black , threshold=0.80)
# MIM6.
style.addDrawingStyle(group="MIM6", name="topmim6", color=Blue , pattern="AA55AA55AA55AA55", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="botmim6", color=Aqua , pattern="8822882288228822", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="padopen", color=LightPink, pattern="4411441144114411", threshold=0.80)
style.addDrawingStyle(group="MIM6", name="alucap" , color=Green , pattern="2288228822882288", threshold=0.80)
# Blockages.
style.addDrawingStyle(group="Blockages", name="blockage1", color=Blue , pattern="006070381c0e0703", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage2", color=Aqua , pattern="8103060c183060c0", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage3", color=LightPink, pattern="8800220088002200", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage4", color=Green , pattern="2288228822882288", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage5", color=Yellow , pattern="1144114411441144", threshold=0.80, border=2)
style.addDrawingStyle(group="Blockages", name="blockage6", color=Violet , pattern="8822882288228822", threshold=0.80, border=2)
# Knik & Kite.
style.addDrawingStyle(group="Knik & Kite", name="SPL1" , color=Red)
style.addDrawingStyle(group="Knik & Kite", name="AutoLayer", color=Magenta)
style.addDrawingStyle(group="Knik & Kite", name="gmetalh" , color="128,255,200", pattern="8822882288228822", border=1)
style.addDrawingStyle(group="Knik & Kite", name="gmetalv" , color="200,200,255", pattern="4411441144114411", border=1)
style.addDrawingStyle(group="Knik & Kite", name="gcut" , color="255,255,190", border=1)
Viewer.Graphics.addStyle ( style )
return
print " - Loading Display configuration."
#loadAllianceCoriolisBlackStyle()
#loadAllianceCoriolisWhiteStyle()
#loadAllianceClassicBlackStyle()
#loadAllianceClassicWhiteStyle()
#loadIspdGlobalRouteBlackStyle ()
#loadLayoutDesignBlackStyle()
#loadLayoutDesignWhiteStyle()
loadPrinterCoriolisStyle()
# Select the default style.
Viewer.Graphics.setStyle ( "Alliance.Classic [black]" )
#print 'AVAILABLE STYLES:'
#for style in Viewer.Graphics.getStyles():
# print ' ', style.getName()
#
#style = Viewer.Graphics.getStyle("Alliance.Classic [white]")
#print style
#for dg in style.getDrawingGroups():
# print dg.getName()
# for ds in dg.getDrawingStyles():
# print ' ', ds.getName(), ds.getPattern()

View File

@ -1,8 +1,7 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC/LIP6 2012-2012, All Rights Reserved
// Copyright (c) UPMC/LIP6 2012-2014, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
@ -187,6 +186,8 @@ extern "C" {
// Standart Accessors (Attributes).
DirectGetStringAttribute(PyEnvironment_getCORIOLIS_TOP ,getCORIOLIS_TOP ,PyEnvironment,Environment)
DirectGetStringAttribute(PyEnvironment_getSYMB_TECHNO_NAME ,getSYMB_TECHNO_NAME ,PyEnvironment,Environment)
DirectGetStringAttribute(PyEnvironment_getREAL_TECHNO_NAME ,getREAL_TECHNO_NAME ,PyEnvironment,Environment)
DirectGetStringAttribute(PyEnvironment_getDisplayStyle ,getDisplayStyle ,PyEnvironment,Environment)
DirectGetLongAttribute (PyEnvironment_getSCALE_X ,getSCALE_X ,PyEnvironment,Environment)
DirectGetStringAttribute(PyEnvironment_getSYMBOLIC_TECHNOLOGY,getSYMBOLIC_TECHNOLOGY,PyEnvironment,Environment)
@ -211,6 +212,8 @@ extern "C" {
DirectIsAFromCStringAttribute(PyEnvironment_isPad ,isPad ,PyEnvironment,Environment)
// Standart Mutators (Attributes).
DirectSetCStringAttribute(PyEnvironment_setSYMB_TECHNO_NAME ,setSYMB_TECHNO_NAME ,"Environment.setSYMB_TECHNO_NAME" ,PyEnvironment,Environment)
DirectSetCStringAttribute(PyEnvironment_setREAL_TECHNO_NAME ,setREAL_TECHNO_NAME ,"Environment.setSYMB_TECHNO_NAME" ,PyEnvironment,Environment)
DirectSetCStringAttribute(PyEnvironment_setDisplayStyle ,setDisplayStyle ,"Environment.setDisplayStyle" ,PyEnvironment,Environment)
DirectSetLongAttribute (PyEnvironment_setSCALE_X ,setSCALE_X ,"Environment.setSCALE_X" ,PyEnvironment,Environment)
DirectSetCStringAttribute(PyEnvironment_setSYMBOLIC_TECHNOLOGY,setSYMBOLIC_TECHNOLOGY,"Environment.setSYMBOLIC_TECHNOLOGY",PyEnvironment,Environment)
@ -236,6 +239,10 @@ extern "C" {
PyMethodDef PyEnvironment_Methods[] =
{ { "getCORIOLIS_TOP" , (PyCFunction)PyEnvironment_getCORIOLIS_TOP , METH_NOARGS
, "Gets the symbolic technology file." }
, { "getSYMB_TECHNO_NAME" , (PyCFunction)PyEnvironment_getSYMB_TECHNO_NAME , METH_NOARGS
, "Gets the symbolic technology name." }
, { "getREAL_TECHNO_NAME" , (PyCFunction)PyEnvironment_getREAL_TECHNO_NAME , METH_NOARGS
, "Gets the real (target) technology name." }
, { "getDisplayStyle" , (PyCFunction)PyEnvironment_getDisplayStyle , METH_NOARGS
, "Gets the name of the display style currently in use." }
, { "getSCALE_X" , (PyCFunction)PyEnvironment_getSCALE_X , METH_NOARGS
@ -286,6 +293,10 @@ extern "C" {
, "Call the legacy XML Alliance environment parser." }
, { "loadFromShell" , (PyCFunction)PyEnvironment_loadFromShell , METH_NOARGS
, "Read the the environment from the process UNIX context." }
, { "setSYMB_TECHNO_NAME" , (PyCFunction)PyEnvironment_setSYMB_TECHNO_NAME , METH_VARARGS
, "Sets the symbolic technology name." }
, { "setREAL_TECHNO_NAME" , (PyCFunction)PyEnvironment_setREAL_TECHNO_NAME , METH_VARARGS
, "Sets the real (target) technology name." }
, { "setDisplayStyle" , (PyCFunction)PyEnvironment_setDisplayStyle , METH_VARARGS
, "Sets the name of the display style to be used." }
, { "setSCALE_X" , (PyCFunction)PyEnvironment_setSCALE_X , METH_VARARGS