oaCMap Class Reference

Inheritance diagram for oaCMap:

oaBlockObject oaDesignObject oaObject


Public Methods

oaBoolean isSupplyDemandValid () const
void deleteSupplyDemand ()
void getXYIndex (const oaPoint &point, oaUInt4 &xIndex, oaUInt4 &yIndex)
void getGCell (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 &horizontalSupply, oaUInt4 &verticalSupply, oaUInt4 &upSupply, oaUInt4 &horizontalDemand, oaUInt4 &verticalDemand, oaUInt4 &upDemand) const
oaUInt4 getHorizontalSupply (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum) const
oaUInt4 getVerticalSupply (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum) const
oaUInt4 getUpSupply (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum) const
oaUInt4 getHorizontalDemand (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum) const
oaUInt4 getVerticalDemand (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum) const
oaUInt4 getUpDemand (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum) const
void setGCell (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 horizontalSupply, oaUInt4 verticalSupply, oaUInt4 upSupply, oaUInt4 horizontalDemand, oaUInt4 verticalDemand, oaUInt4 upDemand)
void setHorizontalSupply (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 horizontalSupply)
void setVerticalSupply (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 verticalSupply)
void setUpSupply (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 upSupply)
void setHorizontalDemand (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 horizontalDemand)
void setVerticalDemand (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 verticalDemand)
void setUpDemand (oaUInt4 xIndex, oaUInt4 yIndex, oaLayerNum layerNum, oaUInt4 upDemand)
oaUInt4 getNumXGCell () const
oaUInt4 getNumYGCell () const
oaTimeStamp getTimeStamp () const

Static Public Methods

oaCMap * getCMap (oaBlock *block)

Public Types

enum  { dtIndex = oacCMapDataType }

Detailed Description

The oaCMap class implements a congestion map for use by global routers. The congestion map is a two-dimensional grid that exists for each layer in the design. Each grid cell on each layer is called a GCell. See the class oaGCellPattern for a discussion of how the grid size and coordinates are determined.

Each GCell can hold supply and demand counts for routes that traverse the GCell horizontally, vertically, and up/down through vias. All of these GCell statistics are set and managed by applications. The database does not calculate them automatically.

For all of the functions below that get statistics for a specified GCell, the function will return values of oacNullIndex for any value that is not set. If the specified layer has not had any values set, it throws the exception oacCMapLayerNotExists.

The oaCMap class can be observed by deriving from oaObserver<oaCMap>.


Member Function Documentation

void oaCMap::deleteSupplyDemand  
 

This function sets the invalid flag of the congestion map. All the existing supply and demand values are deleted. The congestion map remains invalid until the next set of values for some GCell.

oaCMap * oaCMap::getCMap oaBlock *    block [static]
 

This function gets the congestion map in the specified design. If the congestion map exists, it is returned. If the congestion map does not exist, it is created. There is only one congestion map per design.

void oaCMap::getGCell oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4 &    horizontalSupply,
oaUInt4 &    verticalSupply,
oaUInt4 &    upSupply,
oaUInt4 &    horizontalDemand,
oaUInt4 &    verticalDemand,
oaUInt4 &    upDemand
const
 

This function gets all of the GCell attributes for the specified GCell in a single call.

Exceptions:
oacCMapLayerNotExists 

oaUInt4 oaCMap::getHorizontalDemand oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum
const
 

This function gets the horizontal demand value from the gCell at the specified X,Y index.

Exceptions:
oacCMapLayerNotExists 

oaUInt4 oaCMap::getHorizontalSupply oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum
const
 

This function gets the horizontal supply value from the specified gCell.

Exceptions:
oacCMapLayerNotExists 

oaUInt4 oaCMap::getNumXGCell   const
 

This function gets the total number of gCells in the X direction. This number is determined by the oaGCellPattern objects with isHorizontal set. If there are no such oaGCellPatterns, oacNullIndex is returned.

oaUInt4 oaCMap::getNumYGCell   const
 

This function gets the total number of gCells in the Y direction. This number is determined by the oaGCellPattern objects with isHorizontal unset. If there are no such oaGCellPatterns, oacNullIndex is returned.

oaTimeStamp oaCMap::getTimeStamp   const
 

This function gets the timeStamp of the congestion map.

oaUInt4 oaCMap::getUpDemand oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum
const
 

This function gets the upDemand value from the gCell at the specified X,Y index.

Exceptions:
oacCMapLayerNotExists 

oaUInt4 oaCMap::getUpSupply oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum
const
 

This function gets the upSupply value from the gCell at the specified X,Y index.

Exceptions:
oacCMapLayerNotExists 

oaUInt4 oaCMap::getVerticalDemand oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum
const
 

This function gets the verticalDemand value from the gCell at the specified X,Y index.

Exceptions:
oacCMapLayerNotExists 

oaUInt4 oaCMap::getVerticalSupply oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum
const
 

This function gets the verticalSupply value from the gCell at the specified X,Y index.

Exceptions:
oacCMapLayerNotExists 

void oaCMap::getXYIndex const oaPoint &    point,
oaUInt4 &    xIndex,
oaUInt4 &    yIndex
 

This function returns the GCell indexes for the GCell containg the specified point. If the point lies outside the coordinates of the GCell grid, the the values returned are oacNullIndex.

oaBoolean oaCMap::isSupplyDemandValid   const
 

This function gets the flag indicating whether this congestion map is valid. It is valid if any GCell statistics were set since the last change to a GCellPattern or since a call to oaCMap::deleteSupplyDemand.

void oaCMap::setGCell oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    horizontalSupply,
oaUInt4    verticalSupply,
oaUInt4    upSupply,
oaUInt4    horizontalDemand,
oaUInt4    verticalDemand,
oaUInt4    upDemand
 

This function sets all of the GCell attributes for the specified GCell in a single call.

void oaCMap::setHorizontalDemand oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    horizontalDemand
 

This function sets the horizontalDemand value to the gCell at the specified X,Y index.

void oaCMap::setHorizontalSupply oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    horizontalSupply
 

This function sets the horizontalSupply value to the gCell at the specified X,Y index.

void oaCMap::setUpDemand oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    upDemand
 

This function sets the upDemand value to the gCell at the specified X,Y index.

void oaCMap::setUpSupply oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    upSupply
 

This function sets the upSupply value to the gCell at the specified X,Y index.

void oaCMap::setVerticalDemand oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    verticalDemand
 

This function sets the verticalDemand value to the gCell at the specified X,Y index.

void oaCMap::setVerticalSupply oaUInt4    xIndex,
oaUInt4    yIndex,
oaLayerNum    layerNum,
oaUInt4    verticalSupply
 

This function sets the verticalSupply value to the gCell at the specified X,Y index.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
dtIndex 


The documentation for this class was generated from the following files:

Return to top of page