From 28531078e4c1b264d32b20aefe70af276eefd0e9 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 13 Dec 2023 16:35:23 -0700 Subject: [PATCH] OR4349 incr delay calc with shorted outputs Signed-off-by: James Cherry --- dcalc/GraphDelayCalc.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/dcalc/GraphDelayCalc.cc b/dcalc/GraphDelayCalc.cc index ef8735db..3f18bd2f 100644 --- a/dcalc/GraphDelayCalc.cc +++ b/dcalc/GraphDelayCalc.cc @@ -183,8 +183,25 @@ GraphDelayCalc::deleteVertexBefore(Vertex *vertex) invalid_delays_->erase(vertex); MultiDrvrNet *multi_drvr = multiDrvrNet(vertex); if (multi_drvr) { - multi_drvr->drvrs()->erase(vertex); + VertexSet *drvrs = multi_drvr->drvrs(); + drvrs->erase(vertex); multi_drvr_net_map_.erase(vertex); + if (drvrs->empty()) + delete multi_drvr; + else { + Level max_drvr_level = 0; + Vertex *max_drvr = nullptr; + for (Vertex *drvr_vertex : *drvrs) { + Level drvr_level = drvr_vertex->level(); + if (max_drvr == nullptr + || drvr_level > max_drvr_level) { + max_drvr = drvr_vertex; + max_drvr_level = drvr_level; + } + } + multi_drvr->setDcalcDrvr(max_drvr); + multi_drvr->findCaps(sdc_); + } } }