diff --git a/examples/make_tracing_c/sim_main.cpp b/examples/make_tracing_c/sim_main.cpp index 1e21a8b71..f69ca36b5 100644 --- a/examples/make_tracing_c/sim_main.cpp +++ b/examples/make_tracing_c/sim_main.cpp @@ -118,7 +118,7 @@ int main(int argc, char** argv) { #endif // Final simulation summary - contextp->printStatsSummary(); + contextp->statsPrintSummary(); // Return good completion status // Don't use exit() or destructor won't get called diff --git a/include/verilated.cpp b/include/verilated.cpp index 3b6393edd..ec48c1ca4 100644 --- a/include/verilated.cpp +++ b/include/verilated.cpp @@ -2567,25 +2567,6 @@ std::string VerilatedContext::profVltFilename() const VL_MT_SAFE { const VerilatedLockGuard lock{m_mutex}; return m_ns.m_profVltFilename; } - -void VerilatedContext::printStatsSummary() VL_MT_UNSAFE { - if (quiet()) return; - VL_PRINTF("- S i m u l a t i o n R e p o r t: %s %s\n", Verilated::productName(), - Verilated::productVersion()); - const std::string endwhy = gotError() ? "$stop" : gotFinish() ? "$finish" : "end"; - const double simtimeInUnits = VL_TIME_Q() * vl_time_multiplier(timeunit()) - * vl_time_multiplier(timeprecision() - timeunit()); - const std::string simtime = vl_timescaled_double(simtimeInUnits); - const double walltime = statWallTimeSinceStart(); - const double cputime = statCpuTimeSinceStart(); - const std::string simtimePerf - = vl_timescaled_double((cputime != 0.0) ? (simtimeInUnits / cputime) : 0, "%0.3f %s"); - VL_PRINTF("- Verilator: %s at %s; walltime %0.3f s; speed %s/s\n", endwhy.c_str(), - simtime.c_str(), walltime, simtimePerf.c_str()); - const double modelMB = VlOs::memUsageBytes() / 1024.0 / 1024.0; - VL_PRINTF("- Verilator: cpu %0.3f s on %d threads; alloced %0.0f MB\n", cputime, - threadsInModels(), modelMB); -} void VerilatedContext::quiet(bool flag) VL_MT_SAFE { const VerilatedLockGuard lock{m_mutex}; m_s.m_quiet = flag; @@ -2699,6 +2680,7 @@ VerilatedContext::enableExecutionProfiler(VerilatedVirtualBase* (*construct)(Ver //====================================================================== // VerilatedContextImp:: Methods - command line + void VerilatedContextImp::commandArgsGuts(int argc, const char** argv) VL_MT_SAFE_EXCLUDES(m_argMutex) { const VerilatedLockGuard lock{m_argMutex}; @@ -2885,6 +2867,24 @@ double VerilatedContext::statWallTimeSinceStart() const VL_MT_SAFE_EXCLUDES(m_mu const VerilatedLockGuard lock{m_mutex}; return m_ns.m_wallTimeStart.deltaTime(); } +void VerilatedContext::statsPrintSummary() VL_MT_UNSAFE { + if (quiet()) return; + VL_PRINTF("- S i m u l a t i o n R e p o r t: %s %s\n", Verilated::productName(), + Verilated::productVersion()); + const std::string endwhy = gotError() ? "$stop" : gotFinish() ? "$finish" : "end"; + const double simtimeInUnits = VL_TIME_Q() * vl_time_multiplier(timeunit()) + * vl_time_multiplier(timeprecision() - timeunit()); + const std::string simtime = vl_timescaled_double(simtimeInUnits); + const double walltime = statWallTimeSinceStart(); + const double cputime = statCpuTimeSinceStart(); + const std::string simtimePerf + = vl_timescaled_double((cputime != 0.0) ? (simtimeInUnits / cputime) : 0, "%0.3f %s"); + VL_PRINTF("- Verilator: %s at %s; walltime %0.3f s; speed %s/s\n", endwhy.c_str(), + simtime.c_str(), walltime, simtimePerf.c_str()); + const double modelMB = VlOs::memUsageBytes() / 1024.0 / 1024.0; + VL_PRINTF("- Verilator: cpu %0.3f s on %d threads; alloced %0.0f MB\n", cputime, + threadsInModels(), modelMB); +} //====================================================================== // VerilatedContext:: Methods - scopes diff --git a/include/verilated.h b/include/verilated.h index 54ceedacf..897373cf9 100644 --- a/include/verilated.h +++ b/include/verilated.h @@ -494,8 +494,6 @@ public: void gotFinish(bool flag) VL_MT_SAFE; /// Return if got a $finish or $stop/error bool gotFinish() const VL_MT_SAFE { return m_s.m_gotFinish; } - /// Print statistics summary (if not quiet) - void printStatsSummary() VL_MT_UNSAFE; /// Enable quiet (also prevents need for OS calls to get CPU time) void quiet(bool flag) VL_MT_SAFE; /// Return if quiet enabled @@ -516,6 +514,8 @@ public: double statCpuTimeSinceStart() const VL_MT_SAFE_EXCLUDES(m_mutex); /// Return statistic: Wall time delta from model created until now double statWallTimeSinceStart() const VL_MT_SAFE_EXCLUDES(m_mutex); + /// Print statistics summary (if not quiet) + void statsPrintSummary() VL_MT_UNSAFE; // Time handling /// Returns current simulation time in units of timeprecision(). diff --git a/src/V3EmitCMain.cpp b/src/V3EmitCMain.cpp index 9e8e0b163..ac31e7f32 100644 --- a/src/V3EmitCMain.cpp +++ b/src/V3EmitCMain.cpp @@ -111,7 +111,7 @@ private: } puts("// Print statistical summary report\n"); - puts("contextp->printStatsSummary();\n"); + puts("contextp->statsPrintSummary();\n"); puts("\n"); puts("return 0;\n");