oaheader.gif
topics.gif classes.gif classes.gif exceptions.gif progguide.gif infomodel.gif index.gif help.gif
 
 
 

Layer (Routing)

 LAYER layerName

    TYPE ROUTING ;

    DIRECTION {HORIZONTAL | VERTICAL | DIAG45 | DIAG135} ;
    PITCH {distance | xDistance yDistance} ;
    [DIAGPITCH {distance | diag45Distance diag135Distance} ;]
    WIDTH defaultWidth ;
    [OFFSET {distance | xDistance yDistance} ;]
    [DIAGWIDTH diagWidth ;]
    [DIAGSPACING diagSpacing ;]
    [DIAGMINEDGELENGTH diagLength ;]
    [AREA minArea ;]
    [PROPERTY LEF57_AREA
        "AREA minArea [EXCEPTEDGELENGTH minLength]
        [EXCEPTMINSIZE minWidth minLength] ;" ;]
    [MINSIZE minWidth minLength [minWidth2 minLength2] ... ;]
    [SPACING minSpacing
        [ RANGE minWidth maxWidth
            [ USELENGTHTHRESHOLD
            | RANGE minWidth2 maxWidth2 RANGE minWidth2 maxWidth2
            | INFLUENCE value [RANGE stubMinWidth stubMaxWidth] ]
          
        | LENGTHTHRESHOLD maxLength [RANGE minWidth maxWidth]
        | ENDOFLINE eolWidth WITHIN eolWithin
             [PARALLELEDGE parSpace WITHIN parWithin [TWOEDGES]]
        | SAMENET [PGONLY]
        | NOTCHLENGTH minNotchLength
        | SPACING minNotchSpacing NOTCHLENGTH minNotchLength
        | ENDOFNOTCHWIDTH endOfNotchWidth
             NOTCHSPACING minNotchSpacing NOTCHLENGTH minNotchLength ]
    ;] ...
    [SPACINGTABLE
        { PARALLELRUNLENGTH {length} ...
            {WIDTH width {spacing} ...} ...   ;
            [SPACINGTABLE INFLUENCE {WIDTH width WITHIN distance SPACING spacing} ... ;]
          
        | TWOWIDTHS {WIDTH width [PRL runLength] {spacing} ...} ...   ; }]
    
    [PROPERTY LEF57_SPACING
       "SPACING eolSpace ENDOFLINE eolWidth WITHIN eolWithin
       [PARALLELEDGE parSpace WITHIN parWithin [TWOEDGES]]
         ;" ;]
    [WIREEXTENSION value ;]
    [MINIMUMCUT numCuts WIDTH width [WITHIN cutDistance]
        [FROMABOVE | FROMBELOW]
        [LENGTH length WITHIN distance] ;] ...
    [MAXWIDTH width ;]
    [MINWIDTH width ;]
    [MINSTEP minStepLength
         [ [INSIDECORNER | OUTSIDECORNER | STEP] [LENGTHSUM maxLength]
           | [ MAXEDGES maxEdges] ] ;]
    [PROPERTY LEF57_MINSTEP
        "MINSTEP minStepLength
            [MAXEDGES maxEdges]
                [ MINADJACENTLENGTH minAdjLength
                | MINBETWEENLENGTH minBetweenLength [EXCEPTSAMECORNERS]
                ] ;" ;]
    [MINENCLOSEDAREA area [WIDTH width] ;] ...
    [PROTRUSIONWIDTH width1 LENGTH length WIDTH width2 ;]
    [RESISTANCE RPERSQ value ;]
    [CAPACITANCE CPERSQDIST value ;]
    [HEIGHT distance ;]
    [THICKNESS distance ;]
    [SHRINKAGE distance ;]
    [CAPMULTIPLIER value ;]
    [EDGECAPACITANCE value ;]
    [MINIMUMDENSITY minDensity ;]
    [MAXIMUMDENSITY maxDensity ;]
    [DENSITYCHECKWINDOW windowLength windowWidth ;]
    [DENSITYCHECKSTEP stepValue ;]
    [FILLACTIVESPACING spacing ;]
    [ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4} ;] ...
    [ANTENNAAREARATIO ;] ...
    [ANTENNADIFFAREARATIO {value | PWL (( d1 r1) ( d2 r2 ) ...) } ;] ...
    [ANTENNACUMAREARATIO value ;] ...
    [ANTENNACUMDIFFAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...)} ;] ...
    [ANTENNAAREAFACTOR value [DIFFUSEONLY] ;]
    [ANTENNASIDEAREAFACTOR value [DIFFUSEONLY] ;] ...
    [ANTENNASIDEAREARATIO value ;] ...
    [ANTENNADIFFSIDEAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...) } ;] ...
    [ANTENNACUMSIDEAREARATIO value ;] ...
    [ANTENNACUMDIFFSIDEAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...) } ;] ...
    [PROPERTY LEF57_ANTENNACUMROUTINGPLUSCUT "ANTENNACUMROUTINGPLUSCUT ;" ;]
    [PROPERTY LEF57_ANTENNAGATEPLUSDIFF "ANTENNAGATEPLUSDIFF plusDiffFactor ;" ;]
    [PROPERTY LEF57_ANTENNAAREAMINUSDIFF "ANTENNAAREAMINUSDIFF minusDiffFactor ;" ;]
    [PROPERTY LEF57_ANTENNAAREADIFFREDUCEPWL "ANTENNAAREADIFFREDUCEPWL
         (( diffArea1 diffAreaFactor1 ) (diffArea2 diffAreaFactor2 ) ... ) ;" ;]
    [PROPERTY propName propVal ;] ...
    [ANTENNACUMROUTINGPLUSCUT ;]
    [PROPERTY LEF57_ANTENNACUMROUTINGPLUSCUT "ANTENNACUMROUTINGPLUSCUT ;" ; ;]
    [ANTENNAGATEPLUSDIFF plusDiffFactor ;]
    [PROPERTY LEF57_ANTENNAGATEPLUSDIFF "ANTENNAGATEPLUSDIFF plusDiffFactor ;" ; ;]
    [ANTENNAAREAMINUSDIFF minusDiffFactor ;]
    [PROPERTY LEF57_ANTENNAAREAMINUSDIFF "ANTENNAAREAMINUSDIFF minusDiffFactor  ;" ;]
    [ANTENNAAREADIFFREDUCEPWL (( diffArea1 metalDiffFactor1 )
                              ( diffArea2 metalDiffFactor2 ) ... ) ;]
    [PROPERTY LEF57_ANTENNAAREADIFFREDUCEPWL
         "ANTENNAAREADIFFREDUCEPWL (( diffArea1 metalDiffFactor1 )
                                    ( diffArea2 metalDiffFactor2 ) ... ) ;" ; ;]
    [ACCURRENTDENSITY {PEAK | AVERAGE | RMS}
        { value
        | FREQUENCY freq_1 freq_2 ... ;
            [WIDTH width_1 width_2 ... ;]
             TABLEENTRIES
                 v_freq_1_width_1 v_freq_1_width_2 ...
                 v_freq_2_width_1 v_freq_2_width_2 ...
        } ;]
    [DCCURRENTDENSITY AVERAGE
        { value
        | WIDTH width_1 width_2 ... ;
            TABLEENTRIES value_1 value_2 ...
        } ;]

 END layerName

Routing layers are stored in OpenAccess as oaPhysicalLayers with the material attribute set to oacMetalMaterial. The layer is also added to the oacValidRoutingLayers constraint in the LEFDefaultRouteSpec constraint group.


ACCURRENTDENSITY {PEAK | AVERAGE | RMS}
    { value
    | FREQUENCY freq_1 freq_2 ... ;
        [WIDTH width_1 width_2 ... ;]
         TABLEENTRIES
             v_freq_1_width_1 v_freq_1_width_2 ...
             v_freq_2_width_1 v_freq_2_width_2 ...
    }

The LEF ACCURRENTDENSITY rule is stored in OpenAccess using the oaPhysicalLayer attributes shown in the following table.

ACCURRENTDENSITY oaPhysicalLayer attribute
PEAK PeakACCurrentDensity
AVERAGE AvgACCurrentDensity
RMS RmsACCurrentDensity

ACCURRENTDENSITY {PEAK | AVERAGE | RMS} value

The simple ACCURRENTDENSITY rule is stored in OpenAccess as an oaFloatValue for the oaPhysicalLayer attribute determined from the previous table.

ACCURRENTDENSITY {PEAK | AVERAGE | RMS}
FREQUENCY freq_1 freq_2 ... ;
TABLEENTRIES v_freq_1 v_freq_1 ... ;

The frequency dependant ACCURRENTDENSITY rule is stored in OpenAccess as an oaFloat1DTblValue for the oaPhysicalLayer attribute determined from the previous table. The values are stored in an oa1DLookupTbl<oaFloat, oaFloat>, with header:frequency and value:density.

ACCURRENTDENSITY {PEAK | AVERAGE | RMS}
FREQUENCY freq_1 freq_2 ... ;
WIDTH width_1 width_2 ... ;
TABLEENTRIES v_freq_1_width_1 v_freq_1_width_2 ...
v_freq_2_width_1 v_freq_2_width_2 ... ;

The frequency and area dependant ACCURRENTDENSITY rule is stored in OpenAccess as an oaCurDensTblValue for the oaPhysicalLayer attribute determined from the previous table. The values are stored in an oa2DLookupTbl<oaFloat, oaUInt4, oaFloat>, with row:frequency, col:width and value:density.

ANTENNA

The ANTENNA attributes are stored in OpenAccess using an oaAntennaRatioArrayValue for the oacAntenna constraint on this layer. The oaAntennaRatioArrayValue contains an oaAntennaRatioValue for each of the four antenna models.

ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4}

