Merge pull request #160 from openroadie/master

Latest OpenSTA (fixed crash with thru exceptions).
This commit is contained in:
Harsh Vardhan 2023-04-14 02:28:40 +01:00 committed by GitHub
commit 555493cba6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 19 deletions

View File

@ -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);

View File

@ -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_);
}
}
}
}
@ -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_);
}
}
}
}

View File

@ -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);
}
////////////////////////////////////////////////////////////////