Removed long obsoleted XML techno config files.

This commit is contained in:
Jean-Paul Chaput 2023-02-27 23:08:03 +01:00
parent f404bcc8c0
commit 800305abc3
38 changed files with 0 additions and 2448 deletions

View File

@ -1,39 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "alliance.conf<freepdk_45>" -*-
import os
from helpers.Alliance import AddMode
from helpers.Alliance import Gauge
allianceTop = None
if os.environ.has_key('ALLIANCE_TOP'):
allianceTop = os.environ['ALLIANCE_TOP']
if not os.path.isdir(allianceTop):
allianceTop = None
if not allianceTop: allianceTop = '/soc/alliance'
cellsTop = allianceTop+'/cells/'
allianceConfig = \
( ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'/nsxlib' , Environment.Append)
, (cellsTop+'/mpxlib' , Environment.Append)) )
, ( 'SCALE_X' , 100)
, ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*')
, ( 'BLOCKAGE' , '^blockage[Nn]et*')
, ( 'PAD' , '.*_mpx$')
# The following are only read by the Alliance tool wrappers.
, ( 'ALLIANCE_TOP' , allianceTop)
, ( 'MBK_TARGET_LIB' , cellsTop+'/msxlib')
, ( 'RDS_TECHNO_NAME' , allianceTop+'/etc/scn6m_deep_09.rds')
, ( 'GRAAL_TECHNO_NAME' , allianceTop+'/etc/graal.rds')
)

View File

@ -1,10 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "analog.conf<common>" -*-
import helpers
parametersTable = \
( ('analog.techno' , TypeString, 'Analog_technology_is_disabled',
{ 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } )
, ('analog.devices', TypeString, helpers.technoDir+'/devices.conf' )
)

View File

@ -1,11 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "display.conf<freepdk_45>" -*-
import helpers
# Provides standard settings for:
# - <defaultStyle>
# - <stylesTable>
scale = 0.5
execfile( helpers.sysConfDir+'/common/display.conf' )

View File

@ -1,13 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "etesian.conf<freepdk_45>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/etesian.conf' )
parametersTable = helpers.overload \
( parametersTable
, ( ('etesian.feedNames', TypeString, 'FILL' )
, ('etesian.cell.zero', TypeString, 'missing_tie_low' )
, ('etesian.cell.one' , TypeString, 'missing_tie_high')
)
)

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "hMetis.conf<freepdk_45>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/hMetis.conf' )

View File

@ -1,69 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "kite.conf<freepdk_45>" -*-
import helpers
from helpers import l, u, n
# Contains the layout (shared by all technologies).
execfile( helpers.sysConfDir+'/common/kite.conf' )
parametersTable = \
( ('lefImport.minTerminalWidth' ,TypeDouble ,0.065 )
, ("katabatic.globalLengthThreshold",TypeInt ,1450 ) # Katabatic parameters.
, ("katabatic.saturateRatio" ,TypePercentage,90 )
, ("katabatic.saturateRp" ,TypeInt ,10 )
, ('katabatic.topRoutingLayer' ,TypeString , 'metal5')
, ('anabatic.routingGauge' ,TypeString , 'gscl45')
, ('crlcore.groundName' ,TypeString , 'gnd!' )
, ('crlcore.powerName' ,TypeString , 'vdd!' )
# Kite parameters.
, ("kite.hTracksReservedLocal" ,TypeInt ,4 , { 'min':0, 'max':18 } )
, ("kite.vTracksReservedLocal" ,TypeInt ,3 , { 'min':0, 'max':18 } )
, ("kite.eventsLimit" ,TypeInt ,4000002 )
, ("kite.ripupCost" ,TypeInt ,3 , { 'min':0 } )
, ("kite.strapRipupLimit" ,TypeInt ,16 , { 'min':1 } )
, ("kite.localRipupLimit" ,TypeInt ,9 , { 'min':1 } )
, ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
, ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
# Anabatic parameters are temporarily hosted here.
, ("anabatic.edgeLength" ,TypeInt ,24 )
, ("anabatic.edgeWidth" ,TypeInt ,4 )
, ("anabatic.edgeCostH" ,TypeDouble ,9.0 )
, ("anabatic.edgeCostK" ,TypeDouble ,-10.0 )
, ("anabatic.edgeHScaling" ,TypeDouble ,1.0 )
, ("anabatic.globalIterations" ,TypeInt ,10 , { 'min':1, 'max':100 } )
, ("anabatic.gcell.displayMode" ,TypeEnumerate ,1
, { 'values':( ("Boundary" , 1)
, ("Density" , 2) ) }
)
)
# Format of routingGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width, obs_dw) )
routingGaugesTable = {}
routingGaugesTable['gscl45'] = \
( ( 'symbolic', False )
, ( 'metal1' , ( Gauge.Horizontal, Gauge.PinOnly, 0, 0.0, u(0), u(0.190), u(0.065), u(0.065), u(7) ) )
, ( 'metal2' , ( Gauge.Vertical , Gauge.Default, 1, 0.0, u(0), u(0.190), u(0.070), u(0.070), u(8) ) )
, ( 'metal3' , ( Gauge.Horizontal, Gauge.Default, 2, 0.0, u(0), u(0.190), u(0.070), u(0.070), u(8) ) )
, ( 'metal4' , ( Gauge.Vertical , Gauge.Default, 3, 0.0, u(0), u(0.285), u(0.140), u(0.140), u(8) ) )
, ( 'metal5' , ( Gauge.Horizontal, Gauge.Default, 4, 0.0, u(0), u(0.285), u(0.140), u(0.140), u(8) ) )
, ( 'metal6' , ( Gauge.Vertical , Gauge.Default, 5, 0.0, u(0), u(0.285), u(0.140), u(0.140), u(8) ) )
, ( 'metal7' , ( Gauge.Horizontal, Gauge.Default, 6, 0.0, u(0), u(0.855), u(0.400), u(0.400), u(8) ) )
, ( 'metal8' , ( Gauge.Vertical , Gauge.Default, 7, 0.0, u(0), u(0.855), u(0.400), u(0.400), u(8) ) )
, ( 'metal9' , ( Gauge.Horizontal, Gauge.Default, 8, 0.0, u(0), u(1.710), u(0.800), u(0.800), u(8) ) )
, ( 'metal10' , ( Gauge.Vertical , Gauge.Default, 9, 0.0, u(0), u(1.710), u(0.800), u(0.800), u(8) ) )
)
# Format of cellGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_PIN, xy_common_pitch, slice_height, slice_step )
cellGaugesTable = {}
cellGaugesTable['gscl45'] = ('metal2', u(0.38), u(2.47), u(0.38))

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "mauka.conf<freepdk_45>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/mauka.conf' )

View File

@ -1,9 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "misc.conf<freepdk_45>" -*-
import helpers
# Provides standard settings for:
# # - <defaultStyle>
# # - <stylesTable>
#
execfile( helpers.sysConfDir+'/common/misc.conf' )

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "nimbus.conf<freepdk_45>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/nimbus.conf' )

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "patterns.conf<freepdk_45>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/patterns.conf' )

View File

@ -1,27 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "plugins.conf<freepdk_45>" -*-
import helpers
# Contains the layout (shared by all technologies).
#execfile( helpers.sysConfDir+'/common/plugins.conf' )
# WARNING: Those values have not been adjusted yet for this technologies.
# Must be done.
#
# Parameters for chip plugin.
parametersTable = \
( ("chip.block.rails.count" , TypeInt , 5 )
, ("chip.block.rails.hWidth" , TypeInt , 24 )
, ("chip.block.rails.vWidth" , TypeInt , 24 )
, ("chip.block.rails.hSpacing" , TypeInt , 12 )
, ("chip.block.rails.vSpacing" , TypeInt , 12 )
, ('chip.pad.pck' , TypeString, 'pck_mpx')
, ('chip.pad.pvddick' , TypeString, 'pvddick_mpx')
, ('chip.pad.pvssick' , TypeString, 'pvssick_mpx')
, ('chip.pad.pvddeck' , TypeString, 'pvddeck_mpx')
, ('chip.pad.pvsseck' , TypeString, 'pvsseck_mpx')
, ('clockTree.minimumSide' , TypeInt , 1000)
, ('clockTree.buffer' , TypeString, 'buf_x2')
, ('clockTree.placerEngine' , TypeString, 'Etesian')
)

View File

@ -1,13 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "stratus1.conf<freepdk_45>" -*-
import helpers
# Status1 parameters.
parametersTable = \
( ("stratus1.format" , TypeString, "vst")
, ("stratus1.simulator" , TypeString, "asimut")
,)
execfile( helpers.sysConfDir+'/common/stratus1.conf' )

View File

