Do not display H/V edge capacity on one column/row design.
This commit is contained in:
parent
e01f943367
commit
51a1615d92
|
@ -170,8 +170,15 @@ void Graph::_postCreate()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_lowerLeftVertex->getHEdgeOut())
|
||||||
cout << Dots::asUInt (" - Global router H edges capacity" ,_lowerLeftVertex->getHEdgeOut()->getCapacity()) << endl;
|
cout << Dots::asUInt (" - Global router H edges capacity" ,_lowerLeftVertex->getHEdgeOut()->getCapacity()) << endl;
|
||||||
|
else
|
||||||
|
cerr << Warning( "Knik::Graph: Design has only one column, H edge capacity is zero." ) << endl;
|
||||||
|
|
||||||
|
if (_lowerLeftVertex->getVEdgeOut())
|
||||||
cout << Dots::asUInt (" - Global router V edges capacity" ,_lowerLeftVertex->getVEdgeOut()->getCapacity()) << endl;
|
cout << Dots::asUInt (" - Global router V edges capacity" ,_lowerLeftVertex->getVEdgeOut()->getCapacity()) << endl;
|
||||||
|
else
|
||||||
|
cerr << Warning( "Knik::Graph: Design has only one row, V edge capacity is zero." ) << endl;
|
||||||
|
|
||||||
// #ifdef __USE_MATRIXVERTEX__
|
// #ifdef __USE_MATRIXVERTEX__
|
||||||
// _matrixVertex = MatrixVertex::create(this);
|
// _matrixVertex = MatrixVertex::create(this);
|
||||||
|
@ -1009,7 +1016,7 @@ int Graph::initRouting ( Net* net )
|
||||||
//cerr << " [0;32mAdding vertex to _vertexes_to_route: continue[0m" << endl;
|
//cerr << " [0;32mAdding vertex to _vertexes_to_route: continue[0m" << endl;
|
||||||
_vertexes_to_route.insert ( contactVertex );
|
_vertexes_to_route.insert ( contactVertex );
|
||||||
_searchingArea.merge ( contactVertex->getBox() );
|
_searchingArea.merge ( contactVertex->getBox() );
|
||||||
contactVertex->setDistance((float)(HUGE_VAL));
|
contactVertex->setDistance((float)(HUGE));
|
||||||
contactVertex->setPredecessor(NULL);
|
contactVertex->setPredecessor(NULL);
|
||||||
currentConnexID++;
|
currentConnexID++;
|
||||||
}
|
}
|
||||||
|
@ -1049,7 +1056,7 @@ int Graph::initRouting ( Net* net )
|
||||||
_searchingArea.merge ( rpVertex->getBox() );
|
_searchingArea.merge ( rpVertex->getBox() );
|
||||||
rpVertex->setConnexID ( currentConnexID );
|
rpVertex->setConnexID ( currentConnexID );
|
||||||
rpVertex->setNetStamp ( _netStamp );
|
rpVertex->setNetStamp ( _netStamp );
|
||||||
rpVertex->setDistance((float)(HUGE_VAL));
|
rpVertex->setDistance((float)(HUGE));
|
||||||
rpVertex->setPredecessor(NULL);
|
rpVertex->setPredecessor(NULL);
|
||||||
currentConnexID++;
|
currentConnexID++;
|
||||||
}
|
}
|
||||||
|
@ -1135,7 +1142,7 @@ void Graph::Dijkstra()
|
||||||
while ( _vertexes_to_route.size() > 1 ) {
|
while ( _vertexes_to_route.size() > 1 ) {
|
||||||
// Now, let's expanse the top of the queue
|
// Now, let's expanse the top of the queue
|
||||||
VertexList reachedVertexes;
|
VertexList reachedVertexes;
|
||||||
float reachedDistance = (float)(HUGE_VAL);
|
float reachedDistance = (float)(HUGE);
|
||||||
|
|
||||||
//checkGraphConsistency();
|
//checkGraphConsistency();
|
||||||
if (ltracelevel() >= 600) {
|
if (ltracelevel() >= 600) {
|
||||||
|
@ -1267,7 +1274,7 @@ void Graph::Dijkstra()
|
||||||
message << " Unable to reach target on net " << _working_net->getName() << ".";
|
message << " Unable to reach target on net " << _working_net->getName() << ".";
|
||||||
throw Error( message.str() );
|
throw Error( message.str() );
|
||||||
}
|
}
|
||||||
assert( reachedDistance < (float)(HUGE_VAL) );
|
assert( reachedDistance < (float)(HUGE) );
|
||||||
|
|
||||||
ltrace(600) << "Updating two connex components:" << endl;
|
ltrace(600) << "Updating two connex components:" << endl;
|
||||||
ltrace(600) << "1. " << (*(reachedVertexes.begin())) << endl;
|
ltrace(600) << "1. " << (*(reachedVertexes.begin())) << endl;
|
||||||
|
@ -1368,8 +1375,8 @@ void Graph::Monotonic()
|
||||||
while ( topEdge ) {
|
while ( topEdge ) {
|
||||||
Vertex* currentVertex = topEdge->getOpposite ( vertPred );
|
Vertex* currentVertex = topEdge->getOpposite ( vertPred );
|
||||||
if ( currentVertex->getPosition().getY() <= targetY ) {
|
if ( currentVertex->getPosition().getY() <= targetY ) {
|
||||||
float vertDistance = (float)(HUGE_VAL);
|
float vertDistance = (float)(HUGE);
|
||||||
float horzDistance = (float)(HUGE_VAL);
|
float horzDistance = (float)(HUGE);
|
||||||
|
|
||||||
vertDistance = vertPred->getDistance() + topEdge->getCost ( vertPred->getPredecessor() );
|
vertDistance = vertPred->getDistance() + topEdge->getCost ( vertPred->getPredecessor() );
|
||||||
Edge* leftEdge = currentVertex->getHEdgeIn();
|
Edge* leftEdge = currentVertex->getHEdgeIn();
|
||||||
|
@ -1443,8 +1450,8 @@ void Graph::Monotonic()
|
||||||
while ( bottomEdge ) {
|
while ( bottomEdge ) {
|
||||||
Vertex* currentVertex = bottomEdge->getOpposite ( vertPred );
|
Vertex* currentVertex = bottomEdge->getOpposite ( vertPred );
|
||||||
if ( currentVertex->getPosition().getY() >= targetY ) {
|
if ( currentVertex->getPosition().getY() >= targetY ) {
|
||||||
float vertDistance = (float)(HUGE_VAL);
|
float vertDistance = (float)(HUGE);
|
||||||
float horzDistance = (float)(HUGE_VAL);
|
float horzDistance = (float)(HUGE);
|
||||||
|
|
||||||
vertDistance = vertPred->getDistance() + bottomEdge->getCost ( vertPred->getPredecessor() );
|
vertDistance = vertPred->getDistance() + bottomEdge->getCost ( vertPred->getPredecessor() );
|
||||||
Edge* leftEdge = currentVertex->getHEdgeIn();
|
Edge* leftEdge = currentVertex->getHEdgeIn();
|
||||||
|
@ -1812,7 +1819,7 @@ void Graph::rebuildConnexComponent ( Contact* contact, int connexID, Segment* ar
|
||||||
contactVertex->setContact ( contact );
|
contactVertex->setContact ( contact );
|
||||||
contactVertex->setConnexID ( connexID );
|
contactVertex->setConnexID ( connexID );
|
||||||
contactVertex->setNetStamp ( _netStamp );
|
contactVertex->setNetStamp ( _netStamp );
|
||||||
contactVertex->setDistance((float)(HUGE_VAL));
|
contactVertex->setDistance((float)(HUGE));
|
||||||
contactVertex->setPredecessor(NULL);
|
contactVertex->setPredecessor(NULL);
|
||||||
//cerr << "from :" << contact << endl;
|
//cerr << "from :" << contact << endl;
|
||||||
//cerr << "arrivalSegment: " << arrivalSegment << endl;
|
//cerr << "arrivalSegment: " << arrivalSegment << endl;
|
||||||
|
@ -1851,7 +1858,7 @@ void Graph::setNetStampConnexID ( Segment* segment, int connexID )
|
||||||
assert(vertex);
|
assert(vertex);
|
||||||
vertex->setNetStamp ( _netStamp );
|
vertex->setNetStamp ( _netStamp );
|
||||||
vertex->setConnexID ( connexID );
|
vertex->setConnexID ( connexID );
|
||||||
vertex->setDistance((float)(HUGE_VAL));
|
vertex->setDistance((float)(HUGE));
|
||||||
Edge* edge = vertex->getVEdgeOut();
|
Edge* edge = vertex->getVEdgeOut();
|
||||||
assert(edge);
|
assert(edge);
|
||||||
edge->setNetStamp ( _netStamp );
|
edge->setNetStamp ( _netStamp );
|
||||||
|
@ -1861,7 +1868,7 @@ void Graph::setNetStampConnexID ( Segment* segment, int connexID )
|
||||||
assert(vertex);
|
assert(vertex);
|
||||||
vertex->setNetStamp ( _netStamp );
|
vertex->setNetStamp ( _netStamp );
|
||||||
vertex->setConnexID ( connexID );
|
vertex->setConnexID ( connexID );
|
||||||
vertex->setDistance((float)(HUGE_VAL));
|
vertex->setDistance((float)(HUGE));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( sourceLineIdx == targetLineIdx ) { // horizontal segment
|
if ( sourceLineIdx == targetLineIdx ) { // horizontal segment
|
||||||
|
@ -1870,7 +1877,7 @@ void Graph::setNetStampConnexID ( Segment* segment, int connexID )
|
||||||
assert(vertex);
|
assert(vertex);
|
||||||
vertex->setNetStamp ( _netStamp );
|
vertex->setNetStamp ( _netStamp );
|
||||||
vertex->setConnexID ( connexID );
|
vertex->setConnexID ( connexID );
|
||||||
vertex->setDistance((float)(HUGE_VAL));
|
vertex->setDistance((float)(HUGE));
|
||||||
Edge* edge = vertex->getHEdgeOut();
|
Edge* edge = vertex->getHEdgeOut();
|
||||||
assert(edge);
|
assert(edge);
|
||||||
edge->setNetStamp ( _netStamp );
|
edge->setNetStamp ( _netStamp );
|
||||||
|
@ -1880,7 +1887,7 @@ void Graph::setNetStampConnexID ( Segment* segment, int connexID )
|
||||||
assert(vertex);
|
assert(vertex);
|
||||||
vertex->setNetStamp ( _netStamp );
|
vertex->setNetStamp ( _netStamp );
|
||||||
vertex->setConnexID ( connexID );
|
vertex->setConnexID ( connexID );
|
||||||
vertex->setDistance((float)(HUGE_VAL));
|
vertex->setDistance((float)(HUGE));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw Error ( "Graph::setNetStampConnexId(): what sort of segment is that, a diagonal one?" );
|
throw Error ( "Graph::setNetStampConnexId(): what sort of segment is that, a diagonal one?" );
|
||||||
|
@ -2325,7 +2332,7 @@ void Graph::CleanRoutingState()
|
||||||
// assert (vertex);
|
// assert (vertex);
|
||||||
// vertex->setLocalRingHook(NULL);
|
// vertex->setLocalRingHook(NULL);
|
||||||
// vertex->setConnexID(-1);
|
// vertex->setConnexID(-1);
|
||||||
// vertex->setDistance((float)(HUGE_VAL));
|
// vertex->setDistance((float)(HUGE));
|
||||||
// vertex->setPredecessor(NULL);
|
// vertex->setPredecessor(NULL);
|
||||||
// assert ( vertex->getVTuple() == NULL );
|
// assert ( vertex->getVTuple() == NULL );
|
||||||
//}
|
//}
|
||||||
|
|
Loading…
Reference in New Issue