Skip to content

Commit 5f78034

Browse files
committed
grt: Put back last mile patching in length utility
Signed-off-by: Martin Povišer <[email protected]>
1 parent 3351fe4 commit 5f78034

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/grt/src/MakeWireParasitics.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,31 @@ std::vector<int> MakeWireParasitics::routeLayerLengths(odb::dbNet* db_net) const
516516
route_pts.insert(RoutePt(segment.final_x, segment.final_y, layer));
517517
}
518518
}
519+
// Mimic MakeWireParasitics::makeParasiticsToPin functionality.
520+
Net* net = grouter_->getNet(db_net);
521+
for (Pin& pin : net->getPins()) {
522+
int layer = pin.getConnectionLayer() + 1;
523+
odb::Point grid_pt = pin.getOnGridPosition();
524+
odb::Point pt = pin.getPosition();
525+
526+
std::vector<std::pair<odb::Point, odb::Point>> ap_positions;
527+
bool has_access_points
528+
= grouter_->findPinAccessPointPositions(pin, ap_positions);
529+
if (has_access_points) {
530+
auto ap_position = ap_positions.front();
531+
pt = ap_position.first;
532+
grid_pt = ap_position.second;
533+
}
534+
535+
RoutePt grid_route(grid_pt.getX(), grid_pt.getY(), layer);
536+
auto pt_itr = route_pts.find(grid_route);
537+
if (pt_itr == route_pts.end())
538+
layer--;
539+
int wire_length_dbu
540+
= abs(pt.getX() - grid_pt.getX()) + abs(pt.getY() - grid_pt.getY());
541+
layer_lengths[tech_->findRoutingLayer(layer)->getNumber()]
542+
+= wire_length_dbu;
543+
}
519544
}
520545
return layer_lengths;
521546
}

0 commit comments

Comments
 (0)