From e34a3465b1dcaf7cd87e53ce071a1cda4c6e35ea Mon Sep 17 00:00:00 2001 From: James Cherry Date: Thu, 21 Oct 2021 12:32:20 -0700 Subject: [PATCH] GraphDelayCalc1::findVertexDelay handle root vertices Signed-off-by: James Cherry --- dcalc/GraphDelayCalc1.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dcalc/GraphDelayCalc1.cc b/dcalc/GraphDelayCalc1.cc index 247b7a86..c3d88fdf 100644 --- a/dcalc/GraphDelayCalc1.cc +++ b/dcalc/GraphDelayCalc1.cc @@ -840,11 +840,15 @@ GraphDelayCalc1::findVertexDelay(Vertex *vertex, bool propagate) { const Pin *pin = vertex->pin(); - // Don't clobber root slews. - if (!vertex->isRoot()) { - debugPrint(debug_, "delay_calc", 2, "find delays %s (%s)", - vertex->name(sdc_network_), - network_->cellName(network_->instance(pin))); + debugPrint(debug_, "delay_calc", 2, "find delays %s (%s)", + vertex->name(sdc_network_), + network_->cellName(network_->instance(pin))); + if (vertex->isRoot()) { + seedRootSlew(vertex, arc_delay_calc); + if (propagate) + iter_->enqueueAdjacentVertices(vertex); + } + else { if (network_->isLeaf(pin)) { if (vertex->isDriver(network_)) { bool delay_changed = findDriverDelays(vertex, arc_delay_calc);