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

Macro

 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.

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}
   }

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"

DENSITY statement

See the GEOM documentation

EEQ macroName

The LEF EEQ attribute is stored in OpenAccess using the oaDesign::EEQMaster attribute.

FOREIGN foreignCellName [pt [orient]]

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.

LEQ macroName

The MACRO LEQ attribute is not stored in OpenAccess.

OBS statement

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.

ORIGIN pt

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.

PIN statement

    [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.

PROPERTY propName propVal

See PROPERTIES

SITE siteName [sitePattern]

The SITE statement is not mapped to OpenAccess.

SIZE width BY height

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.

SYMMETRY {X | Y | R90} ...

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