@@ -775,72 +775,6 @@ float EstimateParasitics::pinCapacitance(const Pin* pin,
775775 return 0.0 ;
776776}
777777
778- float EstimateParasitics::totalLoad (SteinerTree* tree) const
779- {
780- if (!tree) {
781- return 0 ;
782- }
783-
784- SteinerPt top_pt = tree->top ();
785- SteinerPt drvr_pt = tree->drvrPt ();
786-
787- if (top_pt == SteinerNull) {
788- return 0 ;
789- }
790-
791- auto top_loc = tree->location (top_pt);
792- auto drvr_loc = tree->location (drvr_pt);
793- int length = tree->distance (drvr_pt, top_pt);
794- double dx
795- = dbuToMeters (std::abs (top_loc.x () - drvr_loc.x ())) / dbuToMeters (length);
796- double dy
797- = dbuToMeters (std::abs (top_loc.y () - drvr_loc.y ())) / dbuToMeters (length);
798-
799- float load = 0.0 , max_load = 0.0 ;
800-
801- debugPrint (logger_, EST, " estimate_parasitics" , 1 , " Steiner totalLoad " );
802- // For now we will just look at the worst corner for totalLoad
803- for (Corner* corner : *sta_->corners ()) {
804- double wire_cap = dx * wireSignalHCapacitance (corner)
805- + dy * wireSignalVCapacitance (corner);
806- float top_length = dbuToMeters (tree->distance (drvr_pt, top_pt));
807- float subtree_load = subtreeLoad (tree, wire_cap, top_pt);
808- load = top_length * wire_cap + subtree_load;
809- max_load = std::max (max_load, load);
810- }
811- return max_load;
812- }
813-
814- float EstimateParasitics::subtreeLoad (SteinerTree* tree,
815- float cap_per_micron,
816- SteinerPt pt) const
817- {
818- if (pt == SteinerNull) {
819- return 0 ;
820- }
821- SteinerPt left_pt = tree->left (pt);
822- SteinerPt right_pt = tree->right (pt);
823-
824- if ((left_pt == SteinerNull) && (right_pt == SteinerNull)) {
825- return (this ->pinCapacitance (tree->pin (pt), tgt_slew_dcalc_ap_));
826- }
827-
828- float left_cap = 0 ;
829- float right_cap = 0 ;
830-
831- if (left_pt != SteinerNull) {
832- const float left_length = dbuToMeters (tree->distance (pt, left_pt));
833- left_cap = subtreeLoad (tree, cap_per_micron, left_pt)
834- + (left_length * cap_per_micron);
835- }
836- if (right_pt != SteinerNull) {
837- const float right_length = dbuToMeters (tree->distance (pt, right_pt));
838- right_cap = subtreeLoad (tree, cap_per_micron, right_pt)
839- + (right_length * cap_per_micron);
840- }
841- return left_cap + right_cap;
842- }
843-
844778odb::dbTechLayer* EstimateParasitics::getPinLayer (const Pin* pin)
845779{
846780 odb::dbITerm* iterm;
0 commit comments