From 8bc7bd38dba7fca9ad0322c1be7a41b01e091d7f Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Thu, 22 May 2014 00:13:17 +0200 Subject: [PATCH] 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. --- crlcore/etc/CMakeLists.txt | 1 + crlcore/etc/cmos/alliance.conf | 2 +- crlcore/etc/cmos/display.conf | 360 +-------------- crlcore/etc/cmos/patterns.conf | 576 +----------------------- crlcore/etc/cmos/technology.conf | 133 +----- crlcore/etc/common/display.conf | 363 +++++++++++++++ crlcore/etc/common/patterns.conf | 574 +++++++++++++++++++++++ crlcore/etc/common/technology.conf | 131 ++++++ crlcore/etc/hcmos9/technology.conf | 3 +- crlcore/etc/vsc200/alliance.conf | 6 +- crlcore/etc/vsc200/display.conf | 360 +-------------- crlcore/etc/vsc200/nimbus.conf | 4 +- crlcore/etc/vsc200/patterns.conf | 576 +----------------------- crlcore/etc/vsc200/technology.conf | 133 +----- documentation/UsersGuide/UsersGuide.rst | 41 +- 15 files changed, 1154 insertions(+), 2109 deletions(-) create mode 100644 crlcore/etc/common/display.conf create mode 100644 crlcore/etc/common/patterns.conf create mode 100644 crlcore/etc/common/technology.conf diff --git a/crlcore/etc/CMakeLists.txt b/crlcore/etc/CMakeLists.txt index 3ac9e987..c59c77c5 100644 --- a/crlcore/etc/CMakeLists.txt +++ b/crlcore/etc/CMakeLists.txt @@ -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 ) diff --git a/crlcore/etc/cmos/alliance.conf b/crlcore/etc/cmos/alliance.conf index 5b52048c..1ede0f9a 100644 --- a/crlcore/etc/cmos/alliance.conf +++ b/crlcore/etc/cmos/alliance.conf @@ -1,4 +1,4 @@ -# -*- Mode:Python -*- +# -*- Mode:Python; explicit-buffer-name: "alliance.conf" -*- cellsTop = '/soc/alliance/cells/' diff --git a/crlcore/etc/cmos/display.conf b/crlcore/etc/cmos/display.conf index e607605a..e8c64d57 100644 --- a/crlcore/etc/cmos/display.conf +++ b/crlcore/etc/cmos/display.conf @@ -1,357 +1,9 @@ +# -*- Mode:Python; explicit-buffer-name: "display.conf" -*- -# -*- Mode:Python -*- +import helpers +# Provides standard settings for: +# - +# - -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' ) diff --git a/crlcore/etc/cmos/patterns.conf b/crlcore/etc/cmos/patterns.conf index a2c437bd..8c511b77 100644 --- a/crlcore/etc/cmos/patterns.conf +++ b/crlcore/etc/cmos/patterns.conf @@ -1,575 +1,5 @@ +# -*- Mode:Python; explicit-buffer-name: "patterns.conf" -*- -# -*- 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' ) diff --git a/crlcore/etc/cmos/technology.conf b/crlcore/etc/cmos/technology.conf index b9529806..1371a43d 100644 --- a/crlcore/etc/cmos/technology.conf +++ b/crlcore/etc/cmos/technology.conf @@ -1,117 +1,17 @@ -# -*- Mode:Python -*- +# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- -viewerConfig = { 'precision':2, 'gridstep':1.0 } +import helpers - -# Format of : -# 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: +# - +# - +# - +# - -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 : -# 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 : @@ -260,16 +160,3 @@ symbolicRulesTable = \ , ('BLOCKAGE8.minimum.width' , 2.0) , ('BLOCKAGE8.blockage6.extention.cap' , 1.0) ) - - -# Format of : -# 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' - ] diff --git a/crlcore/etc/common/display.conf b/crlcore/etc/common/display.conf new file mode 100644 index 00000000..3cef5f98 --- /dev/null +++ b/crlcore/etc/common/display.conf @@ -0,0 +1,363 @@ +# -*- Mode:Python; explicit-buffer-name: "display.conf" -*- + +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 }) + ) + ) diff --git a/crlcore/etc/common/patterns.conf b/crlcore/etc/common/patterns.conf new file mode 100644 index 00000000..ffb8f7b6 --- /dev/null +++ b/crlcore/etc/common/patterns.conf @@ -0,0 +1,574 @@ +# -*- Mode:Python; explicit-buffer-name: "patterns.conf" -*- + + +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 ' ] } + + ) diff --git a/crlcore/etc/common/technology.conf b/crlcore/etc/common/technology.conf new file mode 100644 index 00000000..80cbe1e7 --- /dev/null +++ b/crlcore/etc/common/technology.conf @@ -0,0 +1,131 @@ +# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- +# +# 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 : +# 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 : +# 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 : +# 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' + ] diff --git a/crlcore/etc/hcmos9/technology.conf b/crlcore/etc/hcmos9/technology.conf index e97a39cd..e2dfd3af 100644 --- a/crlcore/etc/hcmos9/technology.conf +++ b/crlcore/etc/hcmos9/technology.conf @@ -1,5 +1,4 @@ - -# -*- Mode:Python -*- +# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- technoConfig = { 'name' : 'hcmos9' , 'gridValue' : 0.005 diff --git a/crlcore/etc/vsc200/alliance.conf b/crlcore/etc/vsc200/alliance.conf index 15341df7..76d64ad2 100644 --- a/crlcore/etc/vsc200/alliance.conf +++ b/crlcore/etc/vsc200/alliance.conf @@ -1,4 +1,4 @@ -# -*- Mode:Python -*- +# -*- Mode:Python; explicit-buffer-name: "alliance.conf" -*- 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) diff --git a/crlcore/etc/vsc200/display.conf b/crlcore/etc/vsc200/display.conf index 25c29976..23fe7ada 100644 --- a/crlcore/etc/vsc200/display.conf +++ b/crlcore/etc/vsc200/display.conf @@ -1,357 +1,9 @@ +# -*- Mode:Python; explicit-buffer-name: "display.conf" -*- -# -*- Mode:Python -*- +import helpers +# Provides standard settings for: +# - +# - -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' ) diff --git a/crlcore/etc/vsc200/nimbus.conf b/crlcore/etc/vsc200/nimbus.conf index c452a5cc..de31f98c 100644 --- a/crlcore/etc/vsc200/nimbus.conf +++ b/crlcore/etc/vsc200/nimbus.conf @@ -6,8 +6,8 @@ parametersTable = \ ( ('nimbus.aspectRatio' , TypePercentage, 100 , { 'min':10, 'max':1000 } ) , ("nimbus.pinsPlacement", TypeBool , False ) , ("nimbus.spaceMargin" , TypePercentage, 40 ) - , ("nimbus.cellGauge" , TypeString , "sxlib", { 'flags':Cfg.Parameter.Flags.AllRequirements} ) - , ("nimbus.routingGauge" , TypeString , "sxlib", { 'flags':Cfg.Parameter.Flags.AllRequirements} ) + , ("nimbus.cellGauge" , TypeString , "vsclib", { 'flags':Cfg.Parameter.Flags.AllRequirements} ) + , ("nimbus.routingGauge" , TypeString , "vsclib", { 'flags':Cfg.Parameter.Flags.AllRequirements} ) ) diff --git a/crlcore/etc/vsc200/patterns.conf b/crlcore/etc/vsc200/patterns.conf index a2c437bd..dc45dd51 100644 --- a/crlcore/etc/vsc200/patterns.conf +++ b/crlcore/etc/vsc200/patterns.conf @@ -1,575 +1,5 @@ +# -*- Mode:Python; explicit-buffer-name: "patterns.conf" -*- -# -*- 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' ) diff --git a/crlcore/etc/vsc200/technology.conf b/crlcore/etc/vsc200/technology.conf index 9703e7f0..96a59197 100644 --- a/crlcore/etc/vsc200/technology.conf +++ b/crlcore/etc/vsc200/technology.conf @@ -1,117 +1,17 @@ -# -*- Mode:Python -*- +# -*- Mode:Python; explicit-buffer-name: "technology.conf" -*- -viewerConfig = { 'precision':2, 'gridstep':1.0 } +import helpers - -# Format of : -# 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: +# - +# - +# - +# - -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 : -# 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 : @@ -265,16 +165,3 @@ symbolicRulesTable = \ , ('BLOCKAGE8.minimum.width' , 2.0) , ('BLOCKAGE8.blockage6.extention.cap' , 4.0) ) - - -# Format of : -# 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' - ] diff --git a/documentation/UsersGuide/UsersGuide.rst b/documentation/UsersGuide/UsersGuide.rst index 2000ecc6..dbcd197b 100644 --- a/documentation/UsersGuide/UsersGuide.rst +++ b/documentation/UsersGuide/UsersGuide.rst @@ -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/.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:`/.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//.conf` | +-------+----------------------------------+----------------------------------------------+ | **2** | The user's global initialization | :cb:`${HOME}/.coriolis2.conf` | +-------+----------------------------------+----------------------------------------------+