The LAYER ANTENNAMODEL determines which oaAntennaModel is used in OpenAccess to store the LAYER ANTENNA statements. The ANTENNA attributes are stored using an oaAntennaRatioArrayValue for the oacAntenna constraint on the layer. The oaAntennaRatioArrayValue contains an oaAntennaRatioValue for each of the four antenna models. The mapping of LEF ANTENNAMODEL to OpenAccess oaAntennaModelEnum is shown in the following table. The default, if a LEF ANTENNAMODEL is not specified, is to use oacDefaultAntennaModel. Only a single parameter is stored in OpenAccess for the OXIDE model. The first detected is the value stored. If other OXIDE models are specified, they are assumed to be the same.

LEF ANTENNAMODEL oaAntennaModel
OXIDE1 (default) oacDefaultAntennaModel
OXIDE2 oacSecondAntennaModel
OXIDE3 oacThirdAntennaModel
OXIDE4 oacFourthAntennaModel

ANTENNAAREARATIO

The LAYER ANTENNAAREARATIO is stored in OpenAccess using the oacAntenna constraint in the foundryRules constraint group. The value is stored in the GateAreaRatio attribute of the ruleType determined from the ANTENNAMODEL.

ANTENNADIFFAREARATIO {value | PWL (( d1 r1) ( d2 r2 ) ...) }

