47 #include "debug/AddrRanges.hh"
65 return delay + receive_delay;
86 panic(
"Pio port of %s not connected to anything!",
name());
93 if (if_name ==
"pio") {
100 :
PioDevice(p), pioAddr(p->pio_addr), pioSize(size),
101 pioDelay(p->pio_latency)
AddrRange RangeSize(Addr start, Addr size)
const std::string & name()
virtual Tick read(PacketPtr pkt)=0
Pure virtual function that the device must implement.
virtual BaseSlavePort & getSlavePort(const std::string &if_name, PortID idx=InvalidPortID)
Get a slave port with a given name and index.
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the master port.
A BaseSlavePort is a protocol-agnostic slave port, responsible only for the structural connection to ...
BasicPioDevice(const Params *p, Addr size)
PioPort pioPort
The pioPort that handles the requests for us and provides us requests that it sees.
The simple timing port uses a queued port to implement recvFunctional and recvTimingReq through recvA...
virtual Tick write(PacketPtr pkt)=0
Pure virtual function that the device must implement.
Addr pioSize
Size that the device's address range.
uint32_t headerDelay
The extra delay from seeing the packet until the header is transmitted.
uint64_t Tick
Tick count type.
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
virtual AddrRangeList getAddrRanges() const =0
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
This device is the base class which all devices senstive to an address range inherit from...
PioDevice * device
The device that this port serves.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint32_t payloadDelay
The extra pipelining delay from seeing the packet until the end of payload is transmitted by the comp...
virtual BaseSlavePort & getSlavePort(const std::string &if_name, PortID idx=InvalidPortID)
Get a slave port with a given name and index.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
void sendRangeChange() const
Called by the owner to send a range change.
virtual AddrRangeList getAddrRanges() const
Determine the address ranges that this device responds to.
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
virtual const std::string name() const
The MemObject class extends the ClockedObject with accessor functions to get its master and slave por...
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
PioDevice(const Params *p)
Addr pioAddr
Address that the device listens to.