51 #ifndef __MEM_BRIDGE_HH__
52 #define __MEM_BRIDGE_HH__
58 #include "params/Bridge.hh"
94 class BridgeMasterPort;
333 #endif //__MEM_BRIDGE_HH__
A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
bool retryReq
If we should send a retry when space becomes available.
Bridge & bridge
The bridge to which this port belongs.
Cycles is a wrapper class for representing cycle counts, i.e.
BridgeSlavePort(const std::string &_name, Bridge &_bridge, BridgeMasterPort &_masterPort, Cycles _delay, int _resp_limit, std::vector< AddrRange > _ranges)
Constructor for the BridgeSlavePort.
const PortID InvalidPortID
const Cycles delay
Minimum request delay though this bridge.
unsigned int outstandingResponses
Counter to track the outstanding responses.
Tick recvAtomic(PacketPtr pkt)
When receiving a Atomic requestfrom the peer port, pass it to the bridge.
EventWrapper< BridgeSlavePort,&BridgeSlavePort::trySendTiming > sendEvent
Send event for the response queue.
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
virtual BaseMasterPort & getMasterPort(const std::string &if_name, PortID idx=InvalidPortID)
Get a master port with a given name and index.
const AddrRangeList ranges
Address ranges to pass through the bridge.
void recvRespRetry()
When receiving a retry request from the peer port, pass it to the bridge.
A SlavePort is a specialisation of a port.
EventWrapper< BridgeMasterPort,&BridgeMasterPort::trySendTiming > sendEvent
Send event for the request queue.
A BaseSlavePort is a protocol-agnostic slave port, responsible only for the structural connection to ...
bool recvTimingResp(PacketPtr pkt)
When receiving a timing request from the peer port, pass it to the bridge.
void recvReqRetry()
When receiving a retry request from the peer port, pass it to the bridge.
std::deque< DeferredPacket > transmitList
Request packet queue.
BridgeMasterPort & masterPort
Master port on the other side of the bridge.
uint64_t Tick
Tick count type.
BridgeMasterPort masterPort
Master port of the bridge.
BridgeSlavePort slavePort
Slave port of the bridge.
bool respQueueFull() const
Is this side blocked from accepting new response packets.
void retryStalledReq()
Retry any stalled request that we have failed to accept at an earlier point in time.
bool recvTimingReq(PacketPtr pkt)
When receiving a timing request from the peer port, pass it to the bridge.
BridgeMasterPort(const std::string &_name, Bridge &_bridge, BridgeSlavePort &_slavePort, Cycles _delay, int _req_limit)
Constructor for the BridgeMasterPort.
bool reqQueueFull() const
Is this side blocked from accepting new request packets.
std::deque< DeferredPacket > transmitList
Response packet queue.
const unsigned int reqQueueLimit
Max queue size for request packets.
A deferred packet stores a packet along with its scheduled transmission time.
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
The port on the side that receives requests and sends responses.
bool checkFunctional(PacketPtr pkt)
Check a functional request against the packets in our request queue.
The MemObject class extends the ClockedObject with accessor functions to get its master and slave por...
A BaseMasterPort is a protocol-agnostic master port, responsible only for the structural connection t...
void schedTimingReq(PacketPtr pkt, Tick when)
Queue a request packet to be sent out later and also schedule a send if necessary.
void trySendTiming()
Handle send event, scheduled when the packet at the head of the response queue is ready to transmit (...
AddrRangeList getAddrRanges() const
When receiving a address range request the peer port, pass it to the bridge.
unsigned int respQueueLimit
Max queue size for reserved responses.
A bridge is used to interface two different crossbars (or in general a memory-mapped master and slave...
void trySendTiming()
Handle send event, scheduled when the packet at the head of the outbound queue is ready to transmit (...
Port on the side that forwards requests and receives responses.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
void schedTimingResp(PacketPtr pkt, Tick when)
Queue a response packet to be sent out later and also schedule a send if necessary.
BridgeSlavePort & slavePort
The slave port on the other side of the bridge.
DeferredPacket(PacketPtr _pkt, Tick _tick)
const Cycles delay
Minimum delay though this bridge.
virtual BaseSlavePort & getSlavePort(const std::string &if_name, PortID idx=InvalidPortID)
Get a slave port with a given name and index.
Bridge & bridge
The bridge to which this port belongs.
void recvFunctional(PacketPtr pkt)
When receiving a Functional request from the peer port, pass it to the bridge.
std::unique_ptr< Packet > pendingDelete
Upstream caches need this packet until true is returned, so hold it for deletion until a subsequent c...