oaCoreBoxSpec Class Reference


Public Methods

 oaCoreBoxSpec ()
 oaCoreBoxSpec (const oaBox &bBox)
 oaCoreBoxSpec (const oaCoreBoxSpec &coreBoxSpec)
oaBoxgetBBox ()
oaBoolean isRowHorizontal () const
oaOffset getRowSpacing () const
oaRowSpacingType getRowSpacingType () const
oaRowFlipType getRowFlipType () const
oaSiteDefgetSiteDef () const
void getSiteDefName (oaString &name)
const oaStringgetSiteDefName () const
void setBBox (const oaBox &bBox)
void setRowHorizontal (oaBoolean isHorizontal)
void setRowSpacing (oaOffset spacing)
void setRowSpacingType (oaRowSpacingType type)
void setRowFlipType (oaRowFlipType flip)
void setSiteDef (oaSiteDef *siteDef)
void setSiteDef (const oaString &name)
oaUInt4 getNumRows () const
void getRowBBox (oaUInt4 rowNum, oaBox &bBox) const
oaCoreBoxSpec & operator= (const oaCoreBoxSpec &coreBoxSpec)
oaBoolean operator== (const oaCoreBoxSpec &other) const
oaBoolean operator!= (const oaCoreBoxSpec &other) const

Detailed Description

A core box is a rectangular area within a block that specifies an array of sites where cells may be placed. It provides a similar floorplanning capability to a set of oaRow objects, but oaCoreBoxes define a series of row locations in a single object and provide options for controlling the relative placement and orientation of those rows.

The core box represents the limits of the core within the given design. At the full chip level, there will be rows of IO pads and peripheral routing that are outside the core box. For a block, the core box is closer in size to the oaPRBoundary for the design.

The core box defines a set of virtual rows that run in either a horizontal or vertical direction. The size of each of these rows is determined by the size of the associated site and the bounding box set on the core box. Virtual rows defined by a core box and explicit rows defined by oaRows can coexist, where the explicit rows typically handle special cases like flip chip I/O's, while the virtual rows flood the core area with the regular standard cells. Explicit oaRow objects for regular standard cells should match the virtual row locations defined by the core box, but the database does not require or enforce this.

The rows are numbered upwards from 0, with the 0th row being the bottom- or left-most row, depending upon whether the core is horizontal or vertical. The bottom or left edge of the 0th row is aligned to the corresponding edge of the core box. Space can be reserved after every row, after every even (0th, 2nd, ...) after every odd (1st, 3rd, ...) row, or all rows can be abutted. The spacing between virtual rows is given by the core row spacing value. Every even row can be flipped, every odd row can be flipped, or none of the rows can be flipped. In unflipped rows, the site orientation is oacR0 for both horizontal and vertical rows. For flipped horizontal rows, the site orientation is oacMX, while for flipped vertical rows, the site orientation is oacMY.


Constructor & Destructor Documentation

oaCoreBoxSpec::oaCoreBoxSpec   [inline]
 

This function constructs an oaCoreBoxSpec class with the default parameter values. These are: a zero-area bounding box at the origin; horizontal rows; no spacing; no flipping; and no site definition.

oaCoreBoxSpec::oaCoreBoxSpec const oaBox &    bBox [inline]
 

This function constructs an oaCoreBoxSpec instance setting its bounding box to the supplied value. All other attributes are set to default values.

oaCoreBoxSpec::oaCoreBoxSpec const oaCoreBoxSpec &    coreBoxSpec
 

This is the copy constructor for the oaCoreBoxSpec object.

Parameters:
coreBoxSpec The coreBoxSpec to copy.


Member Function Documentation

oaBox & oaCoreBoxSpec::getBBox   [inline]
 

This function returns a reference to the bounding box of this oaCoreBoxSpec

oaUInt4 oaCoreBoxSpec::getNumRows   const
 

This function returns the number of rows completely contained within the core box.

oaUInt4 oaCoreBoxSpec::getRowBBox oaUInt4    rowNum,
oaBox &    bBox
const
 

This function fills out the given bounding box with the dimension of the given row number. The row number has to be within this core box, or an exception will be thrown. A site definition must exist to obtain the site dimensions

Parameters:
rowNum The row number.
bBox The bounding box of the specified row.
Exceptions:
oacCoreBoxSpecNoSiteDef 
oacCoreBoxSpecInvalidRowNumber 

oaRowFlipType oaCoreBoxSpec::getRowFlipType   const [inline]
 

This function returns the row flip type.

oaUInt4 oaCoreBoxSpec::getRowSpacing   const [inline]
 

This function returns the row spacing.

oaRowSpacingType oaCoreBoxSpec::getRowSpacingType   const [inline]
 

This function returns the row spacing type.

oaSiteDef * oaCoreBoxSpec::getSiteDef   const [inline]
 

This function returns the site definition associated with this core box. If the site definition is not bound, NULL is returned. Binding of a site definition happens at the time when a core box is set on an oaPRBoundary.

const oaString & oaCoreBoxSpec::getSiteDefName   const [inline]
 

This function returns a constant reference to the site name in this core box.

void oaCoreBoxSpec::getSiteDefName oaString &    name [inline]
 

This function fills in the site name associated with this core box.

Parameters:
name The site name.

oaBoolean oaCoreBoxSpec::isRowHorizontal   const [inline]
 

This function returns true if the row direction is horizontal.

oaBoolean oaCoreBoxSpec::operator!= const oaCoreBoxSpec &    cbs const
 

This is the not-equal-to comparison operator function for the oaCoreBoxSpec object.

Parameters:
cbs The oaCoreBoxSpec to compare to this oaCoreBoxSpec.

oaCoreBoxSpec & oaCoreBoxSpec::operator= const oaCoreBoxSpec &    CoreBoxSpec
 

This function compares this core box with the given core box.

Parameters:
CoreBoxSpec The core box to compare with.

oaBoolean oaCoreBoxSpec::operator== const oaCoreBoxSpec &    cbs const
 

This is the equal-to comparison operator function for the coreBoxSpec.

Parameters:
cbs The oaCoreBoxSpec to compare to this oaCoreBoxSpec.

void oaCoreBoxSpec::setBBox const oaBox &    bBox [inline]
 

This function sets the bounding box of this core box within its design. This determines the size of the entire core box array.

void oaCoreBoxSpec::setRowFlipType oaRowFlipType    flip [inline]
 

This function sets the row flip type for this core box.

Parameters:
flip The row flip type.

void oaCoreBoxSpec::setRowHorizontal oaBoolean    isHorizontal [inline]
 

This function sets the row direction for this core box.

Parameters:
isHorizontal Set to true if the intended direction is horizontal.

void oaCoreBoxSpec::setRowSpacing oaOffset    spacing [inline]
 

This function sets the row spacing for this core box.

Parameters:
spacing The row spacing.

void oaCoreBoxSpec::setRowSpacingType oaRowSpacingType    type [inline]
 

This function sets the row spacing type for this core box.

Parameters:
type The row spacing type.

void oaCoreBoxSpec::setSiteDef const oaString &    name [inline]
 

This function sets the site name for this core box.

Parameters:
name The site name.

void oaCoreBoxSpec::setSiteDef oaSiteDef *    siteDef
 

This function sets the site definition for this core box.

Parameters:
siteDef The site definition.


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

Return to top of page