From 79e8571999ee0df1ec124c385e48c79e3b8513ef Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 30 May 2018 15:28:29 -0700 Subject: [PATCH] systemc: Implement some simple accessor functions in sc_main.cc. These functions just read or write values with minimal amounts of logic. Change-Id: I22d5b49a2550a88a854d1619f08b0055c1312271 Reviewed-on: https://gem5-review.googlesource.com/10847 Reviewed-by: Jason Lowe-Power Maintainer: Gabe Black --- src/systemc/core/sc_main.cc | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/systemc/core/sc_main.cc b/src/systemc/core/sc_main.cc index 3c4fdbb6a..a7a77a4c4 100644 --- a/src/systemc/core/sc_main.cc +++ b/src/systemc/core/sc_main.cc @@ -33,6 +33,7 @@ #include "python/pybind11/pybind.hh" #include "sim/init.hh" #include "systemc/ext/core/sc_main.hh" +#include "systemc/ext/utils/sc_report_handler.hh" // A default version of this function in case one isn't otherwise defined. // This ensures everything will link properly whether or not the user defined @@ -107,6 +108,11 @@ systemc_pybind(pybind11::module &m_internal) } EmbeddedPyBind embed_("systemc", &systemc_pybind); +sc_stop_mode _stop_mode = SC_STOP_FINISH_DELTA; +sc_status _status = SC_ELABORATION; + +uint64_t _deltaCycles = 0; + } // anonymous namespace int @@ -142,14 +148,18 @@ sc_start(const sc_time &time, sc_starvation_policy p) void sc_set_stop_mode(sc_stop_mode mode) { - warn("%s not implemented.\n", __PRETTY_FUNCTION__); + if (sc_is_running()) { + SC_REPORT_ERROR("attempt to set sc_stop mode " + "after start will be ignored", ""); + return; + } + _stop_mode = mode; } sc_stop_mode sc_get_stop_mode() { - warn("%s not implemented.\n", __PRETTY_FUNCTION__); - return SC_STOP_FINISH_DELTA; + return _stop_mode; } void @@ -168,15 +178,13 @@ sc_time_stamp() sc_dt::uint64 sc_delta_count() { - warn("%s not implemented.\n", __PRETTY_FUNCTION__); - return 0; + return _deltaCycles; } bool sc_is_running() { - warn("%s not implemented.\n", __PRETTY_FUNCTION__); - return false; + return _status & (SC_RUNNING | SC_PAUSED); } bool @@ -196,8 +204,8 @@ sc_pending_activity_at_future_time() bool sc_pending_activity() { - warn("%s not implemented.\n", __PRETTY_FUNCTION__); - return false; + return sc_pending_activity_at_current_time() || + sc_pending_activity_at_future_time(); } sc_time @@ -210,8 +218,7 @@ sc_time_to_pending_activity() sc_status sc_get_status() { - warn("%s not implemented.\n", __PRETTY_FUNCTION__); - return SC_ELABORATION; + return _status; } } // namespace sc_core -- 2.30.2