oaAreaHalo Class Reference

Inheritance diagram for oaAreaHalo:

oaBlockage oaFig oaBlockObject oaDesignObject oaObject


Public Methods

void getOffsets (oaDist &left, oaDist &bottom, oaDist &right, oaDist &top) const
oaBoolean isSoft () const
void setOffsets (oaDist left, oaDist bottom, oaDist right, oaDist top)
void setSoft (oaBoolean soft)

Static Public Methods

oaAreaHalo * create (oaBlockObject *owner, oaDist left=0, oaDist bottom=0, oaDist right=0, oaDist top=0)
oaAreaHalo * find (const oaBlockObject *owner)

Detailed Description

An area halo is a type of blockage associated with an instance or a master, representing an area around the master's prBoundary. The shape of the halo is determined from the shape of the prBoundary of the master and the given offsets, and it is automatically updated to reflect changes in the master's prBoundary.

The area halo is most commonly used to prevent standard cells from being placed within a certain range of an instance. This is usually done to make sure there is enough space to properly route to the (presumably) large number of pins on the side of a block.

Note that the oaAreaHalo object officially supports rectilinear boundaries only i.e. the owner, if it is an oaPRBoundary object should represent a rectilinear figure, or, if it is an explicit instance, the singleton oaPRBoundary for the instance master should be rectilinear. Clients can use an oaAreaBlockage object to describe a halo with a fixed shape which can be rectilinear or non-rectilinear.


Member Function Documentation

static oaAreaHalo * oaAreaHalo::create oaBlockObject *    owner,
oaDist    left = 0,
oaDist    bottom = 0,
oaDist    right = 0,
oaDist    top = 0
[static]
 

This is the constructor for an area halo. Only one area halo can exist per owner object. Attempting to create multiple area halos on an object will result in an exception being thrown.

Note that the left, bottom, right and top halo offset values should be specified relative to the respective edges of the prBoundary in the master. When an instance is transformed, the edges of the instance’s halo follow the edges of the prBoundary, regardless of whether the owner of the halo is the prBoundary or the instance.

Parameters:
owner The instance or prBoundary around which to create the blockage
left The left offset for the halo
bottom The bottom offset for the halo
right The right offset for the halo
top The top offset for the halo
Exceptions:
oacInvalidBlockageOwner 
oacAreaHaloAlreadyExists 

static oaAreaHalo * oaAreaHalo::find const oaBlockObject *    owner [static]
 

This function returns the area halo for the specified owner if one exists.

Parameters:
owner The instance or prBoundary around which to create the blockage
Exceptions:
oacInvalidBlockageOwner 

void oaAreaHalo::getOffsets oaDist &    left,
oaDist &    bottom,
oaDist &    right,
oaDist &    top
const
 

This function returns the offsets for the halo of the blockage

Parameters:
left The left offset for the halo
bottom The bottom offset for the halo
right The right offset for the halo
top The top offset for the halo

oaBoolean oaAreaHalo::isSoft   const
 

This function gets the soft attribute for this derived blockage.

void oaAreaHalo::setOffsets oaDist    left,
oaDist    bottom,
oaDist    right,
oaDist    top
 

This function updates the offsets for the halo of the blockage

Parameters:
left The left offset for the halo
bottom The bottom offset for the halo
right The right offset for the halo
top The top offset for the halo

void oaAreaHalo::setSoft oaBoolean    soft
 

This function sets the soft attribute for this derived blockage. A halo with this attribute indicates that standard cells should not be placed within the halo, but later optimization phases can use the halo area.

Parameters:
soft 


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

Return to top of page