[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.
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 corresponds to the number of explicit terminal objects in the design.
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
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.
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.
The PORT attributes map to OpenAccess as oaPin objects. The associated shapes and vias are stored as the oaPin figures.
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.
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.
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.
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.
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.
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).
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) |
Copyright © 2003-2008 Cadence Design Systems, Inc.
All rights reserved.