The LAYER ANTENNADIFFAREARATIO is stored in OpenAccess using the oacAntenna constraint in the foundryRules constraint group. The value is stored in the DiodeAreaRatio attribute of the ruleType, which is determined from the ANTENNAMODEL (see the previous table).

ANTENNACUMAREARATIO value

The LAYER ANTENNACUMAREARATIO is stored in OpenAccess by using the oacCumMetalAntenna constraint in the foundryRules constraint group. The value is stored in the GateAreaRatio attribute of the antenna model determined from the ANTENNAMODEL (see the table above).

ANTENNACUMDIFFAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...)}

The LAYER ANTENNACUMDIFFAREARATIO is stored in OpenAccess by using the oacCumMetalAntenna constraint in the foundryRules constraint group. The value is stored in the DiodeAreaRatio attribute of the antenna model determined from the ANTENNAMODEL (see the table above).

ANTENNAAREAFACTOR value [DIFFUSEONLY]

The ANTENNAAREAFACTOR is stored in OpenAccess using an oaFltValue for the oacAntennaAreaFactorConstraintParamType constraint parameter on the antenna constraints to which it applies. Since only one antenna calculation method is supported in OpenAccess (side vs non-side), only one of the above factor values is stored in OpenAcess, whereby non-side values have priority in case both are specified.

A single parameter is stored in OpenAccess for all OXIDE models. If multiple OXIDE values are specified, they are all assumed to be the same, and only the first value is stored.

ANTENNASIDEAREAFACTOR value [DIFFUSEONLY]

If the lef2oa translator creates a database using data model 2 or greater, ANTENNASIDEAREAFACTOR is stored as an oaConstraintParam using an oaFltValue for the oacAntennaAreaFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

ANTENNASIDEAREARATIO value

The LAYER ANTENNASIDEAREARATIO is stored in OpenAccess using the oacAntenna constraint in the foundryRules constraint group. The value is stored in the SideGateAreaRatio attribute of the ruleType determined from the ANTENNAMODEL.

ANTENNADIFFSIDEAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...) }

The LAYER ANTENNADIFFSIDEAREARATIO is stored in OpenAccess by using the oacAntenna constraint in the foundryRules constraint group. The value is stored in the SideDiodeAreaRatio attribute of the ruleType determined from the ANTENNAMODEL (see previous section). The values are stored in an oa1DLookupTbl<oaInt8, oaFloat>, with header:d and value:r. If only a single value is given, this is stored in the table at index 0.

