46#ifndef __MEM_NONCOHERENT_XBAR_HH__
47#define __MEM_NONCOHERENT_XBAR_HH__
50#include "params/NoncoherentXBar.hh"
The base crossbar contains the common elements of the non-coherent and coherent crossbar.
virtual void recvRangeChange(PortID mem_side_port_id)
Function called by the port when the crossbar is recieving a range change.
AddrRangeList getAddrRanges() const
Return the address ranges the crossbar is responsible for.
Declaration of the crossbar memory-side port type, one will be instantiated for each of the CPU-side ...
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...
Declaration of the non-coherent crossbar CPU-side port type, one will be instantiated for each of the...
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)
A non-coherent crossbar connects a number of non-snooping memory-side ports and cpu_sides,...
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.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
A queued port is a port that has an infinite queue for outgoing packets and thus decouples the module...
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
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.