Skip to content

Commit

Permalink
Merge pull request The-OpenROAD-Project#160 from openroadie/master
Browse files Browse the repository at this point in the history
Latest OpenSTA (fixed crash with thru exceptions).
  • Loading branch information
openroadie authored Apr 14, 2023
2 parents 8de844d + 572a6af commit 555493c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 19 deletions.
4 changes: 3 additions & 1 deletion sdc/ExceptionPath.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1487,7 +1487,9 @@ ExceptionThru::deletePinEdges(const Pin *pin,
}
else {
// erase prevents range iteration.
for (const EdgePins &edge_pins : *edges_) {
EdgePinsSet::Iterator edge_iter(edges_);
while (edge_iter.hasNext()) {
const EdgePins &edge_pins = edge_iter.next();
if (edge_pins.first == pin
|| edge_pins.second == pin) {
edges_->erase(edge_pins);
Expand Down
30 changes: 18 additions & 12 deletions sdc/Sdc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5663,12 +5663,15 @@ Sdc::connectPinAfter(const Pin *pin)
PinSet *drvrs = network_->drivers(pin);
for (ExceptionPath *exception : exceptions_) {
ExceptionPt *first_pt = exception->firstPt();
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->connectPinAfter(drvrs, network_);
if (first_pt == thru)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
ExceptionThruSeq *thrus = exception->thrus();
if (thrus) {
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->connectPinAfter(drvrs, network_);
if (first_pt == thru)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
}
}
}
}
Expand All @@ -5681,12 +5684,15 @@ Sdc::disconnectPinBefore(const Pin *pin)
if (have_thru_hpin_exceptions_) {
for (ExceptionPath *exception : exceptions_) {
ExceptionPt *first_pt = exception->firstPt();
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->disconnectPinBefore(pin, network_);
if (thru == first_pt)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
ExceptionThruSeq *thrus = exception->thrus();
if (thrus) {
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->disconnectPinBefore(pin, network_);
if (thru == first_pt)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
}
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions search/PathVertex.cc
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,12 @@ PrevPathVisitor::unfilteredTag(const Tag *tag) const
}
}
return search_->findTag(tag->transition(),
corners_->findPathAnalysisPt(tag->pathAPIndex()),
tag->clkInfo(),
tag->isClock(),
tag->inputDelay(),
tag->isSegmentStart(),
unfiltered_states, true);
corners_->findPathAnalysisPt(tag->pathAPIndex()),
tag->clkInfo(),
tag->isClock(),
tag->inputDelay(),
tag->isSegmentStart(),
unfiltered_states, true);
}

////////////////////////////////////////////////////////////////
Expand Down

0 comments on commit 555493c

Please sign in to comment.