ANTENNACUMSIDEAREARATIO value

The LAYER ANTENNACUMSIDEAREARATIO is stored by using the oacCumMetalAntenna constraint in the foundryRules constraint group. The value is stored in the GateAreaRatio attribute of the antenna model determined from the ANTENNAMODEL (see the previous table).

ANTENNACUMDIFFSIDEAREARATIO {value | PWL ( ( d1 r1 ) ( d2 r2 ) ...) }

The LAYER ANTENNACUMDIFFSIDEAREARATIO is stored by using the oacCumMetalAntenna constraint in the foundryRules constraint group. The value is stored in the DiodeAreaRatio attribute of the antenna model determined from the ANTENNAMODEL (see the table above).

PROPERTY LEF57_ANTENNACUMROUTINGPLUSCUT "ANTENNACUMROUTINGPLUSCUT ;"

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNACUMROUTINGPLUSCUT attribute is stored using an oaBooleanValue for the oacAntennaCumRoutingPlusCutConstraintParamType constraint parameter on the antenna constraints to which it applies.

PROPERTY LEF57_ANTENNAGATEPLUSDIFF "ANTENNAGATEPLUSDIFF plusDiffFactor ;"

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNAGATEPLUSDIFF attribute is stored using an oaFltValue for the oacAntennaDiffPlusFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

PROPERTY LEF57_ANTENNAAREAMINUSDIFF "ANTENNAAREAMINUSDIFF minusDiffFactor ;"

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNAAREAMINUSDIFF attribute is stored using an oaFltValue for the oacAntennaDiffMinusFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

PROPERTY LEF57_ANTENNAAREADIFFREDUCEPWL "ANTENNAAREADIFFREDUCEPWL
     (( diffArea1 diffAreaFactor1 ) (diffArea2 diffAreaFactor2 ) ... ) ;"

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNAAREADIFFREDUCEPWL attribute is stored in OpenAccess using an oaFlt1DTblValue for the oacAntennaDiffAreaReduceFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

PROPERTY propName propVal

See PROPERTIES

ANTENNACUMROUTINGPLUSCUT

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNACUMROUTINGPLUSCUT attribute is stored using an oaBooleanValue for the oacAntennaCumRoutingPlusCutConstraintParamType constraint parameter on the antenna constraints to which it applies.

Only a single parameter for all OXIDE models is stored. If multiple OXIDE models are specified, they are assumed to be the same, and only the first value is stored.

Note: This assumes data model 3 constraints.

ANTENNAGATEPLUSDIFF plusDiffFactor

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNAGATEPLUSDIFF attribute is stored using an oaFltValue for the oacAntennaDiffPlusFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

Only a single parameter for all OXIDE models is stored. If multiple OXIDE models are specified, they are assumed to be the same, and only the first value is stored.

Note: This assumes data model 3 constraints.

ANTENNAAREAMINUSDIFF minusDiffFactor

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNAAREAMINUSDIFF attribute is stored using an oaFltValue for the oacAntennaDiffMinusFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

Only a single parameter for all OXIDE models is stored. If multiple OXIDE models are specified, they are assumed to be the same, and only the first value is stored.

Note: This assumes data model 3 constraints.

ANTENNAAREADIFFREDUCEPWL (( diffArea1 metalDiffFactor1 )
                          ( diffArea2 metalDiffFactor2 ) ... )

Data model 2 or greater is required to map this property to OpenAccess. The ANTENNAAREADIFFREDUCEPWL attribute is stored in OpenAccess using an oaFlt1DTblValue for the oacAntennaDiffAreaReduceFactorConstraintParamType constraint parameter on the antenna constraints to which it applies.

Only a single parameter for all OXIDE models is stored. If multiple OXIDE models are specified, they are assumed to be the same, and only the first value is stored.

Note: This assumes data model 3 constraints.

AREA minArea

The LAYER AREA attribute is stored using an oaIntValue for the oacMinArea constraint in the foundryRules constraint group. The translation converts the value to database units squared. The EXCEPTEDGELENGTH and EXCEPTMINSIZE attributes are not stored in OpenAccess.

CAPACITANCE CPERSQDIST value

The LAYER CAPACITANCE attribute is stored in an oaFloatProp named CAPACITANCE on the oaPhysicalLayer.

CAPMULTIPLIER value

The LAYER CAPMULTIPLIER attribute is stored in an oaIntProp named CAPMULTIPLIER on the oaPhysicalLayer.