@ -1,153 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "technology.conf<freepdk_45>" -*-
#
# FreePDK 45 nanometers.
#
# Provides standard settings for:
# - <viewerConfig>
# - <realLayersTable>
# - <compositeLayersTable>
# - <symbolicLayersTable>
from Hurricane import DbU
from helpers import sysConfDir
from helpers import l, u, n
from helpers.Technology import initTechno
initTechno( { 'name' : 'freepdk_45'
, 'precision' : 2
, 'gridValue' : 0.0025
, 'gridUnit' : DbU.UnitPowerMicro
, 'gridsPerLambda' : 18
, 'symbolicGridStep' : 1.0
, 'polygonStep' : 1.0
} )
# Contains the layers
execfile( helpers.sysConfDir+'/common/technology.conf' )
# Format of <layersExtensionsTable>:
# Each entry is a pair of (string, value).
# * string: a synthetic way to designate the real or symbolic layer on
# which it applies, an optional sub layer (BasicLayer) in case
# where there is more than one, and the dimension name.
# * value : the rule (dimension) value.
# Values/dimensions must be given using one of the following conversion
# function:
# * l(value) : value expressed in lambda (symbolic).
# * u(value) : value is expressed in microns.
# * n(value) : value is expressed in nanometers.
layersExtensionsTable = symbolicLayersExtensionsTable + \
[ ('metal1.minimalSpacing' , u( 0.065))
, ('metal2.minimalSpacing' , u( 0.075))
, ('metal3.minimalSpacing' , u( 0.07 ))
, ('metal4.minimalSpacing' , u( 0.14 ))
, ('metal5.minimalSpacing' , u( 0.14 ))
, ('metal6.minimalSpacing' , u( 0.14 ))
, ('metal7.minimalSpacing' , u( 0.4 ))
, ('metal8.minimalSpacing' , u( 0.4 ))
, ('metal9.minimalSpacing' , u( 0.8 ))
, ('metal10.minimalSpacing' , u( 0.8 ))
# VIAs (i.e. Metal <--> Metal) (real).
, ('via12.minimum.side' , u( 0.065))
# This is the rule as defined in LEF, but seems wrong to me.
#, ('via12.metal1.enclosure' , (u(0.035 ), u(0.0 )) )
, ('via12.metal1.enclosure' , (u(0.0 ), u(0.035)) )
, ('via12.metal2.enclosure' , (u(0.0025), u(0.035)) )
, ('via23.minimum.side' , u(0.070 ))
, ('via23.metal2.enclosure' , (u(0.0 ), u(0.035)) )
, ('via23.metal3.enclosure' , (u(0.035 ), u(0.0 )) )
, ('via34.minimum.side' , u(0.070 ))
, ('via34.metal3.enclosure' , (u(0.035 ), u(0.0 )) )
, ('via34.metal4.enclosure' , u(0.035 ))
, ('via45.minimum.side' , u(0.140 ))
, ('via45.metal4.enclosure' , u(0.0 ))
, ('via45.metal5.enclosure' , u(0.0 ))
, ('via56.minimum.side' , u(0.140 ))
, ('via56.metal5.enclosure' , u(0.0 ))
, ('via56.metal6.enclosure' , u(0.0 ))
, ('via67.minimum.side' , u(0.140 ))
, ('via67.metal6.enclosure' , u(0.0 ))
, ('via67.metal7.enclosure' , u(0.130 ))
, ('via78.minimum.side' , u(0.200 ))
, ('via78.metal7.enclosure' , u(0.0 ))
, ('via78.metal8.enclosure' , u(0.0 ))
, ('via89.minimum.side' , u(0.200 ))
, ('via89.metal8.enclosure' , u(0.0 ))
, ('via89.metal9.enclosure' , u(0.200 ))
, ('via910.minimum.side' , u(0.400 ))
, ('via910.metal9.enclosure' , u(0.0 ))
, ('via910.metal10.enclosure' , u(0.0 ))
]
# Table guessed from the Cadence configuration files:
# FreePDK45/ncsu_basekit/techfile/FreePDK45.tf
#
# Format of an entry in the table:
# (Symbolic_Name, CIF_Name, GDSII_Number)
#gdsLayersTable = \
# ( ("pWell" , "CWN" , 2, 0)
# , ("nWell" , "CWP" , 3, 0)
# , ("active" , "CAA" , 1, 0)
# , ("pImplant", "CSP" , 5, 0)
# , ("nImplant", "CSN" , 4, 0)
# , ("poly" , "CPG" , 9, 0)
# , ("cut0" , "CCC" , 10, 0)
# , ("metal1" , "CM1" , 11, 0)
# , ("cut1" , "CV1" , 12, 0)
# , ("metal2" , "CM2" , 13, 0)
# , ("cut2" , "CV2" , 14, 0)
# , ("metal3" , "CM3" , 15, 0)
# , ("cut3" , "CV3" , 16, 0)
# , ("metal4" , "CM4" , 17, 0)
# , ("cut4" , "CV4" , 18, 0)
# , ("metal5" , "CM5" , 19, 0)
# , ("cut5" , "CV5" , 20, 0)
# , ("metal6" , "CM6" , 21, 0)
# , ("cut6" , "CV6" , 22, 0)
# , ("metal7" , "CM7" , 23, 0)
# , ("cut7" , "CV7" , 24, 0)
# , ("metal8" , "CM8" , 25, 0)
# , ("cut8" , "CV8" , 26, 0)
# , ("metal9" , "CM9" , 27, 0)
# , ("cut9" , "CV9" , 28, 0)
# , ("metal10" , "CM10" , 29, 0)
# )
# Table guessed from the GDSII layouts of the cells.
# FreePDK45/osu_soc/lib/source/gds/*.gds
#
# Format of an entry in the table:
# (Symbolic_Name, CIF_Name, GDSII_Number)
gdsLayersTable = \
( ("pWell" , "CWN" , 2, 0)
, ("nWell" , "CWP" , 1, 0)
, ("active" , "CAA" , 5, 0)
, ("pImplant", "CSP" , 8, 0)
, ("nImplant", "CSN" , 7, 0)
, ("poly" , "CPG" , 15, 0)
, ("cut0" , "CCC" , 16, 0)
, ("metal1" , "CM1" , 21, 0)
, ("cut1" , "CV1" , 22, 0)
, ("metal2" , "CM2" , 23, 0)
, ("cut2" , "CV2" , 24, 0)
, ("metal3" , "CM3" , 25, 0)
, ("cut3" , "CV3" , 26, 0)
, ("metal4" , "CM4" , 27, 0)
, ("cut4" , "CV4" , 28, 0)
, ("metal5" , "CM5" , 29, 0)
, ("cut5" , "CV5" , 30, 0)
, ("metal6" , "CM6" , 31, 0)
, ("cut6" , "CV6" , 32, 0)
, ("metal7" , "CM7" , 33, 0)
, ("cut7" , "CV7" , 34, 0)
, ("metal8" , "CM8" , 35, 0)
, ("cut8" , "CV8" , 36, 0)
, ("metal9" , "CM9" , 37, 0)
, ("cut9" , "CV9" , 38, 0)
, ("metal10" , "CM10" , 39, 0)
)

View File

@ -1,39 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "alliance.conf<ispd18>" -*-
import os
from helpers.Alliance import AddMode
from helpers.Alliance import Gauge
allianceTop = None
if os.environ.has_key('ALLIANCE_TOP'):
allianceTop = os.environ['ALLIANCE_TOP']
if not os.path.isdir(allianceTop):
allianceTop = None
if not allianceTop: allianceTop = '/soc/alliance'
cellsTop = allianceTop+'/cells/'
allianceConfig = \
( ( 'CATALOG' , 'CATAL')
, ( 'WORKING_LIBRARY' , '.')
, ( 'SYSTEM_LIBRARY' , ( (cellsTop+'/nsxlib' , Environment.Append)
, (cellsTop+'/mpxlib' , Environment.Append)) )
, ( 'SCALE_X' , 100)
, ( 'IN_LO' , 'vst')
, ( 'IN_PH' , 'ap')
, ( 'OUT_LO' , 'vst')
, ( 'OUT_PH' , 'ap')
, ( 'POWER' , 'vdd')
, ( 'GROUND' , 'vss')
, ( 'CLOCK' , '^ck.*')
, ( 'BLOCKAGE' , '^blockage[Nn]et*')
, ( 'PAD' , '.*_mpx$')
# The following are only read by the Alliance tool wrappers.
, ( 'ALLIANCE_TOP' , allianceTop)
, ( 'MBK_TARGET_LIB' , cellsTop+'/msxlib')
, ( 'RDS_TECHNO_NAME' , allianceTop+'/etc/scn6m_deep_09.rds')
, ( 'GRAAL_TECHNO_NAME' , allianceTop+'/etc/graal.rds')
)

View File

@ -1,10 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "analog.conf<ispd18>" -*-
import helpers
parametersTable = \
( ('analog.techno' , TypeString, 'Analog_technology_is_disabled',
{ 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } )
, ('analog.devices', TypeString, helpers.technoDir+'/devices.conf' )
)

View File

@ -1,11 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "display.conf<ispd18>" -*-
import helpers
# Provides standard settings for:
# - <defaultStyle>
# - <stylesTable>
scale = 0.5
execfile( helpers.sysConfDir+'/common/display.conf' )

View File

@ -1,13 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "etesian.conf<ispd18>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/etesian.conf' )
parametersTable = helpers.overload \
( parametersTable
, ( ('etesian.feedNames', TypeString, 'FILL' )
, ('etesian.cell.zero', TypeString, 'missing_tie_low' )
, ('etesian.cell.one' , TypeString, 'missing_tie_high')
)
)

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "hMetis.conf<ispd18>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/hMetis.conf' )

