oaRoute Class Reference

Inheritance diagram for oaRoute:

oaConnFig oaFig oaBlockObject oaDesignObject oaObject


Public Methods

oaRouteStatus getRouteStatus () const
oaBlockObjectgetBeginConn () const
oaBlockObjectgetEndConn () const
oaUInt4 getNumObjects () const
void getObjects (oaRouteObjectArray &objects) const
oaBoolean isGlobal () const
oaBoolean isContiguous () const
oaBoolean hasGuide () const
oaBoolean hasDefaultConstraintGroup () const
oaConstraintGroupgetDefaultConstraintGroup () const
void setRouteStatus (const oaRouteStatus &routeStatus)
void setBeginConn (oaBlockObject *object)
void setEndConn (oaBlockObject *object)
void setGlobal (oaBoolean global)
void setObjects (const oaRouteObjectArray &objects)
void unsetBeginConn ()
void unsetEndConn ()
void unsetObjects ()
void destroyObjects ()

Static Public Methods

oaRoute * create (oaBlock *block, oaNet *net=NULL, oaBoolean isGlobal=false, oaRouteStatus stat=oacNormalRouteStatus)

Public Types

enum  { dtIndex = oacRouteDataType }

Detailed Description

The oaRoute class represents a physical point-to-point connection that is part of a wire. An oaRoute contains a sequence of objects that may describe both the routing segments on given layers and the vias between those layers. An oaRoute (Route) may contain segments on multiple layers, but a Route may not branch.

Routes are used to represent the symbolic routing used by high capacity routers. They specify end-point connected routes that also indicate the objects they connect. Other routing may be geometric, which often is used for power and ground nets and other hand crafted nets. Geometric routing is defined with oaShapes and oaVias directly connected to their net without the use of an oaRoute.

Routes can either represent global routes or detailed routes. Global routes are approximate routes that are routed through a sequence of Gcell grid locations. Detailed routes express the complete route geometry with the exact coordinates of each segment and via.

The objects in a Route may be instances of oaPathSeg, oaVia, and oaGuide. These objects are created separately from the Route and then are added to the Route. Callers can set or retrieve the elements of a Route using an oaRouteObjectArray.

Routes may specify the two objects that they connect. These BeginConn and EndConn objects must be one of:

Routes should be constructed so that the end points and layers of each object match those of the adjacent object. The database checks this status with the isContiguous member function.

Routes may have a default oaConstraintGroup associated with them that specifies the rules that the router follows when the oaRoute is constructed. Routing rules can be in the default constraint group of the route itself, or routing rules can be on the oNet, oaBlock, or oaDesign to which the Route belongs. Routing rules can also be in the default constraint group of the oaBoundary that contains the oaRoute.

A design may satisfy a connection on a net by abutment, where no additional wire is needed because the pins to be connected overlap. In this case the design should indicate that the connection is fully routed by creating an empty route. In the case that there are abutted pins and also additional routing on the net, this means there should be two empty routes (for the two abutted pins) that connect to a steiner. An additional non-empty route would also connect to that steiner.

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


Member Function Documentation

oaRoute * oaRoute::create oaBlock *    block,
oaNet *    net = NULL,
oaBoolean    isGlobal = false,
oaRouteStatus    stat = oacNormalRouteStatus
[static]
 

This function creates a route with the specified attributes.

An exception is thrown if a net is specified but it is from a different block than the one specified.

Parameters:
block The block in which the route is to be created
net The net to which the route may be attached
isGlobal A boolean indicating whether it should be a global route
stat The initial routing status to be assigned to the new route
Exceptions:
oacNetFigNotInSameBlock 

void oaRoute::destroyObjects  
 

This function first disassociates this route from all of its objects and then destroys all the objects that were part of it.

oaBlockObject * oaRoute::getBeginConn   const
 

This function returns the beginning connection object of this route. If this route does not have a beginning connection object, NULL is returned.

A beginning connection object may be an oaTerm, oaInstTerm, oaSteiner, oaPin, oaShape or oaVia.

oaConstraintGroup * oaRoute::getDefaultConstraintGroup   const
 

This function returns the constraint group for this route. If no constraints exist on the route, a new constraint group is created.

oaBlockObject * oaRoute::getEndConn   const
 

This function returns the end connection object of this route. If this route does not have a end connection object, NULL is returned.

An end connection object may be an oaTerm, oaInstTerm, oaSteiner, oaPin, oaShape or oaVia.

oaUInt4 oaRoute::getNumObjects   const
 

