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.
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 |
The simple ACCURRENTDENSITY rule is stored in OpenAccess as an oaFloatValue for the oaPhysicalLayer attribute determined from the previous table.
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.
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.
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.
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 |
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.
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).
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).
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).
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.
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.
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.
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.
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).
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).
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.
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.
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.
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.
See PROPERTIES
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.
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.
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.
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.
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.
The LAYER CAPACITANCE attribute is stored in an oaFloatProp named CAPACITANCE
on the oaPhysicalLayer.
The LAYER CAPMULTIPLIER attribute is stored in an oaIntProp named CAPMULTIPLIER
on the oaPhysicalLayer.
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.
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.
The LAYER DIAGMINEDGELENGTH attribute is stored using the oacMinDiagonalEdgeLength constraint in the foundryRules constraint group.
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.
The LAYER DIAGSPACING attribute is stored using an oaIntValue for the oacMinDiagonalSpacing constraint in the foundryRules constraint group.
The LAYER DIAGWIDTH attribute maps to the oacMinDiagonalWidth constraint in the LEFDefaultRouteSpec constraint group.
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.
The LAYER EDGECAPACITANCE attribute is stored in an oaFloatProp named EDGECAPACITANCE
on the oaPhysicalLayer.
The LAYER FILLACTIVESPACING attribute maps to OpenAccess using an oaIntValue for the oacMinFillPatternSpacing constraint in the foundryRules constraint group.
The LAYER HEIGHT attribute is stored in an oaIntProp named HEIGHT
on the oaPhysicalLayer.
The LAYER MAXWIDTH attribute is stored in OpenAccess using an oaIntValue for the oacMaxWidth constraint in the foundryRules constraint group.
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.
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.
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.
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.
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.
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.
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.
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 |
The LAYER RESISTANCE attribute is stored in an oaFloatProp named RESISTANCE
on the oaPhysicalLayer.
The LAYER SHRINKAGE attribute is stored in an oaFloatProp named SHRINKAGE
on the oaPhysicalLayer.
[ 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.
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.
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.
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.
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.
This function creates a 2D table from the SPACING rules for this layer.
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.
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.
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.
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.
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.
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.
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.
The LAYER THICKNESS attribute is stored in an oaIntProp named THICKNESS
on the oaPhysicalLayer.
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.
The LAYER WIREEXTENSION attribute maps to an oaIntValue for the oacMinWireExtension constraint in the LEFDefaultRouteSpec constraint group.
Copyright © 2003-2008 Cadence Design Systems, Inc.
All rights reserved.