File tree Expand file tree Collapse file tree 1 file changed +25
-0
lines changed
Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments