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

Pins

 [PINS numPins ;

 [ [- pinName + NET netName]
      [+ SPECIAL]
      [+ DIRECTION {INPUT | OUTPUT | INOUT | FEEDTHRU}]
      [+ NETEXPR "netExprPropName defaultNetName"]
      [+ SUPPLYSENSITIVITY powerPinName]
      [+ GROUNDSENSITIVITY groundPinName]
      [+ USE {SIGNAL | POWER | GROUND | CLOCK | TIEOFF | ANALOG | SCAN | RESET}]
      [+ ANTENNAPINPARTIALMETALAREA value [LAYER layerName]] ...
      [+ ANTENNAPINPARTIALMETALSIDEAREA value [LAYER layerName]] ...
      [+ ANTENNAPINPARTIALCUTAREA value [LAYER layerName]] ...
      [+ ANTENNAPINDIFFAREA value [LAYER layerName]] ...
      [+ ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4}] ...
      [+ ANTENNAPINGATEAREA value [LAYER layerName]] ...
      [+ ANTENNAPINMAXAREACAR value LAYER layerName] ...
      [+ ANTENNAPINMAXSIDEAREACAR value LAYER layerName] ...
      [+ ANTENNAPINMAXCUTCAR value LAYER layerName] ...
      [ [+ PORT]
          [ + LAYER layerName
              [SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth] pt pt
          | + POLYGON layerName
              [SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth] pt pt pt ...
          | + VIA viaName pt ] ...
          [+ COVER pt orient | FIXED pt orient | PLACED pt orient]
         ] ...
 ; ] ...

 END PINS]

A DEF PIN is stored in OpenAccess as an oaTerm with the name given by pinName. The net is stored as an oaNet, which is created if it doesn't already exist.

If the pinName contains the .extra suffix, this is removed. In OpenAccess, such pins map to the same oaTerm, but the pin shapes are stored using separate oaPin objects.

Physical-only Pins

Some DEF PINS are physical-only objects, which are represented in OpenAccess in the block domain with no corresponding object in the module domain. Verilog exported from a database with physical-only objects will have no data that corresponds to these objects. The physical-only PINS include:

      PIN A, PIN A.extra1, PIN A.extra2, ... (all refer to NET A)
      PIN A[0], PIN A.extra1[0], PIN A.extra2[0] ... (all refer to Net A[0])

numPins

numPins corresponds to the number of explicit terminal objects in the design.

ANTENNAPINPARTIALMETALAREA value [LAYER layerName]
 ANTENNAPINPARTIALMETALSIDEAREA value [LAYER layerName]
 ANTENNAPINPARTIALCUTAREA value [LAYER layerName]
 ANTENNAPINDIFFAREA value [LAYER layerName]
 ANTENNAMODEL {OXIDE1 | OXIDE2 | OXIDE3 | OXIDE4}
 ANTENNAPINGATEAREA value [LAYER layerName]
 ANTENNAPINMAXAREACAR value LAYER layerName
 ANTENNAPINMAXSIDEAREACAR value LAYER layerName
 ANTENNAPINMAXCUTCAR value LAYER layerName

This information corresponds to the antennaData object associated with a terminal. There is an antennaData object for each ANTENNAMODEL used. All value fields are scaled to DBU as areas.

Note: this also includes the ANTENNA*CAR values, which are actually ratios. Applications using these ratios must reverse this scaling before applying them.

The following table shows the correspondence between antennaModel and DEF ANTENNAMODEL:

DEF ANTENNAMODEL oaAntennaModelEnum
OXIDE1 oacDefaultAntennaModel
OXIDE2 oacSecondAntennaModel
OXIDE3 oacThirdAntennaModel
OXIDE4 oacFourthAntennaModel

ANTENNA* values are stored in an oaAntennaArea object, which is appended to one of the oaAntennaAreaArray attributes of the oaAntennaData object. Use the following API to obtain the information:

   void oaTerm::getAntennaData(oaAntennaData &data,
                               const oaAntennaModel &model = oacDefaultAntennaModel)

   const oaAntennaModel &oaAntennaData::getModel() const

   const oaAntennaAreaArray &oaAntennaData::partialMetal() const
   const oaAntennaAreaArray &oaAntennaData::partialMetalSide() const
   const oaAntennaAreaArray &oaAntennaData::partialCut() const
   const oaAntennaAreaArray &oaAntennaData::diff() const
   const oaAntennaAreaArray &oaAntennaData::gate() const
   const oaAntennaAreaArray &oaAntennaData::maxCAR() const
   const oaAntennaAreaArray &oaAntennaData::maxSideCAR() const
   const oaAntennaAreaArray &oaAntennaData::maxCutCAR() const

   oaUInt8 oaAntennaArea::area() const
   oaLayerNum oaAntennaArea::layerNum() const

DIRECTION {INPUT | OUTPUT | INOUT | FEEDTHRU}

The DIRECTION attribute maps to OpenAccess as the oaTermType attribute of the current oaTerm. The correspondence between oaTermType and DEF DIRECTION is shown in the following table.

DEF direction oaTermTypeEnum
INPUT oacInputTermType
OUTPUT oacOutputTermType
INOUT oacInputOutputTermType *
FEEDTHRU oacJumperTermType
- oacTristateTermType
- oacSwitchTermType
- oacUnusedTermType

INOUT is the default DEF PIN direction if unspecified.

NETEXPR "netExprPropName defaultNetName"

The NETEXPR statement maps to OpenAccess as an oaTermConnectDef. The netExprPropName is stored as the assignmentNameIn of an oaAssignmentDef, and the defaultNetName is stored as the defaultNameIn of the oaAssignmentDef. The oaAssignmentDef is then associated with the current oaTerm by the oaTermConnectDef.

PORT

The PORT attributes map to OpenAccess as oaPin objects. The associated shapes and vias are stored as the oaPin figures.

LAYER layerName
     [SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth] pt pt

The LAYER attributes map to OpenAccess as oaRect shapes on the specified layerName. The oaRect shapes are added to the current oaPin figures.

The SPACING attribute maps to OpenAccess as an oacMinSpacing constraint on the shape.

The DESIGNRULEWIDTH attribute does not map to OpenAccess, and a warning is issued if this is detected in DEF.

<pt pt> correspond to the lower left and upper right points of the rectangle figure of a pin object, which is associated with the terminal. <layerName> is the name of the layer associated with the figure.

POLYGON layerName
     [SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth] pt pt pt ...

The POLYGON attributes map to OpenAccess as oaPolygon shapes on the specified layerName. The oaPolygon shapes are added to the current oaPin figures.

The SPACING attribute is stored as an oacMinSpacing constraint on the shape.

The DESIGNRULEWIDTH attribute is not stored in OpenAccess.

VIA viaName pt

A VIA for a DEF PIN maps to OpenAccess as an oaVia with the oaViaDef specified by the viaName and the location specified by pt. The oaVia is added to the current oaPin figures.

COVER pt orient | FIXED pt orient | PLACED pt orient

The COVER, FIXED and PLACED attributes map to OpenAccess as the oaTransform and oaPlacementStatus attributes of the current oaPin. The placementStatus maps as shown in the following table.

DEF placement status oaPlacementStatusEnum
FIXED oacFixedPlacementStatus
PLACED oacPlacedPlacementStatus
COVER oacLockedPlacementStatus
not specified oacUnplacedPlacementStatus

Pins that have shapes, and that have the oacNonePlacementStatus, map to DEF as PLACED. Pins without shapes that have the oacUnplacedPlacementStatus map to DEF with the placement status unspecified.

SUPPLYSENSITIVITY powerPinName
 GROUNDSENSITIVITY groundPinName

For SUPPLYSENSITIVITY the oaTerm specified by powerPinName is stored in the supplySensitivity attribute of the current oaTerm.

For GROUNDSENSITIVITY the oaTerm specified by groundPinName is stored in the groundSensitivity attribute of the current oaTerm.

SPECIAL

The SPECIAL attribute is stored in OpenAccess as the routeMethod attribute of the current oaTerm. The attribute defaults to oacSymbolicRouteMethod, and is set to oacGeometricRouteMethod when the SPECIAL attribute is used. This attribute is included in DEF if the terminal has a geometric routeMethod attribute (value oacGeometricRouteMethod).

USE {SIGNAL | POWER | GROUND | CLOCK | TIEOFF | ANALOG | SCAN | RESET}

The USE attribute maps to OpenAccess as the oaSigType attribute of the current oaTerm. The correspondence between oaSigType and DEF USE is shown in the following table.

DEF USE oaSigTypeEnum
ANALOG oacAnalogSigType
CLOCK oacClockSigType
GROUND oacGroundSigType
POWER oacPowerSigType
RESET oacResetSigType
SCAN oacScanSigType
SIGNAL oacSignalSigType
TIEOFF oacTieoffSigType (oacTieLoSigType or oacTieHiSigType on output)