17#ifndef __ROGUE_INTERFACES_MEMORY_SLAVE_H__
18#define __ROGUE_INTERFACES_MEMORY_SLAVE_H__
33 #include <boost/python.hpp>
56 static uint32_t classIdx_;
59 static std::mutex classMtx_;
65 typedef std::map<uint32_t, std::shared_ptr<rogue::interfaces::memory::Transaction> > TransactionMap;
68 TransactionMap tranMap_;
101 static std::shared_ptr<rogue::interfaces::memory::Slave>
create(uint32_t
min, uint32_t
max);
149 void addTransaction(std::shared_ptr<rogue::interfaces::memory::Transaction> transaction);
166 std::shared_ptr<rogue::interfaces::memory::Transaction>
getTransaction(uint32_t index);
284 virtual void doTransaction(std::shared_ptr<rogue::interfaces::memory::Transaction> transaction);
305 std::shared_ptr<rogue::interfaces::memory::Master>&
operator<<(
306 std::shared_ptr<rogue::interfaces::memory::Master>& other);
310typedef std::shared_ptr<rogue::interfaces::memory::Slave>
SlavePtr;
316 public boost::python::wrapper<rogue::interfaces::memory::Slave> {
387 void doTransaction(std::shared_ptr<rogue::interfaces::memory::Transaction> transaction);
396 void defDoTransaction(std::shared_ptr<rogue::interfaces::memory::Transaction> transaction);
399typedef std::shared_ptr<rogue::interfaces::memory::SlaveWrap>
SlaveWrapPtr;
Typed shared-from-this helper for Rogue classes.
uint32_t defDoMaxAccess()
Calls the base-class doMaxAccess() implementation.
uint32_t doMaxAccess()
Returns maximum transaction access size.
uint64_t defDoAddress()
Calls the base-class doAddress() implementation.
uint32_t defDoMinAccess()
Calls the base-class doMinAccess() implementation.
void defDoTransaction(std::shared_ptr< rogue::interfaces::memory::Transaction > transaction)
Calls the base-class doTransaction() implementation.
uint64_t doAddress()
Returns base address contribution for this slave.
void doTransaction(std::shared_ptr< rogue::interfaces::memory::Transaction > transaction)
Services a transaction request from an attached master.
uint32_t doMinAccess()
Returns minimum transaction access size.
virtual std::string doSlaveName()
Services SlaveName request from a master.
void setName(std::string name)
Sets slave name.
std::string name()
Returns slave name.
virtual uint64_t doAddress()
Services getAddress request from an attached master.
virtual uint32_t doMaxAccess()
Services getMaxAccess request from an attached master.
virtual uint32_t doMinAccess()
Services getMinAccess request from an attached master.
std::shared_ptr< rogue::interfaces::memory::Master > & operator<<(std::shared_ptr< rogue::interfaces::memory::Master > &other)
Connects this slave to a master via chaining operator.
uint32_t id()
Returns unique slave ID.
virtual uint32_t doSlaveId()
Services SlaveId request from a master.
virtual void doTransaction(std::shared_ptr< rogue::interfaces::memory::Transaction > transaction)
Services a transaction request from an attached master.
virtual ~Slave()
Destroys the memory slave instance.
uint32_t max()
Returns configured maximum transaction size.
static void setup_python()
Registers this type with Python bindings.
static std::shared_ptr< rogue::interfaces::memory::Slave > create(uint32_t min, uint32_t max)
Creates a memory slave.
virtual void stop()
Stops the memory slave interface.
void addTransaction(std::shared_ptr< rogue::interfaces::memory::Transaction > transaction)
Adds a transaction to the internal tracking map.
void lshiftPy(boost::python::object p)
Supports << operator usage from Python.
std::shared_ptr< rogue::interfaces::memory::Transaction > getTransaction(uint32_t index)
Gets a transaction from the internal tracking map.
uint32_t min()
Returns configured minimum transaction size.
std::shared_ptr< rogue::interfaces::memory::Slave > SlavePtr
Shared pointer alias for Slave.
std::shared_ptr< rogue::interfaces::memory::SlaveWrap > SlaveWrapPtr