DCCURRENTDENSITY AVERAGE
    { value
    | WIDTH width_1 width_2 ... ;
        TABLEENTRIES value_1 value_2 ...
    }

The basic DCCURRENTDENSITY rule is stored in OpenAccess as an oaFloatValue for the AvgDCCurrentDensity attribute on the oaPhysicalLayer.

The area dependant DCCURRENTDENSITY rule is stored in OpenAccess as an oaIntFltTblValue for the AvgDCCurrentDensity attribute on the oaPhysicalLayer. The values are stored in an oa1DLookupTbl<oaInt4, oaFloat>, with header:width and value:density.

MINIMUMDENSITY minDensity
MAXIMUMDENSITY maxDensity
DENSITYCHECKWINDOW windowLength windowWidth
DENSITYCHECKSTEP stepValue

The LAYER MINIMUMDENSITY and MAXIMUMDENSITY attributes are stored in OpenAccess using an oaFltValue for the oacMinDensity and oaMaxDensity constraints in the foundryRules constraint group.

If a DENSITYCHECKWINDOW is specified, the MINIMUMDENSITY and MAXIMUMDENSITY values are stored in an oa1DLookupTbl<oaInt4, oaFloat>, with header:step (which is half the LAYER DENSITYCHECKWINDOW value) and value:density.

The DENSITYCHECKSTEP is not stored in OpenAccess, but is assumed to be half the DENSITYCHECKWINDOW value.

DIAGMINEDGELENGTH diagLength

The LAYER DIAGMINEDGELENGTH attribute is stored using the oacMinDiagonalEdgeLength constraint in the foundryRules constraint group.

DIAGPITCH {distance | diag45Distance diag135Distance}

The LAYER DIAGPITCH attribute is stored using an oaIntValue for the oac45RouteGridPitch and oac135RouteGridPitch constraints in the LEFDefaultRouteSpec constraint group. If only a single value is specified, it is stored in both constraints. Note that the diagonal pitch is the horizontal projection of the 45 degree pitch.

There is no LEF construct for a default global routing pitch. If oacDefault135RouteGridPitch or oacDefault45RouteGridPitch are set in OpenAccess, translation from OpenAccess to LEF maps these to layer-specific route pitches if a layer does not have oac135RouteGridPitch or oac45RouteGridPitch set.

DIAGSPACING diagSpacing

The LAYER DIAGSPACING attribute is stored using an oaIntValue for the oacMinDiagonalSpacing constraint in the foundryRules constraint group.

DIAGWIDTH diagWidth

The LAYER DIAGWIDTH attribute maps to the oacMinDiagonalWidth constraint in the LEFDefaultRouteSpec constraint group.

DIRECTION {HORIZONTAL | VERTICAL | DIAG45 | DIAG135}

Beginning with dataModel 4, if the current tech database is in a tech graph, the direction attribute on the layer in the base technology is set to notApplicable, the direction is also stored as an oaIntValue for the oacPreferredRoutingDirection constraint in the LEFDefaultRouteSpec constraint group.

EDGECAPACITANCE value

The LAYER EDGECAPACITANCE attribute is stored in an oaFloatProp named EDGECAPACITANCE on the oaPhysicalLayer.

FILLACTIVESPACING spacing

The LAYER FILLACTIVESPACING attribute maps to OpenAccess using an oaIntValue for the oacMinFillPatternSpacing constraint in the foundryRules constraint group.

HEIGHT distance

The LAYER HEIGHT attribute is stored in an oaIntProp named HEIGHT on the oaPhysicalLayer.

PROPERTY LEF57_SPACING
   "SPACING eolSpace ENDOFLINE eolWidth WITHIN eolWithin
   [PARALLELEDGE parSpace WITHIN parWithin [TWOEDGES]]
     ;"

MAXWIDTH width

The LAYER MAXWIDTH attribute is stored in OpenAccess using an oaIntValue for the oacMaxWidth constraint in the foundryRules constraint group.

MINENCLOSEDAREA area [WIDTH width]

The MINENCLOSEDAREA is stored in OA using the oacMinEnclosedArea constraint in the foundryRules constraint group. If there is only one MINENCLOSEDAREA statement, and it is not width dependent, the statement maps to an oaIntValue. If there are multiple statements, an oaInt1DTblValue is used, which is indexed by the WIDTH.

MINIMUMCUT numCuts WIDTH width [WITHIN cutDistance]
    [FROMABOVE | FROMBELOW]
    [LENGTH length WITHIN distance]

The WITHIN cutDistance uses an oaIntValue that maps to an oaConstraintParamType of type oacDistanceWithinConstraintParamType.

