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:
Jean-Paul Chaput 2014-05-22 00:13:17 +02:00
parent 4439d3a142
commit 8bc7bd38db
15 changed files with 1154 additions and 2109 deletions

View File

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

View File

@ -1,4 +1,4 @@
# -*- Mode:Python -*-
# -*- Mode:Python; explicit-buffer-name: "alliance.conf<cmos>" -*-
cellsTop = '/soc/alliance/cells/'

View File

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

View File

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

View File

@ -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'
]

View File

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

View File

@ -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 ' ] }
)

View File

@ -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'
]

View File

@ -1,5 +1,4 @@
# -*- Mode:Python -*-
# -*- Mode:Python; explicit-buffer-name: "technology.conf<hcmos9>" -*-
technoConfig = { 'name' : 'hcmos9'
, 'gridValue' : 0.005

View File

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

View File

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

View File

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

View File

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

View File

@ -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'
]

View File

@ -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` |
+-------+----------------------------------+----------------------------------------------+