Skip to content

Commit d8a8786

Browse files
committed
Merge remote-tracking branch 'parallax/master'
2 parents 0a230da + 7539c73 commit d8a8786

File tree

4 files changed

+35
-21
lines changed

4 files changed

+35
-21
lines changed

network/SdcNetwork.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -886,11 +886,17 @@ SdcNetwork::findNetRelative(const Instance *inst,
886886
{
887887
Net *net = network_->findNetRelative(inst, path_name);
888888
if (net == nullptr) {
889-
string path_name1 = escapeBrackets(path_name, this);
889+
string path_name1 = escapeDividers(path_name, network_);
890890
net = network_->findNetRelative(inst, path_name1.c_str());
891+
891892
if (net == nullptr) {
892-
string path_name2 = escapeDividers(path_name1.c_str(), network_);
893+
string path_name2 = escapeBrackets(path_name, network_);
893894
net = network_->findNetRelative(inst, path_name2.c_str());
895+
896+
if (net == nullptr) {
897+
string path_name3 = escapeDividers(path_name2.c_str(), network_);
898+
net = network_->findNetRelative(inst, path_name3.c_str());
899+
}
894900
}
895901
}
896902
return net;

parasitics/SpefReader.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,8 @@ SpefReader::findParasiticNode(char *name,
458458
if (pin) {
459459
if (local_only
460460
&& !network_->isConnected(net_, pin))
461-
warn(1651, "%s not connected to net %s.", name1, network_->pathName(net_));
461+
warn(1651, "%s not connected to net %s.",
462+
name1, sdc_network_->pathName(net_));
462463
return parasitics_->ensureParasiticNode(parasitic_, pin, network_);
463464
}
464465
else {

search/Search.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,8 @@ Search::findArrivals1(Level level)
10741074
Stats stats(debug_, report_);
10751075
int arrival_count = arrival_iter_->visitParallel(level, arrival_visitor_);
10761076
deleteTagsPrev();
1077-
deleteUnusedTagGroups();
1077+
if (arrival_count > 0)
1078+
deleteUnusedTagGroups();
10781079
stats.report("Find arrivals");
10791080
if (arrival_iter_->empty()
10801081
&& invalid_arrivals_->empty()) {

search/Sta.cc

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3196,24 +3196,30 @@ Sta::findRequired(Vertex *vertex)
31963196
{
31973197
searchPreamble();
31983198
search_->findAllArrivals();
3199-
search_->findRequireds(vertex->level());
3200-
if (variables_->crprEnabled()
3201-
&& search_->crprPathPruningEnabled()
3202-
&& !search_->crprApproxMissingRequireds()
3203-
// Clocks invariably have requireds that are pruned but it isn't
3204-
// worth finding arrivals and requireds all over again for
3205-
// the entire fanout of the clock.
3206-
&& !search_->isClock(vertex)) {
3207-
// Invalidate arrivals and requireds and disable
3208-
// path pruning on fanout vertices with DFS.
3209-
int fanout = 0;
3210-
disableFanoutCrprPruning(vertex, fanout);
3211-
debugPrint(debug_, "search", 1, "resurrect pruned required %s fanout %d",
3212-
vertex->to_string(this).c_str(),
3213-
fanout);
3214-
// Find fanout arrivals and requireds with pruning disabled.
3215-
search_->findArrivals();
3199+
if (search_->isEndpoint(vertex)
3200+
// Need to include downstream required times if there is fanout.
3201+
&& !hasFanout(vertex, search_->searchAdj(), graph_))
3202+
search_->seedRequired(vertex);
3203+
else {
32163204
search_->findRequireds(vertex->level());
3205+
if (variables_->crprEnabled()
3206+
&& search_->crprPathPruningEnabled()
3207+
&& !search_->crprApproxMissingRequireds()
3208+
// Clocks invariably have requireds that are pruned but it isn't
3209+
// worth finding arrivals and requireds all over again for
3210+
// the entire fanout of the clock.
3211+
&& !search_->isClock(vertex)) {
3212+
// Invalidate arrivals and requireds and disable
3213+
// path pruning on fanout vertices with DFS.
3214+
int fanout = 0;
3215+
disableFanoutCrprPruning(vertex, fanout);
3216+
debugPrint(debug_, "search", 1, "resurrect pruned required %s fanout %d",
3217+
vertex->to_string(this).c_str(),
3218+
fanout);
3219+
// Find fanout arrivals and requireds with pruning disabled.
3220+
search_->findArrivals();
3221+
search_->findRequireds(vertex->level());
3222+
}
32173223
}
32183224
}
32193225

0 commit comments

Comments
 (0)