MACRO macroName [CLASS { COVER [BUMP] | RING | BLOCK [BLACKBOX | SOFT] | PAD [INPUT | OUTPUT |INOUT | POWER | SPACER | AREAIO] | CORE [FEEDTHRU | TIEHIGH | TIELOW | SPACER | ANTENNACELL | WELLTAP] | ENDCAP {PRE | POST | TOPLEFT | TOPRIGHT | BOTTOMLEFT | BOTTOMRIGHT} } ;] [FOREIGN foreignCellName [pt [orient]] ;] ... [ORIGIN pt ;] [SIZE width BY height ;] [EEQ macroName ;] [LEQ macroName ;] [SYMMETRY {X | Y | R90} ... ;] [SITE siteName [sitePattern] ;] ... [PIN statement] ... [OBS statement] ... [DENSITY statement] ... [PROPERTY propName propVal ;] ... END macroName
The MACRO is stored in OpenAccess as an oaDesign.
The LEF CLASS is stored by using the oaDesign::CellType attribute. The following table shows the mapping between the LEF CLASS and the oaCellTypeEnum values. For ENDCAP CORNER cells, an oaStringProp created on the oaDesign is used to indicate the appropriate corner and to set the oaCellType.
LEF CLASS | oaCellTypeEnum | Attached oaStringProp |
---|---|---|
COVER | oacCellTypeCover | - |
COVER BUMP | oacCellTypeCoverBump | - |
RING | oacCellTypeBlockRing | - |
BLOCK | oacCellTypeBlock | - |
BLOCK BLACKBOX | oacCellTypeBlockBlackBox | - |
BLOCK SOFT | oaSoftMacroCellType | - |
PAD | oacCellTypePad | - |
PAD INPUT | oacCellTypePad | CLASS = INPUT |
PAD OUTPUT | oacCellTypePad | CLASS = OUTPUT |
PAD INOUT | oacCellTypePad | CLASS = INOUT |
PAD POWER | oacCellTypePad | CLASS = POWER |
PAD SPACER | oacCellTypePadSpacer | - |
PAD AREAIO | oacCellTypePadAreaIO | - |
CORE | oacCellTypeCore | - |
CORE FEEDTHRU | oacCellTypeCore | CLASS = FEEDTHRU |
CORE TIEHIGH | oacCellTypeCore | CLASS = TIEHIGH |
CORE TIELOW | oacCellTypeCore | CLASS = TIELOW |
CORE SPACER | oacCellTypeCoreSpacer | - |
CORE ANTENNACELL | oacCellTypeCoreAntenna | - |
ENDCAP PRE | oacCellTypeCoreSpacer | CLASS = PRE |
ENDCAP POST | oacCellTypeCoreSpacer | CLASS = POST |
ENDCAP TOPLEFT | oacCellTypeCorner | name:"CORNER", value:"TOPLEFT" |
ENDCAP TOPRIGHT | oacCellTypeCorner | name:"CORNER", value:"TOPRIGHT" |
ENDCAP BOTTOMLEFT | oacCellTypeCorner | name:"CORNER", value:"BOTTOMLEFT" |
ENDCAP BOTTOMRIGHT | oacCellTypeCorner | name:"CORNER", value:"BOTTOMRIGHT" |
See the GEOM documentation
The LEF EEQ attribute is stored in OpenAccess using the oaDesign::EEQMaster attribute.
The MACRO FOREIGN attribute is stored in OpenAccess as a scalar instance of the cell referred by FOREIGN in a separate cellView. A Boolean property FOREIGNNAME set to TRUE will be added to the design. In addition, if the FOREIGN name and MACRO name are the same, FOREIGN must use N orientation. If there is only one FOREIGN statement with the same name as the macro, all geometries in the design will be shifted by the transform. Multiple FOREIGNs, where one has the same name as the MACRO, are not allowed because this causes a recursive reference: a warning will be issued and the FOREIGN statement will be ignored.
The MACRO LEQ attribute is not stored in OpenAccess.
See the GEOM documentation
The MACRO OBS geometries are stored in OpenAccess by using oaBlockage objects. However, shapes on a TYPE OVERLAP layer are merged and stored in the oaPRBoundary. If shapes on a TYPE OVERLAP layer are not contiguous, an error is output, and the macro is skipped.
The MACRO ORIGIN is used in OpenAccess to determine the lower-left point of the oaSnapBoundary for the oDesign. The lower-left point of the oaSnapBoundary is set to the inverse (negative) of the MACRO ORIGIN.
[TAPERRULE ruleName ;] [DIRECTION {INPUT | OUTPUT [TRISTATE] | INOUT | FEEDTHRU} ;] [USE { SIGNAL | ANALOG | POWER | GROUND | CLOCK } ;] [NETEXPR "netExprPropName defaultNetName" ;] [SUPPLYSENSITIVITY powerPinName ;] [GROUNDSENSITIVITY groundPinName ;] [SHAPE {ABUTMENT | RING | FEEDTHRU} ;] [MUSTJOIN pinName ;] { PORT [CLASS {NONE | CORE} ;] {layerGeometries} ... END ... } [PROPERTY propName propVal ;] ... [ANTENNAPARTIALMETALAREA value [LAYER layerName] ;] ... [ANTENNAPARTIALMETALSIDEAREA value [LAYER layerName] ;] ... [ANTENNAPARTIALCUTAREA value [LAYER layerName] ;] ... [ANTENNADIFFAREA value [LAYER layerName] ;] ... [ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4} ;] ... [ANTENNAGATEAREA value [LAYER layerName] ;] ... [ANTENNAMAXAREACAR value LAYER layerName ;] ... [ANTENNAMAXSIDEAREACAR value LAYER layerName ;] ... [ANTENNAMAXCUTCAR value LAYER layerName ;] ...
See the PIN documentation.
The LEF MACRO PIN object is stored in OpenAccess using an oaTerm object. The relationship between LEF MACRO PIN objects and the corresponding OpenAccess objects is clarified in the Pin Modeling document.
See PROPERTIES
The SITE statement is not mapped to OpenAccess.
The MACRO SIZE statement determines the size of the oaSnapBoundary for the oaDesign. Together with the MACRO ORIGIN, this represents the oaSnapBoundary.
Note that if snapBoundary is missing from the OpenAccess design, oa2lef uses PRBoundary for the snapBoundary. If both snapBoundary and PRBoundary are missing, the translator uses the bounding box as the snapBoundary.
The MACRO SYMMETRY attribute is stored in OpenAccess by using the oaDesign::Symmetry attribute. The following table shows the mapping between LEF SYMMETRY values and the oaSymmetryEnum values.
LEF SYMMETRY | oaSymmetryEnum |
---|---|
None | oacSymmetryNone |
X | oacSymmetryX |
Y | oacSymmetryY |
X Y | oacSymmetryXY |
R90 [X OR Y ...] | oacSymmetryAny |
Copyright © 2003-2008 Cadence Design Systems, Inc.
All rights reserved.