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