summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-09-30 22:40:28 -0700
committerGabe Black <gabeblack@google.com>2018-10-16 00:40:46 +0000
commite5a994140a1f0fcd08ba6ddad7d11d6daa3d07a0 (patch)
tree68a5f2ec0b8831ca1dd63e697cce2ed551999d55
parent163eb3c56b115e649c72fceff89c8370b6e7306f (diff)
downloadgem5-e5a994140a1f0fcd08ba6ddad7d11d6daa3d07a0.tar.xz
systemc: Use the stage of simulation and not port size in add_trace.
The assumption was that a port wouldn't have any interfaces until after elaboration, and that if it would be traced, it would have interfaces. Checking if the simulation has started (and hence elaboration has finished) is a more accurate and direct way to check the same thing. Change-Id: I7fe9ecea469997d1a257dd3e4a0db31889aff722 Reviewed-on: https://gem5-review.googlesource.com/c/13195 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
-rw-r--r--src/systemc/ext/channel/sc_in.hh19
-rw-r--r--src/systemc/ext/channel/sc_inout.hh19
2 files changed, 20 insertions, 18 deletions
diff --git a/src/systemc/ext/channel/sc_in.hh b/src/systemc/ext/channel/sc_in.hh
index a76840161..3fea8a803 100644
--- a/src/systemc/ext/channel/sc_in.hh
+++ b/src/systemc/ext/channel/sc_in.hh
@@ -33,6 +33,7 @@
#include <string>
#include "../core/sc_event.hh"
+#include "../core/sc_main.hh"
#include "../core/sc_port.hh"
#include "../utils/sc_trace_file.hh"
#include "sc_signal_in_if.hh"
@@ -155,10 +156,10 @@ template <class T>
inline void
sc_trace(sc_trace_file *tf, const sc_in<T> &i, const std::string &name)
{
- if (i.size())
- sc_trace(tf, i->read(), name);
- else
+ if (::sc_core::sc_get_status() < ::sc_core::SC_START_OF_SIMULATION)
i.add_trace(tf, name);
+ else
+ sc_trace(tf, i->read(), name);
}
template <>
@@ -316,10 +317,10 @@ inline void
sc_trace<bool>(sc_trace_file *tf, const sc_in<bool> &i,
const std::string &name)
{
- if (i.size())
- sc_trace(tf, i->read(), name);
- else
+ if (::sc_core::sc_get_status() < ::sc_core::SC_START_OF_SIMULATION)
i.add_trace(tf, name);
+ else
+ sc_trace(tf, i->read(), name);
}
template <>
@@ -475,10 +476,10 @@ inline void
sc_trace<sc_dt::sc_logic>(sc_trace_file *tf, const sc_in<sc_dt::sc_logic> &i,
const std::string &name)
{
- if (i.size())
- sc_trace(tf, i->read(), name);
- else
+ if (::sc_core::sc_get_status() < ::sc_core::SC_START_OF_SIMULATION)
i.add_trace(tf, name);
+ else
+ sc_trace(tf, i->read(), name);
}
} // namespace sc_core
diff --git a/src/systemc/ext/channel/sc_inout.hh b/src/systemc/ext/channel/sc_inout.hh
index 7f19443d5..2973a5414 100644
--- a/src/systemc/ext/channel/sc_inout.hh
+++ b/src/systemc/ext/channel/sc_inout.hh
@@ -33,6 +33,7 @@
#include <string>
#include "../core/sc_event.hh"
+#include "../core/sc_main.hh"
#include "../core/sc_port.hh"
#include "../dt/bit/sc_logic.hh"
#include "../utils/sc_trace_file.hh"
@@ -184,10 +185,10 @@ template <class T>
inline void
sc_trace(sc_trace_file *tf, const sc_inout<T> &i, const std::string &name)
{
- if (i.size())
- sc_trace(tf, i->read(), name);
- else
+ if (::sc_core::sc_get_status() < ::sc_core::SC_START_OF_SIMULATION)
i.add_trace(tf, name);
+ else
+ sc_trace(tf, i->read(), name);
}
template <>
@@ -357,10 +358,10 @@ template <>
inline void sc_trace<bool>(
sc_trace_file *tf, const sc_inout<bool> &i, const std::string &name)
{
- if (i.size())
- sc_trace(tf, i->read(), name);
- else
+ if (::sc_core::sc_get_status() < ::sc_core::SC_START_OF_SIMULATION)
i.add_trace(tf, name);
+ else
+ sc_trace(tf, i->read(), name);
}
template <>
@@ -549,10 +550,10 @@ inline void
sc_trace<sc_dt::sc_logic>(sc_trace_file *tf,
const sc_inout<sc_dt::sc_logic> &i, const std::string &name)
{
- if (i.size())
- sc_trace(tf, i->read(), name);
- else
+ if (::sc_core::sc_get_status() < ::sc_core::SC_START_OF_SIMULATION)
i.add_trace(tf, name);
+ else
+ sc_trace(tf, i->read(), name);
}
} // namespace sc_core