summaryrefslogtreecommitdiff
path: root/src/systemc
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-07-16 15:53:04 -0700
committerGabe Black <gabeblack@google.com>2018-09-05 06:05:12 +0000
commitd7755ec828868582e2b409ba14f1c8c920c7f184 (patch)
treee0d4097f7593b7c8b98ed51b65d7943d7028041e /src/systemc
parent7b8c8bcaa5dc33cd7432cd3f25077321b09c61c9 (diff)
downloadgem5-d7755ec828868582e2b409ba14f1c8c920c7f184.tar.xz
systemc: Hook up sc_time_stamp sc_delta_count.
sc_time_stamp reports the current simulation time. sc_delta_count was hooked up to a dummy value. This change hooks it up to the scheduler so that it returns the real value. Change-Id: I354c4be32161eabeea86af653f5cb0a5d384645b Reviewed-on: https://gem5-review.googlesource.com/11712 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc')
-rw-r--r--src/systemc/core/sc_main.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/systemc/core/sc_main.cc b/src/systemc/core/sc_main.cc
index fec3faeb0..0b385e9a0 100644
--- a/src/systemc/core/sc_main.cc
+++ b/src/systemc/core/sc_main.cc
@@ -33,8 +33,10 @@
#include "base/logging.hh"
#include "base/types.hh"
#include "python/pybind11/pybind.hh"
+#include "sim/core.hh"
#include "sim/eventq.hh"
#include "sim/init.hh"
+#include "systemc/core/scheduler.hh"
#include "systemc/ext/core/sc_main.hh"
#include "systemc/ext/utils/sc_report_handler.hh"
@@ -124,8 +126,6 @@ sc_status _status = SC_ELABORATION;
Tick _max_tick = MaxTick;
sc_starvation_policy _starvation = SC_EXIT_ON_STARVATION;
-uint64_t _deltaCycles = 0;
-
} // anonymous namespace
int
@@ -193,14 +193,17 @@ sc_stop()
const sc_time &
sc_time_stamp()
{
- warn("%s not implemented.\n", __PRETTY_FUNCTION__);
- return *(sc_time *)nullptr;
+ static sc_time tstamp;
+ Tick tick = sc_gem5::scheduler.eventQueue().getCurTick();
+ //XXX We're assuming the systemc time resolution is in ps.
+ tstamp = sc_time::from_value(tick / SimClock::Int::ps);
+ return tstamp;
}
sc_dt::uint64
sc_delta_count()
{
- return _deltaCycles;
+ return sc_gem5::scheduler.numCycles();
}
bool