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

Vias

 [VIAS numVias;
   [- viaName

   { [+ VIARULE viaRuleName
       + CUTSIZE xSize ySize
       + LAYERS botmetalLayer cutLayer topMetalLayer
       + CUTSPACING xCutSpacing yCutSpacing
       + ENCLOSURE xBotEnc yBotEnc xTopEnc yTopEnc
       [+ ROWCOL numCutRows NumCutCols]
       [+ ORIGIN xOffset yOffset]
       [+ OFFSET xBotOffset yBotOffset xTopOffset yTopOffset]
       [+ PATTERN cutPattern]
     ]
     | [+ RECT layerName pt pt | POLYGON layerName pt pt pt
  
       ] ... }

   ;] ...

 END VIAS]

Lists the names and geometry definitions of all generated vias in the design. The numVias information corresponds to the number of parameterized via objects in the design.

Turn Vias are recognized and stored in the turnViaNames list. CustomViaDefs are created instead of stdVias for the following cases :

RECT layerName pt pt | POLYGON layerName pt pt pt

The rectangle geometries are determined from certain parameters of a via. These parameter values are obtained using the following API members:

   oaViaDef *oaViaHeader::getViaDef() const
   oaLayer *oaViaDef::getLayer1() const
   oaLayer *oaViaDef::getLayer2() const
   void oaLayer::getName(oaString &name) const
   oaLayerNum oaViaParam::getCutLayer() const

   const oaPoint &oaViaParam::getLayer1Enc() const
   const oaPoint &oaViaParam::getOriginOffset() const
   const oaPoint &oaViaParam::getCutSpacing() const
   oaUInt4 oaViaParam::getCutWidth() const
   oaUInt4 oaViaParam::getCutHeight() const
   oaUInt4 oaViaParam::getCutColumns() const
   oaUInt4 oaViaParam::getCutRows() const
   oaBoolean oaViaParam::getCutPatternVal(oaUInt4 cutRowNum,
                                          oaUInt4 cutColNum ) const

VIARULE viaRuleName
     + CUTSIZE xSize ySize
     + LAYERS botmetalLayer cutLayer topMetalLayer
     + CUTSPACING xCutSpacing yCutSpacing
     + ENCLOSURE xBotEnc yBotEnc xTopEnc yTopEnc
     [+ ROWCOL numCutRows NumCutCols]
     [+ ORIGIN xOffset yOffset]
     [+ OFFSET xBotOffset yBotOffset xTopOffset yTopOffset]

The VIARULE associates a layer and width pair with a set of vias. These vias must already exist in the technology database.

For dataModel 4, the VIARULE is mapped by adding the specified vias to the oacValidRoutingVias constraint in the LEFSpecialRouteSpec constraint group. The value of the constraint is an oaViaTopology2DTblValue that is a two dimensional table of oaViaTopologyArrayValues. This is similar to how the oaViaDef2DTblValue table is used on the oaViaSpec for dataModel 3.

For dataModel 3, the VIARULE statement is mapped by adding the specified vias to the oaViaSpec for the given layer pair. The oaViaSpec has an oaViaDef2DTblValue that is a two dimensional table of oaViaDef arrays that are indexed by the two WIDTH values. If WIDTH is not specified, the specified vias are added to the default value of the table.

PATTERN cutPattern

cutPattern is determined from certain parameters of the via. These parameter values are obtained by using the following API members:

     void oaViaHeader::getViaDefName(oaString &name) const
     void oaStdViaHeader::getParams(oaViaParam &params) const
     const oaPoint &oaViaParam::getLayer1Enc() const
     const oaPoint &oaViaParam::getOriginOffset() const
     const oaPoint &oaViaParam::getCutSpacing() const
     oaUInt4 oaViaParam::getCutWidth() const
     oaUInt4 oaViaParam::getCutHeight() const
     oaUInt4 oaViaParam::getCutColumns() const
     oaUInt4 oaViaParam::getCutRows() const
     oaBoolean oaViaParam::getCutPatternVal(oaUInt4 cutRowNum,
                                            oaUInt4 cutColNum ) const