View File

@ -1,68 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "kite.conf<ispd18>" -*-
import helpers
from helpers import l, u, n
# Contains the layout (shared by all technologies).
execfile( helpers.sysConfDir+'/common/kite.conf' )
parametersTable = \
( ('lefImport.minTerminalWidth' ,TypeDouble ,0.065 )
, ("katabatic.globalLengthThreshold",TypeInt ,1450 ) # Katabatic parameters.
, ("katabatic.saturateRatio" ,TypePercentage,90 )
, ("katabatic.saturateRp" ,TypeInt ,10 )
, ('katabatic.topRoutingLayer' ,TypeString , 'metal9')
, ('anabatic.routingGauge' ,TypeString , 'ispd18')
, ('crlcore.groundName' ,TypeString , 'VSS' )
, ('crlcore.powerName' ,TypeString , 'VDD' )
# Kite parameters.
, ("kite.hTracksReservedLocal" ,TypeInt ,4 , { 'min':0, 'max':18 } )
, ("kite.vTracksReservedLocal" ,TypeInt ,3 , { 'min':0, 'max':18 } )
, ("kite.eventsLimit" ,TypeInt ,4000002 )
, ("kite.ripupCost" ,TypeInt ,3 , { 'min':0 } )
, ("kite.strapRipupLimit" ,TypeInt ,16 , { 'min':1 } )
, ("kite.localRipupLimit" ,TypeInt ,9 , { 'min':1 } )
, ("kite.globalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
, ("kite.longGlobalRipupLimit" ,TypeInt ,5 , { 'min':1 } )
# Anabatic parameters are temporarily hosted here.
, ("anabatic.edgeLength" ,TypeInt ,24 )
, ("anabatic.edgeWidth" ,TypeInt ,4 )
, ("anabatic.edgeCostH" ,TypeDouble ,9.0 )
, ("anabatic.edgeCostK" ,TypeDouble ,-10.0 )
, ("anabatic.edgeHScaling" ,TypeDouble ,1.0 )
, ("anabatic.globalIterations" ,TypeInt ,10 , { 'min':1, 'max':100 } )
, ("anabatic.gcell.displayMode" ,TypeEnumerate ,1
, { 'values':( ("Boundary" , 1)
, ("Density" , 2) ) }
)
)
# Format of routingGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_NAME, (Direction, Type, depth, density, offset, pitch, wire_width, via_width, obs_dw) )
routingGaugesTable = {}
routingGaugesTable['ispd18'] = \
( ( 'symbolic', False )
, ( 'metal1' , ( Gauge.Horizontal, Gauge.PinOnly, 0, 0.0, u(0.095), u(0.190), u(0.060), u(0.070), u(7) ) )
, ( 'metal2' , ( Gauge.Vertical , Gauge.Default, 1, 0.0, u(0.100), u(0.200), u(0.070), u(0.070), u(8) ) )
, ( 'metal3' , ( Gauge.Horizontal, Gauge.Default, 2, 0.0, u(0.100), u(0.200), u(0.070), u(0.070), u(8) ) )
, ( 'metal4' , ( Gauge.Vertical , Gauge.Default, 3, 0.0, u(0.100), u(0.200), u(0.070), u(0.070), u(8) ) )
, ( 'metal5' , ( Gauge.Horizontal, Gauge.Default, 4, 0.0, u(0.100), u(0.200), u(0.070), u(0.070), u(8) ) )
, ( 'metal6' , ( Gauge.Vertical , Gauge.Default, 5, 0.0, u(0.100), u(0.200), u(0.070), u(0.360), u(8) ) )
, ( 'metal7' , ( Gauge.Horizontal, Gauge.Default, 6, 0.0, u(0.100), u(0.200), u(0.070), u(0.360), u(8) ) )
, ( 'metal8' , ( Gauge.Vertical , Gauge.Default, 7, 0.0, u(0.100), u(0.200), u(0.070), u(0.360), u(8) ) )
, ( 'metal9' , ( Gauge.Horizontal, Gauge.Default, 8, 0.0, u(0.475), u(0.330), u(0.070), u(0.360), u(8) ) )
)
# Format of cellGaugesTable (dictionary):
# A list of entry of the form:
# ( METAL_PIN, xy_common_pitch, slice_height, slice_step )
cellGaugesTable = {}
cellGaugesTable['ispd18'] = ('metal2', u(0.2), u(1.71), u(0.2))

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "mauka.conf<ispd18>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/mauka.conf' )

View File

@ -1,9 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "misc.conf<ispd18>" -*-
import helpers
# Provides standard settings for:
# # - <defaultStyle>
# # - <stylesTable>
#
execfile( helpers.sysConfDir+'/common/misc.conf' )

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "nimbus.conf<ispd18>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/nimbus.conf' )

View File

@ -1,5 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "patterns.conf<ispd18>" -*-
import helpers
execfile( helpers.sysConfDir+'/common/patterns.conf' )

View File

@ -1,27 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "plugins.conf<ispd18>" -*-
import helpers
# Contains the layout (shared by all technologies).
#execfile( helpers.sysConfDir+'/common/plugins.conf' )
# WARNING: Those values have not been adjusted yet for this technologies.
# Must be done.
#
# Parameters for chip plugin.
parametersTable = \
( ("chip.block.rails.count" , TypeInt , 5 )
, ("chip.block.rails.hWidth" , TypeInt , 24 )
, ("chip.block.rails.vWidth" , TypeInt , 24 )
, ("chip.block.rails.hSpacing" , TypeInt , 12 )
, ("chip.block.rails.vSpacing" , TypeInt , 12 )
, ('chip.pad.pck' , TypeString, 'pck_mpx')
, ('chip.pad.pvddick' , TypeString, 'pvddick_mpx')
, ('chip.pad.pvssick' , TypeString, 'pvssick_mpx')
, ('chip.pad.pvddeck' , TypeString, 'pvddeck_mpx')
, ('chip.pad.pvsseck' , TypeString, 'pvsseck_mpx')
, ('clockTree.minimumSide' , TypeInt , 1000)
, ('clockTree.buffer' , TypeString, 'buf_x2')
, ('clockTree.placerEngine' , TypeString, 'Etesian')
)

View File

@ -1,13 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "stratus1.conf<ispd18>" -*-
import helpers
# Status1 parameters.
parametersTable = \
( ("stratus1.format" , TypeString, "vst")
, ("stratus1.simulator" , TypeString, "asimut")
,)
execfile( helpers.sysConfDir+'/common/stratus1.conf' )

View File

@ -1,148 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "technology.conf<ispd18>" -*-
#
# FreePDK 45 nanometers.
#
# Provides standard settings for:
# - <viewerConfig>
# - <realLayersTable>
# - <compositeLayersTable>
# - <symbolicLayersTable>
from Hurricane import DbU
from helpers import sysConfDir
from helpers import l, u, n
from helpers.Technology import initTechno
initTechno( { 'name' : 'ispd18'
, 'precision' : 2
, 'gridValue' : 0.0005
, 'gridUnit' : DbU.UnitPowerMicro
, 'gridsPerLambda' : 10
, 'symbolicGridStep' : 1.0
, 'polygonStep' : 1.0
} )
# Contains the layers
execfile( helpers.sysConfDir+'/common/technology.conf' )
# Format of <layersExtensionsTable>:
# Each entry is a pair of (string, value).
# * string: a synthetic way to designate the real or symbolic layer on
# which it applies, an optional sub layer (BasicLayer) in case
# where there is more than one, and the dimension name.
# * value : the rule (dimension) value.
# Values/dimensions must be given using one of the following conversion
# function:
# * l(value) : value expressed in lambda (symbolic).
# * u(value) : value is expressed in microns.
# * n(value) : value is expressed in nanometers.
layersExtensionsTable = symbolicLayersExtensionsTable + \
[ ('metal1.minimalSpacing' , u( 0.1 ))
, ('metal2.minimalSpacing' , u( 0.15 ))
, ('metal3.minimalSpacing' , u( 0.15 ))
, ('metal4.minimalSpacing' , u( 0.15 ))
, ('metal5.minimalSpacing' , u( 0.15 ))
, ('metal6.minimalSpacing' , u( 0.15 ))
, ('metal7.minimalSpacing' , u( 0.15 ))
, ('metal8.minimalSpacing' , u( 0.15 ))
, ('metal9.minimalSpacing' , u( 0.15 ))
, ('metal10.minimalSpacing' , u( 0.15 ))
# VIAs (i.e. Metal <--> Metal) (real).
, ('via12.minimum.side' , u(0.070))
, ('via12.metal1.enclosure' , (u(0.030 ), u(0.0 )) )
, ('via12.metal2.enclosure' , (u(0.0 ), u(0.030)) )
, ('via23.minimum.side' , u(0.070 ))
, ('via23.metal2.enclosure' , (u(0.0 ), u(0.030)) )
, ('via23.metal3.enclosure' , (u(0.030 ), u(0.0 )) )
, ('via34.minimum.side' , u(0.070))
, ('via34.metal3.enclosure' , (u(0.030 ), u(0.0 )) )
, ('via34.metal4.enclosure' , (u(0.0 ), u(0.030)) )
, ('via45.minimum.side' , u(0.070 ))
, ('via45.metal4.enclosure' , (u(0.0 ), u(0.030)) )
, ('via45.metal5.enclosure' , (u(0.030 ), u(0.0 )) )
, ('via56.minimum.side' , u(0.070))
, ('via56.metal5.enclosure' , (u(0.030 ), u(0.0 )) )
, ('via56.metal6.enclosure' , (u(0.0 ), u(0.030)) )
, ('via67.minimum.side' , u(0.360))
, ('via67.metal6.enclosure' , (u(0.02 ), u(0.08 )) )
, ('via67.metal7.enclosure' , (u(0.08 ), u(0.02 )) )
, ('via78.minimum.side' , u(0.360))
, ('via78.metal7.enclosure' , (u(0.08 ), u(0.02 )) )
, ('via78.metal8.enclosure' , (u(0.02 ), u(0.08 )) )
, ('via89.minimum.side' , u(0.360))
, ('via89.metal8.enclosure' , (u(0.02 ), u(0.08 )) )
, ('via89.metal9.enclosure' , (u(0.08 ), u(0.02 )) )
]
# Table guessed from the Cadence configuration files:
# FreePDK45/ncsu_basekit/techfile/FreePDK45.tf
#
# Format of an entry in the table:
# (Symbolic_Name, CIF_Name, GDSII_Number)
#gdsLayersTable = \
# ( ("pWell" , "CWN" , 2, 0)
# , ("nWell" , "CWP" , 3, 0)
# , ("active" , "CAA" , 1, 0)
# , ("pImplant", "CSP" , 5, 0)
# , ("nImplant", "CSN" , 4, 0)
# , ("poly" , "CPG" , 9, 0)
# , ("cut0" , "CCC" , 10, 0)
# , ("metal1" , "CM1" , 11, 0)
# , ("cut1" , "CV1" , 12, 0)
# , ("metal2" , "CM2" , 13, 0)
# , ("cut2" , "CV2" , 14, 0)
# , ("metal3" , "CM3" , 15, 0)
# , ("cut3" , "CV3" , 16, 0)
# , ("metal4" , "CM4" , 17, 0)
# , ("cut4" , "CV4" , 18, 0)
# , ("metal5" , "CM5" , 19, 0)
# , ("cut5" , "CV5" , 20, 0)
# , ("metal6" , "CM6" , 21, 0)
# , ("cut6" , "CV6" , 22, 0)
# , ("metal7" , "CM7" , 23, 0)
# , ("cut7" , "CV7" , 24, 0)
# , ("metal8" , "CM8" , 25, 0)
# , ("cut8" , "CV8" , 26, 0)
# , ("metal9" , "CM9" , 27, 0)
# , ("cut9" , "CV9" , 28, 0)
# , ("metal10" , "CM10" , 29, 0)
# )
# Table guessed from the GDSII layouts of the cells.
# FreePDK45/osu_soc/lib/source/gds/*.gds
#
# Format of an entry in the table:
# (Symbolic_Name, CIF_Name, GDSII_Number)
gdsLayersTable = \
( ("pWell" , "CWN" , 2, 0)
, ("nWell" , "CWP" , 1, 0)
, ("active" , "CAA" , 5, 0)
, ("pImplant", "CSP" , 8, 0)
, ("nImplant", "CSN" , 7, 0)
, ("poly" , "CPG" , 15, 0)
, ("cut0" , "CCC" , 16, 0)
, ("metal1" , "CM1" , 21, 0)
, ("cut1" , "CV1" , 22, 0)
, ("metal2" , "CM2" , 23, 0)
, ("cut2" , "CV2" , 24, 0)
, ("metal3" , "CM3" , 25, 0)
, ("cut3" , "CV3" , 26, 0)
, ("metal4" , "CM4" , 27, 0)
, ("cut4" , "CV4" , 28, 0)
, ("metal5" , "CM5" , 29, 0)
, ("cut5" , "CV5" , 30, 0)
, ("metal6" , "CM6" , 31, 0)
, ("cut6" , "CV6" , 32, 0)
, ("metal7" , "CM7" , 33, 0)
, ("cut7" , "CV7" , 34, 0)
, ("metal8" , "CM8" , 35, 0)
, ("cut8" , "CV8" , 36, 0)
, ("metal9" , "CM9" , 37, 0)
, ("cut9" , "CV9" , 38, 0)
, ("metal10" , "CM10" , 39, 0)
)

View File

@ -1,10 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "analog.conf<common>" -*-
import helpers
parametersTable = \
( ('analog.techno' , TypeString, 'Analog_technology_has_not_been_set',
{ 'flags':Cfg.Parameter.Flags.NeedRestart|Cfg.Parameter.Flags.MustExist } )
, ('analog.devices', TypeString, helpers.technoDir+'/devices.conf' )
)

View File

@ -1,117 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "devices.conf<common>" -*-
import helpers
analogDir = helpers.sysConfDir + '/share/coriolis2/analog'
spiceDir = analogDir + 'spice/'
devicesTable = \
( { 'name' : 'DifferentialPairBulkConnected'
, 'spice' : spiceDir+'DiffPairBulkConnected.spi'
, 'connectors' : ( 'D1', 'D2', 'G1', 'G2', 'S' )
, 'layouts' : ( ('Horizontal M2' , 'DP_horizontalM2.py' )
, ('Symmetrical' , 'DP_symmetrical.py' )
, ('Common centroid', 'DP_2DCommonCentroid.py')
, ('Interdigitated' , 'DP_interdigitated.py' )
, ('WIP DP' , 'WIP_DP.py' )
)
}
, { 'name' : 'DifferentialPairBulkUnconnected'
, 'spice' : spiceDir+'DiffPairBulkUnconnected.spi'
, 'connectors' : ( 'D1', 'D2', 'G1', 'G2', 'S', 'B' )
, 'layouts' : ( ('Horizontal M2' , 'DP_horizontalM2.py' )
, ('Symmetrical' , 'DP_symmetrical.py' )
, ('Common centroid', 'DP_2DCommonCentroid.py')
, ('Interdigitated' , 'DP_interdigitated.py' )
, ('WIP DP' , 'WIP_DP.py' )
)
}
, { 'name' : 'LevelShifterBulkUnconnected'
, 'spice' : spiceDir+'LevelShifterBulkUnconnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S1', 'S2', 'B' )
, 'layouts' : ( ('Horizontal M2' , 'LS_horizontalM2.py' )
, ('Symmetrical' , 'LS_symmetrical.py' )
, ('Common centroid', 'LS_2DCommonCentroid.py')
, ('Interdigitated' , 'LS_interdigitated.py' )
)
}
, { 'name' : 'TransistorBulkConnected'
, 'spice' : spiceDir+'TransistorBulkConnected.spi'
, 'connectors' : ( 'D', 'G', 'S' )
, 'layouts' : ( ('Rotate transistor', 'Transistor_rotate.py' )
, ('Common transistor', 'Transistor_common.py' )
, ('WIP Transistor' , 'WIP_Transistor.py' )
)
}
, { 'name' : 'TransistorBulkUnconnected'
, 'spice' : spiceDir+'TransistorBulkUnconnected.spi'
, 'connectors' : ( 'D', 'G', 'S', 'B' )
, 'layouts' : ( ('Rotate transistor', 'Transistor_rotate.py' )
, ('Common transistor', 'Transistor_common.py' )
, ('WIP Transistor' , 'WIP_Transistor.py' )
)
}
, { 'name' : 'CrossCoupledPairBulkConnected'
, 'spice' : spiceDir+'CCPairBulkConnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S' )
, 'layouts' : ( ('Horizontal M2' , 'CCP_horizontalM2.py' )
, ('Symmetrical' , 'CCP_symmetrical.py' )
, ('Common centroid', 'CCP_2DCommonCentroid.py')
, ('Interdigitated' , 'CCP_interdigitated.py' )
)
}
, { 'name' : 'CrossCoupledPairBulkUnconnected'
, 'spice' : spiceDir+'CCPairBulkUnconnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S', 'B' )
, 'layouts' : ( ('Horizontal M2' , 'CCP_horizontalM2.py' )
, ('Symmetrical' , 'CCP_symmetrical.py' )
, ('Common centroid', 'CCP_2DCommonCentroid.py')
, ('Interdigitated' , 'CCP_interdigitated.py' )
)
}
, { 'name' : 'CommonSourcePairBulkConnected'
, 'spice' : spiceDir+'CommonSourcePairBulkConnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S', 'G' )
, 'layouts' : ( ('Horizontal M2' , 'CSP_horizontalM2.py' )
, ('Symmetrical' , 'CSP_symmetrical.py' )
, ('Interdigitated' , 'CSP_interdigitated.py' )
, ('WIP CSP' , 'WIP_CSP.py' )
)
}
, { 'name' : 'CommonSourcePairBulkUnconnected'
, 'spice' : spiceDir+'CommonSourcePairBulkUnconnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S', 'G', 'B' )
, 'layouts' : ( ('Horizontal M2' , 'CSP_horizontalM2.py' )
, ('Symmetrical' , 'CSP_symmetrical.py' )
, ('Interdigitated' , 'CSP_interdigitated.py' )
, ('WIP CSP' , 'WIP_CSP.py' )
)
}
, { 'name' : 'SimpleCurrentMirrorBulkConnected'
, 'spice' : spiceDir+'CurrMirBulkConnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S' )
, 'layouts' : ( ('Horizontal M2' , 'SCM_horizontalM2.py' )
, ('Symmetrical' , 'SCM_symmetrical.py' )
, ('Common centroid', 'SCM_2DCommonCentroid.py')
, ('Interdigitated' , 'SCM_interdigitated.py' )
)
}
, { 'name' : 'SimpleCurrentMirrorBulkUnconnected'
, 'spice' : spiceDir+'CurrMirBulkUnconnected.spi'
, 'connectors' : ( 'D1', 'D2', 'S', 'B' )
, 'layouts' : ( ('Horizontal M2' , 'SCM_horizontalM2.py' )
, ('Symmetrical' , 'SCM_symmetrical.py' )
, ('Common centroid', 'SCM_2DCommonCentroid.py')
, ('Interdigitated' , 'SCM_interdigitated.py' )
)
}
, { 'name' : 'MIMCapacitor'
, 'spice' : spiceDir+'MIMCapacitor.spi'
, 'connectors' : ( 'P1', 'P2' )
, 'layouts' : ( ('SimpleMatrix' , 'MIM_simpleMatrix.py' )
,
)
}
)

