GraphDelayCalc1::findVertexDelay handle root vertices

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2021-10-21 12:32:20 -07:00
parent 1b5bf2c9ff
commit e34a3465b1
1 changed files with 9 additions and 5 deletions

View File

@ -840,11 +840,15 @@ GraphDelayCalc1::findVertexDelay(Vertex *vertex,
bool propagate) bool propagate)
{ {
const Pin *pin = vertex->pin(); const Pin *pin = vertex->pin();
// Don't clobber root slews. debugPrint(debug_, "delay_calc", 2, "find delays %s (%s)",
if (!vertex->isRoot()) { vertex->name(sdc_network_),
debugPrint(debug_, "delay_calc", 2, "find delays %s (%s)", network_->cellName(network_->instance(pin)));
vertex->name(sdc_network_), if (vertex->isRoot()) {
network_->cellName(network_->instance(pin))); seedRootSlew(vertex, arc_delay_calc);
if (propagate)
iter_->enqueueAdjacentVertices(vertex);
}
else {
if (network_->isLeaf(pin)) { if (network_->isLeaf(pin)) {
if (vertex->isDriver(network_)) { if (vertex->isDriver(network_)) {
bool delay_changed = findDriverDelays(vertex, arc_delay_calc); bool delay_changed = findDriverDelays(vertex, arc_delay_calc);