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:
parent
e18d0e04a2
commit
548d47ea2c
3 changed files with 17 additions and 1 deletions
|
@ -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")
|
||||
|
|
|
@ -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&
|
||||
|
|
|
@ -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__
|
||||
|
|
Loading…
Reference in a new issue