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:
parent
b98afd8385
commit
4439d3a142
|
@ -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 )
|
||||
|
|
|
@ -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)
|
|
@ -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')
|
|
@ -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'
|
||||
]
|
|
@ -0,0 +1,4 @@
|
|||
# -*- Mode:Python -*-
|
||||
|
||||
symbolicTechno = 'cmos'
|
||||
realTechno = 'hcmos9'
|
|
@ -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)
|
||||
|
|
@ -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 })
|
||||
)
|
||||
)
|
|
@ -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 = ()
|
|
@ -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 ,)
|
||||
)
|
|
@ -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 ,)
|
||||
)
|
|
@ -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)
|
||||
)
|
|
@ -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 = ()
|
|
@ -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 ' ] }
|
||||
|
||||
)
|
|
@ -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 )
|
||||
)
|
|
@ -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'
|
||||
]
|
|
@ -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("")
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue