diff --git a/dcalc/ArnoldiDelayCalc.cc b/dcalc/ArnoldiDelayCalc.cc index d83e5d9c..15ab657c 100644 --- a/dcalc/ArnoldiDelayCalc.cc +++ b/dcalc/ArnoldiDelayCalc.cc @@ -880,7 +880,7 @@ ArnoldiDelayCalc::pr_solve1(double s, // ignoring a typical error at drive node, that comes // from slight inaccuracies in rr if (!(rr[order-1]>1.0 && p[order-1]>500.0 && va>v1-0.002)) - debugPrint0(debug_, "arnoldi", 1, "err, pr_solve1, vav1) - debugPrint0(debug_, "arnoldi", 1, "err, pr_solve1, va>v1"); + debugPrint(debug_, "arnoldi", 1, "err, pr_solve1, va>v1"); tmax = ta; vmax = va; } } else { @@ -1460,7 +1460,7 @@ ArnoldiDelayCalc::ar1_ceff_delay(delay_work *D, ceff = pr_ceff(s,r,mod->order,p,rr,ceff_time); if ((ceff-1e-20) < 0.0) { // 1e-8pf - debugPrint0(debug_, "arnoldi", 1, + debugPrint(debug_, "arnoldi", 1, "Invalid effective capacitance, using total capacitance"); ceff = ctot; } diff --git a/dcalc/DmpCeff.cc b/dcalc/DmpCeff.cc index a8f4413a..85ad37e7 100644 --- a/dcalc/DmpCeff.cc +++ b/dcalc/DmpCeff.cc @@ -730,7 +730,7 @@ DmpCap::init(const LibertyLibrary *drvr_library, double rpi, double c1) { - debugPrint0(debug_, "dmp_ceff", 3, "Using DMP cap"); + debugPrint(debug_, "dmp_ceff", 3, "Using DMP cap"); DmpAlg::init(drvr_library, drvr_cell, pvt, gate_model, rf, rd, in_slew, related_out_cap, c2, rpi, c1); ceff_ = c1 + c2; @@ -871,7 +871,7 @@ DmpPi::init(const LibertyLibrary *drvr_library, double rpi, double c1) { - debugPrint0(debug_, "dmp_ceff", 3, "Using DMP Pi"); + debugPrint(debug_, "dmp_ceff", 3, "Using DMP Pi"); DmpAlg::init(drvr_library, drvr_cell, pvt, gate_model, rf, rd, in_slew, related_out_cap, c2, rpi, c1); @@ -1185,7 +1185,7 @@ DmpZeroC2::init(const LibertyLibrary *drvr_library, double rpi, double c1) { - debugPrint0(debug_, "dmp_ceff", 3, "Using DMP C2=0"); + debugPrint(debug_, "dmp_ceff", 3, "Using DMP C2=0"); DmpAlg::init(drvr_library, drvr_cell, pvt, gate_model, rf, rd, in_slew, related_out_cap, c2, rpi, c1); ceff_ = c1; diff --git a/dcalc/GraphDelayCalc1.cc b/dcalc/GraphDelayCalc1.cc index 6ae181b7..9ac14cc1 100644 --- a/dcalc/GraphDelayCalc1.cc +++ b/dcalc/GraphDelayCalc1.cc @@ -287,7 +287,7 @@ GraphDelayCalc1::setObserver(DelayCalcObserver *observer) void GraphDelayCalc1::delaysInvalid() { - debugPrint0(debug_, "delay_calc", 1, "delays invalid"); + debugPrint(debug_, "delay_calc", 1, "delays invalid"); delays_exist_ = false; delays_seeded_ = false; incremental_ = false; @@ -510,7 +510,7 @@ GraphDelayCalc1::ensureMultiDrvrNetsFound() void GraphDelayCalc1::makeMultiDrvrNet(PinSet &drvr_pins) { - debugPrint0(debug_, "delay_calc", 3, "multi-driver net"); + debugPrint(debug_, "delay_calc", 3, "multi-driver net"); VertexSet *drvr_vertices = new VertexSet; MultiDrvrNet *multi_drvr = new MultiDrvrNet(drvr_vertices); Level max_drvr_level = 0; diff --git a/include/sta/Debug.hh b/include/sta/Debug.hh index 9a39cf27..65768039 100644 --- a/include/sta/Debug.hh +++ b/include/sta/Debug.hh @@ -59,16 +59,9 @@ private: // Note that "##__VA_ARGS__" is a gcc extension to support zero arguments (no comma). // clang -Wno-gnu-zero-variadic-macro-arguments suppresses the warning. // c++20 has "__VA_OPT__" to deal with the zero arg case so this is temporary. -#define debugPrint(debug, what, level, msg, ...) \ +#define debugPrint(debug, what, level, ...) \ if (debug->check(what, level)) { \ - debug->reportLine(what, msg, ##__VA_ARGS__); \ - } - -// Sadly c++11 __VA_ARGS__ macros must have at least one arg, so this form -// should be used when there are no args for the message. -#define debugPrint0(debug, what, level, msg) \ - if (debug->check(what, level)) { \ - debug->reportLine(what, msg); \ + debug->reportLine(what, ##__VA_ARGS__); \ } } // namespace diff --git a/sdc/Sdc.cc b/sdc/Sdc.cc index 6411953f..5963ca0d 100644 --- a/sdc/Sdc.cc +++ b/sdc/Sdc.cc @@ -4243,7 +4243,7 @@ Sdc::makeLoopExceptions() void Sdc::makeLoopExceptions(GraphLoop *loop) { - debugPrint0(debug_, "loop", 2, "Loop false path"); + debugPrint(debug_, "loop", 2, "Loop false path"); EdgeSeq::Iterator loop_edge_iter(loop->edges()); while (loop_edge_iter.hasNext()) { Edge *edge = loop_edge_iter.next(); diff --git a/search/ClkNetwork.cc b/search/ClkNetwork.cc index 0a040059..a1b5dbec 100644 --- a/search/ClkNetwork.cc +++ b/search/ClkNetwork.cc @@ -51,7 +51,7 @@ ClkNetwork::clear() void ClkNetwork::clkPinsInvalid() { - debugPrint0(debug_, "clk_network", 1, "clk network invalid"); + debugPrint(debug_, "clk_network", 1, "clk network invalid"); clk_pins_valid_ = false; } @@ -98,7 +98,7 @@ ClkSearchPred::searchTo(const Vertex *to) void ClkNetwork::findClkPins() { - debugPrint0(debug_, "clk_network", 1, "find clk network"); + debugPrint(debug_, "clk_network", 1, "find clk network"); clear(); findClkPins(false, pin_clks_map_); findClkPins(true, pin_ideal_clks_map_); diff --git a/search/Genclks.cc b/search/Genclks.cc index 4db9b4d6..f500a6d5 100644 --- a/search/Genclks.cc +++ b/search/Genclks.cc @@ -195,7 +195,7 @@ Genclks::ensureInsertionDelays() { if (!found_insertion_delays_) { Stats stats(debug_, report_); - debugPrint0(debug_, "genclk", 1, "find generated clk insertion delays"); + debugPrint(debug_, "genclk", 1, "find generated clk insertion delays"); ClockSeq gclks; for (auto clk : sdc_->clks()) { diff --git a/search/Levelize.cc b/search/Levelize.cc index 24befe94..836d4e3a 100644 --- a/search/Levelize.cc +++ b/search/Levelize.cc @@ -115,7 +115,7 @@ void Levelize::levelize() { Stats stats(debug_, report_); - debugPrint0(debug_, "levelize", 1, "levelize"); + debugPrint(debug_, "levelize", 1, "levelize"); max_level_ = 0; clearLoopEdges(); deleteLoops(); @@ -276,7 +276,7 @@ EdgeSeq * Levelize::loopEdges(EdgeSeq &path, Edge *closing_edge) { - debugPrint0(debug_, "loop", 2, "Loop"); + debugPrint(debug_, "loop", 2, "Loop"); EdgeSeq *loop_edges = new EdgeSeq; // Skip the "head" of the path up to where closing_edge closes the loop. Pin *loop_pin = closing_edge->to(graph_)->pin(); @@ -355,7 +355,7 @@ Levelize::levelizeCycles() void Levelize::invalid() { - debugPrint0(debug_, "levelize", 1, "levels invalid"); + debugPrint(debug_, "levelize", 1, "levels invalid"); clear(); } diff --git a/search/PathEnum.cc b/search/PathEnum.cc index c316e327..a15eb22e 100644 --- a/search/PathEnum.cc +++ b/search/PathEnum.cc @@ -434,7 +434,7 @@ PathEnum::makeDiversion(PathEnd *div_end, void PathEnum::pruneDiversionQueue() { - debugPrint0(debug_, "path_enum", 2, "prune queue"); + debugPrint(debug_, "path_enum", 2, "prune queue"); VertexPathCountMap path_counts; int end_count = 0; // Collect endpoint_count diversions per vertex. diff --git a/search/Power.cc b/search/Power.cc index b5d2a76a..b4c0d03f 100644 --- a/search/Power.cc +++ b/search/Power.cc @@ -661,7 +661,7 @@ Power::findInputInternalPower(const Pin *pin, Vertex *vertex = graph_->pinLoadVertex(pin); debugPrint(debug_, "power", 2, " cap = %s", units_->capacitanceUnit()->asString(load_cap)); - debugPrint0(debug_, "power", 2, " when act/ns duty energy power"); + debugPrint(debug_, "power", 2, " when act/ns duty energy power"); float internal = 0.0; for (InternalPower *pwr : *internal_pwrs) { const char *related_pg_pin = pwr->relatedPgPin(); @@ -806,7 +806,7 @@ Power::findOutputInternalPower(const Pin *to_pin, } float energy = 0.0; int tr_count = 0; - debugPrint0(debug_, "power", 2, + debugPrint(debug_, "power", 2, " when act/ns duty wgt energy power"); for (auto to_rf : RiseFall::range()) { // Use unateness to find from_rf. diff --git a/search/Search.cc b/search/Search.cc index 0efa662c..f4b0df0e 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -392,7 +392,7 @@ Search::copyState(const StaState *sta) void Search::deletePaths() { - debugPrint0(debug_, "search", 1, "delete paths"); + debugPrint(debug_, "search", 1, "delete paths"); if (arrivals_exist_) { VertexIterator vertex_iter(graph_); while (vertex_iter.hasNext()) { @@ -662,7 +662,7 @@ void Search::arrivalsInvalid() { if (arrivals_exist_) { - debugPrint0(debug_, "search", 1, "arrivals invalid"); + debugPrint(debug_, "search", 1, "arrivals invalid"); // Delete paths to make sure no state is left over. // For example, set_disable_timing strands a vertex, which means // the search won't revisit it to clear the previous arrival. @@ -689,7 +689,7 @@ Search::arrivalsInvalid() void Search::requiredsInvalid() { - debugPrint0(debug_, "search", 1, "requireds invalid"); + debugPrint(debug_, "search", 1, "requireds invalid"); requireds_exist_ = false; requireds_seeded_ = false; invalid_requireds_.clear(); @@ -791,7 +791,7 @@ Search::findClkArrivals() if (!clk_arrivals_valid_) { genclks_->ensureInsertionDelays(); Stats stats(debug_, report_); - debugPrint0(debug_, "search", 1, "find clk arrivals"); + debugPrint(debug_, "search", 1, "find clk arrivals"); arrival_iter_->clear(); seedClkVertexArrivals(); ClkArrivalSearchPred search_clk(this); @@ -1129,7 +1129,7 @@ ArrivalVisitor::visit(Vertex *vertex) || !sdc->isPathDelayInternalEndpoint(pin))) search->arrivalIterator()->enqueueAdjacentVertices(vertex, adj_pred_); if (arrivals_changed) { - debugPrint0(debug, "search", 4, "arrival changed"); + debugPrint(debug, "search", 4, "arrival changed"); // Only update arrivals when delays change by more than // fuzzyEqual can distinguish. search->setVertexArrivals(vertex, tag_bldr_); diff --git a/search/WorstSlack.cc b/search/WorstSlack.cc index d82a9499..5d0f57f9 100644 --- a/search/WorstSlack.cc +++ b/search/WorstSlack.cc @@ -149,7 +149,7 @@ WorstSlack::initQueue(PathAPIndex path_ap_index, { Search *search = sta->search(); const Debug *debug = sta->debug(); - debugPrint0(debug, "wns", 3, "init queue"); + debugPrint(debug, "wns", 3, "init queue"); queue_.clear(); worst_vertex_ = nullptr; @@ -181,7 +181,7 @@ WorstSlack::sortQueue(PathAPIndex path_ap_index, if (queue_.size() > 0) { Search *search = sta->search(); const Debug *debug = sta->debug(); - debugPrint0(debug, "wns", 3, "sort queue"); + debugPrint(debug, "wns", 3, "sort queue"); VertexSeq vertices; vertices.reserve(queue_.size()); @@ -223,7 +223,7 @@ WorstSlack::findWorstInQueue(PathAPIndex path_ap_index, { Search *search = sta->search(); const Debug *debug = sta->debug(); - debugPrint0(debug, "wns", 3, "find worst in queue"); + debugPrint(debug, "wns", 3, "find worst in queue"); worst_vertex_ = nullptr; worst_slack_ = slack_init_;