The cut layer choice is determined by the FROMABOVE or FROMBELOW keywords. The rule is stored on both the cut layer above and the cut layer below if neither keyword is specified.

The length and distance dependent MINIMUMCUT rule for routing layers is stored in OpenAccess as an oaIntValue for the oacMinProtrusionNumCut constraint on the cut layer above or below. The WITHIN distance uses an oaIntValue that maps to an oaConstraintParamType of type oacDistanceWithinConstraintParamType. If conflicting values are specified by the routing layer above and the routing layer below, for the same cut layer, the most restrictive value is mapped to OpenAccess.

Multiple MINIMUMCUT LENGTH WITHIN rules are stored as individual constraints that are grouped together in an oacAndGroupOperator constraint group. The name of the oaConstraintGroupDef used to create the constraint group is the same as the string value for the oaLayerConstraintType enum, oacMinProtrusionNumCut.

Prior to dataModel 4, the MINIMUMCUT rules for routing layers map as an oaInt1DTblValue for the oacMinNumCut constraint on the cut layer above or below the routing layer. The rules are stored in an oa1DLookupTbl, with width mapping to the table header and numCuts mapping to the table value.

MINSIZE minWidth minLength [minWidth2 minLength2] ...

The LAYER MINSIZE attribute maps to OpenAccess using an oaBoxArrayValue on the oacMinSize constraint in the foundryRules constraint group. The oaBoxArrayValue stores the list of minWidth/minLength combinations. Each minWidth/minLength pair is converted to an oaBox with the origin at the lower left.

MINSTEP minStepLength
     [ [INSIDECORNER | OUTSIDECORNER | STEP] [LENGTHSUM maxLength]
       | [ MAXEDGES maxEdges] ]

In dataModel 2 or later, the mapping is the same as in dataModel 1 for MINSTEP attribute on ROUTING LAYER. Except that: The MAXEDGES attribute maps to an oaIntValue for the oacMinEdgeMaxCount constraint in the foundryRules constraint group. The minStepLength maps to an oaIntValue for the oaConstraintParam of type oacMaxLengthConstraintParamType in this case.

MINWIDTH width

The LAYER MINWIDTH attribute is stored in OpenAccess using an oaIntValue for the oacMinWidth constraint in the foundryRules constraint group. If MINWIDTH is not specified, the value of WIDTH is stored in the constraints.

OFFSET {distance | xDistance yDistance}

The LAYER OFFSET attribute is stored using an oaIntValue for the oacHorizontalRouteGridOffset and oacVerticalRouteGridOffset constraints in the LEFDefaultRouteSpec constraint group. If OFFSET is not specified, a value equal to half the PITCH is stored in the constraints.

There is no LEF construct for a default global routing grid offset. If oacDefaultHorizontalRouteGridOffset, oacDefaultVerticalRouteGridOffset, oacDefault135RouteGridOffset, or oacDefault45RouteGridOffset are set in OpenAccess, translation from OpenAccess to LEF maps these to layer-specific route grid offsets if a layer does not have the corresponding grid offset set.

PITCH {distance | xDistance yDistance}

The LAYER PITCH attribute is stored using an oaIntValue for the oacHorizontalRouteGridPitch and oacVerticalRouteGridPitch constraints in the LEFDefaultRouteSpec constraint group. If a single value is specified, it is stored in both constraints.

There is no LEF construct for a default global routing pitch. If oacDefaultHorizontalRouteGridPitch or oacDefaultVerticalRouteGridPitch are set in OpenAccess, translation from OpenAccess to LEF maps these to layer-specific route pitches if a layer does not have oacHorizontalRouteGridPitch or oacVerticalRouteGridPitch set.

PROTRUSIONWIDTH width1 LENGTH length WIDTH width2

The LAYER PROTRUSIONWIDTH attribute is stored in OpenAccess by using an oaIntValue for the oacMinProtrusionWidth constraint in the foundryRules group. The LENGTH and WIDTH values are stored as oaIntValues for the oacLengthConstraintParam and oacWidthConstraintParam constraint parameters. The parameters are stored in an oaConstraintParamArray as shown in the following table.

LEF parameter oaConstraintParamType
LENGTH oacLengthConstraintParamType
WIDTH2 oacWidthConstraintParamType

RESISTANCE RPERSQ value

The LAYER RESISTANCE attribute is stored in an oaFloatProp named RESISTANCE on the oaPhysicalLayer.

SHRINKAGE distance

