diff --git a/dcalc/GraphDelayCalc.cc b/dcalc/GraphDelayCalc.cc index 34fd5c93..9722c76d 100644 --- a/dcalc/GraphDelayCalc.cc +++ b/dcalc/GraphDelayCalc.cc @@ -610,7 +610,7 @@ GraphDelayCalc::enqueueTimingChecksEdges(Vertex *vertex) { if (vertex->hasChecks()) { VertexInEdgeIterator edge_iter(vertex, graph_); - UniqueLock lock(invalid_edge_lock_); + LockGuard lock(invalid_edge_lock_); while (edge_iter.hasNext()) { Edge *edge = edge_iter.next(); if (edge->role()->isTimingCheck()) @@ -619,7 +619,7 @@ GraphDelayCalc::enqueueTimingChecksEdges(Vertex *vertex) } if (vertex->isCheckClk()) { VertexOutEdgeIterator edge_iter(vertex, graph_); - UniqueLock lock(invalid_edge_lock_); + LockGuard lock(invalid_edge_lock_); while (edge_iter.hasNext()) { Edge *edge = edge_iter.next(); if (edge->role()->isTimingCheck()) @@ -630,7 +630,7 @@ GraphDelayCalc::enqueueTimingChecksEdges(Vertex *vertex) // Latch D->Q arcs have to be re-evaled if level(D) > level(E) // because levelization does not traverse D->Q arcs to break loops. VertexOutEdgeIterator edge_iter(vertex, graph_); - UniqueLock lock(invalid_edge_lock_); + LockGuard lock(invalid_edge_lock_); while (edge_iter.hasNext()) { Edge *edge = edge_iter.next(); if (edge->role() == TimingRole::latchDtoQ()) @@ -661,7 +661,7 @@ GraphDelayCalc::findMultiDrvrNet(Vertex *drvr_vertex) { // Avoid locking for single driver nets. if (hasMultiDrvrs(drvr_vertex)) { - UniqueLock lock(multi_drvr_lock_); + LockGuard lock(multi_drvr_lock_); MultiDrvrNet *multi_drvr = multiDrvrNet(drvr_vertex); if (multi_drvr) return multi_drvr; diff --git a/graph/Graph.cc b/graph/Graph.cc index 591a2271..2e21e0a4 100644 --- a/graph/Graph.cc +++ b/graph/Graph.cc @@ -576,7 +576,7 @@ Graph::makeArrivals(Vertex *vertex, Arrival *arrivals; ArrivalId id; { - UniqueLock lock(arrivals_lock_); + LockGuard lock(arrivals_lock_); arrivals_.make(count, arrivals, id); } vertex->setArrivals(id); @@ -594,7 +594,7 @@ Graph::deleteArrivals(Vertex *vertex, uint32_t count) { { - UniqueLock lock(arrivals_lock_); + LockGuard lock(arrivals_lock_); arrivals_.destroy(vertex->arrivals(), count); } vertex->setArrivals(arrival_null); @@ -609,7 +609,7 @@ Graph::makeRequireds(Vertex *vertex, Required *requireds; ArrivalId id; { - UniqueLock lock(requireds_lock_); + LockGuard lock(requireds_lock_); requireds_.make(count, requireds, id); } vertex->setRequireds(id); @@ -627,7 +627,7 @@ Graph::deleteRequireds(Vertex *vertex, uint32_t count) { { - UniqueLock lock(requireds_lock_); + LockGuard lock(requireds_lock_); requireds_.destroy(vertex->requireds(), count); } vertex->setRequireds(arrival_null); @@ -647,7 +647,7 @@ Graph::makePrevPaths(Vertex *vertex, PathVertexRep *prev_paths; PrevPathId id; { - UniqueLock lock(prev_paths_lock_); + LockGuard lock(prev_paths_lock_); prev_paths_.make(count, prev_paths, id); } vertex->setPrevPaths(id); diff --git a/include/sta/Mutex.hh b/include/sta/Mutex.hh index fa98d5a0..0e3f5a47 100644 --- a/include/sta/Mutex.hh +++ b/include/sta/Mutex.hh @@ -20,6 +20,7 @@ namespace sta { -typedef std::unique_lock UniqueLock; +// Hide a bit of the std verbosity. +typedef std::lock_guard LockGuard; } // namespace diff --git a/parasitics/ConcreteParasitics.cc b/parasitics/ConcreteParasitics.cc index 37a8d707..f29af721 100644 --- a/parasitics/ConcreteParasitics.cc +++ b/parasitics/ConcreteParasitics.cc @@ -920,7 +920,7 @@ ConcreteParasitics::deleteReducedParasitics(const Pin *pin) void ConcreteParasitics::deleteDrvrReducedParasitics(const Pin *drvr_pin) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasitic **parasitics = drvr_parasitic_map_[drvr_pin]; if (parasitics) { int ap_count = corners_->parasiticAnalysisPtCount(); @@ -936,7 +936,7 @@ void ConcreteParasitics::deleteDrvrReducedParasitics(const Pin *drvr_pin, const ParasiticAnalysisPt *ap) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasitic **parasitics = drvr_parasitic_map_[drvr_pin]; if (parasitics) { int ap_index = ap->index(); @@ -961,7 +961,7 @@ ConcreteParasitics::findPiElmore(const Pin *drvr_pin, { if (!drvr_parasitic_map_.empty()) { int ap_rf_index = parasiticAnalysisPtIndex(ap, rf); - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasitic **parasitics = drvr_parasitic_map_.findKey(drvr_pin); if (parasitics) { ConcreteParasitic *parasitic = parasitics[ap_rf_index]; @@ -980,7 +980,7 @@ ConcreteParasitics::makePiElmore(const Pin *drvr_pin, float rpi, float c1) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasitic **parasitics = drvr_parasitic_map_.findKey(drvr_pin); if (parasitics == nullptr) { int ap_count = corners_->parasiticAnalysisPtCount(); @@ -1077,7 +1077,7 @@ ConcreteParasitics::findPiPoleResidue(const Pin *drvr_pin, { if (!drvr_parasitic_map_.empty()) { int ap_rf_index = parasiticAnalysisPtIndex(ap, rf); - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasitic **parasitics = drvr_parasitic_map_.findKey(drvr_pin); if (parasitics) { ConcreteParasitic *parasitic = parasitics[ap_rf_index]; @@ -1100,7 +1100,7 @@ ConcreteParasitics::makePiPoleResidue(const Pin *drvr_pin, float rpi, float c1) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasitic **parasitics = drvr_parasitic_map_.findKey(drvr_pin); if (parasitics == nullptr) { int ap_count = corners_->parasiticAnalysisPtCount(); @@ -1194,7 +1194,7 @@ ConcreteParasitics::findParasiticNetwork(const Net *net, const ParasiticAnalysisPt *ap) const { if (!parasitic_network_map_.empty()) { - UniqueLock lock(lock_); + LockGuard lock(lock_); if (!parasitic_network_map_.empty()) { ConcreteParasiticNetwork **parasitics=parasitic_network_map_.findKey(net); if (parasitics) { @@ -1213,7 +1213,7 @@ ConcreteParasitics::findParasiticNetwork(const Pin *pin, const ParasiticAnalysisPt *ap) const { if (!parasitic_network_map_.empty()) { - UniqueLock lock(lock_); + LockGuard lock(lock_); if (!parasitic_network_map_.empty()) { // Only call findParasiticNet if parasitics exist. const Net *net = findParasiticNet(pin); @@ -1234,7 +1234,7 @@ ConcreteParasitics::makeParasiticNetwork(const Net *net, bool includes_pin_caps, const ParasiticAnalysisPt *ap) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasiticNetwork **parasitics = parasitic_network_map_.findKey(net); if (parasitics == nullptr) { int ap_count = corners_->parasiticAnalysisPtCount(); @@ -1260,7 +1260,7 @@ ConcreteParasitics::deleteParasiticNetwork(const Net *net, const ParasiticAnalysisPt *ap) { if (!parasitic_network_map_.empty()) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasiticNetwork **parasitics = parasitic_network_map_.findKey(net); if (parasitics) { int ap_index = ap->index(); @@ -1287,7 +1287,7 @@ void ConcreteParasitics::deleteParasiticNetworks(const Net *net) { if (!parasitic_network_map_.empty()) { - UniqueLock lock(lock_); + LockGuard lock(lock_); ConcreteParasiticNetwork **parasitics = parasitic_network_map_.findKey(net); if (parasitics) { int ap_count = corners_->parasiticAnalysisPtCount(); diff --git a/sdc/Sdc.cc b/sdc/Sdc.cc index bbf0106e..b063a8c4 100644 --- a/sdc/Sdc.cc +++ b/sdc/Sdc.cc @@ -2338,7 +2338,7 @@ CycleAccting * Sdc::cycleAccting(const ClockEdge *src, const ClockEdge *tgt) { - UniqueLock lock(cycle_acctings_lock_); + LockGuard lock(cycle_acctings_lock_); return cycle_acctings_.cycleAccting(src, tgt); } diff --git a/search/Bfs.cc b/search/Bfs.cc index bc77bb4e..95f0c0e7 100644 --- a/search/Bfs.cc +++ b/search/Bfs.cc @@ -256,7 +256,7 @@ BfsIterator::enqueue(Vertex *vertex) debugPrint(debug_, "bfs", 2, "enqueue %s", vertex->name(sdc_network_)); if (!vertex->bfsInQueue(bfs_index_)) { Level level = vertex->level(); - UniqueLock lock(queue_lock_); + LockGuard lock(queue_lock_); if (!vertex->bfsInQueue(bfs_index_)) { vertex->setBfsInQueue(bfs_index_, true); queue_[level].push_back(vertex); diff --git a/search/PathGroup.cc b/search/PathGroup.cc index 8e08d9e4..40d793fe 100644 --- a/search/PathGroup.cc +++ b/search/PathGroup.cc @@ -121,7 +121,7 @@ PathGroup::savable(PathEnd *path_end) void PathGroup::insert(PathEnd *path_end) { - UniqueLock lock(lock_); + LockGuard lock(lock_); path_ends_.push_back(path_end); if (group_count_ != group_count_max && static_cast(path_ends_.size()) > group_count_ * 2) @@ -190,7 +190,7 @@ PathGroup::sort() void PathGroup::clear() { - UniqueLock lock(lock_); + LockGuard lock(lock_); threshold_ = min_max_->initValue(); path_ends_.clear(); } diff --git a/search/Search.cc b/search/Search.cc index 7ba2a018..2eefcd4a 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -748,7 +748,7 @@ Search::arrivalInvalid(Vertex *vertex) vertex->name(sdc_network_)); if (!arrival_iter_->inQueue(vertex)) { // Lock for StaDelayCalcObserver called by delay calc threads. - UniqueLock lock(invalid_arrivals_lock_); + LockGuard lock(invalid_arrivals_lock_); invalid_arrivals_->insert(vertex); } tnsInvalid(vertex); @@ -818,7 +818,7 @@ Search::requiredInvalid(Vertex *vertex) vertex->name(sdc_network_)); if (!required_iter_->inQueue(vertex)) { // Lock for StaDelayCalcObserver called by delay calc threads. - UniqueLock lock(invalid_arrivals_lock_); + LockGuard lock(invalid_arrivals_lock_); invalid_requireds_->insert(vertex); } tnsInvalid(vertex); @@ -1379,7 +1379,7 @@ Search::enqueueLatchDataOutputs(Vertex *vertex) Edge *out_edge = out_edge_iter.next(); if (latches_->isLatchDtoQ(out_edge)) { Vertex *out_vertex = out_edge->to(graph_); - UniqueLock lock(pending_latch_outputs_lock_); + LockGuard lock(pending_latch_outputs_lock_); pending_latch_outputs_->insert(out_vertex); } } @@ -2623,7 +2623,7 @@ TagGroup * Search::findTagGroup(TagGroupBldr *tag_bldr) { TagGroup probe(tag_bldr); - UniqueLock lock(tag_group_lock_); + LockGuard lock(tag_group_lock_); TagGroup *tag_group = tag_group_set_->findKey(&probe); if (tag_group == nullptr) { TagGroupIndex tag_group_index; @@ -2853,7 +2853,7 @@ Search::findTag(const RiseFall *rf, { Tag probe(0, rf->index(), path_ap->index(), clk_info, is_clk, input_delay, is_segment_start, states, false, this); - UniqueLock lock(tag_lock_); + LockGuard lock(tag_lock_); Tag *tag = tag_set_->findKey(&probe); if (tag == nullptr) { ExceptionStateSet *new_states = !own_states && states @@ -2944,7 +2944,7 @@ Search::findClkInfo(const ClockEdge *clk_edge, ClkInfo probe(clk_edge, clk_src, is_propagated, gen_clk_src, gen_clk_src_path, pulse_clk_sense, insertion, latency, uncertainties, path_ap->index(), crpr_clk_path_rep, this); - UniqueLock lock(clk_info_lock_); + LockGuard lock(clk_info_lock_); ClkInfo *clk_info = clk_info_set_->findKey(&probe); if (clk_info == nullptr) { clk_info = new ClkInfo(clk_edge, clk_src, @@ -3718,7 +3718,7 @@ Search::tnsInvalid(Vertex *vertex) && isEndpoint(vertex)) { debugPrint(debug_, "tns", 2, "tns invalid %s", vertex->name(sdc_network_)); - UniqueLock lock(tns_lock_); + LockGuard lock(tns_lock_); invalid_tns_->insert(vertex); } } diff --git a/search/Sim.cc b/search/Sim.cc index 105d5d38..6d67611a 100644 --- a/search/Sim.cc +++ b/search/Sim.cc @@ -81,7 +81,7 @@ Sim::functionSense(const FuncExpr *expr, expr->asString()); bool increasing, decreasing; { - UniqueLock lock(bdd_lock_); + LockGuard lock(bdd_lock_); DdNode *bdd = funcBddSim(expr, inst); DdManager *cudd_mgr = bdd_.cuddMgr(); LibertyPort *input_port = network_->libertyPort(input_pin); @@ -111,7 +111,7 @@ LogicValue Sim::evalExpr(const FuncExpr *expr, const Instance *inst) { - UniqueLock lock(bdd_lock_); + LockGuard lock(bdd_lock_); DdNode *bdd = funcBddSim(expr, inst); LogicValue value = LogicValue::unknown; DdManager *cudd_mgr = bdd_.cuddMgr(); diff --git a/search/WorstSlack.cc b/search/WorstSlack.cc index 611096ac..a6dae0d5 100644 --- a/search/WorstSlack.cc +++ b/search/WorstSlack.cc @@ -120,7 +120,7 @@ WorstSlack::WorstSlack(const WorstSlack &worst_slack) : void WorstSlack::deleteVertexBefore(Vertex *vertex) { - UniqueLock lock(lock_); + LockGuard lock(lock_); if (vertex == worst_vertex_) { worst_vertex_ = nullptr; worst_slack_ = slack_init_; @@ -269,7 +269,7 @@ WorstSlack::updateWorstSlack(Vertex *vertex, // Locking is required because ArrivalVisitor is called by multiple // threads. - UniqueLock lock(lock_); + LockGuard lock(lock_); if (worst_vertex_ && delayLess(slack, worst_slack_, this)) setWorstSlack(vertex, slack); diff --git a/util/StringUtil.cc b/util/StringUtil.cc index bafd9420..7d67911a 100644 --- a/util/StringUtil.cc +++ b/util/StringUtil.cc @@ -191,7 +191,7 @@ getTmpString(// Return values. char *&str, size_t &length) { - UniqueLock lock(string_lock_); + LockGuard lock(string_lock_); if (tmp_string_next_ == tmp_string_count_) tmp_string_next_ = 0; str = tmp_strings_[tmp_string_next_]; @@ -202,7 +202,7 @@ getTmpString(// Return values. char * makeTmpString(size_t length) { - UniqueLock lock(string_lock_); + LockGuard lock(string_lock_); if (tmp_string_next_ == tmp_string_count_) tmp_string_next_ = 0; char *tmp_str = tmp_strings_[tmp_string_next_];