Merge branch 'master' into write_timing_model

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-06-11 16:38:48 -07:00
commit 05cdbd5e8f
4 changed files with 26 additions and 30 deletions

View File

@ -710,10 +710,9 @@ GraphDelayCalc1::driveCellDefaultFromPort(LibertyCell *cell,
{ {
LibertyPort *from_port = 0; LibertyPort *from_port = 0;
int from_port_index = 0; int from_port_index = 0;
LibertyCellTimingArcSetIterator set_iter(cell); LibertyCellTimingArcSetIterator set_iter(cell, nullptr, to_port);
while (set_iter.hasNext()) { while (set_iter.hasNext()) {
TimingArcSet *arc_set = set_iter.next(); TimingArcSet *arc_set = set_iter.next();
if (arc_set->to() == to_port) {
LibertyPort *set_from_port = arc_set->from(); LibertyPort *set_from_port = arc_set->from();
int set_from_port_index = findPortIndex(cell, set_from_port); int set_from_port_index = findPortIndex(cell, set_from_port);
if (from_port == nullptr if (from_port == nullptr
@ -722,7 +721,6 @@ GraphDelayCalc1::driveCellDefaultFromPort(LibertyCell *cell,
from_port_index = set_from_port_index; from_port_index = set_from_port_index;
} }
} }
}
return from_port; return from_port;
} }
@ -756,11 +754,9 @@ GraphDelayCalc1::findInputDriverDelay(LibertyCell *drvr_cell,
debugPrint(debug_, "delay_calc", 2, " driver cell %s %s", debugPrint(debug_, "delay_calc", 2, " driver cell %s %s",
drvr_cell->name(), drvr_cell->name(),
rf->asString()); rf->asString());
LibertyCellTimingArcSetIterator set_iter(drvr_cell); LibertyCellTimingArcSetIterator set_iter(drvr_cell, from_port, to_port);
while (set_iter.hasNext()) { while (set_iter.hasNext()) {
TimingArcSet *arc_set = set_iter.next(); TimingArcSet *arc_set = set_iter.next();
if (arc_set->from() == from_port
&& arc_set->to() == to_port) {
TimingArcSetArcIterator arc_iter(arc_set); TimingArcSetArcIterator arc_iter(arc_set);
while (arc_iter.hasNext()) { while (arc_iter.hasNext()) {
TimingArc *arc = arc_iter.next(); TimingArc *arc = arc_iter.next();
@ -772,7 +768,6 @@ GraphDelayCalc1::findInputDriverDelay(LibertyCell *drvr_cell,
} }
} }
} }
}
// Driving cell delay is the load dependent delay, which is the gate // Driving cell delay is the load dependent delay, which is the gate
// delay minus the intrinsic delay. Driving cell delays are annotated // delay minus the intrinsic delay. Driving cell delays are annotated

View File

@ -447,6 +447,7 @@ public:
float axisValue(size_t index) const { return (*values_)[index]; } float axisValue(size_t index) const { return (*values_)[index]; }
// Find the index for value such that axis[index] <= value < axis[index+1]. // Find the index for value such that axis[index] <= value < axis[index+1].
size_t findAxisIndex(float value) const; size_t findAxisIndex(float value) const;
FloatSeq *values() const { return values_; }
private: private:
TableAxisVariable variable_; TableAxisVariable variable_;

View File

@ -1008,7 +1008,7 @@ ReportPath::reportSummaryLine(PathEnd *end)
if (end->isUnconstrained()) if (end->isUnconstrained())
reportSpaceFieldDelay(end->dataArrivalTimeOffset(this), early_late, line); reportSpaceFieldDelay(end->dataArrivalTimeOffset(this), early_late, line);
else else
reportSpaceFieldDelay(end->slack(this), early_late, line); reportSpaceFieldDelay(end->slack(this), EarlyLate::early(), line);
report_->reportLineString(line); report_->reportLineString(line);
} }