#include <NetRouter.hpp>
Public Member Functions | |
NetRouter (DDB &inDB, NetRouterHeuristicBase *inHeuristic) | |
Public Constructor. | |
~NetRouter () | |
Destructor. | |
void | routeNet (RouteNet &net) |
Route a net. | |
void | resetStats () |
void | printStats (std::ostream &out) |
Protected Member Functions | |
void | graphSearch (const Tilewire &inSource, TilewireVector &inSinks, RouteNodePtrVector &outRoute) |
Internal top level route function. | |
void | graphSearchLoop (const Tilewire &inSource, const Tilewire &inSink, RouteNodePtrVector &outRoute) |
Routing loop function. | |
void | graphSearchFilter (RouteNode *inParent, const Arc &inArc, RouteNodePtrVector &outRoute) |
Create a new node and put it into the appropriate structure. | |
void | recordPath (RouteNode *node, Tilewire key, Tilewire inSource, RouteNodePtrVector &outRoute) |
Add the newly found route to the outRoute vector. | |
void | clearContainers () |
Delete nodes in containers and clear them. | |
bool | expandNetTerminals (Tilewire &inSource, TilewireVector &inSinks, RouteNodePtrVector &outRoute) |
Move net terminals out into the INT tiles. | |
bool | testDedicatedPath (Tilewire inSource, Tilewire inSink, RouteNodePtrVector &outRoute) |
Test for a dedicated routing path. | |
Tilewire | expandSourceTerminal (Tilewire inSource, RouteNodePtrVector &outRoute) |
Move the source terminal of a net in the sinkwards direction. | |
Tilewire | expandSinkTerminal (Tilewire inSink, RouteNodePtrVector &outRoute) |
Move the sink terminal of a net in the sourcewards direction. | |
Protected Attributes | |
ArcUsage & | mArcUsage |
Database reference. | |
WireUsage & | mWireUsage |
WireUsage reference. | |
RouteNodePtrQueue | mOrder |
Pointer to the heuristic for making routing decisions. | |
RouteNodePtrMap | mOpen |
Collection of candidate nodes the router can expand. | |
RouteNodePtrMap | mClosed |
Collection of nodes that have been expanded. | |
RouteNodePtrMap | mSkipped |
Collection of nodes skipped due to heuristic constraints. | |
RouteNodePtrVector | mPreRoute |
Vector of nodes created during pre-routing. | |
TilewireSet | mAuxClosed |
Set of Closed Tilewires to avoid issues with bidir resources. | |
TilewireVector | mSegmentBuf |
Scratch segment storage. | |
ArcVector | mArcsBuf |
Scratch arc storage. | |
boost::uint32_t | mSearchLimit |
Maximum number of nodes to explore before failing. | |
boost::uint32_t | mStatNets |
Number of nets routed since construction. | |
boost::uint32_t | mStatLoopPasses |
Number of passes through the main loop since construction. | |
boost::uint32_t | mStatExpanded |
Number of nodes created from expansion. | |
boost::uint32_t | mStatSources |
Number of net sources seen since construction. | |
boost::uint32_t | mStatSinks |
Number of net sinks seen since construction. | |
Private Types | |
typedef architecture::DDB | DDB |
Imported type names. | |
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 |
The router can either return a vector of nodes or directly populate DDB usage.
Definition at line 42 of file NetRouter.hpp.
typedef architecture::DDB torc::router::NetRouter::DDB [private] |
Imported type names.
Reimplemented from torc::router::NetRouterBase.
Definition at line 45 of file NetRouter.hpp.
torc::router::NetRouter::NetRouter | ( | DDB & | inDB, | |
NetRouterHeuristicBase * | inHeuristic | |||
) | [inline] |
torc::router::NetRouter::~NetRouter | ( | ) | [inline] |
void torc::router::NetRouter::routeNet | ( | RouteNet & | net | ) | [inline, virtual] |
Route a net.
Implements torc::router::NetRouterBase.
Definition at line 122 of file NetRouter.hpp.
void torc::router::NetRouter::graphSearch | ( | const Tilewire & | inSource, | |
TilewireVector & | inSinks, | |||
RouteNodePtrVector & | outRoute | |||
) | [inline, protected] |
Internal top level route function.
Definition at line 201 of file NetRouter.hpp.
void torc::router::NetRouter::graphSearchLoop | ( | const Tilewire & | inSource, | |
const Tilewire & | inSink, | |||
RouteNodePtrVector & | outRoute | |||
) | [inline, protected] |
Routing loop function.
Definition at line 250 of file NetRouter.hpp.
void torc::router::NetRouter::clearContainers | ( | ) | [inline, protected] |
Delete nodes in containers and clear them.
Definition at line 354 of file NetRouter.hpp.
bool torc::router::NetRouter::expandNetTerminals | ( | Tilewire & | inSource, | |
TilewireVector & | inSinks, | |||
RouteNodePtrVector & | outRoute | |||
) | [inline, protected] |
Tilewire torc::router::NetRouter::expandSourceTerminal | ( | Tilewire | inSource, | |
RouteNodePtrVector & | outRoute | |||
) | [inline, protected] |
Move the source terminal of a net in the sinkwards direction.
Definition at line 407 of file NetRouter.hpp.
Tilewire torc::router::NetRouter::expandSinkTerminal | ( | Tilewire | inSink, | |
RouteNodePtrVector & | outRoute | |||
) | [inline, protected] |
Move the sink terminal of a net in the sourcewards direction.
Definition at line 425 of file NetRouter.hpp.
ArcUsage& torc::router::NetRouter::mArcUsage [protected] |
WireUsage& torc::router::NetRouter::mWireUsage [protected] |
RouteNodePtrQueue torc::router::NetRouter::mOrder [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.
RouteNodePtrMap torc::router::NetRouter::mOpen [protected] |
RouteNodePtrMap torc::router::NetRouter::mClosed [protected] |
RouteNodePtrMap torc::router::NetRouter::mSkipped [protected] |
Collection of nodes skipped due to heuristic constraints.
Definition at line 78 of file NetRouter.hpp.
RouteNodePtrVector torc::router::NetRouter::mPreRoute [protected] |
TilewireSet torc::router::NetRouter::mAuxClosed [protected] |
Set of Closed Tilewires to avoid issues with bidir resources.
Definition at line 82 of file NetRouter.hpp.
TilewireVector torc::router::NetRouter::mSegmentBuf [protected] |
ArcVector torc::router::NetRouter::mArcsBuf [protected] |
boost::uint32_t torc::router::NetRouter::mSearchLimit [protected] |
boost::uint32_t torc::router::NetRouter::mStatNets [protected] |
boost::uint32_t torc::router::NetRouter::mStatLoopPasses [protected] |
Number of passes through the main loop since construction.
Definition at line 94 of file NetRouter.hpp.
boost::uint32_t torc::router::NetRouter::mStatExpanded [protected] |
boost::uint32_t torc::router::NetRouter::mStatSources [protected] |
boost::uint32_t torc::router::NetRouter::mStatSinks [protected] |