This function returns the number of objects that this route contains.

void oaRoute::getObjects oaRouteObjectArray &    objects const
 

This function retrieves the ordered set of objects associated with this route and returns them via the specified 'objects' array.

Parameters:
objects A reference to an oaRouteObjectArray object to be populated

oaRouteStatus oaRoute::getRouteStatus   const
 

This function returns the route status of this route.

oaBoolean oaRoute::hasDefaultConstraintGroup   const
 

This function returns a boolean indicating whether there are constraints associated with this route. Constraints in this constraint group apply to the objects in the oaRoute's oaRouteArray, namely its oaPathSegs, oaVias, and oaGuides.

oaBoolean oaRoute::hasGuide   const
 

This function returns a boolean indicating whether or not this route has one or more guides in it.

oaBoolean oaRoute::isContiguous   const
 

This function returns a Boolean value indicating whether all objects in the route, which may be oaPathSegs, oaVias and/or oaGuides, are contiguous. Since a route can span multiple layers, the contiguity of a route is determined on the basis of the points at which each adjacent object connects to the next and the layer where each connection is made.

Specifically, this function returns true if the end point of each object matches the begin point of the next object on the route and if the layers of objects at their connection points match.

Note that this function returns true for single-object routes or zero-object (empty) routes.

For vias, the via origin is both the begin and end point. The layer usage depends on the via direction set on the via (see oaVia::setDirection). For example, if the direction is set to oacLayer1ToLayer2ViaDirection, the via's layer1 must match the element before the Via and its layer2 must match the element after it. This function returns false for vias that are not bound to a viaDef.

For guides, if the begin/end layer has not been specified, this function assumes that the guide begin/end layer matches any layer specified for the adjacent object.

oaBoolean oaRoute::isGlobal   const
 

This function returns true if this is a global route, false otherwise.

void oaRoute::setBeginConn oaBlockObject *    object
 

This function sets the beginning connection object of this route to the specified object. If this route already has a beginning connection object, it is disconnected first.

A beginning connection object may be an oaTerm, oaInstTerm, oaSteiner, oaPin, oaShape or oaVia.

Parameters:
object The object to be connected to the begin of this route.
Exceptions:
oacInvalidRouteConnObj 
oacRouteAndConnNotInSameBlock 
oacCannotSetRouteObjAsRouteConn 

void oaRoute::setEndConn oaBlockObject *    object
 

This function sets the end connection object of this route to the specified object. If this route already has a end connection object, it is disconnected first.

An end connection object may be an oaTerm, oaInstTerm, oaSteiner, oaPin, oaShape or oaVia.

Parameters:
object The object to be connected to the end of this route.
Exceptions:
oacInvalidRouteConnObj 
oacRouteAndConnNotInSameBlock 
oacCannotSetRouteObjAsRouteConn 

void oaRoute::setGlobal oaBoolean    global
 

This function sets the global attribute of this route to the specified value.

void oaRoute::setObjects const oaRouteObjectArray &    objects
 

This function sets the objects of this route to the specified objects. If the route had any existing objects, they are removed from the route first. If the route is connected to a net, each object in the new set of route objects is effectively considered to be on that net. Only pathSegs, vias and guides are qualified to become a route object and they need to be in the same block as the route. A pathSeg or via that implements a pin is disqualified to be a route object. A pathSeg or via that is currently acting as a route connecting object also cannot become part of a route. If both the route and the object being added to it are connected to a net, the net needs to be the same. Also, the set of objects specified to be added to the route should be unique.

Parameters:
objects A reference to an oaRouteObjectArray object holding the new set of objects for this route
Exceptions:
oacObjectNotValidForRoute 
oacRouteAndObjectNotInSameBlock 
oacCannotAddPinFigToRoute 
oacCannotAddRouteConnFigToRoute 
oacCannotAddFigToRouteOnDifferentNet 
oacCannotAddSameFigToRouteAgain 

void oaRoute::setRouteStatus const oaRouteStatus &    routeStatus
 

This function sets the route status attribute of this route to the specified value.

void oaRoute::unsetBeginConn  
 

This function attempts to disconnect this route from its beginning connection object. If this route does not have a beginning connection object, this function does nothing.

void oaRoute::unsetEndConn  
 

This function disconnects this route from its end connection object. If this route does not have a end connection object, this function does nothing.

void oaRoute::unsetObjects  
 

This function disassociates this route from all of its objects. If the route was connected to a net, the disassociated objects acquire the route's net as part of the disassociation process.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
dtIndex 


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

Return to top of page