oaPRBoundary Class Reference

Inheritance diagram for oaPRBoundary:

oaBoundary oaFig oaBlockObject oaDesignObject oaObject


Public Methods

oaBoolean hasCoreBoxSpec () const
oaBoolean hasIOBox () const
void getCoreBoxSpec (oaCoreBoxSpec &spec) const
void getIOBox (oaBox &box) const
void setCoreBoxSpec (const oaCoreBoxSpec &spec)
void setIOBox (const oaBox &box)
void removeCoreBoxSpec ()
void removeIOBox ()
oaCollection< oaBlockage, oaPRBoundary > getBlockagesOwnedBy () const

Static Public Methods

oaPRBoundary * create (oaBlock *block, const oaPointArray &points, const oaString *edgeNames=NULL)
oaPRBoundary * find (const oaBlock *block)
oaPRBoundary * create (oaBlock *block, const oaPointArray &points, const oaStringArray &edgeNames)

Detailed Description

The oaPRBoundary class is used as the boundary of a block for place-and-route applications. In a top-down design flow, it is commonly passed down to constrain the area in which the block's contents are placed. Any shape or instance created for the block should be enclosed within the PRBoundary. In a bottom-up design flow, a PRBoundary is used to indicate the primary extent of the block's contents.

For cell placement that is directed by sites in oaRows, the oaPRBoundary determines the aspect of the cell that must align with the site. For placement near a placement blockage, it is the oaPRBoundary that is excluded from the blockage.

Some uses of the oaPRBoundary will be superseded by an oaSnapBoundary for non-rectangular oaPRBoundaries. The oaSnapBoundary will provide an unambiguous lower left corner that will control the exact placement location.

oaPRBoundaries for blocks and chips may have an associated oaCoreBoxSpec. This defines a rectangular grid of sites within the oaPRBoundary where cells may be placed. It can also have an IO box specified, which together with the outline of the core box indicates the area for the IO cells.


Member Function Documentation

oaPRBoundary * oaPRBoundary::create oaBlock *    block,
const oaPointArray &    points,
const oaStringArray &    edgeNames
[static]
 

This function creates a new PR boundary object in the specified block with the specified attributes. The specified pointArray is checked to verify that there are at least three points and no collinear or coincident points. This function throws an exception if there is already a PR boundary in the specified block.

Note that the number of edge names must be equal to the number of points or an oacBoundaryInvalidEdgeNames exception is thrown.

Note that the number of edge names is assumed to be equal to the number of points.

If the PR boundary edgeNames array is empty, the edges are automatically named using the form EDGE_n, where n starts at zero and increments by one.

Note: The order of the points actually set on the oaPRBoundary is not guaranteed to be the same as the order of points passed to the create() function. Consequently, the order of points returned by a subsequent oaPRBoundary::getPoints() may be different from the order of points specified in points.

Parameters:
block The block in which to create the new oaPRBoundary object.
points The points of the new oaPRBoundary object.
edgeNames The boundary edge names; If you supply an empty array, the edges are automatically named using the form EDGE_n, where n starts at zero and increments by one.
Returns:
A pointer to an oaPRBoundary object
Exceptions:
oacBoundaryHasExtraPoints 
oacBoundaryTooFewPoints 
oacPRBoundaryExists 
oacBoundaryInvalidEdgeNames 

oaPRBoundary * oaPRBoundary::create oaBlock *    block,
const oaPointArray &    points,
const oaString *    edgeNames = NULL
[static]
 

This function is deprecated. Refer to the oaPRBoundary::create function that takes a reference to an oaStringArray for the edgeNames.

This function creates a new PR boundary object in the specified block with the specified attributes. The specified pointArray is checked to verify that there are at least three points and no collinear or coincident points. This function throws an exception if there is already a PR boundary exists in the specified block. If the boundary edgeNames are not supplied, the edges are automatically named, using the form EDGE_n, where n starts at zero and increments by one for each edge.

Note: The order of the points actually set on the oaPRBoundary is not guaranteed to be the same as the order of points passed to the create() function. Consequently, the order of points returned by a subsequent oaPRBoundary::getPoints() may be different from the order of points specified in points.

Parameters:
block The block in which to create the new oaPRBoundary object.
points The points of the new oaPRBoundary object.
edgeNames The boundary edge names; if omitted, the edges are automatically named, using the form EDGE_%d, where d starts at zero and increments by one
Returns:
A pointer to an oaPRBoundary object.
Exceptions:
oacBoundaryHasExtraPoints 
oacBoundaryTooFewPoints 
oacPRBoundaryExists 

oaPRBoundary * oaPRBoundary::find const oaBlock *    block [static]
 

This function searches the specified block looking for a oaPRBoundary. If found, the boundary is returned. Otherwise, NULL is returned.

Parameters:
block The block in which to search.

oaCollection< oaBlockage, oaPRBoundary > oaPRBoundary::getBlockagesOwnedBy   const
 

This function returns a collection of derived blockages owned by this boundary.

void oaPRBoundary::getCoreBoxSpec oaCoreBoxSpec &    spec const
 

This function fills in the specified oaCoreBoxSpec with the CoreBox attributes for this oaPRBoundary. These define a grid of sites for placing lower level cells. See oaCoreBoxSpec for details.

Parameters:
spec The oaCoreBoxSpec object to fill in.

void oaPRBoundary::getIOBox oaBox &    box const
 

This function fills in the given oaBox with the data for the IO box associated with this oaPRBoundary object.

Parameters:
box The bounding box to fill in with the IO box coordinates.

oaBoolean oaPRBoundary::hasCoreBoxSpec   const
 

This function returns a boolean indicating if an oaCoreBoxSpec has been set on this oaPRBoundary. See oaCoreBoxSpec for details.

oaBoolean oaPRBoundary::hasIOBox   const
 

This function returns a boolean indicating if an ioBox has been set on this oaPRBoundary. See the explanation of IO box in the class description.

void oaPRBoundary::removeCoreBoxSpec  
 

This function removes the oaCoreBoxSpec from this oaPRBoundary object. See oaCoreBoxSpec for details.

void oaPRBoundary::removeIOBox  
 

This function removes the IO box from this oaPRBoundary object. See the class description for details of the IO box.

void oaPRBoundary::setCoreBoxSpec const oaCoreBoxSpec &    spec
 

This function uses the specified oaCoreBoxSpec to set the CoreBox attributes for this oaPRBoundary. These define a grid of sites for placing lower level cells. See oaCoreBoxSpec for details.

An exception is thrown if the oaSiteDef in the oaCoreBoxSpec is from a technology database that is not included in the referenced graph of technology databases for the technology database currently bound to the design containing the boundary.

Parameters:
spec The oaCoreBoxSpec to store on this oaPRBoundary.
Exceptions:
oacSiteDefNotInTechAssociatedWithDesign 

void oaPRBoundary::setIOBox const oaBox &    box
 

This function stores the contents of the given IO box on the oaPRBoundary object. See the class description for details of the IO box.

Parameters:
box The bounding box indicating the IO area on the chip.


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

Return to top of page