From b58f56bf7fe97dbe94a28123ddacae2053810932 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 22 Sep 2018 08:09:31 -0700 Subject: systemc: Change how the default timescale is set. The spec says that the default timescale should be 1 PS, but the Accellera implementation uses the time resolution. Change-Id: I7b307a33ef0856e9c19d81e401b15691275d4978 Reviewed-on: https://gem5-review.googlesource.com/c/12975 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/systemc/utils/tracefile.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/systemc/utils/tracefile.cc b/src/systemc/utils/tracefile.cc index 25d7ea6f3..cf771463b 100644 --- a/src/systemc/utils/tracefile.cc +++ b/src/systemc/utils/tracefile.cc @@ -37,6 +37,7 @@ #include "sim/core.hh" #include "systemc/core/time.hh" #include "systemc/ext/core/sc_main.hh" +#include "systemc/ext/core/sc_time.hh" #include "systemc/ext/utils/functions.hh" namespace sc_gem5 @@ -44,7 +45,7 @@ namespace sc_gem5 TraceFile::TraceFile(const std::string &name) : _os(simout.create(name, true, true)), timeUnitTicks(0), - timeUnitValue(1.0), timeUnitUnit(::sc_core::SC_PS), _traceDeltas(false) + timeUnitValue(0.0), timeUnitUnit(::sc_core::SC_PS), _traceDeltas(false) {} TraceFile::~TraceFile() @@ -76,7 +77,14 @@ TraceFile::set_time_unit(double d, ::sc_core::sc_time_unit tu) void TraceFile::finalizeTime() { - timeUnitTicks = ::sc_core::sc_time(timeUnitValue, timeUnitUnit).value(); + ::sc_core::sc_time time; + if (timeUnitValue == 0.0) { + // The time scale was never set. Use the global time resolution. + time = ::sc_core::sc_get_time_resolution(); + } else { + time = ::sc_core::sc_time(timeUnitValue, timeUnitUnit); + } + timeUnitTicks = time.value(); } } // namespace sc_gem5 -- cgit v1.2.3