38#ifndef __MEM_MEM_DELAY_HH__
39#define __MEM_MEM_DELAY_HH__
48struct SimpleMemDelayParams;
92 parent.responsePort.sendRangeChange();
96 return parent.responsePort.isSnooping();
115 return parent.requestPort.getAddrRanges();
ClockedObject(const ClockedObjectParams &p)
Tick recvAtomicSnoop(PacketPtr pkt) override
Receive an atomic snoop request packet from our peer.
void recvRangeChange() override
Called to receive an address range change from the peer response port.
bool recvTimingResp(PacketPtr pkt) override
Receive a timing response from the peer.
bool isSnooping() const override
Determine if this request port is snooping or not.
void recvTimingSnoopReq(PacketPtr pkt) override
Receive a timing snoop request from the peer.
void recvFunctionalSnoop(PacketPtr pkt) override
Receive a functional snoop request packet from the peer.
RequestPort(const std::string &_name, MemDelay &_parent)
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the peer.
ResponsePort(const std::string &_name, MemDelay &_parent)
bool tryTiming(PacketPtr pkt) override
Availability request from the peer.
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the peer.
bool recvTimingSnoopResp(PacketPtr pkt) override
Receive a timing snoop response from the peer.
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the peer.
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
bool trySatisfyFunctional(PacketPtr pkt)
MemDelay(const MemDelayParams ¶ms)
RespPacketQueue respQueue
virtual Tick delayResp(PacketPtr pkt)
Delay a response by some number of ticks.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
SnoopRespPacketQueue snoopRespQueue
virtual Tick delaySnoopResp(PacketPtr pkt)
Delay a snoop response by some number of ticks.
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
virtual Tick delayReq(PacketPtr pkt)
Delay a request by some number of ticks.
ResponsePort responsePort
Ports are used to interface objects to each other.
QueuedRequestPort(const std::string &name, ReqPacketQueue &req_queue, SnoopRespPacketQueue &snoop_resp_queue, PortID id=InvalidPortID)
Create a QueuedPort with a given name, and a supplied implementation of two packet queues.
QueuedResponsePort(const std::string &name, RespPacketQueue &resp_queue, PortID id=InvalidPortID)
Create a QueuedPort with a given name, owner, and a supplied implementation of a packet queue.
const Tick writeRespDelay
Tick delayReq(PacketPtr pkt) override
Delay a request by some number of ticks.
SimpleMemDelay(const SimpleMemDelayParams ¶ms)
Tick delayResp(PacketPtr pkt) override
Delay a response by some number of ticks.
ClockedObject declaration and implementation.
std::list< AddrRange > AddrRangeList
Convenience typedef for a collection of address ranges.
const Params & params() const
Copyright (c) 2024 Arm Limited All rights reserved.
const PortID InvalidPortID
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
uint64_t Tick
Tick count type.
Declaration of the queued port.