The LAYER SHRINKAGE attribute is stored in an oaFloatProp named SHRINKAGE on the oaPhysicalLayer.

SPACING minSpacing

     [ RANGE minWidth maxWidth
         [ USELENGTHTHRESHOLD
         | RANGE minWidth2 maxWidth2 RANGE minWidth2 maxWidth2
         | INFLUENCE value [RANGE stubMinWidth stubMaxWidth] ]
        ]

The LAYER SPACING attributes are stored using an oaIntValue for the oacMinSpacing constraint in an OR constraint group in the foundryRules constraint group, and the generic (no range) spacing is also set as the spacing value on the LEFDefaultRouteSpec constraint group. All attributes are stored together in the smallest possible oaValue. This means that if only a simple spacing is specified, it is stored using an oaIntValue (see next section), but if multiple spacing attributes are specified, all values are stored in an oaInt1DTblValue or an oaInt2DTblValue. This is described further in the following sections.

A single, simple LAYER SPACING attribute is stored in OpenAccess using an oaIntValue. If there are other more complicated SPACING attributes specified for a layer, the simple spacing must be stored as the default value (index:0 or rowIndex:0) of the table used for the complicated spacing attributes.

RANGE minWidth maxWidth

The width dependent LAYER SPACING attribute maps to OpenAccess using an oaInt1DTblValue. The values are stored in an oa1DLookupTbl<oaInt4, oaInt4>, with header:width, and value:minSpacing. The maxWidth value is not stored in OpenAccess. It is assumed that spacing ranges are continuous.

If there are other more complicated SPACING attributes specified for the layer with LENGTHTHRESHOLD, the width dependant spacing is stored as the default value (colIndex:max) of the table that is used for the complicated spacing attributes.

USELENGTHTHRESHOLD

The length dependent LAYER SPACING attributes are stored in OpenAccess by using an oaInt2DTblValue. The values are stored in an oa2DLookupTbl<oaInt4, oaInt4, oaInt4>, with rowHeader:width, colHeader:length, and value:minSpacing. If RANGE is not specified, the values are stored as the default values ( rowIndex 0).

If LENGTHTHRESHOLD spacing rules are present, all SPACING rules are grouped together in an oaInt2DTblValue, indexed by width and length. LENGTHTHRESHOLD is a maximum length limit, so the minSpacing values are stored in the colIndex before the colIndex for the length value. This means that minSpacing values for the first length value (colIndex 1) are stored in colIndex 0, and values for a second length value in colIndex 1. Additional length values are indexed accordingly. The colHeader, or length, for colIndex 0 is always 0. This means that minSpacing values for SPACING attributes without a LENGTHTHRESHOLD keyword are stored in the last colIndex.

RANGE minWidth2 maxWidth2 RANGE minWidth2 maxWidth2

If multiple RANGE (width) based rules are present, the values are grouped together in an oaInt1DTblValue, which is indexed by width. Multiple range-to-range spacing statements per routing layer populate a oaInt2DTblValue integer table. An oacWidthLengthTableType enum uses oacWidthParallelRunLengthTableType values if the table contains width and length, and uses oacWidthWidthTableType values if the table is indexed by the widths of both shapes for the RANGE/RANGE syntax.

INFLUENCE value [RANGE stubMinWidth stubMaxWidth]

The SPACING INFLUENCE attribute is stored using an oacMinProtrudedProximitySpacing constraint in the foundryRules constraint group. The values for these rules are stored together in an oaInt2DTblValue, with the width in the column, and the influence length in the row. The stubMaxWidth from RANGE is stored as a parameter of oacWidthConstraintParamType on the constraint. If multiple max ranges encountered, we will take the largest value and issue a warning.

LENGTHTHRESHOLD maxLength [RANGE minWidth maxWidth]

This function creates a 2D table from the SPACING rules for this layer.

ENDOFLINE eolWidth WITHIN eolWithin
     [PARALLELEDGE parSpace WITHIN parWithin [TWOEDGES]]

The ENDOFLINE SPACING is stored in OpenAccess using an oaIntValue for the oacMinEndOfLineSpacing constraint in the foundryRules constraint group. The eolWidth, eolWithin, parSpace, and parWithin values map to oaIntValues for constraint parameters according to the following table.

Value Constraint Parameter Type
eolWidth oacWidthConstraintParamType
eolWithin oacDistanceConstraintParamType
parSpace oacParallelEdgeSpaceConstraintParamType
parWithin oacParallelEdgeWithinConstraintParamType

