From 85507b7a6e635827823907a97096dfd61feac508 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sat, 31 Dec 2022 17:47:35 -0700 Subject: [PATCH] dcalc don't trust Network::direction(pin) Signed-off-by: James Cherry --- dcalc/GraphDelayCalc1.cc | 38 +++++++++++++++++++------------------- dcalc/GraphDelayCalc1.hh | 26 +++++++++++++------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/dcalc/GraphDelayCalc1.cc b/dcalc/GraphDelayCalc1.cc index d9b5b5d0..341d31ae 100644 --- a/dcalc/GraphDelayCalc1.cc +++ b/dcalc/GraphDelayCalc1.cc @@ -1269,12 +1269,12 @@ GraphDelayCalc1::findArcDelay(LibertyCell *drvr_cell, ArcDelay gate_delay; Slew gate_slew; if (multi_drvr - && network_->direction(drvr_pin)->isOutput()) - multiDrvrGateDelay(multi_drvr, drvr_cell, drvr_pin, arc, - pvt, dcalc_ap, from_slew, drvr_parasitic, - related_out_cap, - arc_delay_calc, - gate_delay, gate_slew); + && arc->to()->direction()->isOutput()) + parallelGateDelay(multi_drvr, drvr_cell, drvr_pin, arc, + pvt, dcalc_ap, from_slew, drvr_parasitic, + related_out_cap, + arc_delay_calc, + gate_delay, gate_slew); else { float load_cap = loadCap(drvr_pin, multi_drvr, drvr_parasitic, drvr_rf, dcalc_ap); @@ -1312,19 +1312,19 @@ GraphDelayCalc1::findArcDelay(LibertyCell *drvr_cell, } void -GraphDelayCalc1::multiDrvrGateDelay(MultiDrvrNet *multi_drvr, - LibertyCell *drvr_cell, - const Pin *drvr_pin, - TimingArc *arc, - const Pvt *pvt, - const DcalcAnalysisPt *dcalc_ap, - const Slew from_slew, - Parasitic *drvr_parasitic, - float related_out_cap, - ArcDelayCalc *arc_delay_calc, - // Return values. - ArcDelay &gate_delay, - Slew &gate_slew) +GraphDelayCalc1::parallelGateDelay(MultiDrvrNet *multi_drvr, + LibertyCell *drvr_cell, + const Pin *drvr_pin, + TimingArc *arc, + const Pvt *pvt, + const DcalcAnalysisPt *dcalc_ap, + const Slew from_slew, + Parasitic *drvr_parasitic, + float related_out_cap, + ArcDelayCalc *arc_delay_calc, + // Return values. + ArcDelay &gate_delay, + Slew &gate_slew) { ArcDelay intrinsic_delay; Slew intrinsic_slew; diff --git a/dcalc/GraphDelayCalc1.hh b/dcalc/GraphDelayCalc1.hh index adedec8a..ba5c700a 100644 --- a/dcalc/GraphDelayCalc1.hh +++ b/dcalc/GraphDelayCalc1.hh @@ -172,19 +172,19 @@ protected: // Return values. ArcDelay ¶llel_delay, Slew ¶llel_slew); - void multiDrvrGateDelay(MultiDrvrNet *multi_drvr, - LibertyCell *drvr_cell, - const Pin *drvr_pin, - TimingArc *arc, - const Pvt *pvt, - const DcalcAnalysisPt *dcalc_ap, - const Slew from_slew, - Parasitic *drvr_parasitic, - float related_out_cap, - ArcDelayCalc *arc_delay_calc, - // Return values. - ArcDelay &gate_delay, - Slew &gate_slew); + void parallelGateDelay(MultiDrvrNet *multi_drvr, + LibertyCell *drvr_cell, + const Pin *drvr_pin, + TimingArc *arc, + const Pvt *pvt, + const DcalcAnalysisPt *dcalc_ap, + const Slew from_slew, + Parasitic *drvr_parasitic, + float related_out_cap, + ArcDelayCalc *arc_delay_calc, + // Return values. + ArcDelay &gate_delay, + Slew &gate_slew); void deleteMultiDrvrNets(); Slew edgeFromSlew(const Vertex *from_vertex, const RiseFall *from_rf,