oaLayerHalo Class Reference

Inheritance diagram for oaLayerHalo:

oaBlockage oaFig oaBlockObject oaDesignObject oaObject


Public Methods

oaLayerNum getLayerNum () const
oaLayerHeadergetLayerHeader () const
void getOffsets (oaDist &left, oaDist &bottom, oaDist &right, oaDist &top) const
void setLayerNum (oaLayerNum layerNum)
void setOffsets (oaDist left, oaDist bottom, oaDist right, oaDist top)

Static Public Methods

oaLayerHalo * create (oaBlockObject *owner, oaBlockageType type, oaLayerNum layer, oaDist left=0, oaDist bottom=0, oaDist right=0, oaDist top=0)

Detailed Description

A layer halo is a type of blockage associated with an instance or a master, representing an area on a given layer 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 oaLayerHalo applies around the perimeter of an instance. It prohibits routing on the given layer parallel to the edge of the instance, but it allows routing perpendicular to the instance edge. This prevents long lines being routed parallel to the edge of the instance, which causes cross-coupling, but it allows routing straight in to pins. Since power lines do not switch, they can be routed anywhere within the halo area.

Note that the oaLayerHalo 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 oaLayerBlockage object to describe a halo with a fixed shape which can be rectilinear or non-rectilinear.


Member Function Documentation

oaLayerHalo * oaLayerHalo::create oaBlockObject *    owner,
oaBlockageType    type,
oaLayerNum    layer,
oaDist    left = 0,
oaDist    bottom = 0,
oaDist    right = 0,
oaDist    top = 0
[static]
 

This is the constructor for a layer halo.

Parameters:
owner The instance or prBoundary around which to create the blockage
type The type of blockage to create. Note: an oaLayerHalo should not have a blockageType of oacPlacementBlockageType.
layer The layer on 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:
oacInvalidLayerForLayerBlockage 
oacInvalidTypeForLayerBlockage 
oacInvalidBlockageOwner 

oaLayerHeader * oaLayerHalo::getLayerHeader   const
 

This function returns the layerHeader for the layer of this blockage.

oaLayerNum oaLayerHalo::getLayerNum   const
 

This function returns the layer number associated with this blockage.

void oaLayerHalo::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

void oaLayerHalo::setLayerNum oaLayerNum    layerNum
 

This function moves this blockage to the specified layer. The new layer is created if it does not exist. The old layer is deleted if it becomes empty. A layer may not be set on placement blockages.

Parameters:
layerNum The layer number
Exceptions:
oacInvalidLayerForLayerBlockage 

void oaLayerHalo::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


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

Return to top of page