oaRouteOptimizer Class Reference


Public Methods

 oaRouteOptimizer ()
 ~oaRouteOptimizer ()
oaUInt8 calcVMSize ()
oaBoolean optimize (oaNet *net, oaUInt4 flags=oacROPreserveGuides|oacROPreserveSteinerPins)
oaBoolean optimize (oaBlock *block, oaUInt4 flags=oacROPreserveGuides|oacROPreserveSteinerPins)

Detailed Description

The oaRouteOptimizer class optimizes the routes on a net according to the specified control options. This class is typically used to create an oaRouteOptimizer object, use the object to optimize the routes for a large number of nets, and then destroy the object.

During optimization, Steiner objects are created and deleted as required. When optimization is complete, the optimized routes cover exactly the same area covered by the original path segments and routes.

Generally, routes are joined together and then split where necessary. Divisions can occur at one of these points:

Connection and division points for route optimization are determined by the shapes found at the top level, plus the pin shapes and instance pin shapes.


Constructor & Destructor Documentation

oaRouteOptimizer::oaRouteOptimizer  
 

This function constructs the route optimizer object.

void oaRouteOptimizer::~oaRouteOptimizer  
 

This function destroys this route optimizer object, freeing the memory used by the route optimizer.


Member Function Documentation

oaUInt8 oaRouteOptimizer::calcVMSize  
 

This function calculates the amount of virtual memory used by the route optimizer object and all of its associated data structures. As a route optimizer object is used, its retained virtual memory grows to the size required to accommodate the largest net with optimized routes. Once the optimization is complete, applications can determine how much memory was used before deleting the route optimization object (the memory is returned to the system when the route optimization object is deleted).

void oaRouteOptimizer::optimize oaBlock *    block,
oaUInt4    flags = oacROPreserveGuides | oacROPreserveSteinerPins
 

This function optimizes each path and route in the specified design using the process specified by the flags argument.

By default, the created routes are symbolic unless the flags are set to GeometricOnly or GeometricDefault and the route segments originated from paths.

Parameters:
block The block to optimize
flags The route optimizer controls
  • oacROGeometricDefault creates geometric routes for routes without an associated original route or routeSpec. If an associated routeSpec does exist, a symbolic route is created.
  • oacROGeometricOnly creates geometric routes regardless of whether the routes meet the specification for a symbolic route. This flag is used primarily when optimizing custom routes.
  • oacROPreserveGuides preserves any guides (zero-segment routes) that exist when the original route-inspiring objects are deleted. If this flag is omitted, any guides present are deleted along with the original path segments and routes.
  • oacROPreserveSteiners preserves any steiner objects found in the input data (normally, these are discarded and recomputed when necessary). If a Steiner is necessary for optimization and one does not exist at the needed junction point, it is created.
  • oacROPreserveSteinerPins preserves any steiner pin objects found in the input data. A steiner pin has an associated area instead of a single point.

void oaRouteOptimizer::optimize oaNet *    net,
oaUInt4    flags = oacROPreserveGuides | oacROPreserveSteinerPins
 

This function optimizes the path segments, routes, shapes, pins, instance terminals, and instance pins on the specified net using the method set by the flags argument. Any path segments or routes that existed before the optimization are deleted and replaced with a minimal set of optimized routes that have their start and end connections properly set.

By default, the created routes are symbolic unless the flags are set to GeometricOnly or GeometricDefault and the route segments originated from paths.

Parameters:
net The net to optimize
flags The route optimizer controls
  • oacROGeometricOnly creates geometric routes regardless of whether the routes meet the specification for a symbolic route. This flag is used primarily when optimizing custom routes.
  • oacROGeometricDefault creates geometric routes for routes without an associated original route or routeSpec. If an associated routeSpec does exist, a symbolic route is created.
  • oacROPreserveGuides preserves any guides (zero-segment routes) that exist when the original route-inspiring objects are deleted. If this flag is omitted, any guides present are deleted along with the original path segments and routes.
  • oacROPreserveSteiners preserves any steiner objects found in the input data (normally, these are discarded and recomputed when necessary). If a Steiner is necessary for optimization and one does not exist at the needed junction point, it is created.
  • oacROPreserveSteinerPins preserves any steiner pin objects found in the input data. A steiner pin has an associated area instead of a single point.


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

Return to top of page