From fe73199b064181466d525d630f5fe7b19490e138 Mon Sep 17 00:00:00 2001 From: EricLaoGitHub Date: Thu, 11 Aug 2016 15:40:21 +0200 Subject: [PATCH] in Dijkstra: - Bug: in _propagate, the GCell's bounding box intersection with the search area is now the way to check if the GCell should be treated. --- anabatic/src/Dijkstra.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/anabatic/src/Dijkstra.cpp b/anabatic/src/Dijkstra.cpp index f6ff0c47..cc8b4083 100644 --- a/anabatic/src/Dijkstra.cpp +++ b/anabatic/src/Dijkstra.cpp @@ -345,12 +345,19 @@ namespace Anabatic { if ((current->getConnexId() == _connectedsId) or (current->getConnexId() < 0)) { for ( Edge* edge : current->getGCell()->getEdges() ) { - if (edge == current->getFrom()) continue; + if (edge == current->getFrom()) { + cdebug_log(111,0) << "edge == current->getFrom()" << endl; + continue; + } GCell* gneighbor = edge->getOpposite(current->getGCell()); Vertex* vneighbor = gneighbor->getObserver(GCell::Observable::Vertex); - if (not _searchArea.contains(vneighbor->getCenter())) continue; + //if (not _searchArea.contains(vneighbor->getCenter())) { + if (not _searchArea.intersect(gneighbor->getBoundingBox())) { + cdebug_log(111,0) << "not _searchArea.contains(vneighbor->getCenter()):" << _searchArea << endl; + continue; + } cdebug_log(111,0) << "| Edge " << edge << endl; cdebug_log(111,0) << "+ Neighbor: " << vneighbor << endl; @@ -461,7 +468,8 @@ namespace Anabatic { while ( true ) { from = target->getFrom(); - if ( not from + if ( not from + or not (target->getGCell()->isMatrix()) or (target->hasGContact(_net)) or (target->getRpCount()) or (target->getDegree() > 2)