277 const Tilewire& nodeSourceTilewire = inNode->getSourceTilewire();
278 const Tilewire& nodeSinkTilewire = inNode->getSinkTilewire();
280 bool foundParent =
false;
281 std::vector<RouteTreeNode*> activeSinks;
284 TilewireVector::iterator p;
287 const Tilewire& segmentTilewire = *p;
291 TilewireVector::iterator q;
294 const Tilewire& sourceTilewire = *q;
296 std::cout <<
"ALREADY SEEN THIS TILEWIRE" << std::endl;
301 std::cout <<
"TRACER ERROR: MULTIPLE PARENTS" << std::endl;
304 parentArc =
Arc(sourceTilewire, segmentTilewire);
319 TilewireVector::iterator q;
320 TilewireVector::iterator f =
mSinksBuf.end();
321 for (q =
mSinksBuf.begin(); q < f; q++) {
324 std::cout <<
"ALREADY SEEN THIS TILEWIRE" << std::endl;
328 activeSinks.push_back(
new RouteTreeNode(
329 segmentTilewire, sinkTilewire, 0, inNode));
333 unsigned int activeSinksSize = activeSinks.size();
334 std::cout <<
"ACTIVE SINKS SIZE: " << activeSinksSize << std::endl;
337 if (activeSinksSize > 1) {
338 inNode->addChildren(activeSinks);
339 activeSinksSize = inNode->getNumChildren();
340 std::cout << activeSinksSize << std::endl;
341 for (
unsigned int i = 0; i < activeSinksSize; i++) {
342 RouteTreeNode* newChildNode = inNode->getChild(i);
350 inNode->makeParent(parentArc.getSourceTilewire(), parentArc.getSinkTilewire());
351 RouteTreeNode* parentNode = (RouteTreeNode*)inNode->getParent();
TilewireVector mSegmentBuf
Scratch segment storage.
TilewireVector mSourcesBuf
Scratch wire storage.
TilewireVector mSinksBuf
Scratch wire storage.
void expandTilewireSinks(const Tilewire &inTilewire, TilewireVector &outSinks, bool inUseTied=true, bool inUseRegular=true, bool inUseIrregular=true, bool inUseRoutethrough=true)
Expands the given tilewire's arc sinks.
void traceUpstream(RouteTreeNode *inNode, boost::int32_t inMode)
Recursively traces from the specified RouteTreeNode in one of three modes.
void expandTilewireSources(const Tilewire &inTilewire, TilewireVector &outSources, bool inUseTied=true, bool inUseRegular=true, bool inUseIrregular=true, bool inUseRoutethrough=true)
Expands the given tilewire's arc sources.
std::set< Tilewire > mTracedWiresBuf
Traced wires collection.
void traceDownstream(RouteTreeNode *inNode)
Remove the dummy node if possible.
ArcUsage & mArcUsage
ArcUsage reference.
bool isUsed(const Arc &inArc)
Determines whether the specified arc is in use.
DDB & mDB
Database reference.
void expandSegment(const Tilewire &inTilewire, TilewireVector &outTilewires, EExpandDirection inExpandDirection=eExpandDirectionNone)
Expands the given tilewire's segment.
architecture::Tilewire Tilewire