Add a common/ to share the trunk of symbolic technologies configurations.
In CRL Core configuration files, "display.conf", "patterns.conf" and "technology.conf" share most of their code. So that common part is put into "common/" and sourced from the final configuration file. Update the documentation according the the new initialization scheme.
This commit is contained in:
parent
4439d3a142
commit
8bc7bd38db
|
@ -1,5 +1,6 @@
|
|||
|
||||
install ( FILES coriolis2_techno.conf DESTINATION ${SYS_CONF_DIR}/coriolis2 )
|
||||
install ( DIRECTORY common 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 )
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- Mode:Python -*-
|
||||
# -*- Mode:Python; explicit-buffer-name: "alliance.conf<cmos>" -*-
|
||||
|
||||
|
||||
cellsTop = '/soc/alliance/cells/'
|
||||
|
|
|
@ -1,357 +1,9 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "display.conf<cmos>" -*-
|
||||
|
||||
# -*- Mode:Python -*-
|
||||
import helpers
|
||||
|
||||
# Provides standard settings for:
|
||||
# - <defaultStyle>
|
||||
# - <stylesTable>
|
||||
|
||||
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':'Orange' , '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':'Orange' , 'pattern':'antipoids2.32', '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 })
|
||||
)
|
||||
)
|
||||
execfile( helpers.sysConfDir+'/common/display.conf' )
|
||||
|
|
|
@ -1,575 +1,5 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "patterns.conf<cmos>" -*-
|
||||
|
||||
# -*- mode:Python -*-
|
||||
import helpers
|
||||
|
||||
|
||||
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 ' ] }
|
||||
|
||||
)
|
||||
execfile( helpers.sysConfDir+'/common/patterns.conf' )
|
||||
|
|
|
@ -1,117 +1,17 @@
|
|||
# -*- Mode:Python -*-
|
||||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<cmos>" -*-
|
||||
|
||||
viewerConfig = { 'precision':2, 'gridstep':1.0 }
|
||||
import helpers
|
||||
|
||||
|
||||
# Format of <realLayerTable>:
|
||||
# The third parameter must be present only for blockage material.
|
||||
# ('layer_name' , MATERIAL , ASSOCIATED ROUTING)
|
||||
# The informations here are extracted from the Alliance ".rds" file,
|
||||
# and must be coherent with it.
|
||||
#
|
||||
# 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).
|
||||
# Provides standard settings for:
|
||||
# - <viewerConfig>
|
||||
# - <realLayersTable>
|
||||
# - <symbolicLayersTable>
|
||||
# - <workingLayersTable>
|
||||
|
||||
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'))
|
||||
)
|
||||
execfile( helpers.sysConfDir+'/common/technology.conf' )
|
||||
|
||||
|
||||
# Format of <symbolicRulesTable>:
|
||||
|
@ -260,16 +160,3 @@ symbolicRulesTable = \
|
|||
, ('BLOCKAGE8.minimum.width' , 2.0)
|
||||
, ('BLOCKAGE8.blockage6.extention.cap' , 1.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'
|
||||
]
|
||||
|
|
|
@ -0,0 +1,363 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "display.conf<common>" -*-
|
||||
|
||||
import helpers
|
||||
|
||||
if helpers.symbolicTechno == 'vsc200':
|
||||
poly2Color = 'Magenta4'
|
||||
else:
|
||||
poly2Color = 'Orange'
|
||||
|
||||
|
||||
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':poly2Color , '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':poly2Color , 'pattern':'antipoids2.32', '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,574 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "patterns.conf<common>" -*-
|
||||
|
||||
|
||||
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,131 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<common>" -*-
|
||||
#
|
||||
# Those settings are common to all the symbolic technologies.
|
||||
|
||||
viewerConfig = { 'precision':2, 'gridstep':1.0 }
|
||||
|
||||
# The informations here are extracted from the Alliance ".rds" file,
|
||||
# and must be coherent with it.
|
||||
#
|
||||
# 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>:
|
||||
# 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,5 +1,4 @@
|
|||
|
||||
# -*- Mode:Python -*-
|
||||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<hcmos9>" -*-
|
||||
|
||||
technoConfig = { 'name' : 'hcmos9'
|
||||
, 'gridValue' : 0.005
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- Mode:Python -*-
|
||||
# -*- Mode:Python; explicit-buffer-name: "alliance.conf<vsc200>" -*-
|
||||
|
||||
|
||||
cellsTop = '/usr/share/pharosc/alliance/cells/'
|
||||
|
@ -32,7 +32,7 @@ allianceConfig = \
|
|||
|
||||
routingGaugesTable = {}
|
||||
|
||||
routingGaugesTable['sxlib'] = \
|
||||
routingGaugesTable['vsclib'] = \
|
||||
( ( '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 ) )
|
||||
|
@ -48,5 +48,5 @@ routingGaugesTable['sxlib'] = \
|
|||
# ( METAL_PIN, xy_common_pitch, slice_height, slice_step )
|
||||
|
||||
cellGaugesTable = {}
|
||||
cellGaugesTable['sxlib'] = ('metal2', 5.0, 50.0, 5.0)
|
||||
cellGaugesTable['vsclib'] = ('metal2', 5.0, 50.0, 5.0)
|
||||
|
||||
|
|
|
@ -1,357 +1,9 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "display.conf<vsc200>" -*-
|
||||
|
||||
# -*- Mode:Python -*-
|
||||
import helpers
|
||||
|
||||
# Provides standard settings for:
|
||||
# - <defaultStyle>
|
||||
# - <stylesTable>
|
||||
|
||||
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 })
|
||||
)
|
||||
)
|
||||
execfile( helpers.sysConfDir+'/common/display.conf' )
|
||||
|
|
|
@ -6,8 +6,8 @@ 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} )
|
||||
, ("nimbus.cellGauge" , TypeString , "vsclib", { 'flags':Cfg.Parameter.Flags.AllRequirements} )
|
||||
, ("nimbus.routingGauge" , TypeString , "vsclib", { 'flags':Cfg.Parameter.Flags.AllRequirements} )
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,575 +1,5 @@
|
|||
# -*- Mode:Python; explicit-buffer-name: "patterns.conf<vsc200>" -*-
|
||||
|
||||
# -*- mode:Python -*-
|
||||
import helpers
|
||||
|
||||
|
||||
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 ' ] }
|
||||
|
||||
)
|
||||
execfile( helpers.sysConfDir+'/common/patterns.conf' )
|
||||
|
|
|
@ -1,117 +1,17 @@
|
|||
# -*- Mode:Python -*-
|
||||
# -*- Mode:Python; explicit-buffer-name: "technology.conf<vsc200>" -*-
|
||||
|
||||
viewerConfig = { 'precision':2, 'gridstep':1.0 }
|
||||
import helpers
|
||||
|
||||
|
||||
# Format of <realLayerTable>:
|
||||
# The third parameter must be present only for blockage material.
|
||||
# ('layer_name' , MATERIAL , ASSOCIATED ROUTING)
|
||||
# The informations here are extracted from the Alliance ".rds" file,
|
||||
# and must be coherent with it.
|
||||
#
|
||||
# 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).
|
||||
# Provides standard settings for:
|
||||
# - <viewerConfig>
|
||||
# - <realLayersTable>
|
||||
# - <symbolicLayersTable>
|
||||
# - <workingLayersTable>
|
||||
|
||||
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'))
|
||||
)
|
||||
execfile( helpers.sysConfDir+'/common/technology.conf' )
|
||||
|
||||
|
||||
# Format of <symbolicRulesTable>:
|
||||
|
@ -265,16 +165,3 @@ symbolicRulesTable = \
|
|||
, ('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'
|
||||
]
|
||||
|
|
|
@ -451,6 +451,15 @@ between the system-wide configuration files and the user's configuration,
|
|||
they may use the same Python helpers.
|
||||
|medskip|
|
||||
|
||||
Configuration is done in two stages:
|
||||
|
||||
#. Selecting the symbolic technology.
|
||||
#. Loading the complete configuration for the given technology.
|
||||
|
||||
|
||||
First Stage: Symbolic Technology Selection
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|noindent|
|
||||
The initialization process is done by executing, in order, the following
|
||||
file(s):
|
||||
|
@ -458,7 +467,37 @@ file(s):
|
|||
+-------+----------------------------------+----------------------------------------------+
|
||||
| Order | Meaning | File |
|
||||
+=======+==================================+==============================================+
|
||||
| **1** | The system initialization | :cb:`/etc/coriolis2/<TOOL>.conf` |
|
||||
| **1** | The system setting | :cb:`/etc/coriolis2/coriolis2_techno.conf` |
|
||||
+-------+----------------------------------+----------------------------------------------+
|
||||
| **2** | The user's global setting | :cb:`${HOME}/.coriolis2_techno.conf` |
|
||||
+-------+----------------------------------+----------------------------------------------+
|
||||
| **3** | The user's local setting | :cb:`<CWD>/.coriolis2_techno.conf` |
|
||||
+-------+----------------------------------+----------------------------------------------+
|
||||
|
||||
Thoses files must provides only two variables, the name of the symbolic technology
|
||||
and the one of the real technology. For example: ::
|
||||
|
||||
# -*- Mode:Python -*-
|
||||
|
||||
symbolicTechno = 'cmos'
|
||||
realTechno = 'hcmos9'
|
||||
|
||||
|
||||
Second Stage: Technology Configuration Loading
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|noindent|
|
||||
The :cb:`TECHNO` variable is set by the first stage and it's the name of the
|
||||
symbolic technology. A directory of that name, with all the configuration files,
|
||||
must exists in the configuration directory. In addition to the technology-specific
|
||||
directories, a :cb:`common/` directory is there to provides a trunk for all the
|
||||
identical datas across the various technologies. The initialization process is done
|
||||
by executing, in order, the following file(s):
|
||||
|
||||
+-------+----------------------------------+----------------------------------------------+
|
||||
| Order | Meaning | File |
|
||||
+=======+==================================+==============================================+
|
||||
| **1** | The system initialization | :cb:`/etc/coriolis2/<TECHNO>/<TOOL>.conf` |
|
||||
+-------+----------------------------------+----------------------------------------------+
|
||||
| **2** | The user's global initialization | :cb:`${HOME}/.coriolis2.conf` |
|
||||
+-------+----------------------------------+----------------------------------------------+
|
||||
|
|
Loading…
Reference in New Issue