@@ -426,7 +426,8 @@ GraphDelayCalc::seedDrvrSlew(Vertex *drvr_vertex,
426426 if (from_port == nullptr )
427427 from_port = driveCellDefaultFromPort (drvr_cell, to_port);
428428 findInputDriverDelay (drvr_cell, drvr_pin, drvr_vertex, rf,
429- from_port, from_slews, to_port, scene, min_max);
429+ from_port, from_slews, to_port, scene, min_max,
430+ arc_delay_calc);
430431 }
431432 else
432433 seedNoDrvrCellSlew (drvr_vertex, drvr_pin, rf, drive, scene, min_max,
@@ -601,7 +602,8 @@ GraphDelayCalc::findInputDriverDelay(const LibertyCell *drvr_cell,
601602 float *from_slews,
602603 const LibertyPort *to_port,
603604 const Scene *scene,
604- const MinMax *min_max)
605+ const MinMax *min_max,
606+ ArcDelayCalc *arc_delay_calc)
605607{
606608 debugPrint (debug_, " delay_calc" , 2 , " driver cell {} {}" ,
607609 drvr_cell->name (),
@@ -610,7 +612,8 @@ GraphDelayCalc::findInputDriverDelay(const LibertyCell *drvr_cell,
610612 for (TimingArc *arc : arc_set->arcs ()) {
611613 if (arc->toEdge ()->asRiseFall () == rf) {
612614 float from_slew = from_slews[arc->fromEdge ()->index ()];
613- findInputArcDelay (drvr_pin, drvr_vertex, arc, from_slew, scene, min_max);
615+ findInputArcDelay (drvr_pin, drvr_vertex, arc, from_slew, scene, min_max,
616+ arc_delay_calc);
614617 }
615618 }
616619 }
@@ -626,7 +629,8 @@ GraphDelayCalc::findInputArcDelay(const Pin *drvr_pin,
626629 const TimingArc *arc,
627630 float from_slew,
628631 const Scene *scene,
629- const MinMax *min_max)
632+ const MinMax *min_max,
633+ ArcDelayCalc *arc_delay_calc)
630634{
631635 debugPrint (debug_, " delay_calc" , 3 , " {} {} -> {} {} ({})" ,
632636 arc->from ()->name (),
@@ -640,20 +644,20 @@ GraphDelayCalc::findInputArcDelay(const Pin *drvr_pin,
640644
641645 const Parasitic *parasitic;
642646 float load_cap;
643- parasiticLoad (drvr_pin, drvr_rf, scene, min_max, nullptr , arc_delay_calc_ ,
647+ parasiticLoad (drvr_pin, drvr_rf, scene, min_max, nullptr , arc_delay_calc ,
644648 load_cap, parasitic);
645649
646650 LoadPinIndexMap load_pin_index_map = makeLoadPinIndexMap (drvr_vertex);
647651 ArcDcalcResult intrinsic_result =
648- arc_delay_calc_ ->gateDelay (drvr_pin, arc, Slew (from_slew), 0.0 , nullptr ,
649- load_pin_index_map, scene, min_max);
652+ arc_delay_calc ->gateDelay (drvr_pin, arc, Slew (from_slew), 0.0 , nullptr ,
653+ load_pin_index_map, scene, min_max);
650654 const ArcDelay &intrinsic_delay = intrinsic_result.gateDelay ();
651655
652- ArcDcalcResult gate_result = arc_delay_calc_ ->gateDelay (drvr_pin, arc,
653- Slew (from_slew), load_cap,
654- parasitic,
655- load_pin_index_map,
656- scene, min_max);
656+ ArcDcalcResult gate_result = arc_delay_calc ->gateDelay (drvr_pin, arc,
657+ Slew (from_slew), load_cap,
658+ parasitic,
659+ load_pin_index_map,
660+ scene, min_max);
657661 const ArcDelay &gate_delay = gate_result.gateDelay ();
658662 const Slew &gate_slew = gate_result.drvrSlew ();
659663
@@ -666,7 +670,7 @@ GraphDelayCalc::findInputArcDelay(const Pin *drvr_pin,
666670 graph_->setSlew (drvr_vertex, drvr_rf, ap_index, gate_slew);
667671 annotateLoadDelays (drvr_vertex, drvr_rf, gate_result, load_pin_index_map,
668672 load_delay, false , scene, min_max);
669- arc_delay_calc_ ->finishDrvrPin ();
673+ arc_delay_calc ->finishDrvrPin ();
670674 }
671675}
672676
0 commit comments