Go to the documentation of this file.
48 #ifndef __MEM_SERIAL_LINK_HH__
49 #define __MEM_SERIAL_LINK_HH__
55 #include "params/SerialLink.hh"
86 class SerialLinkRequestPort;
162 Cycles _delay,
int _resp_limit,
const
262 Cycles _delay,
int _req_limit);
325 #endif //__MEM_SERIAL_LINK_HH__
void trySendTiming()
Handle send event, scheduled when the packet at the head of the response queue is ready to transmit (...
uint64_t link_speed
Speed of each link (Gb/s) in this serial link.
A ResponsePort is a specialization of a port.
const unsigned int reqQueueLimit
Max queue size for request packets.
SerialLinkResponsePort(const std::string &_name, SerialLink &_serial_link, SerialLinkRequestPort &_mem_side_port, Cycles _delay, int _resp_limit, const std::vector< AddrRange > &_ranges)
Constructor for the SerialLinkResponsePort.
void recvFunctional(PacketPtr pkt)
When receiving a Functional request from the peer port, pass it to the serial_link.
EventFunctionWrapper sendEvent
Send event for the response queue.
const PortID InvalidPortID
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
Tick recvAtomic(PacketPtr pkt)
When receiving a Atomic requestfrom the peer port, pass it to the serial_link.
uint64_t Tick
Tick count type.
void schedTimingResp(PacketPtr pkt, Tick when)
Queue a response packet to be sent out later and also schedule a send if necessary.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
const Cycles delay
Minimum request delay though this serial_link.
void schedTimingReq(PacketPtr pkt, Tick when)
Queue a request packet to be sent out later and also schedule a send if necessary.
bool recvTimingReq(PacketPtr pkt)
When receiving a timing request from the peer port, pass it to the serial_link.
SerialLinkResponsePort & cpu_side_port
The response (CPU-side port) port on the other side of the serial_link.
SerialLinkRequestPort & mem_side_port
Request port on the other side of the serial_link.
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
EventFunctionWrapper sendEvent
Send event for the request queue.
SerialLinkResponsePort cpu_side_port
Response port of the serial_link.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID)
Get a port with a given name and index.
void recvRespRetry()
When receiving a retry request from the peer port, pass it to the serial_link.
DeferredPacket(PacketPtr _pkt, Tick _tick)
AddrRangeList getAddrRanges() const
When receiving a address range request the peer port, pass it to the serial_link.
SerialLink & serial_link
The serial_link to which this port belongs.
bool trySatisfyFunctional(PacketPtr pkt)
Check a functional request against the packets in our request queue.
Ports are used to interface objects to each other.
void recvReqRetry()
When receiving a retry request from the peer port, pass it to the serial_link.
SerialLink(SerialLinkParams *p)
bool reqQueueFull() const
Is this side blocked from accepting new request packets.
unsigned int respQueueLimit
Max queue size for reserved responses.
bool respQueueFull() const
Is this side blocked from accepting new response packets.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
bool retryReq
If we should send a retry when space becomes available.
std::deque< DeferredPacket > transmitList
Response packet queue.
SerialLink & serial_link
The serial_link to which this port belongs.
void retryStalledReq()
Retry any stalled request that we have failed to accept at an earlier point in time.
SerialLink is a simple variation of the Bridge class, with the ability to account for the latency of ...
bool recvTimingResp(PacketPtr pkt)
When receiving a timing request from the peer port, pass it to the serial_link.
unsigned int outstandingResponses
Counter to track the outstanding responses.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
A deferred packet stores a packet along with its scheduled transmission time.
Cycles is a wrapper class for representing cycle counts, i.e.
Port on the side that forwards requests and receives responses.
SerialLinkRequestPort(const std::string &_name, SerialLink &_serial_link, SerialLinkResponsePort &_cpu_side_port, Cycles _delay, int _req_limit)
Constructor for the SerialLinkRequestPort.
const AddrRangeList ranges
Address ranges to pass through the serial_link.
The port on the side that receives requests and sends responses.
void trySendTiming()
Handle send event, scheduled when the packet at the head of the outbound queue is ready to transmit (...
std::deque< DeferredPacket > transmitList
Request packet queue.
unsigned num_lanes
Number of parallel lanes in this serial link.
const Cycles delay
Minimum delay though this serial_link.
SerialLinkRequestPort mem_side_port
Request port of the serial_link.
Generated on Wed Sep 30 2020 14:02:14 for gem5 by doxygen 1.8.17