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.
This commit is contained in:
Sascha Bischoff 2014-03-23 11:11:40 -04:00
parent e18d0e04a2
commit 548d47ea2c
3 changed files with 17 additions and 1 deletions

View file

@ -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")

View file

@ -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&

View file

@ -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__