59 #ifndef __SYSTEMC_TLM_BRIDGE_GEM5_TO_TLM_HH__ 60 #define __SYSTEMC_TLM_BRIDGE_GEM5_TO_TLM_HH__ 65 #include "params/Gem5ToTlmBridgeBase.hh" 84 template <
unsigned int BITWIDTH>
133 SlavePort(name_, nullptr), bridge(bridge_)
176 bool recvTimingSnoopResp(
PacketPtr packet);
177 void recvRespRetry();
178 void recvFunctionalSnoop(
PacketPtr packet);
185 void invalidate_direct_mem_ptr(
191 typedef Gem5ToTlmBridgeBaseParams
Params;
205 #endif // __SYSTEMC_TLM_BRIDGE_GEM5_TO_TLM_HH__ Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor)
tlm_utils::simple_initiator_socket< Gem5ToTlmBridge< BITWIDTH >, BITWIDTH > socket
Gem5ToTlmBridgeBaseParams Params
bool recvTimingReq(PacketPtr packet)
tlm::tlm_generic_payload * packet2payload(PacketPtr packet)
Convert a gem5 packet to a TLM payload by copying all the relevant information to new tlm payload...
void recvFunctional(PacketPtr packet)
BridgeSlavePort(const std::string &name_, Gem5ToTlmBridge< BITWIDTH > &bridge_)
tlm_utils::simple_initiator_socket< Gem5ToTlmBridge< BITWIDTH >, BITWIDTH > & getSocket()
A SlavePort is a specialisation of a port.
bool needToSendRequestRetry
Did another gem5 request arrive while currently blocked? This variable is needed when a retry should ...
Tick recvAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor) override
Default implementations.
bool tryTiming(PacketPtr packet)
tlm::tlm_generic_payload * blockingRequest
A transaction after BEGIN_REQ has been sent but before END_REQ, which is blocking the request channel...
bool recvTimingSnoopResp(PacketPtr packet)
bool recvTimingReq(PacketPtr pkt) override
Receive a timing request from the peer.
AddrRangeList getAddrRanges() const
uint64_t Tick
Tick count type.
bool recvTimingSnoopResp(PacketPtr pkt) override
Receive a timing snoop response from the peer.
The AddrRangeMap uses an STL map to implement an interval tree for address decoding.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
void recvRespRetry() override
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
Gem5ToTlmBridge< BITWIDTH > & bridge
AddrRangeMap< MemBackdoorPtr > backdoorMap
virtual ::Port & gem5_getPort(const std::string &if_name, int idx=-1)
void recvFunctional(PacketPtr pkt) override
Receive a functional request packet from the peer.
bool tryTiming(PacketPtr pkt) override
Availability request from the peer.
sc_gem5::TlmInitiatorWrapper< BITWIDTH > wrapper
tlm::tlm_generic_payload * blockingResponse
A response which has been asked to retry by gem5 and so is blocking the response channel.
Tick recvAtomic(PacketPtr packet)
AddrRangeList getAddrRanges() const override
Get a list of the non-overlapping address ranges the owner is responsible for.
Tick recvAtomic(PacketPtr pkt) override
Receive an atomic request packet from the peer.
virtual void before_end_of_elaboration()