38#ifndef __MEM_MEM_DELAY_HH__
39#define __MEM_MEM_DELAY_HH__
48struct SimpleMemDelayParams;
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
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.
This abstract component provides a mechanism to delay packets.
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
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Ports are used to interface objects to each other.
The QueuedRequestPort combines two queues, a request queue and a snoop response queue,...
A queued port is a port that has an infinite queue for outgoing packets and thus decouples the module...
AddrRangeList getAddrRanges() const
Get the address ranges of the connected responder port.
bool isSnooping() const
Find out if the peer request port is snooping or not.
void sendRangeChange() const
Called by the owner to send a range change.
Delay packets by a constant time.
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.
const Params & params() const
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria 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.