torc-master
|
Provides net routing based on the Nilsson graphsearch algorithm. More...
#include <NetRouter.hpp>
Public Member Functions | |
NetRouter (DDB &inDB, NetRouterHeuristicBase *inHeuristic) | |
Public Constructor. More... | |
~NetRouter () | |
Destructor. More... | |
void | routeNet (RouteNet &net) |
Route a net. More... | |
void | resetStats () |
void | printStats (std::ostream &out) |
void | route (RouteNet &inNet) |
Primary route call. More... | |
double | getTotalRouteTime () |
Get total route time. More... | |
NetRouterHeuristicBase * | getHeuristic () |
Get the current heuristic. More... | |
void | setHeuristic (NetRouterHeuristicBase *inHeuristic) |
Set the current heuristic. More... | |
Protected Member Functions | |
void | graphSearch (const Tilewire &inSource, TilewireVector &inSinks, RouteNodePtrVector &outRoute) |
Internal top level route function. More... | |
void | graphSearchLoop (const Tilewire &inSource, const Tilewire &inSink, RouteNodePtrVector &outRoute) |
Routing loop function. More... | |
void | graphSearchFilter (RouteNode *inParent, const Arc &inArc, RouteNodePtrVector &outRoute) |
Create a new node and put it into the appropriate structure. More... | |
void | recordPath (RouteNode *node, Tilewire key, Tilewire inSource, RouteNodePtrVector &outRoute) |
Add the newly found route to the outRoute vector. More... | |
void | clearContainers () |
Delete nodes in containers and clear them. More... | |
bool | expandNetTerminals (Tilewire &inSource, TilewireVector &inSinks, RouteNodePtrVector &outRoute) |
Move net terminals out into the INT tiles. More... | |
bool | testDedicatedPath (Tilewire inSource, Tilewire inSink, RouteNodePtrVector &outRoute) |
Test for a dedicated routing path. More... | |
Tilewire | expandSourceTerminal (Tilewire inSource, RouteNodePtrVector &outRoute) |
Move the source terminal of a net in the sinkwards direction. More... | |
Tilewire | expandSinkTerminal (Tilewire inSink, RouteNodePtrVector &outRoute) |
Move the sink terminal of a net in the sourcewards direction. More... | |
Protected Attributes | |
ArcUsage & | mArcUsage |
Database reference. More... | |
WireUsage & | mWireUsage |
WireUsage reference. More... | |
RouteNodePtrQueue | mOrder |
Pointer to the heuristic for making routing decisions. More... | |
RouteNodePtrMap | mOpen |
Collection of candidate nodes the router can expand. More... | |
RouteNodePtrMap | mClosed |
Collection of nodes that have been expanded. More... | |
RouteNodePtrMap | mSkipped |
Collection of nodes skipped due to heuristic constraints. More... | |
RouteNodePtrVector | mPreRoute |
Vector of nodes created during pre-routing. More... | |
TilewireSet | mAuxClosed |
Set of Closed Tilewires to avoid issues with bidir resources. More... | |
TilewireVector | mSegmentBuf |
Scratch segment storage. More... | |
ArcVector | mArcsBuf |
Scratch arc storage. More... | |
boost::uint32_t | mSearchLimit |
Maximum number of nodes to explore before failing. More... | |
boost::uint32_t | mStatNets |
Number of nets routed since construction. More... | |
boost::uint32_t | mStatLoopPasses |
Number of passes through the main loop since construction. More... | |
boost::uint32_t | mStatExpanded |
Number of nodes created from expansion. More... | |
boost::uint32_t | mStatSources |
Number of net sources seen since construction. More... | |
boost::uint32_t | mStatSinks |
Number of net sinks seen since construction. More... | |
DDB & | mDB |
Database reference. More... | |
NetRouterHeuristicBase * | mHeuristic |
Pointer to the heuristic for making routing decisions. More... | |
boost::timer | mRouteTimer |
Timer object for performance analysis. More... | |
double | mTotalRouteTime |
Total routing time since construction. More... | |
Private Types | |
typedef architecture::DDB | DDB |
Imported type names. More... | |
typedef architecture::ArcUsage | ArcUsage |
typedef architecture::WireUsage | WireUsage |
typedef architecture::Tilewire | Tilewire |
typedef architecture::Arc | Arc |
typedef architecture::TilewireVector | TilewireVector |
typedef architecture::ArcVector | ArcVector |
typedef std::priority_queue < RouteNode *, std::vector < RouteNode * > , RouteNodePtrCostCompare > | RouteNodePtrQueue |
typedef boost::unordered_map < Tilewire, RouteNode *, boost::hash < architecture::Tilewire > > | RouteNodePtrMap |
typedef boost::unordered_set < Tilewire, boost::hash < architecture::Tilewire > > | TilewireSet |
Provides net routing based on the Nilsson graphsearch algorithm.
The router can either return a vector of nodes or directly populate DDB usage.
Definition at line 42 of file NetRouter.hpp.
|
private |
Definition at line 49 of file NetRouter.hpp.
|
private |
Definition at line 46 of file NetRouter.hpp.
|
private |
Definition at line 51 of file NetRouter.hpp.
|
private |
Imported type names.
Definition at line 45 of file NetRouter.hpp.
|
private |
Definition at line 56 of file NetRouter.hpp.
|
private |
Definition at line 54 of file NetRouter.hpp.
|
private |
Definition at line 48 of file NetRouter.hpp.
|
private |
Definition at line 57 of file NetRouter.hpp.
|
private |
Definition at line 50 of file NetRouter.hpp.
|
private |
Definition at line 47 of file NetRouter.hpp.
|
inline |
Public Constructor.
Definition at line 105 of file NetRouter.hpp.
|
inline |
|
inlineprotected |
Delete nodes in containers and clear them.
Definition at line 354 of file NetRouter.hpp.
|
inlineprotected |
Move net terminals out into the INT tiles.
Definition at line 370 of file NetRouter.hpp.
|
inlineprotected |
Move the sink terminal of a net in the sourcewards direction.
Definition at line 425 of file NetRouter.hpp.
|
inlineprotected |
Move the source terminal of a net in the sinkwards direction.
Definition at line 407 of file NetRouter.hpp.
|
inlineinherited |
Get the current heuristic.
Definition at line 83 of file NetRouterBase.hpp.
|
inlineinherited |
Get total route time.
Definition at line 81 of file NetRouterBase.hpp.
|
inlineprotected |
Internal top level route function.
Definition at line 201 of file NetRouter.hpp.
|
inlineprotected |
Create a new node and put it into the appropriate structure.
Definition at line 305 of file NetRouter.hpp.
|
inlineprotected |
Routing loop function.
Definition at line 250 of file NetRouter.hpp.
|
inline |
Definition at line 190 of file NetRouter.hpp.
|
inlineprotected |
Add the newly found route to the outRoute vector.
Definition at line 329 of file NetRouter.hpp.
|
inline |
Definition at line 183 of file NetRouter.hpp.
|
inlineinherited |
Primary route call.
Definition at line 72 of file NetRouterBase.hpp.
|
inlinevirtual |
Route a net.
Implements torc::router::NetRouterBase.
Definition at line 122 of file NetRouter.hpp.
|
inlineinherited |
Set the current heuristic.
Definition at line 85 of file NetRouterBase.hpp.
|
inlineprotected |
Test for a dedicated routing path.
Definition at line 383 of file NetRouter.hpp.
|
protected |
Scratch arc storage.
Definition at line 87 of file NetRouter.hpp.
|
protected |
|
protected |
Set of Closed Tilewires to avoid issues with bidir resources.
Definition at line 82 of file NetRouter.hpp.
|
protected |
Collection of nodes that have been expanded.
Definition at line 76 of file NetRouter.hpp.
|
protectedinherited |
Database reference.
Definition at line 53 of file NetRouterBase.hpp.
|
protectedinherited |
Pointer to the heuristic for making routing decisions.
Definition at line 55 of file NetRouterBase.hpp.
|
protected |
Collection of candidate nodes the router can expand.
Definition at line 74 of file NetRouter.hpp.
|
protected |
Pointer to the heuristic for making routing decisions.
Priority queue of nodes to explore during routing, mirrors mOpen.
Definition at line 72 of file NetRouter.hpp.
|
protected |
Vector of nodes created during pre-routing.
Definition at line 80 of file NetRouter.hpp.
|
protectedinherited |
Timer object for performance analysis.
Definition at line 57 of file NetRouterBase.hpp.
|
protected |
Maximum number of nodes to explore before failing.
Definition at line 90 of file NetRouter.hpp.
|
protected |
Scratch segment storage.
Definition at line 85 of file NetRouter.hpp.
|
protected |
Collection of nodes skipped due to heuristic constraints.
Definition at line 78 of file NetRouter.hpp.
|
protected |
Number of nodes created from expansion.
Definition at line 96 of file NetRouter.hpp.
|
protected |
Number of passes through the main loop since construction.
Definition at line 94 of file NetRouter.hpp.
|
protected |
Number of nets routed since construction.
Definition at line 92 of file NetRouter.hpp.
|
protected |
Number of net sinks seen since construction.
Definition at line 100 of file NetRouter.hpp.
|
protected |
Number of net sources seen since construction.
Definition at line 98 of file NetRouter.hpp.
|
protectedinherited |
Total routing time since construction.
Definition at line 59 of file NetRouterBase.hpp.
|
protected |
WireUsage reference.
Definition at line 66 of file NetRouter.hpp.