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:
@@ -37,7 +37,9 @@
|
|||||||
# Andreas Hansson
|
# Andreas Hansson
|
||||||
|
|
||||||
from m5.params import *
|
from m5.params import *
|
||||||
|
from m5.proxy import *
|
||||||
from MemObject import MemObject
|
from MemObject import MemObject
|
||||||
|
from System import System
|
||||||
|
|
||||||
# The communication monitor will most typically be used in combination
|
# The communication monitor will most typically be used in combination
|
||||||
# with periodic dumping and resetting of stats using schedStatEvent
|
# with periodic dumping and resetting of stats using schedStatEvent
|
||||||
@@ -45,6 +47,8 @@ class CommMonitor(MemObject):
|
|||||||
type = 'CommMonitor'
|
type = 'CommMonitor'
|
||||||
cxx_header = "mem/comm_monitor.hh"
|
cxx_header = "mem/comm_monitor.hh"
|
||||||
|
|
||||||
|
system = Param.System(Parent.any, "System that the monitor belongs to.")
|
||||||
|
|
||||||
# one port in each direction
|
# one port in each direction
|
||||||
master = MasterPort("Master port")
|
master = MasterPort("Master port")
|
||||||
slave = SlavePort("Slave port")
|
slave = SlavePort("Slave port")
|
||||||
|
|||||||
@@ -55,7 +55,8 @@ CommMonitor::CommMonitor(Params* params)
|
|||||||
readAddrMask(params->read_addr_mask),
|
readAddrMask(params->read_addr_mask),
|
||||||
writeAddrMask(params->write_addr_mask),
|
writeAddrMask(params->write_addr_mask),
|
||||||
stats(params),
|
stats(params),
|
||||||
traceStream(NULL)
|
traceStream(NULL),
|
||||||
|
system(params->system)
|
||||||
{
|
{
|
||||||
// If we are using a trace file, then open the file,
|
// If we are using a trace file, then open the file,
|
||||||
if (params->trace_file != "") {
|
if (params->trace_file != "") {
|
||||||
@@ -106,6 +107,13 @@ CommMonitor::init()
|
|||||||
// make sure both sides of the monitor are connected
|
// make sure both sides of the monitor are connected
|
||||||
if (!slavePort.isConnected() || !masterPort.isConnected())
|
if (!slavePort.isConnected() || !masterPort.isConnected())
|
||||||
fatal("Communication monitor is not connected on both sides.\n");
|
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&
|
BaseMasterPort&
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
#include "mem/mem_object.hh"
|
#include "mem/mem_object.hh"
|
||||||
#include "params/CommMonitor.hh"
|
#include "params/CommMonitor.hh"
|
||||||
#include "proto/protoio.hh"
|
#include "proto/protoio.hh"
|
||||||
|
#include "sim/system.hh"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The communication monitor is a MemObject which can monitor statistics of
|
* 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. */
|
/** Output stream for a potential trace. */
|
||||||
ProtoOutputStream* traceStream;
|
ProtoOutputStream* traceStream;
|
||||||
|
|
||||||
|
/** The system in which the monitor lives */
|
||||||
|
System *system;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__MEM_COMM_MONITOR_HH__
|
#endif //__MEM_COMM_MONITOR_HH__
|
||||||
|
|||||||
Reference in New Issue
Block a user