diff --git a/src/grt/src/fastroute/include/FastRoute.h b/src/grt/src/fastroute/include/FastRoute.h index f0b6e3a14fa..5e1210b69b8 100644 --- a/src/grt/src/fastroute/include/FastRoute.h +++ b/src/grt/src/fastroute/include/FastRoute.h @@ -349,9 +349,9 @@ class FastRouteCore int n2, std::vector& treeedges, int edge_n1n2, - int gridsX_n1n2[], - int gridsY_n1n2[], - int gridsL_n1n2[]); + std::vector& gridsX_n1n2, + std::vector& gridsY_n1n2, + std::vector& gridsL_n1n2); void updateRouteType13D(int netID, std::vector& treenodes, int n1, @@ -473,7 +473,8 @@ class FastRouteCore int k, int l, bool horizontal, - int& best_cost); + int& best_cost, + multi_array& layer_grid); bool skipNet(int netID); void assignEdge(int netID, int edgeID, bool processDIR); void recoverEdge(int netID, int edgeID); @@ -507,7 +508,6 @@ class FastRouteCore typedef std::tuple Tile; - static const int MAXLEN = 20000; static const int BIG_INT = 1e9; // big integer used as infinity static const int HCOST = 5000; @@ -589,8 +589,6 @@ class FastRouteCore multi_array h_edges_3D_; // The way it is indexed is (Layer, Y, X) multi_array v_edges_3D_; // The way it is indexed is (Layer, Y, X) multi_array corr_edge_; - multi_array layer_grid_; - multi_array via_link_; multi_array parent_x1_; multi_array parent_y1_; multi_array parent_x3_; diff --git a/src/grt/src/fastroute/src/FastRoute.cpp b/src/grt/src/fastroute/src/FastRoute.cpp index 7520c7322aa..30dbbb26c89 100644 --- a/src/grt/src/fastroute/src/FastRoute.cpp +++ b/src/grt/src/fastroute/src/FastRoute.cpp @@ -139,9 +139,6 @@ void FastRouteCore::clear() v_capacity_3D_.clear(); h_capacity_3D_.clear(); - layer_grid_.resize(boost::extents[0][0]); - via_link_.resize(boost::extents[0][0]); - cost_hvh_.clear(); cost_vhv_.clear(); cost_h_.clear(); @@ -196,9 +193,6 @@ void FastRouteCore::setGridsAndLayers(int x, int y, int nLayers) last_row_h_capacity_3D_[i] = 0; } - layer_grid_.resize(boost::extents[num_layers_][MAXLEN]); - via_link_.resize(boost::extents[num_layers_][MAXLEN]); - hv_.resize(boost::extents[y_range_][x_range_]); hyper_v_.resize(boost::extents[y_range_][x_range_]); hyper_h_.resize(boost::extents[y_range_][x_range_]); diff --git a/src/grt/src/fastroute/src/maze3D.cpp b/src/grt/src/fastroute/src/maze3D.cpp index 9c1b9644e91..dacd20ddd86 100644 --- a/src/grt/src/fastroute/src/maze3D.cpp +++ b/src/grt/src/fastroute/src/maze3D.cpp @@ -388,21 +388,28 @@ int FastRouteCore::copyGrids3D(std::vector& treenodes, int n2, std::vector& treeedges, int edge_n1n2, - int gridsX_n1n2[], - int gridsY_n1n2[], - int gridsL_n1n2[]) + std::vector& gridsX_n1n2, + std::vector& gridsY_n1n2, + std::vector& gridsL_n1n2) { const int n1x = treenodes[n1].x; const int n1y = treenodes[n1].y; const int n1l = treenodes[n1].botL; + const int routelen = treeedges[edge_n1n2].route.routelen; + + if (routelen > 0) { + gridsX_n1n2.reserve(routelen + 1); + gridsY_n1n2.reserve(routelen + 1); + gridsL_n1n2.reserve(routelen + 1); + } int cnt = 0; if (treeedges[edge_n1n2].n1 == n1) { // n1 is the first node of (n1, n2) if (treeedges[edge_n1n2].route.routelen > 0) { for (int i = 0; i <= treeedges[edge_n1n2].route.routelen; i++) { - gridsX_n1n2[cnt] = treeedges[edge_n1n2].route.gridsX[i]; - gridsY_n1n2[cnt] = treeedges[edge_n1n2].route.gridsY[i]; - gridsL_n1n2[cnt] = treeedges[edge_n1n2].route.gridsL[i]; + gridsX_n1n2.push_back(treeedges[edge_n1n2].route.gridsX[i]); + gridsY_n1n2.push_back(treeedges[edge_n1n2].route.gridsY[i]); + gridsL_n1n2.push_back(treeedges[edge_n1n2].route.gridsL[i]); cnt++; } } // MazeRoute @@ -410,9 +417,9 @@ int FastRouteCore::copyGrids3D(std::vector& treenodes, // NoRoute { fflush(stdout); - gridsX_n1n2[cnt] = n1x; - gridsY_n1n2[cnt] = n1y; - gridsL_n1n2[cnt] = n1l; + gridsX_n1n2.push_back(n1x); + gridsY_n1n2.push_back(n1y); + gridsL_n1n2.push_back(n1l); cnt++; } } // if n1 is the first node of (n1, n2) @@ -420,17 +427,17 @@ int FastRouteCore::copyGrids3D(std::vector& treenodes, { if (treeedges[edge_n1n2].route.routelen > 0) { for (int i = treeedges[edge_n1n2].route.routelen; i >= 0; i--) { - gridsX_n1n2[cnt] = treeedges[edge_n1n2].route.gridsX[i]; - gridsY_n1n2[cnt] = treeedges[edge_n1n2].route.gridsY[i]; - gridsL_n1n2[cnt] = treeedges[edge_n1n2].route.gridsL[i]; + gridsX_n1n2.push_back(treeedges[edge_n1n2].route.gridsX[i]); + gridsY_n1n2.push_back(treeedges[edge_n1n2].route.gridsY[i]); + gridsL_n1n2.push_back(treeedges[edge_n1n2].route.gridsL[i]); cnt++; } } // MazeRoute else // NoRoute { - gridsX_n1n2[cnt] = n1x; - gridsY_n1n2[cnt] = n1y; - gridsL_n1n2[cnt] = n1l; + gridsX_n1n2.push_back(n1x); + gridsY_n1n2.push_back(n1y); + gridsL_n1n2.push_back(n1l); cnt++; } // MazeRoute } @@ -449,8 +456,12 @@ void FastRouteCore::updateRouteType13D(int netID, int edge_n1A1, int edge_n1A2) { - int gridsX_n1A1[MAXLEN], gridsY_n1A1[MAXLEN], gridsL_n1A1[MAXLEN], - gridsX_n1A2[MAXLEN], gridsY_n1A2[MAXLEN], gridsL_n1A2[MAXLEN]; + std::vector gridsX_n1A1; + std::vector gridsY_n1A1; + std::vector gridsL_n1A1; + std::vector gridsX_n1A2; + std::vector gridsY_n1A2; + std::vector gridsL_n1A2; // copy all the grids on (n1, A1) and (n2, A2) to tmp arrays, and keep the // grids order A1->n1->A2 copy (n1, A1) @@ -671,9 +682,15 @@ void FastRouteCore::updateRouteType23D(int netID, int edge_C1C2) { int cnt; - int gridsX_n1A1[MAXLEN], gridsY_n1A1[MAXLEN], gridsL_n1A1[MAXLEN]; - int gridsX_n1A2[MAXLEN], gridsY_n1A2[MAXLEN], gridsL_n1A2[MAXLEN]; - int gridsX_C1C2[MAXLEN], gridsY_C1C2[MAXLEN], gridsL_C1C2[MAXLEN]; + std::vector gridsX_n1A1; + std::vector gridsY_n1A1; + std::vector gridsL_n1A1; + std::vector gridsX_n1A2; + std::vector gridsY_n1A2; + std::vector gridsL_n1A2; + std::vector gridsX_C1C2; + std::vector gridsY_C1C2; + std::vector gridsL_C1C2; const int A1x = treenodes[A1].x; const int A1y = treenodes[A1].y; diff --git a/src/grt/src/fastroute/src/utility.cpp b/src/grt/src/fastroute/src/utility.cpp index 4bbbabdad86..68c82644cb8 100644 --- a/src/grt/src/fastroute/src/utility.cpp +++ b/src/grt/src/fastroute/src/utility.cpp @@ -64,8 +64,6 @@ void FastRouteCore::printEdge(int const netID, int const edgeID) void FastRouteCore::ConvertToFull3DType2() { - short tmpX[MAXLEN], tmpY[MAXLEN], tmpL[MAXLEN]; - for (int netID = 0; netID < netCount(); netID++) { if (skipNet(netID)) { continue; @@ -77,38 +75,45 @@ void FastRouteCore::ConvertToFull3DType2() for (int edgeID = 0; edgeID < num_edges; edgeID++) { TreeEdge* treeedge = &(treeedges[edgeID]); if (treeedge->len > 0) { + std::vector tmpX; + std::vector tmpY; + std::vector tmpL; int newCNT = 0; const int routeLen = treeedge->route.routelen; + tmpX.reserve(routeLen + num_layers_); + tmpY.reserve(routeLen + num_layers_); + tmpL.reserve(routeLen + num_layers_); + const std::vector& gridsX = treeedge->route.gridsX; const std::vector& gridsY = treeedge->route.gridsY; const std::vector& gridsL = treeedge->route.gridsL; // finish from n1->real route int j; for (j = 0; j < routeLen; j++) { - tmpX[newCNT] = gridsX[j]; - tmpY[newCNT] = gridsY[j]; - tmpL[newCNT] = gridsL[j]; + tmpX.push_back(gridsX[j]); + tmpY.push_back(gridsY[j]); + tmpL.push_back(gridsL[j]); newCNT++; if (gridsL[j] > gridsL[j + 1]) { for (int k = gridsL[j]; k > gridsL[j + 1]; k--) { - tmpX[newCNT] = gridsX[j + 1]; - tmpY[newCNT] = gridsY[j + 1]; - tmpL[newCNT] = k; + tmpX.push_back(gridsX[j + 1]); + tmpY.push_back(gridsY[j + 1]); + tmpL.push_back(k); newCNT++; } } else if (gridsL[j] < gridsL[j + 1]) { for (int k = gridsL[j]; k < gridsL[j + 1]; k++) { - tmpX[newCNT] = gridsX[j + 1]; - tmpY[newCNT] = gridsY[j + 1]; - tmpL[newCNT] = k; + tmpX.push_back(gridsX[j + 1]); + tmpY.push_back(gridsY[j + 1]); + tmpL.push_back(k); newCNT++; } } } - tmpX[newCNT] = gridsX[j]; - tmpY[newCNT] = gridsY[j]; - tmpL[newCNT] = gridsL[j]; + tmpX.push_back(gridsX[j]); + tmpY.push_back(gridsY[j]); + tmpL.push_back(gridsL[j]); newCNT++; // last grid -> node2 finished if (treeedges[edgeID].route.type == RouteType::MazeRoute) { @@ -174,8 +179,6 @@ void FastRouteCore::netpinOrderInc() void FastRouteCore::fillVIA() { - short tmpX[MAXLEN], tmpY[MAXLEN], tmpL[MAXLEN]; - int numVIAT1 = 0; int numVIAT2 = 0; @@ -193,8 +196,15 @@ void FastRouteCore::fillVIA() int node1_alias = treeedge->n1a; int node2_alias = treeedge->n2a; if (treeedge->len > 0) { + std::vector tmpX; + std::vector tmpY; + std::vector tmpL; int newCNT = 0; int routeLen = treeedge->route.routelen; + tmpX.reserve(routeLen + num_layers_); + tmpY.reserve(routeLen + num_layers_); + tmpL.reserve(routeLen + num_layers_); + const std::vector& gridsX = treeedge->route.gridsX; const std::vector& gridsY = treeedge->route.gridsY; const std::vector& gridsL = treeedge->route.gridsL; @@ -213,24 +223,24 @@ void FastRouteCore::fillVIA() top_layer = std::max((int) pin_topL, top_layer); for (int l = bottom_layer; l < top_layer; l++) { - tmpX[newCNT] = gridsX[0]; - tmpY[newCNT] = gridsY[0]; - tmpL[newCNT] = l; + tmpX.push_back(gridsX[0]); + tmpY.push_back(gridsY[0]); + tmpL.push_back(l); newCNT++; numVIAT1++; } for (int l = top_layer; l > edge_init_layer; l--) { - tmpX[newCNT] = gridsX[0]; - tmpY[newCNT] = gridsY[0]; - tmpL[newCNT] = l; + tmpX.push_back(gridsX[0]); + tmpY.push_back(gridsY[0]); + tmpL.push_back(l); newCNT++; } } else { for (int l = bottom_layer; l < edge_init_layer; l++) { - tmpX[newCNT] = gridsX[0]; - tmpY[newCNT] = gridsY[0]; - tmpL[newCNT] = l; + tmpX.push_back(gridsX[0]); + tmpY.push_back(gridsY[0]); + tmpL.push_back(l); newCNT++; if (node1_alias >= num_terminals) { numVIAT2++; @@ -240,9 +250,9 @@ void FastRouteCore::fillVIA() } for (int j = 0; j <= routeLen; j++) { - tmpX[newCNT] = gridsX[j]; - tmpY[newCNT] = gridsY[j]; - tmpL[newCNT] = gridsL[j]; + tmpX.push_back(gridsX[j]); + tmpY.push_back(gridsY[j]); + tmpL.push_back(gridsL[j]); newCNT++; } @@ -266,24 +276,24 @@ void FastRouteCore::fillVIA() } for (int16_t l = tmpL[newCNT - 1] - 1; l > bottom_layer; l--) { - tmpX[newCNT] = tmpX[newCNT - 1]; - tmpY[newCNT] = tmpY[newCNT - 1]; - tmpL[newCNT] = l; + tmpX.push_back(tmpX[newCNT - 1]); + tmpY.push_back(tmpY[newCNT - 1]); + tmpL.push_back(l); newCNT++; } for (int l = bottom_layer; l <= top_layer; l++) { - tmpX[newCNT] = tmpX[newCNT - 1]; - tmpY[newCNT] = tmpY[newCNT - 1]; - tmpL[newCNT] = l; + tmpX.push_back(tmpX[newCNT - 1]); + tmpY.push_back(tmpY[newCNT - 1]); + tmpL.push_back(l); newCNT++; numVIAT1++; } } else { for (int l = top_layer - 1; l >= bottom_layer; l--) { - tmpX[newCNT] = tmpX[newCNT - 1]; - tmpY[newCNT] = tmpY[newCNT - 1]; - tmpL[newCNT] = l; + tmpX.push_back(tmpX[newCNT - 1]); + tmpY.push_back(tmpY[newCNT - 1]); + tmpL.push_back(l); newCNT++; if (node1_alias >= num_terminals) { numVIAT2++; @@ -428,16 +438,17 @@ void FastRouteCore::fixEdgeAssignment(int& net_layer, int k, int l, bool vertical, - int& best_cost) + int& best_cost, + multi_array& layer_grid) { bool is_vertical = layer_directions_[l] == odb::dbTechLayerDir::VERTICAL; // if layer direction doesn't match edge direction or // if already found a layer for the edge, ignores the remaining layers if (is_vertical != vertical || best_cost > 0) { - layer_grid_[l][k] = std::numeric_limits::min(); + layer_grid[l][k] = std::numeric_limits::min(); } else { - layer_grid_[l][k] = edges_3D[l][y][x].cap - edges_3D[l][y][x].usage; - best_cost = std::max(best_cost, layer_grid_[l][k]); + layer_grid[l][k] = edges_3D[l][y][x].cap - edges_3D[l][y][x].usage; + best_cost = std::max(best_cost, layer_grid[l][k]); if (best_cost > 0) { // set the new min/max routing layer for the net to avoid // errors during mazeRouteMSMDOrder3D @@ -470,13 +481,17 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) gridD[i].resize(treeedge->route.routelen + 1); } + multi_array via_link; + via_link.resize(boost::extents[num_layers_][routelen + 1]); for (l = 0; l < num_layers_; l++) { for (k = 0; k <= routelen; k++) { gridD[l][k] = BIG_INT; - via_link_[l][k] = BIG_INT; + via_link[l][k] = BIG_INT; } } + multi_array layer_grid; + layer_grid.resize(boost::extents[num_layers_][routelen + 1]); for (k = 0; k < routelen; k++) { int best_cost = std::numeric_limits::min(); if (gridsX[k] == gridsX[k + 1]) { @@ -486,11 +501,11 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) bool is_vertical = layer_directions_[l] == odb::dbTechLayerDir::VERTICAL; if (is_vertical) { - layer_grid_[l][k] = v_edges_3D_[l][min_y][gridsX[k]].cap - - v_edges_3D_[l][min_y][gridsX[k]].usage; - best_cost = std::max(best_cost, layer_grid_[l][k]); + layer_grid[l][k] = v_edges_3D_[l][min_y][gridsX[k]].cap + - v_edges_3D_[l][min_y][gridsX[k]].usage; + best_cost = std::max(best_cost, layer_grid[l][k]); } else { - layer_grid_[l][k] = std::numeric_limits::min(); + layer_grid[l][k] = std::numeric_limits::min(); } } @@ -500,22 +515,36 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) // layer int min_layer = net->getMinLayer(); for (l = net->getMinLayer() - 1; l >= 0; l--) { - fixEdgeAssignment( - min_layer, v_edges_3D_, gridsX[k], min_y, k, l, true, best_cost); + fixEdgeAssignment(min_layer, + v_edges_3D_, + gridsX[k], + min_y, + k, + l, + true, + best_cost, + layer_grid); } net->setMinLayer(min_layer); // try to assign the edge to the closest layer above the max routing // layer int max_layer = net->getMaxLayer(); for (l = net->getMaxLayer() + 1; l < num_layers_; l++) { - fixEdgeAssignment( - max_layer, v_edges_3D_, gridsX[k], min_y, k, l, true, best_cost); + fixEdgeAssignment(max_layer, + v_edges_3D_, + gridsX[k], + min_y, + k, + l, + true, + best_cost, + layer_grid); } net->setMaxLayer(max_layer); } else { // the edge was assigned to a layer without causing overflow for (l = 0; l < num_layers_; l++) { if (l < net->getMinLayer() || l > net->getMaxLayer()) { - layer_grid_[l][k] = std::numeric_limits::min(); + layer_grid[l][k] = std::numeric_limits::min(); } } } @@ -527,11 +556,11 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) bool is_horizontal = layer_directions_[l] == odb::dbTechLayerDir::HORIZONTAL; if (is_horizontal) { - layer_grid_[l][k] = h_edges_3D_[l][gridsY[k]][min_x].cap - - h_edges_3D_[l][gridsY[k]][min_x].usage; - best_cost = std::max(best_cost, layer_grid_[l][k]); + layer_grid[l][k] = h_edges_3D_[l][gridsY[k]][min_x].cap + - h_edges_3D_[l][gridsY[k]][min_x].usage; + best_cost = std::max(best_cost, layer_grid[l][k]); } else { - layer_grid_[l][k] = std::numeric_limits::min(); + layer_grid[l][k] = std::numeric_limits::min(); } } @@ -541,22 +570,36 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) // layer int min_layer = net->getMinLayer(); for (l = net->getMinLayer() - 1; l >= 0; l--) { - fixEdgeAssignment( - min_layer, h_edges_3D_, min_x, gridsY[k], k, l, false, best_cost); + fixEdgeAssignment(min_layer, + h_edges_3D_, + min_x, + gridsY[k], + k, + l, + false, + best_cost, + layer_grid); } net->setMinLayer(min_layer); // try to assign the edge to the closest layer above the max routing // layer int max_layer = net->getMaxLayer(); for (l = net->getMaxLayer() + 1; l < num_layers_; l++) { - fixEdgeAssignment( - max_layer, h_edges_3D_, min_x, gridsY[k], k, l, false, best_cost); + fixEdgeAssignment(max_layer, + h_edges_3D_, + min_x, + gridsY[k], + k, + l, + false, + best_cost, + layer_grid); } net->setMaxLayer(max_layer); } else { // the edge was assigned to a layer without causing overflow for (l = 0; l < num_layers_; l++) { if (l < net->getMinLayer() || l > net->getMaxLayer()) { - layer_grid_[l][k] = std::numeric_limits::min(); + layer_grid[l][k] = std::numeric_limits::min(); } } } @@ -580,20 +623,20 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) if (k == 0) { if (gridD[i][k] > gridD[l][k] + abs(i - l) * 2) { gridD[i][k] = gridD[l][k] + abs(i - l) * 2; - via_link_[i][k] = l; + via_link[i][k] = l; } } else { if (gridD[i][k] > gridD[l][k] + abs(i - l) * 3) { gridD[i][k] = gridD[l][k] + abs(i - l) * 3; - via_link_[i][k] = l; + via_link[i][k] = l; } } } } for (l = 0; l < num_layers_; l++) { - if (layer_grid_[l][k] > 0) { + if (layer_grid[l][k] > 0) { gridD[l][k + 1] = gridD[l][k] + 1; - } else if (layer_grid_[l][k] == std::numeric_limits::min()) { + } else if (layer_grid[l][k] == std::numeric_limits::min()) { // when the layer orientation doesn't match the edge orientation, // set a larger weight to avoid assigning to this layer when the // routing has 3D overflow @@ -608,7 +651,7 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) for (i = 0; i < num_layers_; i++) { if (gridD[i][k] > gridD[l][k] + abs(i - l) * 1) { gridD[i][k] = gridD[l][k] + abs(i - l) * 1; - via_link_[i][k] = l; + via_link[i][k] = l; } } } @@ -634,16 +677,16 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) } } - if (via_link_[endLayer][routelen] == BIG_INT) { + if (via_link[endLayer][routelen] == BIG_INT) { last_layer = endLayer; } else { - last_layer = via_link_[endLayer][routelen]; + last_layer = via_link[endLayer][routelen]; } for (k = routelen; k >= 0; k--) { gridsL[k] = last_layer; - if (via_link_[last_layer][k] != BIG_INT) { - last_layer = via_link_[last_layer][k]; + if (via_link[last_layer][k] != BIG_INT) { + last_layer = via_link[last_layer][k]; } } @@ -695,20 +738,20 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) if (k == routelen) { if (gridD[i][k] > gridD[l][k] + abs(i - l) * 2) { gridD[i][k] = gridD[l][k] + abs(i - l) * 2; - via_link_[i][k] = l; + via_link[i][k] = l; } } else { if (gridD[i][k] > gridD[l][k] + abs(i - l) * 3) { gridD[i][k] = gridD[l][k] + abs(i - l) * 3; - via_link_[i][k] = l; + via_link[i][k] = l; } } } } for (l = 0; l < num_layers_; l++) { - if (layer_grid_[l][k - 1] > 0) { + if (layer_grid[l][k - 1] > 0) { gridD[l][k - 1] = gridD[l][k] + 1; - } else if (layer_grid_[l][k] == std::numeric_limits::min()) { + } else if (layer_grid[l][k] == std::numeric_limits::min()) { // when the layer orientation doesn't match the edge orientation, // set a larger weight to avoid assigning to this layer when the // routing has 3D overflow @@ -723,7 +766,7 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) for (i = 0; i < num_layers_; i++) { if (gridD[i][0] > gridD[l][0] + abs(i - l) * 1) { gridD[i][0] = gridD[l][0] + abs(i - l) * 1; - via_link_[i][0] = l; + via_link[i][0] = l; } } } @@ -751,8 +794,8 @@ void FastRouteCore::assignEdge(int netID, int edgeID, bool processDIR) last_layer = endLayer; for (k = 0; k <= routelen; k++) { - if (via_link_[last_layer][k] != BIG_INT) { - last_layer = via_link_[last_layer][k]; + if (via_link[last_layer][k] != BIG_INT) { + last_layer = via_link[last_layer][k]; } gridsL[k] = last_layer; } diff --git a/src/grt/test/congestion1.guideok b/src/grt/test/congestion1.guideok index 7b2a49860f0..f526132a9cd 100644 --- a/src/grt/test/congestion1.guideok +++ b/src/grt/test/congestion1.guideok @@ -882,15 +882,10 @@ _110_ _111_ ( 67200 63000 79800 67200 metal1 -75600 63000 79800 67200 metal1 -75600 63000 79800 67200 metal2 -75600 63000 84000 67200 metal3 -79800 63000 84000 67200 metal2 -79800 63000 84000 67200 metal1 +75600 63000 84000 67200 metal1 63000 63000 71400 67200 metal1 -75600 63000 79800 71400 metal3 -75600 67200 79800 71400 metal2 -75600 67200 79800 71400 metal1 +75600 63000 79800 71400 metal1 +79800 63000 84000 67200 metal1 79800 63000 84000 71400 metal2 79800 67200 84000 71400 metal1 ) @@ -997,10 +992,7 @@ _116_ ) _117_ ( -96600 113400 100800 117600 metal2 -96600 113400 105000 117600 metal3 -100800 113400 105000 117600 metal2 -100800 113400 105000 117600 metal1 +96600 113400 105000 117600 metal1 92400 126000 96600 130200 metal1 92400 126000 96600 134400 metal2 92400 130200 96600 134400 metal1 @@ -1009,6 +1001,7 @@ _117_ 92400 117600 100800 121800 metal1 96600 117600 100800 121800 metal1 96600 113400 100800 121800 metal2 +96600 113400 100800 117600 metal1 84000 113400 88200 117600 metal1 84000 109200 88200 117600 metal2 84000 109200 88200 113400 metal2 @@ -1042,6 +1035,7 @@ _118_ ) _119_ ( +121800 130200 126000 134400 metal1 121800 130200 126000 138600 metal2 121800 134400 126000 138600 metal1 117600 113400 121800 117600 metal1 @@ -1061,11 +1055,7 @@ _119_ 130200 142800 134400 147000 metal2 130200 142800 134400 147000 metal1 117600 121800 126000 126000 metal2 -121800 121800 126000 130200 metal2 -121800 126000 126000 130200 metal2 -121800 126000 126000 134400 metal3 -121800 130200 126000 134400 metal2 -121800 130200 126000 134400 metal1 +121800 121800 126000 134400 metal2 121800 134400 130200 138600 metal1 ) _120_ @@ -1144,11 +1134,11 @@ _123_ 126000 117600 130200 121800 metal1 126000 117600 130200 121800 metal2 126000 117600 134400 121800 metal3 -130200 105000 138600 109200 metal2 -134400 105000 138600 109200 metal1 +130200 105000 138600 109200 metal1 ) _124_ ( +63000 92400 67200 96600 metal1 63000 88200 67200 96600 metal2 63000 88200 67200 92400 metal2 63000 88200 71400 92400 metal3 @@ -1159,11 +1149,7 @@ _124_ 54600 92400 58800 105000 metal2 54600 92400 58800 96600 metal1 54600 92400 63000 96600 metal1 -63000 92400 67200 96600 metal1 -63000 92400 67200 96600 metal2 -63000 92400 71400 96600 metal3 -67200 92400 71400 96600 metal2 -67200 92400 71400 96600 metal1 +63000 92400 71400 96600 metal1 ) _125_ ( @@ -1566,8 +1552,8 @@ _142_ 54600 113400 58800 121800 metal2 54600 113400 63000 117600 metal2 58800 109200 63000 117600 metal2 -58800 109200 63000 113400 metal1 -58800 109200 67200 113400 metal1 +58800 109200 67200 113400 metal2 +63000 109200 67200 113400 metal1 79800 96600 84000 100800 metal1 79800 96600 84000 105000 metal2 79800 100800 84000 105000 metal2 @@ -1895,8 +1881,7 @@ _159_ 84000 138600 88200 147000 metal2 84000 138600 88200 142800 metal1 84000 134400 88200 142800 metal1 -84000 134400 88200 138600 metal1 -84000 134400 92400 138600 metal2 +84000 134400 92400 138600 metal1 138600 71400 142800 79800 metal2 138600 71400 142800 75600 metal2 138600 71400 159600 75600 metal3 @@ -1958,6 +1943,7 @@ _160_ 147000 121800 151200 126000 metal1 147000 121800 151200 138600 metal2 147000 134400 151200 138600 metal1 +71400 121800 75600 126000 metal1 71400 121800 75600 138600 metal2 71400 134400 75600 138600 metal2 67200 134400 75600 138600 metal3 @@ -2012,11 +1998,8 @@ _160_ 113400 88200 117600 92400 metal1 113400 88200 121800 92400 metal1 71400 113400 75600 126000 metal2 -147000 138600 151200 147000 metal2 -147000 138600 151200 142800 metal1 -147000 134400 151200 142800 metal1 -71400 121800 79800 126000 metal2 -75600 121800 79800 126000 metal1 +147000 134400 151200 147000 metal2 +71400 121800 79800 126000 metal1 ) _161_ ( @@ -2757,9 +2740,7 @@ _221_ 92400 63000 117600 67200 metal3 113400 63000 117600 67200 metal2 113400 63000 117600 71400 metal2 -113400 67200 117600 71400 metal2 -113400 67200 121800 71400 metal3 -117600 67200 121800 71400 metal2 +113400 67200 121800 71400 metal2 117600 67200 121800 71400 metal1 88200 67200 96600 71400 metal1 92400 71400 96600 75600 metal1 @@ -3227,9 +3208,8 @@ _248_ 113400 21000 117600 25200 metal2 113400 21000 117600 46200 metal2 58800 67200 63000 71400 metal1 -58800 67200 63000 75600 metal2 -58800 71400 63000 75600 metal1 -58800 71400 63000 79800 metal1 +58800 67200 63000 79800 metal2 +58800 75600 63000 79800 metal1 58800 92400 75600 96600 metal1 71400 92400 75600 96600 metal1 71400 92400 75600 105000 metal2 @@ -3399,9 +3379,7 @@ _252_ 105000 33600 109200 46200 metal2 105000 42000 109200 46200 metal1 105000 42000 109200 50400 metal1 -105000 46200 109200 50400 metal1 -100800 46200 109200 50400 metal2 -100800 46200 105000 50400 metal1 +100800 46200 109200 50400 metal1 92400 33600 96600 37800 metal1 92400 29400 96600 37800 metal2 67200 67200 71400 71400 metal1 @@ -3659,8 +3637,7 @@ _272_ 138600 84000 142800 92400 metal2 138600 88200 142800 92400 metal1 134400 88200 138600 96600 metal1 -134400 88200 138600 92400 metal1 -134400 88200 142800 92400 metal2 +134400 88200 142800 92400 metal1 ) _273_ ( @@ -4396,9 +4373,8 @@ _353_ 113400 138600 117600 147000 metal2 113400 138600 117600 142800 metal1 113400 138600 121800 142800 metal1 -54600 92400 58800 96600 metal2 -46200 92400 58800 96600 metal3 -46200 92400 50400 96600 metal2 +46200 92400 58800 96600 metal1 +46200 92400 50400 96600 metal1 46200 92400 50400 147000 metal2 46200 142800 50400 147000 metal2 46200 142800 67200 147000 metal3 @@ -4419,9 +4395,8 @@ _353_ 88200 117600 92400 121800 metal1 88200 92400 92400 121800 metal2 88200 92400 92400 96600 metal1 -54600 92400 58800 100800 metal3 -54600 96600 58800 100800 metal2 -54600 96600 58800 100800 metal1 +54600 92400 58800 100800 metal1 +54600 92400 58800 96600 metal1 54600 84000 58800 96600 metal2 54600 84000 58800 88200 metal1 54600 84000 63000 88200 metal1 @@ -5158,9 +5133,7 @@ _401_ 50400 58800 79800 63000 metal3 75600 58800 79800 63000 metal2 75600 58800 84000 63000 metal2 -79800 58800 84000 63000 metal2 -79800 58800 84000 67200 metal3 -79800 63000 84000 67200 metal2 +79800 58800 84000 67200 metal2 79800 63000 84000 67200 metal1 92400 84000 96600 96600 metal2 92400 84000 96600 88200 metal1 @@ -5176,10 +5149,7 @@ _401_ 117600 29400 126000 33600 metal2 121800 29400 126000 67200 metal2 121800 63000 126000 67200 metal1 -117600 63000 126000 67200 metal1 -117600 63000 121800 67200 metal1 -113400 63000 121800 67200 metal2 -113400 63000 117600 67200 metal1 +113400 63000 126000 67200 metal1 71400 21000 75600 25200 metal1 71400 21000 75600 42000 metal2 71400 37800 75600 42000 metal1 @@ -5307,9 +5277,8 @@ _405_ 46200 71400 50400 75600 metal2 46200 71400 71400 75600 metal3 67200 71400 71400 75600 metal2 -67200 71400 75600 75600 metal3 -71400 71400 75600 75600 metal2 -71400 71400 75600 75600 metal1 +67200 71400 71400 75600 metal1 +67200 71400 75600 75600 metal1 ) _406_ ( @@ -5459,14 +5428,13 @@ _415_ ( 142800 109200 147000 113400 metal1 142800 100800 147000 113400 metal2 +142800 100800 147000 105000 metal1 142800 100800 147000 105000 metal2 142800 100800 163800 105000 metal3 159600 100800 163800 105000 metal2 159600 92400 163800 105000 metal2 159600 92400 163800 96600 metal1 -142800 96600 147000 105000 metal3 -142800 96600 147000 100800 metal2 -142800 96600 147000 100800 metal1 +142800 96600 147000 105000 metal1 ) _416_ ( @@ -5534,14 +5502,14 @@ _420_ ) _421_ ( -58800 121800 67200 126000 metal2 -63000 121800 67200 126000 metal1 +58800 121800 67200 126000 metal1 67200 117600 71400 121800 metal1 67200 109200 71400 121800 metal2 67200 109200 71400 113400 metal1 58800 117600 71400 121800 metal1 58800 117600 63000 121800 metal1 58800 117600 63000 126000 metal2 +58800 121800 63000 126000 metal1 58800 121800 63000 126000 metal2 8400 121800 63000 126000 metal3 8400 121800 12600 126000 metal2 @@ -5590,6 +5558,7 @@ clk 126000 84000 130200 88200 metal1 130200 147000 134400 180600 metal2 130200 147000 134400 151200 metal1 +50400 117600 54600 121800 metal1 50400 117600 54600 151200 metal2 50400 147000 54600 151200 metal2 50400 147000 88200 151200 metal3 @@ -5605,6 +5574,8 @@ clk 134400 50400 155400 54600 metal3 151200 50400 155400 54600 metal2 151200 50400 155400 75600 metal2 +109200 71400 113400 75600 metal1 +109200 71400 113400 75600 metal2 109200 71400 130200 75600 metal3 126000 71400 130200 75600 metal2 151200 117600 155400 121800 metal1 @@ -5631,19 +5602,13 @@ clk 88200 29400 96600 33600 metal1 105000 75600 109200 79800 metal1 105000 71400 109200 79800 metal2 -105000 71400 109200 75600 metal2 -105000 71400 113400 75600 metal3 +105000 71400 109200 75600 metal1 +105000 71400 113400 75600 metal1 84000 121800 88200 134400 metal2 84000 121800 88200 126000 metal1 84000 121800 92400 126000 metal1 -50400 117600 54600 121800 metal2 -50400 117600 58800 121800 metal3 -54600 117600 58800 121800 metal2 -54600 117600 58800 121800 metal1 -75600 21000 79800 33600 metal2 -75600 29400 79800 33600 metal2 -75600 29400 79800 37800 metal3 -75600 33600 79800 37800 metal2 +50400 117600 58800 121800 metal1 +75600 21000 79800 37800 metal2 75600 33600 79800 37800 metal1 126000 63000 130200 75600 metal2 151200 75600 155400 79800 metal1 @@ -5662,9 +5627,7 @@ clk 92400 147000 96600 151200 metal2 92400 147000 100800 151200 metal3 54600 54600 58800 67200 metal2 -109200 67200 113400 75600 metal3 -109200 67200 113400 71400 metal2 -109200 67200 113400 71400 metal1 +109200 67200 113400 75600 metal1 134400 67200 138600 71400 metal1 134400 63000 138600 71400 metal2 92400 189000 96600 193200 metal2 @@ -5760,6 +5723,7 @@ clk 54600 21000 79800 25200 metal3 75600 21000 79800 25200 metal2 54600 63000 63000 67200 metal1 +54600 117600 58800 121800 metal1 54600 109200 58800 121800 metal2 92400 189000 96600 201600 metal6 ) diff --git a/src/grt/test/congestion1.ok b/src/grt/test/congestion1.ok index 513724c2c39..992c3eb717b 100644 --- a/src/grt/test/congestion1.ok +++ b/src/grt/test/congestion1.ok @@ -47,19 +47,19 @@ metal10 Vertical 2305 0 100.00% [INFO GRT-0101] Running extra iterations to remove overflow. [INFO GRT-0103] Extra Run for hard benchmark. -[INFO GRT-0197] Via related to pin nodes: 2631 -[INFO GRT-0198] Via related Steiner nodes: 111 +[INFO GRT-0197] Via related to pin nodes: 2595 +[INFO GRT-0198] Via related Steiner nodes: 112 [INFO GRT-0199] Via filling finished. -[INFO GRT-0111] Final number of vias: 4273 -[INFO GRT-0112] Final usage 3D: 17647 +[INFO GRT-0111] Final number of vias: 4216 +[INFO GRT-0112] Final usage 3D: 17476 [WARNING GRT-0115] Global routing finished with overflow. [INFO GRT-0096] Final congestion report: Layer Resource Demand Usage (%) Max H / Max V / Total Overflow --------------------------------------------------------------------------------------- -metal1 0 424 0.00% 4 / 2 / 424 +metal1 0 440 0.00% 4 / 2 / 440 metal2 2209 2403 108.78% 2 / 4 / 803 -metal3 2208 2001 90.62% 2 / 1 / 418 +metal3 2208 1985 89.90% 2 / 1 / 402 metal4 0 0 0.00% 0 / 0 / 0 metal5 0 0 0.00% 0 / 0 / 0 metal6 0 0 0.00% 0 / 0 / 0 @@ -70,6 +70,6 @@ metal10 0 0 0.00% 0 / 0 / 0 --------------------------------------------------------------------------------------- Total 4417 4828 109.30% 8 / 7 / 1645 -[INFO GRT-0018] Total wirelength: 15046 um +[INFO GRT-0018] Total wirelength: 15036 um [INFO GRT-0014] Routed nets: 563 No differences found. diff --git a/src/grt/test/congestion5.ok b/src/grt/test/congestion5.ok index 7878e528efa..9152abb8492 100644 --- a/src/grt/test/congestion5.ok +++ b/src/grt/test/congestion5.ok @@ -47,10 +47,10 @@ metal10 Vertical 2305 0 100.00% [INFO GRT-0101] Running extra iterations to remove overflow. [INFO GRT-0103] Extra Run for hard benchmark. -[INFO GRT-0197] Via related to pin nodes: 1736 -[INFO GRT-0198] Via related Steiner nodes: 84 +[INFO GRT-0197] Via related to pin nodes: 1725 +[INFO GRT-0198] Via related Steiner nodes: 88 [INFO GRT-0199] Via filling finished. -[INFO GRT-0111] Final number of vias: 3229 -[INFO GRT-0112] Final usage 3D: 14894 +[INFO GRT-0111] Final number of vias: 3220 +[INFO GRT-0112] Final usage 3D: 14867 [ERROR GRT-0118] Routing congestion too high. Check the congestion heatmap in the GUI. GRT-0118 diff --git a/src/grt/test/congestion6.ok b/src/grt/test/congestion6.ok index bb6f120d271..9e0eb6e34d0 100644 --- a/src/grt/test/congestion6.ok +++ b/src/grt/test/congestion6.ok @@ -47,10 +47,10 @@ metal10 Vertical 2305 0 100.00% [INFO GRT-0101] Running extra iterations to remove overflow. [INFO GRT-0103] Extra Run for hard benchmark. -[INFO GRT-0197] Via related to pin nodes: 3171 -[INFO GRT-0198] Via related Steiner nodes: 86 +[INFO GRT-0197] Via related to pin nodes: 3165 +[INFO GRT-0198] Via related Steiner nodes: 91 [INFO GRT-0199] Via filling finished. -[INFO GRT-0111] Final number of vias: 5003 -[INFO GRT-0112] Final usage 3D: 20169 +[INFO GRT-0111] Final number of vias: 4999 +[INFO GRT-0112] Final usage 3D: 20157 [ERROR GRT-0118] Routing congestion too high. Check the congestion heatmap in the GUI. GRT-0118 diff --git a/src/grt/test/congestion7.guideok b/src/grt/test/congestion7.guideok index 7b2a49860f0..f526132a9cd 100644 --- a/src/grt/test/congestion7.guideok +++ b/src/grt/test/congestion7.guideok @@ -882,15 +882,10 @@ _110_ _111_ ( 67200 63000 79800 67200 metal1 -75600 63000 79800 67200 metal1 -75600 63000 79800 67200 metal2 -75600 63000 84000 67200 metal3 -79800 63000 84000 67200 metal2 -79800 63000 84000 67200 metal1 +75600 63000 84000 67200 metal1 63000 63000 71400 67200 metal1 -75600 63000 79800 71400 metal3 -75600 67200 79800 71400 metal2 -75600 67200 79800 71400 metal1 +75600 63000 79800 71400 metal1 +79800 63000 84000 67200 metal1 79800 63000 84000 71400 metal2 79800 67200 84000 71400 metal1 ) @@ -997,10 +992,7 @@ _116_ ) _117_ ( -96600 113400 100800 117600 metal2 -96600 113400 105000 117600 metal3 -100800 113400 105000 117600 metal2 -100800 113400 105000 117600 metal1 +96600 113400 105000 117600 metal1 92400 126000 96600 130200 metal1 92400 126000 96600 134400 metal2 92400 130200 96600 134400 metal1 @@ -1009,6 +1001,7 @@ _117_ 92400 117600 100800 121800 metal1 96600 117600 100800 121800 metal1 96600 113400 100800 121800 metal2 +96600 113400 100800 117600 metal1 84000 113400 88200 117600 metal1 84000 109200 88200 117600 metal2 84000 109200 88200 113400 metal2 @@ -1042,6 +1035,7 @@ _118_ ) _119_ ( +121800 130200 126000 134400 metal1 121800 130200 126000 138600 metal2 121800 134400 126000 138600 metal1 117600 113400 121800 117600 metal1 @@ -1061,11 +1055,7 @@ _119_ 130200 142800 134400 147000 metal2 130200 142800 134400 147000 metal1 117600 121800 126000 126000 metal2 -121800 121800 126000 130200 metal2 -121800 126000 126000 130200 metal2 -121800 126000 126000 134400 metal3 -121800 130200 126000 134400 metal2 -121800 130200 126000 134400 metal1 +121800 121800 126000 134400 metal2 121800 134400 130200 138600 metal1 ) _120_ @@ -1144,11 +1134,11 @@ _123_ 126000 117600 130200 121800 metal1 126000 117600 130200 121800 metal2 126000 117600 134400 121800 metal3 -130200 105000 138600 109200 metal2 -134400 105000 138600 109200 metal1 +130200 105000 138600 109200 metal1 ) _124_ ( +63000 92400 67200 96600 metal1 63000 88200 67200 96600 metal2 63000 88200 67200 92400 metal2 63000 88200 71400 92400 metal3 @@ -1159,11 +1149,7 @@ _124_ 54600 92400 58800 105000 metal2 54600 92400 58800 96600 metal1 54600 92400 63000 96600 metal1 -63000 92400 67200 96600 metal1 -63000 92400 67200 96600 metal2 -63000 92400 71400 96600 metal3 -67200 92400 71400 96600 metal2 -67200 92400 71400 96600 metal1 +63000 92400 71400 96600 metal1 ) _125_ ( @@ -1566,8 +1552,8 @@ _142_ 54600 113400 58800 121800 metal2 54600 113400 63000 117600 metal2 58800 109200 63000 117600 metal2 -58800 109200 63000 113400 metal1 -58800 109200 67200 113400 metal1 +58800 109200 67200 113400 metal2 +63000 109200 67200 113400 metal1 79800 96600 84000 100800 metal1 79800 96600 84000 105000 metal2 79800 100800 84000 105000 metal2 @@ -1895,8 +1881,7 @@ _159_ 84000 138600 88200 147000 metal2 84000 138600 88200 142800 metal1 84000 134400 88200 142800 metal1 -84000 134400 88200 138600 metal1 -84000 134400 92400 138600 metal2 +84000 134400 92400 138600 metal1 138600 71400 142800 79800 metal2 138600 71400 142800 75600 metal2 138600 71400 159600 75600 metal3 @@ -1958,6 +1943,7 @@ _160_ 147000 121800 151200 126000 metal1 147000 121800 151200 138600 metal2 147000 134400 151200 138600 metal1 +71400 121800 75600 126000 metal1 71400 121800 75600 138600 metal2 71400 134400 75600 138600 metal2 67200 134400 75600 138600 metal3 @@ -2012,11 +1998,8 @@ _160_ 113400 88200 117600 92400 metal1 113400 88200 121800 92400 metal1 71400 113400 75600 126000 metal2 -147000 138600 151200 147000 metal2 -147000 138600 151200 142800 metal1 -147000 134400 151200 142800 metal1 -71400 121800 79800 126000 metal2 -75600 121800 79800 126000 metal1 +147000 134400 151200 147000 metal2 +71400 121800 79800 126000 metal1 ) _161_ ( @@ -2757,9 +2740,7 @@ _221_ 92400 63000 117600 67200 metal3 113400 63000 117600 67200 metal2 113400 63000 117600 71400 metal2 -113400 67200 117600 71400 metal2 -113400 67200 121800 71400 metal3 -117600 67200 121800 71400 metal2 +113400 67200 121800 71400 metal2 117600 67200 121800 71400 metal1 88200 67200 96600 71400 metal1 92400 71400 96600 75600 metal1 @@ -3227,9 +3208,8 @@ _248_ 113400 21000 117600 25200 metal2 113400 21000 117600 46200 metal2 58800 67200 63000 71400 metal1 -58800 67200 63000 75600 metal2 -58800 71400 63000 75600 metal1 -58800 71400 63000 79800 metal1 +58800 67200 63000 79800 metal2 +58800 75600 63000 79800 metal1 58800 92400 75600 96600 metal1 71400 92400 75600 96600 metal1 71400 92400 75600 105000 metal2 @@ -3399,9 +3379,7 @@ _252_ 105000 33600 109200 46200 metal2 105000 42000 109200 46200 metal1 105000 42000 109200 50400 metal1 -105000 46200 109200 50400 metal1 -100800 46200 109200 50400 metal2 -100800 46200 105000 50400 metal1 +100800 46200 109200 50400 metal1 92400 33600 96600 37800 metal1 92400 29400 96600 37800 metal2 67200 67200 71400 71400 metal1 @@ -3659,8 +3637,7 @@ _272_ 138600 84000 142800 92400 metal2 138600 88200 142800 92400 metal1 134400 88200 138600 96600 metal1 -134400 88200 138600 92400 metal1 -134400 88200 142800 92400 metal2 +134400 88200 142800 92400 metal1 ) _273_ ( @@ -4396,9 +4373,8 @@ _353_ 113400 138600 117600 147000 metal2 113400 138600 117600 142800 metal1 113400 138600 121800 142800 metal1 -54600 92400 58800 96600 metal2 -46200 92400 58800 96600 metal3 -46200 92400 50400 96600 metal2 +46200 92400 58800 96600 metal1 +46200 92400 50400 96600 metal1 46200 92400 50400 147000 metal2 46200 142800 50400 147000 metal2 46200 142800 67200 147000 metal3 @@ -4419,9 +4395,8 @@ _353_ 88200 117600 92400 121800 metal1 88200 92400 92400 121800 metal2 88200 92400 92400 96600 metal1 -54600 92400 58800 100800 metal3 -54600 96600 58800 100800 metal2 -54600 96600 58800 100800 metal1 +54600 92400 58800 100800 metal1 +54600 92400 58800 96600 metal1 54600 84000 58800 96600 metal2 54600 84000 58800 88200 metal1 54600 84000 63000 88200 metal1 @@ -5158,9 +5133,7 @@ _401_ 50400 58800 79800 63000 metal3 75600 58800 79800 63000 metal2 75600 58800 84000 63000 metal2 -79800 58800 84000 63000 metal2 -79800 58800 84000 67200 metal3 -79800 63000 84000 67200 metal2 +79800 58800 84000 67200 metal2 79800 63000 84000 67200 metal1 92400 84000 96600 96600 metal2 92400 84000 96600 88200 metal1 @@ -5176,10 +5149,7 @@ _401_ 117600 29400 126000 33600 metal2 121800 29400 126000 67200 metal2 121800 63000 126000 67200 metal1 -117600 63000 126000 67200 metal1 -117600 63000 121800 67200 metal1 -113400 63000 121800 67200 metal2 -113400 63000 117600 67200 metal1 +113400 63000 126000 67200 metal1 71400 21000 75600 25200 metal1 71400 21000 75600 42000 metal2 71400 37800 75600 42000 metal1 @@ -5307,9 +5277,8 @@ _405_ 46200 71400 50400 75600 metal2 46200 71400 71400 75600 metal3 67200 71400 71400 75600 metal2 -67200 71400 75600 75600 metal3 -71400 71400 75600 75600 metal2 -71400 71400 75600 75600 metal1 +67200 71400 71400 75600 metal1 +67200 71400 75600 75600 metal1 ) _406_ ( @@ -5459,14 +5428,13 @@ _415_ ( 142800 109200 147000 113400 metal1 142800 100800 147000 113400 metal2 +142800 100800 147000 105000 metal1 142800 100800 147000 105000 metal2 142800 100800 163800 105000 metal3 159600 100800 163800 105000 metal2 159600 92400 163800 105000 metal2 159600 92400 163800 96600 metal1 -142800 96600 147000 105000 metal3 -142800 96600 147000 100800 metal2 -142800 96600 147000 100800 metal1 +142800 96600 147000 105000 metal1 ) _416_ ( @@ -5534,14 +5502,14 @@ _420_ ) _421_ ( -58800 121800 67200 126000 metal2 -63000 121800 67200 126000 metal1 +58800 121800 67200 126000 metal1 67200 117600 71400 121800 metal1 67200 109200 71400 121800 metal2 67200 109200 71400 113400 metal1 58800 117600 71400 121800 metal1 58800 117600 63000 121800 metal1 58800 117600 63000 126000 metal2 +58800 121800 63000 126000 metal1 58800 121800 63000 126000 metal2 8400 121800 63000 126000 metal3 8400 121800 12600 126000 metal2 @@ -5590,6 +5558,7 @@ clk 126000 84000 130200 88200 metal1 130200 147000 134400 180600 metal2 130200 147000 134400 151200 metal1 +50400 117600 54600 121800 metal1 50400 117600 54600 151200 metal2 50400 147000 54600 151200 metal2 50400 147000 88200 151200 metal3 @@ -5605,6 +5574,8 @@ clk 134400 50400 155400 54600 metal3 151200 50400 155400 54600 metal2 151200 50400 155400 75600 metal2 +109200 71400 113400 75600 metal1 +109200 71400 113400 75600 metal2 109200 71400 130200 75600 metal3 126000 71400 130200 75600 metal2 151200 117600 155400 121800 metal1 @@ -5631,19 +5602,13 @@ clk 88200 29400 96600 33600 metal1 105000 75600 109200 79800 metal1 105000 71400 109200 79800 metal2 -105000 71400 109200 75600 metal2 -105000 71400 113400 75600 metal3 +105000 71400 109200 75600 metal1 +105000 71400 113400 75600 metal1 84000 121800 88200 134400 metal2 84000 121800 88200 126000 metal1 84000 121800 92400 126000 metal1 -50400 117600 54600 121800 metal2 -50400 117600 58800 121800 metal3 -54600 117600 58800 121800 metal2 -54600 117600 58800 121800 metal1 -75600 21000 79800 33600 metal2 -75600 29400 79800 33600 metal2 -75600 29400 79800 37800 metal3 -75600 33600 79800 37800 metal2 +50400 117600 58800 121800 metal1 +75600 21000 79800 37800 metal2 75600 33600 79800 37800 metal1 126000 63000 130200 75600 metal2 151200 75600 155400 79800 metal1 @@ -5662,9 +5627,7 @@ clk 92400 147000 96600 151200 metal2 92400 147000 100800 151200 metal3 54600 54600 58800 67200 metal2 -109200 67200 113400 75600 metal3 -109200 67200 113400 71400 metal2 -109200 67200 113400 71400 metal1 +109200 67200 113400 75600 metal1 134400 67200 138600 71400 metal1 134400 63000 138600 71400 metal2 92400 189000 96600 193200 metal2 @@ -5760,6 +5723,7 @@ clk 54600 21000 79800 25200 metal3 75600 21000 79800 25200 metal2 54600 63000 63000 67200 metal1 +54600 117600 58800 121800 metal1 54600 109200 58800 121800 metal2 92400 189000 96600 201600 metal6 ) diff --git a/src/grt/test/congestion7.ok b/src/grt/test/congestion7.ok index 3584e0c1f5b..64f7ee0d02b 100644 --- a/src/grt/test/congestion7.ok +++ b/src/grt/test/congestion7.ok @@ -47,19 +47,19 @@ metal10 Vertical 2305 0 100.00% [INFO GRT-0101] Running extra iterations to remove overflow. [INFO GRT-0103] Extra Run for hard benchmark. -[INFO GRT-0197] Via related to pin nodes: 2631 -[INFO GRT-0198] Via related Steiner nodes: 111 +[INFO GRT-0197] Via related to pin nodes: 2595 +[INFO GRT-0198] Via related Steiner nodes: 112 [INFO GRT-0199] Via filling finished. -[INFO GRT-0111] Final number of vias: 4273 -[INFO GRT-0112] Final usage 3D: 17647 +[INFO GRT-0111] Final number of vias: 4216 +[INFO GRT-0112] Final usage 3D: 17476 [WARNING GRT-0115] Global routing finished with overflow. [INFO GRT-0096] Final congestion report: Layer Resource Demand Usage (%) Max H / Max V / Total Overflow --------------------------------------------------------------------------------------- -metal1 0 424 0.00% 4 / 2 / 424 +metal1 0 440 0.00% 4 / 2 / 440 metal2 2209 2403 108.78% 2 / 4 / 803 -metal3 2208 2001 90.62% 2 / 1 / 418 +metal3 2208 1985 89.90% 2 / 1 / 402 metal4 0 0 0.00% 0 / 0 / 0 metal5 0 0 0.00% 0 / 0 / 0 metal6 0 0 0.00% 0 / 0 / 0 @@ -70,7 +70,7 @@ metal10 0 0 0.00% 0 / 0 / 0 --------------------------------------------------------------------------------------- Total 4417 4828 109.30% 8 / 7 / 1645 -[INFO GRT-0018] Total wirelength: 15046 um +[INFO GRT-0018] Total wirelength: 15036 um [INFO GRT-0014] Routed nets: 563 No differences found. No differences found.