If the TWOEDGES keyword is specified, an oaIntValue with the value of 2 is stored in the oacCountConstraintParamType constraint parameter. If TWOEDGES is not specified, the parameter is created with a value of 1. If PARALLELEDGE itself is not specified, the parameter oacCountConstraintParamType is not created.

SAMENET [PGONLY]

In dataModel 4 and later, the optional PGONLY attribute maps to OpenAccess as an oacPGNetConstraintParamType parameter with the value of true. Prior to dataModel 4, the PGONLY parameter does not map to OpenAccess, and a warning is issued if it is found in this context in LEF.

NOTCHLENGTH minNotchLength

The minNotchSpacing value maps to OpenAccess using an oaIntValue for the oacMinNotchSpacing constraint in the foundryRules constraint group. The minNotchLength value maps to an oaIntValue on the oacNotchLengthConstraintParamType parameter on the oacMinNotchSpacing constraint.

The SPACING minNotchSpacing is stored in OA using an oaIntValue for the oacMinNotchSpacing constraint in the foundryRules constraint group.

The NOTCHLENGTH minNotchLength is stored as an oaIntValue for the oacNotchLengthConstraintParmType constraint parameter.

ENDOFNOTCHWIDTH endOfNotchWidth
     NOTCHSPACING minNotchSpacing NOTCHLENGTH minNotchLength

The endOfNotchWidth value maps to an oaIntValue for the oacNotchWidthConstraintParamType parameter of the oacMinEndOfNotchSpacing constraint. The minNotchSpacing value maps to an oaIntValue for the oacNotchSpacingConstraintParamType parameter of the constraint. The minNotchLength value maps to an oaIntValue for the oacNotchLengthConstraintParmType parameter of the constraint.

SPACINGTABLE

The SPACINGTABLE attribute is stored using the oacMinSpacing constraint in an OR constraint group in foundryRules constraint group. The values are stored in an oa2DLookupTbl with the row header equal to width, the column header equal to length, and the value equal to spacing. The result is exactly the same table as specified by a combination of RANGE and LENGTHTHRESHOLD attributes, which is described in the previous section.

PARALLELRUNLENGTH {length} ...
    {WIDTH width {spacing} ...} ...

SPACINGTABLE INFLUENCE {WIDTH width WITHIN distance SPACING spacing} ...

The SPACINGTABLE INFLUENCE attribute is stored in OpenAccess using an oaInt2DTblValue for the oacMinProximitySpacing constraint in the foundryRules constraint group. The values are stored in an oa2DLookupTbl, with the row index equal to width, column index equal to distance, and the value equal to spacing.

TWOWIDTHS {WIDTH width [PRL runLength] {spacing} ...} ...

The TWOWIDTHS statement maps to an oaInt2DTblValue using an oaWidthLengthTableType enumeration to designate that the table represents multiple width and parallel run length values. The table is constructed so that row header entries are WIDTH values and column header entries are PRL values. If a TWOWIDTH statement is constructed without specifying PRL, the corresponding column header has the oacNullIndex value. The semantics for the table are as described in the LEF 5.7 reference, and the mapping of the table values has a one-to-one correspondence to the LEF table.

For example, the following TWOWIDTHS statement is followed by the resulting 2D lookup table in OpenAccess and an explanation of usage.

  SPACINGTABLE TWOWIDTHS
  #               width=0.00    0.25  1.50  3.00
  #               prl=none      0.00  1.50  3.00
  #               ==============================
  WIDTH 0.0             0.15    0.20  0.50  1.00
  WIDTH 0.25 PRL 0.0    0.20    0.25  0.50  1.00
  WIDTH 1.50 PRL 1.50   0.50    0.50  0.60  1.00
  WIDTH 3.00 PRL 3.00   1.00    1.00  1.00  1.00
2D Lookup Table With Values in Databse Units
# prl=null prl=0 prl=1500 prl=3000
w=0 150 200 500 1000

Prior to dataModel 4, the PRL attribute is not stored in OpenAccess, and a warning is issued if the PRL keyword is found in LEF.

THICKNESS distance

The LAYER THICKNESS attribute is stored in an oaIntProp named THICKNESS on the oaPhysicalLayer.

WIDTH defaultWidth

The LAYER WIDTH attribute maps to an oaIntValue for the oacMinWidth constraint in the LEFDefaultRouteSpec constraint group.

If MINWIDTH is not specified, the WIDTH value also maps to the oacMinWidth constraint in the foundryRules group.

WIREEXTENSION value

The LAYER WIREEXTENSION attribute maps to an oaIntValue for the oacMinWireExtension constraint in the LEFDefaultRouteSpec constraint group.