systemc: Print an Info when setting a tracefile's time unit.
authorGabe Black <gabeblack@google.com>
Sat, 22 Sep 2018 14:30:28 +0000 (07:30 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 16 Oct 2018 00:31:12 +0000 (00:31 +0000)
This matches Accellera's output for the tests.

Change-Id: Ie67fd673a980b8ca2fdcd8f357ff7993a9091221
Reviewed-on: https://gem5-review.googlesource.com/c/12972
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/utils/tracefile.cc

index 20091c307cf057aa9389a4859d28ceb5608e9a59..25d7ea6f3e65128bdf3d0f18e6dacc6bdc105d85 100644 (file)
@@ -35,6 +35,7 @@
 #include "base/logging.hh"
 #include "base/output.hh"
 #include "sim/core.hh"
+#include "systemc/core/time.hh"
 #include "systemc/ext/core/sc_main.hh"
 #include "systemc/ext/utils/functions.hh"
 
@@ -58,6 +59,18 @@ TraceFile::set_time_unit(double d, ::sc_core::sc_time_unit tu)
 {
     timeUnitValue = d;
     timeUnitUnit = tu;
+
+    double secs = d * TimeUnitScale[tu];
+    for (tu = ::sc_core::SC_SEC; tu > ::sc_core::SC_FS;
+            tu = (::sc_core::sc_time_unit)(tu - 1)) {
+        if (TimeUnitScale[tu] <= secs)
+            break;
+    }
+
+    uint64_t i = static_cast<uint64_t>(secs / TimeUnitScale[tu]);
+    std::ostringstream ss;
+    ss << i << " " << TimeUnitNames[tu] << " (" << _os->name() << ")";
+    SC_REPORT_INFO("(I703) tracing timescale unit set", ss.str().c_str());
 }
 
 void