diff --git a/dcalc/GraphDelayCalc1.cc b/dcalc/GraphDelayCalc1.cc index d6f911c5..297bdf54 100644 --- a/dcalc/GraphDelayCalc1.cc +++ b/dcalc/GraphDelayCalc1.cc @@ -710,17 +710,15 @@ GraphDelayCalc1::driveCellDefaultFromPort(LibertyCell *cell, { LibertyPort *from_port = 0; int from_port_index = 0; - LibertyCellTimingArcSetIterator set_iter(cell); + LibertyCellTimingArcSetIterator set_iter(cell, nullptr, to_port); while (set_iter.hasNext()) { TimingArcSet *arc_set = set_iter.next(); - if (arc_set->to() == to_port) { - LibertyPort *set_from_port = arc_set->from(); - int set_from_port_index = findPortIndex(cell, set_from_port); - if (from_port == nullptr - || set_from_port_index < from_port_index) { - from_port = set_from_port; - from_port_index = set_from_port_index; - } + LibertyPort *set_from_port = arc_set->from(); + int set_from_port_index = findPortIndex(cell, set_from_port); + if (from_port == nullptr + || set_from_port_index < from_port_index) { + from_port = set_from_port; + from_port_index = set_from_port_index; } } return from_port; @@ -756,19 +754,16 @@ GraphDelayCalc1::findInputDriverDelay(LibertyCell *drvr_cell, debugPrint(debug_, "delay_calc", 2, " driver cell %s %s", drvr_cell->name(), rf->asString()); - LibertyCellTimingArcSetIterator set_iter(drvr_cell); + LibertyCellTimingArcSetIterator set_iter(drvr_cell, from_port, to_port); while (set_iter.hasNext()) { TimingArcSet *arc_set = set_iter.next(); - if (arc_set->from() == from_port - && arc_set->to() == to_port) { - TimingArcSetArcIterator arc_iter(arc_set); - while (arc_iter.hasNext()) { - TimingArc *arc = arc_iter.next(); - if (arc->toEdge()->asRiseFall() == rf) { - float from_slew = from_slews[arc->fromEdge()->index()]; - findInputArcDelay(drvr_cell, drvr_pin, drvr_vertex, - arc, from_slew, dcalc_ap); - } + TimingArcSetArcIterator arc_iter(arc_set); + while (arc_iter.hasNext()) { + TimingArc *arc = arc_iter.next(); + if (arc->toEdge()->asRiseFall() == rf) { + float from_slew = from_slews[arc->fromEdge()->index()]; + findInputArcDelay(drvr_cell, drvr_pin, drvr_vertex, + arc, from_slew, dcalc_ap); } } } diff --git a/include/sta/TableModel.hh b/include/sta/TableModel.hh index 08878388..7a2e1081 100644 --- a/include/sta/TableModel.hh +++ b/include/sta/TableModel.hh @@ -447,6 +447,7 @@ public: float axisValue(size_t index) const { return (*values_)[index]; } // Find the index for value such that axis[index] <= value < axis[index+1]. size_t findAxisIndex(float value) const; + FloatSeq *values() const { return values_; } private: TableAxisVariable variable_; diff --git a/sdc/RiseFallMinMax.cc b/sdc/RiseFallMinMax.cc index 13509f11..630b83bf 100644 --- a/sdc/RiseFallMinMax.cc +++ b/sdc/RiseFallMinMax.cc @@ -26,7 +26,7 @@ RiseFallMinMax::RiseFallMinMax() void RiseFallMinMax::clear() { - for (int rf_index=0; rf_indexvalues_[rf_index][mm_index]; exists_[rf_index][mm_index] = rfmm->exists_[rf_index][mm_index]; @@ -146,7 +146,7 @@ RiseFallMinMax::setValue(const RiseFall *rf, void RiseFallMinMax::setValues(RiseFallMinMax *values) { - for (int rf_index=0 ; rf_index < RiseFall::index_count ; rf_index++) { + for (int rf_index = 0 ; rf_index < RiseFall::index_count ; rf_index++) { for (int mm_index = 0; mm_index < MinMax::index_count; mm_index++) { values_[rf_index][mm_index] = values->values_[rf_index][mm_index]; exists_[rf_index][mm_index] = values->exists_[rf_index][mm_index]; @@ -196,7 +196,7 @@ RiseFallMinMax::maxValue(// Return values { max_value = MinMax::max()->initValue(); exists = false; - for (int rf_index=0 ; rf_index < RiseFall::index_count ; rf_index++) { + for (int rf_index = 0 ; rf_index < RiseFall::index_count ; rf_index++) { for (int mm_index = 0; mm_index < MinMax::index_count; mm_index++) { if (exists_[rf_index][mm_index]) { max_value = std::max(max_value, values_[rf_index][mm_index]); @@ -209,7 +209,7 @@ RiseFallMinMax::maxValue(// Return values bool RiseFallMinMax::empty() const { - for (int rf_index=0 ; rf_index < RiseFall::index_count ; rf_index++) { + for (int rf_index = 0 ; rf_index < RiseFall::index_count ; rf_index++) { for (int mm_index = 0; mm_index < MinMax::index_count; mm_index++) { if (exists_[rf_index][mm_index]) return false; @@ -248,7 +248,7 @@ RiseFallMinMax::mergeWith(RiseFallMinMax *rfmm) bool RiseFallMinMax::equal(const RiseFallMinMax *values) const { - for (int rf_index=0 ; rf_index < RiseFall::index_count ; rf_index++) { + for (int rf_index = 0 ; rf_index < RiseFall::index_count ; rf_index++) { for (int mm_index = 0; mm_index < MinMax::index_count; mm_index++) { bool exists1 = exists_[rf_index][mm_index]; bool exists2 = values->exists_[rf_index][mm_index]; @@ -274,7 +274,7 @@ RiseFallMinMax::isOneValue(float &value) const { if (exists_[0][0]) { value = values_[0][0]; - for (int rf_index=0 ; rf_index < RiseFall::index_count ; rf_index++) { + for (int rf_index = 0 ; rf_index < RiseFall::index_count ; rf_index++) { for (int mm_index=0; mm_indexindex(); if (exists_[0][mm_index]) { value = values_[0][mm_index]; - for (int rf_index=0 ; rf_index < RiseFall::index_count ; rf_index++) { + for (int rf_index = 0 ; rf_index < RiseFall::index_count ; rf_index++) { if (!exists_[rf_index][mm_index] || values_[rf_index][mm_index] != value) return false; diff --git a/search/ReportPath.cc b/search/ReportPath.cc index 80783c03..66909d47 100644 --- a/search/ReportPath.cc +++ b/search/ReportPath.cc @@ -1008,7 +1008,7 @@ ReportPath::reportSummaryLine(PathEnd *end) if (end->isUnconstrained()) reportSpaceFieldDelay(end->dataArrivalTimeOffset(this), early_late, line); else - reportSpaceFieldDelay(end->slack(this), early_late, line); + reportSpaceFieldDelay(end->slack(this), EarlyLate::early(), line); report_->reportLineString(line); }