From 548d47ea2c6f53de2daad78db3187efaf3fbd692 Mon Sep 17 00:00:00 2001 From: Sascha Bischoff Date: Sun, 23 Mar 2014 11:11:40 -0400 Subject: mem: CommMonitor trace warn on non-timing mode Add a warning to the CommMonitor which will alert the user if they try and record a trace when the system is not in timing mode. --- src/mem/CommMonitor.py | 4 ++++ src/mem/comm_monitor.cc | 10 +++++++++- src/mem/comm_monitor.hh | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mem/CommMonitor.py b/src/mem/CommMonitor.py index 3f9106cc4..4e8cfe270 100644 --- a/src/mem/CommMonitor.py +++ b/src/mem/CommMonitor.py @@ -37,7 +37,9 @@ # Andreas Hansson from m5.params import * +from m5.proxy import * from MemObject import MemObject +from System import System # The communication monitor will most typically be used in combination # with periodic dumping and resetting of stats using schedStatEvent @@ -45,6 +47,8 @@ class CommMonitor(MemObject): type = 'CommMonitor' cxx_header = "mem/comm_monitor.hh" + system = Param.System(Parent.any, "System that the monitor belongs to.") + # one port in each direction master = MasterPort("Master port") slave = SlavePort("Slave port") diff --git a/src/mem/comm_monitor.cc b/src/mem/comm_monitor.cc index 655265c37..70b8a6451 100644 --- a/src/mem/comm_monitor.cc +++ b/src/mem/comm_monitor.cc @@ -55,7 +55,8 @@ CommMonitor::CommMonitor(Params* params) readAddrMask(params->read_addr_mask), writeAddrMask(params->write_addr_mask), stats(params), - traceStream(NULL) + traceStream(NULL), + system(params->system) { // If we are using a trace file, then open the file, if (params->trace_file != "") { @@ -106,6 +107,13 @@ CommMonitor::init() // make sure both sides of the monitor are connected if (!slavePort.isConnected() || !masterPort.isConnected()) fatal("Communication monitor is not connected on both sides.\n"); + + if (traceStream != NULL) { + // Check the memory mode. We only record something when in + // timing mode. Warn accordingly. + if (!system->isTimingMode()) + warn("%s: Not in timing mode. No trace will be recorded.", name()); + } } BaseMasterPort& diff --git a/src/mem/comm_monitor.hh b/src/mem/comm_monitor.hh index 9dcd065ca..c3a970940 100644 --- a/src/mem/comm_monitor.hh +++ b/src/mem/comm_monitor.hh @@ -46,6 +46,7 @@ #include "mem/mem_object.hh" #include "params/CommMonitor.hh" #include "proto/protoio.hh" +#include "sim/system.hh" /** * The communication monitor is a MemObject which can monitor statistics of @@ -418,6 +419,9 @@ class CommMonitor : public MemObject /** Output stream for a potential trace. */ ProtoOutputStream* traceStream; + + /** The system in which the monitor lives */ + System *system; }; #endif //__MEM_COMM_MONITOR_HH__ -- cgit v1.2.3