42 #ifndef __MEM_MEM_CHECKER_MONITOR_HH__ 43 #define __MEM_MEM_CHECKER_MONITOR_HH__ 47 #include "params/MemCheckerMonitor.hh" 59 typedef MemCheckerMonitorParams
Params;
61 {
return reinterpret_cast<const Params*
>(
_params); }
108 mon.recvFunctionalSnoop(pkt);
113 return mon.recvAtomicSnoop(pkt);
118 return mon.recvTimingResp(pkt);
123 mon.recvTimingSnoopReq(pkt);
128 mon.recvRangeChange();
133 return mon.isSnooping();
169 mon.recvFunctional(pkt);
174 return mon.recvAtomic(pkt);
179 return mon.recvTimingReq(pkt);
184 return mon.recvTimingSnoopResp(pkt);
189 return mon.getAddrRanges();
237 #endif //__MEM_MEM_CHECKER_MONITOR_HH__ A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
~MemCheckerMonitor()
Destructor.
Ports are used to interface objects to each other.
Tick recvAtomicSnoop(PacketPtr pkt)
bool recvTimingReq(PacketPtr pkt)
MonitorSlavePort(const std::string &_name, MemCheckerMonitor &_mon)
const PortID InvalidPortID
AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
MemCheckerMonitorSenderState(MemChecker::Serial _serial)
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
bool isSnooping() const
Determine if this master port is snooping or not.
AddrRangeList getAddrRanges() const
Tick recvAtomic(PacketPtr pkt)
bool recvTimingReq(PacketPtr pkt)
Receive a timing request from the peer.
A SlavePort is a specialisation of a port.
This is the master port of the communication monitor.
Declaration of Statistics objects.
uint64_t Serial
The Serial type is used to be able to uniquely identify a transaction as it passes through the system...
MemCheckerMonitor(Params *params)
Constructor based on the Python params.
MonitorMasterPort masterPort
Instance of master port, facing the memory side.
uint64_t Tick
Tick count type.
bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
MemCheckerMonitorParams Params
Parameters of memchecker monitor.
void recvTimingSnoopReq(PacketPtr pkt)
Receive a timing snoop request from the peer.
Tick recvAtomicSnoop(PacketPtr pkt)
Receive an atomic snoop request packet from our peer.
void recvFunctionalSnoop(PacketPtr pkt)
void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
void recvRangeChange()
Called to receive an address range change from the peer slave port.
Implements a MemChecker monitor, to be inserted between two ports.
MonitorSlavePort slavePort
Instance of slave port, i.e.
bool recvTimingSnoopResp(PacketPtr pkt)
Receive a timing snoop response from the peer.
A virtual base opaque structure used to hold state associated with the packet (e.g., an MSHR), specific to a SimObject that sees the packet.
const Params * params() const
void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the peer.
void recvTimingSnoopReq(PacketPtr pkt)
MonitorMasterPort(const std::string &_name, MemCheckerMonitor &_mon)
const SimObjectParams * _params
Cached copy of the object parameters.
bool recvTimingSnoopResp(PacketPtr pkt)
void recvFunctional(PacketPtr pkt)
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
bool recvTimingResp(PacketPtr pkt)
void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
This is the slave port of the communication monitor.
Abstract superclass for simulation objects.
MemChecker::Serial serial