View File

@ -1,409 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "display.conf<common>" -*-
import helpers
if helpers.techno == 'symbolic/vsc200':
poly2Color = 'Magenta4'
else:
poly2Color = 'Orange'
defaultStyle = 'Alliance.Classic [black]'
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*scale })
, (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*scale })
, (Drawing, 'spot' , { 'color':'White' , 'border':2, 'threshold':6.0*scale })
, (Drawing, 'ghost' , { 'color':'White' , 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'White' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'text.instance' , { 'color':'Black' , 'border':1, 'threshold':4.0*scale })
, (Drawing, 'text.reference' , { 'color':'White' , 'border':1, 'threshold':20.0*scale })
, (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 *scale })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'55AA55AA55AA55AA', 'threshold':1.50*scale })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.50*scale })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.50*scale })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'antihash1.8' , 'threshold':1.50*scale })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'55AA55AA55AA55AA', 'threshold':1.50*scale })
# Group: Routing Layer.
, (Group , 'Routing Layer')
, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metal2' , { 'color':'Aqua' , 'pattern':'light_antihash0.8' , 'threshold':0.02*scale })
, (Drawing, 'metal3' , { 'color':'LightPink', 'pattern':'light_antihash1.8' , 'threshold':0.02*scale })
, (Drawing, 'metal4' , { 'color':'Green' , 'pattern':'light_antihash2.8' , 'threshold':0.02*scale })
, (Drawing, 'metal5' , { 'color':'Yellow' , 'pattern':'1144114411441144' , 'threshold':0.02*scale })
, (Drawing, 'metal6' , { 'color':'Violet' , 'pattern':'light_antihash0.8' , 'threshold':0.02*scale })
, (Drawing, 'metal7' , { 'color':'Violet' , 'pattern':'light_antihash0.8' , 'threshold':0.02*scale })
, (Drawing, 'metal8' , { 'color':'Violet' , 'pattern':'light_antihash0.8' , 'threshold':0.02*scale })
, (Drawing, 'metal9' , { 'color':'Violet' , 'pattern':'light_antihash0.8' , 'threshold':0.02*scale })
, (Drawing, 'metal10', { 'color':'Violet' , 'pattern':'light_antihash0.8' , 'threshold':0.02*scale })
# Group: Cuts (VIA holes).
, (Group , 'Cuts (VIA Holes)')
, (Drawing, 'cut0', { 'color':'0,150,150', 'threshold':1.50*scale })
, (Drawing, 'cut1', { 'color':'Aqua' , 'threshold':0.80*scale })
, (Drawing, 'cut2', { 'color':'LightPink', 'threshold':0.80*scale })
, (Drawing, 'cut3', { 'color':'Green' , 'threshold':0.80*scale })
, (Drawing, 'cut4', { 'color':'Yellow' , 'threshold':0.80*scale })
, (Drawing, 'cut5', { 'color':'Violet' , 'threshold':0.80*scale })
, (Drawing, 'cut6', { 'color':'Violet' , 'threshold':0.80*scale })
, (Drawing, 'cut7', { 'color':'Violet' , 'threshold':0.80*scale })
, (Drawing, 'cut8', { 'color':'Violet' , 'threshold':0.80*scale })
, (Drawing, 'cut9', { 'color':'Violet' , 'threshold':0.80*scale })
# Group: MIM6.
, (Group , 'MIM6')
#, (Drawing, 'topmim6' , { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metbot_r', { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale })
, (Drawing, 'cut6' , { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale })
# Group: Blockages.
, (Group , 'Blockages')
, (Drawing, 'blockage1' , { 'color':'Blue' , 'pattern':'006070381c0e0703' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage2' , { 'color':'Aqua' , 'pattern':'8103060c183060c0' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage3' , { 'color':'LightPink', 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage4' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage5' , { 'color':'Yellow' , 'pattern':'1144114411441144' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage6' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage7' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage8' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage9' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage10', { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, '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 })
, (Drawing, 'Anabatic::Edge' , { 'color':'255,255,190', 'pattern':'0000000000000000', 'threshold':2.00*scale, 'border':4 })
, (Drawing, 'Anabatic::GCell', { 'color':'255,0,0' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':4 })
)
# ----------------------------------------------------------------------
# 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*scale })
, (Drawing, 'spot' , { 'color':'Black', 'border':1, 'threshold':6.0*scale })
, (Drawing, 'ghost' , { 'color':'Black', 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'Black', 'border':1, 'threshold':0.0*scale })
, (Drawing, 'text.instance', { 'color':'Black', 'border':1, 'threshold':4.0*scale })
, (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*scale })
, (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*scale })
, (Drawing, 'spot' , { 'color':'White' , 'border':2, 'threshold':6.0*scale })
, (Drawing, 'ghost' , { 'color':'White' , 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'White' , 'border':1, 'threshold':0.0 *scale })
, (Drawing, 'text.instance' , { 'color':'White' , 'border':1, 'threshold':400.0 *scale })
, (Drawing, 'text.reference', { 'color':'White' , 'border':1, 'threshold':200.0*scale })
, (Drawing, 'undef' , { 'color':'Violet' , 'border':0, 'pattern':'2244118822441188' })
# Active Layers.
, (Group , 'Active Layers')
, (Drawing, 'nWell' , { 'color':'Tan' , 'pattern':'urgo.8' , 'border':1, 'threshold':0*scale })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'urgo.8' , 'border':1, 'threshold':0*scale })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'antihash0.8' , 'border':1, 'threshold':0*scale })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'antihash0.8' , 'border':1, 'threshold':0*scale })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'antihash1.8' , 'border':1, 'threshold':0*scale })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'poids2.8' , 'border':1, 'threshold':0*scale })
, (Drawing, 'poly2' , { 'color':poly2Color , 'pattern':'poids2.8' , 'border':1, 'threshold':0*scale })
# Routing Layers.
, (Group , 'Routing Layers')
#, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'light_antislash0.8', 'border':1, 'threshold':0.80*scale })
, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'slash.8' , 'border':1, 'threshold':00*scale })
, (Drawing, 'metal2' , { 'color':'Aqua' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metcap' , { 'color':'DarkTurquoise', 'pattern':'poids2.8' , 'border':2, 'threshold':0.0*scale })
, (Drawing, 'metal3' , { 'color':'LightPink' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal4' , { 'color':'Green' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal5' , { 'color':'Yellow' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal6' , { 'color':'Violet' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal7' , { 'color':'Red' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal8' , { 'color':'Blue' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal9' , { 'color':'Blue' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
, (Drawing, 'metal10', { 'color':'Blue' , 'pattern':'poids4.8' , 'border':1, 'threshold':0.0*scale })
# Cuts (VIA holes).
, (Group , 'Cuts (VIA holes)')
, (Drawing, 'cut0', { 'color':'0,150,150', 'threshold':0*scale })
, (Drawing, 'cut1', { 'color':'Aqua' , 'threshold':0.0*scale })
, (Drawing, 'cut2', { 'color':'LightPink', 'threshold':0.0*scale })
, (Drawing, 'cut3', { 'color':'Green' , 'threshold':0.0*scale })
, (Drawing, 'cut4', { 'color':'Yellow' , 'threshold':0.0*scale })
, (Drawing, 'cut5', { 'color':'Violet' , 'threshold':0.0*scale })
, (Drawing, 'cut6', { 'color':'Red' , 'threshold':0.0*scale })
, (Drawing, 'cut7', { 'color':'Blue' , 'threshold':0.0*scale })
, (Drawing, 'cut8', { 'color':'Blue' , 'threshold':0.0*scale })
, (Drawing, 'cut9', { 'color':'Blue' , 'threshold':0.0*scale })
# MIM6.
, (Group , 'MIM6')
#, (Drawing, 'topmim6' , { 'color':'Blue' , 'pattern':'poids2.32' , 'threshold':0.80*scale })
, (Drawing, 'metbot_r', { 'color':'Aqua' , 'pattern':'light_antihash0.8' , 'threshold':0.80*scale })
#, (Drawing, 'padopen' , { 'color':'LightPink', 'pattern':'light_antihash1.8' , 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8' , 'threshold':0.80*scale })
# Blockages.
, (Group , 'Blockages')
, (Drawing, 'blockage1' , { 'color':'Blue' , 'pattern':'light_antislash0.8', 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage2' , { 'color':'Aqua' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage3' , { 'color':'LightPink', 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage4' , { 'color':'Green' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage5' , { 'color':'Yellow' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage6' , { 'color':'Violet' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage7' , { 'color':'Red' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage8' , { 'color':'Blue' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage9' , { 'color':'Blue' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
, (Drawing, 'blockage10', { 'color':'Blue' , 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':4 })
# 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 })
, (Drawing, 'Anabatic::Edge' , { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':4, 'threshold':0.02*scale })
, (Drawing, 'Anabatic::GCell', { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':2, 'threshold':0.10*scale })
)
# ----------------------------------------------------------------------
# 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*scale })
, (Drawing, 'spot' , { 'color':'Black', 'border':1, 'threshold':6.0*scale })
, (Drawing, 'ghost' , { 'color':'Black', 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'Black', 'border':1, 'threshold':0.0 *scale })
, (Drawing, 'text.instance' , { 'color':'Black', 'border':1, 'threshold':4.0 *scale })
, (Drawing, 'text.reference', { 'color':'Black', 'border':1, 'threshold':20.0*scale })
, (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*scale, 'border':2 })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'0000000000000000', 'threshold':1.50*scale, 'border':2 })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'0000000000000000', 'threshold':1.50*scale, 'border':2 })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'0000000000000000', 'threshold':1.50*scale, 'border':2 })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'0000000000000000', 'threshold':1.50*scale, 'border':2 })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'0000000000000000', 'threshold':1.50*scale, 'border':2 })
# Routing Layers.
, (Group , 'Routing Layers')
, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'metal2' , { 'color':'Aqua' , 'pattern':'0000000000000000', 'threshold':0.40*scale, 'border':2 })
, (Drawing, 'metal3' , { 'color':'LightPink', 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal4' , { 'color':'Green' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal5' , { 'color':'Yellow' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal6' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal7' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal8' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal9' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
, (Drawing, 'metal10' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.02*scale, 'border':2 })
# Cuts (VIA holes).
, (Group , 'Cuts (VIA holes)')
, (Drawing, 'cut0' , { 'color':'0,150,150', 'pattern':'poids4.8' , 'threshold':1.50*scale, 'border':1 })
, (Drawing, 'cut1' , { 'color':'Aqua' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut2' , { 'color':'LightPink', 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut3' , { 'color':'Green' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut4' , { 'color':'Yellow' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut5' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut6' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut7' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut8' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.80*scale, 'border':1 })
, (Drawing, 'cut9' , { 'color':'Violet' , 'pattern':'0000000000000000', 'threshold':0.80*scale, '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 *scale })
, (Drawing, 'spot' , { 'color':'Black', 'border':1, 'threshold':2.0 *scale })
, (Drawing, 'text.ruler' , { 'color':'Black', 'border':1, 'threshold':0.0 *scale })
, (Drawing, 'text.reference', { 'color':'Black', 'border':1, 'threshold':20.0*scale })
# Group: Active Layers.
, (Group , 'Active Layers')
, (Drawing, 'active', { 'color':'175,175,175', 'pattern':'0000000000000000', 'threshold':1.50*scale, '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*scale })
, (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*scale })
, (Drawing, 'spot' , { 'color':'Black' , 'border':2, 'threshold':6.0*scale })
, (Drawing, 'ghost' , { 'color':'Black' , 'border':1 })
, (Drawing, 'text.ruler' , { 'color':'Black' , 'border':1, 'threshold':0.0 *scale })
, (Drawing, 'text.instance' , { 'color':'Black' , 'border':1, 'threshold':4.0 *scale })
, (Drawing, 'text.reference' , { 'color':'Black' , 'border':1, 'threshold':20.0*scale })
, (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':0.02*scale })
, (Drawing, 'pWell' , { 'color':'LightYellow', 'pattern':'antipoids2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'nImplant', { 'color':'LawnGreen' , 'pattern':'diffusion.32' , 'border':0, 'threshold':0.02*scale })
, (Drawing, 'pImplant', { 'color':'Yellow' , 'pattern':'diffusion.32' , 'border':0, 'threshold':0.02*scale })
, (Drawing, 'active' , { 'color':'White' , 'pattern':'active.32' , 'border':0, 'threshold':0.02*scale })
, (Drawing, 'poly' , { 'color':'Red' , 'pattern':'antipoids2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'poly2' , { 'color':poly2Color , 'pattern':'antipoids2.32', 'border':1, 'threshold':0.02*scale })
# Group: Routing Layers.
, (Group , 'Routing Layers')
, (Drawing, 'metal1' , { 'color':'Blue' , 'pattern':'slash.32' , 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal2' , { 'color':'Aqua' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metcap' , { 'color':'DarkTurquoise', 'pattern':'poids2.32' , 'border':2, 'threshold':0.02*scale })
, (Drawing, 'metal3' , { 'color':'LightPink' , 'pattern':'antislash3.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal4' , { 'color':'Green' , 'pattern':'antislash4.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal5' , { 'color':'Yellow' , 'pattern':'antislash5.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal6' , { 'color':'Violet' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal7' , { 'color':'Violet' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal8' , { 'color':'Violet' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal9' , { 'color':'Violet' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02*scale })
, (Drawing, 'metal10', { 'color':'Violet' , 'pattern':'antislash2.32', 'border':1, 'threshold':0.02*scale })
# Group: Cuts (VIA holes)
, (Group , 'Cuts (VIA holes)')
, (Drawing, 'cut0', { 'color':'Blue' , 'pattern':'poids2.8' , 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut1', { 'color':'Aqua' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut2', { 'color':'LightPink', 'pattern':'poids2.8' , 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut3', { 'color':'Green' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut4', { 'color':'Yellow' , 'pattern':'poids2.8' , 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut5', { 'color':'Violet' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut6', { 'color':'Violet' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut7', { 'color':'Violet' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut8', { 'color':'Violet' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
, (Drawing, 'cut9', { 'color':'Violet' , 'pattern':'antipoids2.8', 'border':2, 'threshold':0.02*scale })
# Group: MIM6.
, (Group , 'MIM6')
#, (Drawing, 'topmim6' , { 'color':'Blue' , 'pattern':'poids2.8' , 'threshold':0.80*scale })
, (Drawing, 'metbot_r', { 'color':'Aqua' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale })
, (Drawing, 'cut6' , { 'color':'LightPink', 'pattern':'light_antihash1.8', 'threshold':0.80*scale })
, (Drawing, 'metal7' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale })
# Group: Blockages.
, (Group , 'Blockages')
, (Drawing, 'blockage1' , { 'color':'Blue' , 'pattern':'006070381c0e0703' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage2' , { 'color':'Aqua' , 'pattern':'8103060c183060c0' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage3' , { 'color':'LightPink', 'pattern':'poids4.8' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage4' , { 'color':'Green' , 'pattern':'light_antihash2.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage5' , { 'color':'Yellow' , 'pattern':'1144114411441144' , 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage6' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage7' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage8' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage9' , { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, 'border':2 })
, (Drawing, 'blockage10', { 'color':'Violet' , 'pattern':'light_antihash0.8', 'threshold':0.80*scale, '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 })
, (Drawing, 'Anabatic::Edge' , { 'color':'255,255,190', 'pattern':'0000000000000000', 'border':2 })
, (Drawing, 'Anabatic::GCell', { 'color':'Black' , 'pattern':'0000000000000000', 'border':2, 'threshold':0.80*scale })
)
)

View File

@ -1,42 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "etesian.conf<common>" -*-
# Etesian parameters.
parametersTable = \
( ('etesian.aspectRatio' , TypePercentage, 100 , { 'min':10, 'max':1000 } )
, ('etesian.spaceMargin' , TypePercentage, 5 )
, ('etesian.uniformDensity' , TypeBool , False )
, ('etesian.routingDriven' , TypeBool , False )
, ('etesian.feedNames' , TypeString , 'tie_x0,rowend_x0')
, ('etesian.cell.zero' , TypeString , 'zero_x0' )
, ('etesian.cell.one' , TypeString , 'one_x0' )
, ('etesian.bloat' , TypeString , 'default' )
, ("etesian.effort" , TypeEnumerate , 2
, { 'values':( ("Fast" , 1)
, ("Standard" , 2)
, ("High" , 3)
, ("Extreme" , 4) ) }
)
, ("etesian.graphics" , TypeEnumerate , 2
, { 'values':( ("Show every step" , 1)
, ("Show lower bound" , 2)
, ("Show result only" , 3) ) }
)
)
layoutTable = \
( (TypeTab , 'Etesian', 'etesian')
, (TypeTitle , 'Placement area')
, (TypeOption, "etesian.aspectRatio" , "Aspect Ratio, X/Y (%)", 0 )
, (TypeOption, "etesian.spaceMargin" , "Space Margin" , 1 )
, (TypeRule ,)
, (TypeTitle , 'Etesian - Placer')
, (TypeOption, "etesian.uniformDensity", "Uniform density" , 0 )
, (TypeOption, "etesian.routingDriven" , "Routing driven" , 0 )
, (TypeOption, "etesian.effort" , "Placement effort" , 1 )
, (TypeOption, "etesian.graphics" , "Placement view" , 1 )
, (TypeRule ,)
)

View File

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

View File

@ -1,24 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "kite.conf<common>" -*-
# Kite Layout.
layoutTable = \
( (TypeTab , "Kite", "kite" )
, (TypeTitle , "Katabatic - Routing Database" )
, (TypeOption , "katabatic.saturateRatio" , "Saturate Ratio (%)" , 0, 1 )
, (TypeOption , "katabatic.saturateRp" , "Saturate RoutingPad" , 0, 1 )
, (TypeOption , "katabatic.globalLengthThreshold", "Global Length Threshold", 0, 1 )
, (TypeOption , "katabatic.topRoutingLayer" , "Top Routing Layer" , 0, 1 )
, (TypeOption , "anabatic.gcell.displayMode" , "GCell Display Mode" , 1, 1 )
, (TypeRule ,)
, (TypeTitle , "Kite - Detailed Router" )
, (TypeOption , "kite.hTracksReservedLocal", "Vert. Locally Reserved Tracks", 0 )
, (TypeOption , "kite.vTracksReservedLocal", "Hor. Locally Reserved Tracks" , 0 )
, (TypeOption , "kite.eventsLimit" , "Events Limit" , 0 )
, (TypeOption , "kite.ripupCost" , "Ripup Cost" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeSection, "Ripup Limits", 1 )
, (TypeOption , "kite.strapRipupLimit" , "Straps" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeOption , "kite.localRipupLimit" , "Locals" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeOption , "kite.globalRipupLimit" , "Globals" , 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeOption , "kite.longGlobalRipupLimit", "Long Globals", 1, 1, Cfg.ParameterWidgetFlags.UseSpinBox )
, (TypeRule ,)
)

View File

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

View File

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

View File

@ -1,12 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "nimbus.conf<common>" -*-
# Nimbus parameters.
parametersTable = \
( ('nimbus.aspectRatio' , TypePercentage, 100 , { 'min':10, 'max':1000 } )
, ("nimbus.pinsPlacement", TypeBool , False )
, ("nimbus.spaceMargin" , TypePercentage, 5 )
)
# layoutTable is defined inside Mauka.
layoutTable = ()

View File

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

View File

@ -1,10 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "stratus1.conf<common>" -*-
# Stratus1 tab layout.
layoutTable = \
( (TypeTab ,"Stratus1", "stratus1" )
, (TypeTitle , "Stratus1 - Netlist & Layout Capture" )
, (TypeOption, "stratus1.mappingName", "Virtual Library Translation", 0, 2 )
, (TypeOption, "stratus1.format" , "Netlist Format (vst, vhd)" , 0, 2 )
, (TypeOption, "stratus1.simulator" , "Simulator" , 0, 2 )
)

View File

@ -1,335 +0,0 @@
# -*- Mode:Python; explicit-buffer-name: "technology.conf<common>" -*-
#
# Those settings are common to all the symbolic technologies.
from Hurricane import BasicLayer
from helpers import l, u, n
from helpers.Technology import TypeRegular
from helpers.Technology import TypeDiffusion
from helpers.Technology import TypeTransistor
from helpers.Technology import TypeContact
from helpers.Technology import TypeVia
#viewerConfig = { 'precision':2, 'gridstep':1.0 }
# The informations here are extracted from the Alliance ".rds" file,
# and must be coherent with it.
#
# Format of <realLayerTable>:
# The third parameter must be present only for blockage material.
# ('layer_name' , MATERIAL , ASSOCIATED ROUTING)
#
# Note: concerning the LayerMask, real layers are implementeds as BasicLayer,
# and are associated to exactly one bit of the mask. Symbolic layers
# then combine BasicLayer to create composite objects, an thus can have
# a mask which have multiple bits set. Getting the mask from a layer
# is straigthforward, but the reverse is not true. One mask may match
# multiple symbolic layers. To overcome this ambiguity we introduce the
# concept of "working layer", which, for one given mask tells the layer
# that will be returned (generally the symbolic one).
realLayersTable = \
( ('nWell' , BasicLayer.Material.nWell ) # Non-Routing Layers.
, ('pWell' , BasicLayer.Material.pWell )
, ('nImplant' , BasicLayer.Material.nImplant)
, ('pImplant' , BasicLayer.Material.pImplant)
, ('active' , BasicLayer.Material.active )
, ('poly' , BasicLayer.Material.poly )
, ('poly2' , BasicLayer.Material.poly )
, ('cut0' , BasicLayer.Material.cut ) # Routing Layers & VIA Cuts.
, ('metal1' , BasicLayer.Material.metal ) # WARNING: order *is* meaningful.
, ('cut1' , BasicLayer.Material.cut )
, ('metal2' , BasicLayer.Material.metal )
, ('metcap' , BasicLayer.Material.other )
, ('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 )
, ('cut8' , BasicLayer.Material.cut )
, ('metal9' , BasicLayer.Material.metal )
, ('cut9' , BasicLayer.Material.cut )
, ('metal10' , BasicLayer.Material.metal )
#, ('topmim6' , BasicLayer.Material.other ) # For Capacitances & Pads.
, ('metbot_r' , 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')
, ('blockage9' , BasicLayer.Material.blockage, 'metal9')
, ('blockage10' , BasicLayer.Material.blockage, 'metal10')
, ('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 <compositeLayersTable>:
# 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) )
compositeLayersTable = \
( ('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' ,))
, ('metcapdum' , TypeRegular , ('metcap' ,))
, ('metbot' , TypeRegular , ('metal2' ,))
, ('METAL3' , TypeRegular , ('metal3' ,))
, ('METAL4' , TypeRegular , ('metal4' ,))
, ('METAL5' , TypeRegular , ('metal5' ,))
, ('METAL6' , TypeRegular , ('metal6' ,))
, ('METAL7' , TypeRegular , ('metal7' ,))
, ('METAL8' , TypeRegular , ('metal8' ,))
, ('METAL9' , TypeRegular , ('metal9' ,))
, ('METAL10' , TypeRegular , ('metal10' ,))
, ('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' ))
# VIAs for real technologies.
, ('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' ))
, ('via89' , TypeVia , ( 'metal8', 'cut8', 'metal9' ))
, ('via910' , TypeVia , ( 'metal9', 'cut9', 'metal10'))
# VIAs for symbolic technologies.
, ('VIA12' , TypeVia , ( 'metal1', 'cut1', 'metal2' ))
, ('VIA23' , TypeVia , ( 'metal2', 'cut2', 'metal3' ))
, ('VIA23cap' , TypeVia , ( 'metcap', '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' ))
, ('VIA89' , TypeVia , ( 'metal8', 'cut8', 'metal9' ))
, ('VIA910' , TypeVia , ( 'metal9', 'cut9', 'metal10'))
, ('BLOCKAGE1' , TypeRegular , ('blockage1' , ))
, ('BLOCKAGE2' , TypeRegular , ('blockage2' , ))
, ('BLOCKAGE3' , TypeRegular , ('blockage3' , ))
, ('BLOCKAGE4' , TypeRegular , ('blockage4' , ))
, ('BLOCKAGE5' , TypeRegular , ('blockage5' , ))
, ('BLOCKAGE6' , TypeRegular , ('blockage6' , ))
, ('BLOCKAGE7' , TypeRegular , ('blockage7' , ))
, ('BLOCKAGE8' , TypeRegular , ('blockage8' , ))
, ('BLOCKAGE9' , TypeRegular , ('blockage9' , ))
, ('BLOCKAGE10' , TypeRegular , ('blockage10', ))
, ('gcontact' , TypeVia , ('gmetalh' , 'gcut', 'gmetalv'))
)
# Format of <symbolicLayersTable>:
# This is a simple list of Symbolic layers.
symbolicLayersTable = \
[ 'POLY', 'POLY2'
, 'METAL1' , 'METAL2' , 'METAL3' , 'METAL4' , 'METAL5' , 'METAL6' , 'METAL7' , 'METAL8' , 'METAL9' , 'METAL10'
, 'BLOCKAGE1', 'BLOCKAGE2', 'BLOCKAGE3', 'BLOCKAGE4', 'BLOCKAGE5', 'BLOCKAGE6', 'BLOCKAGE7', 'BLOCKAGE8', 'BLOCKAGE9', 'BLOCKAGE10'
, 'VIA12' , 'VIA23' , 'VIA34' , 'VIA45' , 'VIA56' , 'VIA67' , 'VIA78' , 'VIA89' , 'VIA910'
, 'gcut' , 'gmetalh' , 'gmetalv' , 'gcontact'
]
# Format of <layersExtensionsTable>:
# Each entry is a pair of (string, value).
# * string: a synthetic way to designate the real or symbolic layer on
# which it applies, an optional sub layer (BasicLayer) in case
# where there is more than one, and the dimension name.
# * value : the rule (dimension) value.
# Values/dimensions must be given using one of the following conversion
# function:
# * l(value) : value expressed in lambda (symbolic).
# * u(value) : value is expressed in microns.
# * n(value) : value is expressed in nanometers.
symbolicLayersExtensionsTable = \
[ ('NWELL.nWell.extention.cap' , l( 0.0))
, ('PWELL.pWell.extention.cap' , l( 0.0))
, ('NTIE.minimum.width' , l( 3.0))
, ('NTIE.nWell.extention.cap' , l( 1.5))
, ('NTIE.nWell.extention.width' , l( 0.5))
, ('NTIE.nImplant.extention.cap' , l( 1.0))
, ('NTIE.nImplant.extention.width' , l( 0.5))
, ('NTIE.active.extention.cap' , l( 0.5))
, ('NTIE.active.extention.width' , l( 0.0))
, ('PTIE.minimum.width' , l( 3.0))
, ('PTIE.pWell.extention.cap' , l( 1.5))
, ('PTIE.pWell.extention.width' , l( 0.5))
, ('PTIE.pImplant.extention.cap' , l( 1.0))
, ('PTIE.pImplant.extention.width' , l( 0.5))
, ('PTIE.active.extention.cap' , l( 0.5))
, ('PTIE.active.extention.width' , l( 0.0))
, ('NDIF.minimum.width' , l( 3.0))
, ('NDIF.nImplant.extention.cap' , l( 1.0))
, ('NDIF.nImplant.extention.width' , l( 0.5))
, ('NDIF.active.extention.cap' , l( 0.5))
, ('NDIF.active.extention.width' , l( 0.0))
, ('PDIF.minimum.width' , l( 3.0))
, ('PDIF.pImplant.extention.cap' , l( 1.0))
, ('PDIF.pImplant.extention.width' , l( 0.5))
, ('PDIF.active.extention.cap' , l( 0.5))
, ('PDIF.active.extention.width' , l( 0.0))
, ('GATE.minimum.width' , l( 1.0))
, ('GATE.poly.extention.cap' , l( 1.5))
, ('NTRANS.minimum.width' , l( 1.0))
, ('NTRANS.nImplant.extention.cap' , l(-1.0))
, ('NTRANS.nImplant.extention.width' , l( 2.5))
, ('NTRANS.active.extention.cap' , l(-1.5))
, ('NTRANS.active.extention.width' , l( 2.0))
, ('PTRANS.minimum.width' , l( 1.0))
, ('PTRANS.nWell.extention.cap' , l(-1.0))
, ('PTRANS.nWell.extention.width' , l( 4.5))
, ('PTRANS.pImplant.extention.cap' , l(-1.0))
, ('PTRANS.pImplant.extention.width' , l( 4.0))
, ('PTRANS.active.extention.cap' , l(-1.5))
, ('PTRANS.active.extention.width' , l( 3.0))
, ('POLY.minimum.width' , l( 1.0))
, ('POLY.poly.extention.cap' , l( 0.5))
, ('POLY2.minimum.width' , l( 1.0))
, ('POLY2.poly.extention.cap' , l( 0.5))
# Routing Layers (symbolic).
, ('METAL1.minimum.width' , l( 1.0))
, ('METAL1.metal1.extention.cap' , l( 0.5))
, ('METAL2.minimum.width' , l( 1.0))
, ('METAL2.metal2.extention.cap' , l( 1.0))
, ('METAL3.minimum.width' , l( 1.0))
, ('METAL3.metal3.extention.cap' , l( 1.0))
, ('METAL4.minimum.width' , l( 1.0))
, ('METAL4.metal4.extention.cap' , l( 1.0))
, ('METAL4.minimalSpacing' , l( 3.0))
, ('METAL5.minimum.width' , l( 2.0))
, ('METAL5.metal5.extention.cap' , l( 1.0))
, ('METAL6.minimum.width' , l( 2.0))
, ('METAL6.metal6.extention.cap' , l( 1.0))
, ('METAL7.minimum.width' , l( 2.0))
, ('METAL7.metal7.extention.cap' , l( 1.0))
, ('METAL8.minimum.width' , l( 2.0))
, ('METAL8.metal8.extention.cap' , l( 1.0))
, ('METAL9.minimum.width' , l( 2.0))
, ('METAL9.metal9.extention.cap' , l( 1.0))
, ('METAL10.minimum.width' , l( 2.0))
, ('METAL10.metal10.extention.cap' , l( 1.0))
# Contacts (i.e. Active <--> Metal) (symbolic).
, ('CONT_BODY_N.minimum.side' , l( 1.0))
, ('CONT_BODY_N.nWell.enclosure' , l( 1.5))
, ('CONT_BODY_N.nImplant.enclosure' , l( 1.5))
, ('CONT_BODY_N.active.enclosure' , l( 1.0))
, ('CONT_BODY_N.metal1.enclosure' , l( 0.5))
, ('CONT_BODY_P.minimum.side' , l( 1.0))
, ('CONT_BODY_P.pWell.enclosure' , l( 1.5))
, ('CONT_BODY_P.pImplant.enclosure' , l( 1.5))
, ('CONT_BODY_P.active.enclosure' , l( 1.0))
, ('CONT_BODY_P.metal1.enclosure' , l( 0.5))
, ('CONT_DIF_N.minimum.side' , l( 1.0))
, ('CONT_DIF_N.nImplant.enclosure' , l( 1.0))
, ('CONT_DIF_N.active.enclosure' , l( 0.5))
, ('CONT_DIF_N.metal1.enclosure' , l( 0.5))
, ('CONT_DIF_P.minimum.side' , l( 1.0))
, ('CONT_DIF_P.pImplant.enclosure' , l( 1.0))
, ('CONT_DIF_P.active.enclosure' , l( 0.5))
, ('CONT_DIF_P.metal1.enclosure' , l( 0.5))
, ('CONT_POLY.minimum.width' , l( 1.0))
, ('CONT_POLY.poly.enclosure' , l( 0.5))
, ('CONT_POLY.metal1.enclosure' , l( 0.5))
# VIAs (i.e. Metal <--> Metal) (symbolic).
, ('VIA12.minimum.side' , l( 1.0))
, ('VIA12.metal1.enclosure' , l( 0.5))
, ('VIA12.metal2.enclosure' , l( 0.5))
, ('VIA23.minimum.side' , l( 1.0))
, ('VIA23.metal2.enclosure' , l( 0.5))
, ('VIA23.metal3.enclosure' , l( 0.5))
, ('VIA34.minimum.side' , l( 1.0))
, ('VIA34.metal3.enclosure' , l( 0.5))
, ('VIA34.metal4.enclosure' , l( 0.5))
, ('VIA45.minimum.side' , l( 1.0))
, ('VIA45.metal4.enclosure' , l( 0.5))
, ('VIA45.metal5.enclosure' , l( 0.5))
, ('VIA56.minimum.side' , l( 1.0))
, ('VIA56.metal5.enclosure' , l( 0.5))
, ('VIA56.metal6.enclosure' , l( 0.5))
, ('VIA67.minimum.side' , l( 1.0))
, ('VIA67.metal6.enclosure' , l( 0.5))
, ('VIA67.metal7.enclosure' , l( 0.5))
, ('VIA78.minimum.side' , l( 1.0))
, ('VIA78.metal7.enclosure' , l( 0.5))
, ('VIA78.metal8.enclosure' , l( 0.5))
, ('VIA89.minimum.side' , l( 1.0))
, ('VIA89.metal8.enclosure' , l( 0.5))
, ('VIA89.metal9.enclosure' , l( 0.5))
, ('VIA910.minimum.side' , l( 1.0))
, ('VIA910.metal9.enclosure' , l( 0.5))
, ('VIA910.metal10.enclosure' , l( 0.5))
# Blockages (symbolic).
, ('BLOCKAGE1.minimum.width' , l(1.0))
, ('BLOCKAGE1.blockage1.extention.cap' , l(0.5))
, ('BLOCKAGE2.minimum.width' , l(2.0))
, ('BLOCKAGE2.blockage2.extention.cap' , l(0.5))
, ('BLOCKAGE3.minimum.width' , l(2.0))
, ('BLOCKAGE3.blockage3.extention.cap' , l(0.5))
, ('BLOCKAGE4.minimum.width' , l(2.0))
, ('BLOCKAGE4.blockage4.extention.cap' , l(0.5))
, ('BLOCKAGE5.minimum.width' , l(2.0))
, ('BLOCKAGE5.blockage5.extention.cap' , l(1.0))
, ('BLOCKAGE6.minimum.width' , l(2.0))
, ('BLOCKAGE6.blockage6.extention.cap' , l(1.0))
, ('BLOCKAGE7.minimum.width' , l(2.0))
, ('BLOCKAGE7.blockage7.extention.cap' , l(1.0))
, ('BLOCKAGE8.minimum.width' , l(2.0))
, ('BLOCKAGE8.blockage8.extention.cap' , l(1.0))
, ('BLOCKAGE9.minimum.width' , l(2.0))
, ('BLOCKAGE9.blockage9.extention.cap' , l(1.0))
, ('BLOCKAGE10.minimum.width' , l(2.0))
, ('BLOCKAGE10.blockage10.extention.cap', l(1.0))
]