46#ifndef __MEM_NONCOHERENT_XBAR_HH__
47#define __MEM_NONCOHERENT_XBAR_HH__
50#include "params/NoncoherentXBar.hh"
108 return xbar.recvTimingReq(pkt,
id);
114 return xbar.recvAtomicBackdoor(pkt,
id);
120 return xbar.recvAtomicBackdoor(pkt,
id, &backdoor);
126 xbar.recvFunctional(pkt,
id);
133 xbar.recvMemBackdoorReq(req, backdoor);
139 return xbar.getAddrRanges();
167 return xbar.recvTimingResp(pkt,
id);
173 xbar.recvRangeChange(
id);
179 xbar.recvReqRetry(
id);
BaseXBar(const BaseXBarParams &p)
NoncoherentXBar & xbar
A reference to the crossbar to which this port belongs.
bool recvTimingResp(PacketPtr pkt) override
Receive a timing response from the peer.
void recvRangeChange() override
Called to receive an address range change from the peer response port.
NoncoherentXBarRequestPort(const std::string &_name, NoncoherentXBar &_xbar, PortID _id)
void recvReqRetry() override
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
NoncoherentXBar & xbar
A reference to the crossbar to which this port belongs.
void recvMemBackdoorReq(const MemBackdoorReq &req, MemBackdoorPtr &backdoor) override
Receive a request for a back door to a range of memory.
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the peer.
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor) override
Receive an atomic request packet from the peer, and optionally provide a backdoor to the data being a...
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
RespPacketQueue queue
A normal packet queue used to store responses.
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the peer.
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the peer.
NoncoherentXBarResponsePort(const std::string &_name, NoncoherentXBar &_xbar, PortID _id)
NoncoherentXBar(const NoncoherentXBarParams &p)
std::vector< RespLayer * > respLayers
Tick recvAtomicBackdoor(PacketPtr pkt, PortID cpu_side_port_id, MemBackdoorPtr *backdoor=nullptr)
void recvReqRetry(PortID mem_side_port_id)
virtual bool recvTimingReq(PacketPtr pkt, PortID cpu_side_port_id)
virtual bool recvTimingResp(PacketPtr pkt, PortID mem_side_port_id)
void recvMemBackdoorReq(const MemBackdoorReq &req, MemBackdoorPtr &backdoor)
virtual ~NoncoherentXBar()
void recvFunctional(PacketPtr pkt, PortID cpu_side_port_id)
std::vector< ReqLayer * > reqLayers
Declare the layers of this crossbar, one vector for requests and one for responses.
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.
RequestPort(const std::string &name, SimObject *_owner, PortID id=InvalidPortID)
Request port.
std::list< AddrRange > AddrRangeList
Convenience typedef for a collection of address ranges.
Copyright (c) 2024 Arm Limited All rights reserved.
MemBackdoor * MemBackdoorPtr
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
uint64_t Tick
Tick count type.
Declaration of an abstract crossbar base class.