rogue
Loading...
Searching...
No Matches
Emulate.h
Go to the documentation of this file.
1
18#ifndef __ROGUE_INTERFACES_MEMORY_EMULATOR_H__
19#define __ROGUE_INTERFACES_MEMORY_EMULATOR_H__
20#include "rogue/Directives.h"
21
22#include <stdint.h>
23
24#include <memory>
25#include <thread>
26#include <vector>
27
29
30#ifndef NO_PYTHON
31 #include <boost/python.hpp>
32#endif
33
34#define EMULATE_MAP_TYPE std::map<uint64_t, uint8_t*>
35
36namespace rogue {
37namespace interfaces {
38namespace memory {
39
47class Emulate : public Slave {
48 // Map to store 4K address space chunks
49 EMULATE_MAP_TYPE memMap_;
50
51 // Lock
52 std::mutex mtx_;
53
54 // Total allocated memory
55 uint32_t totAlloc_;
56 uint32_t totSize_;
57
61 std::shared_ptr<rogue::Logging> log_;
62
63 public:
77 static std::shared_ptr<rogue::interfaces::memory::Emulate> create(uint32_t min, uint32_t max);
78
82 static void setup_python();
83
94 Emulate(uint32_t min, uint32_t max);
95
99 ~Emulate();
100
106 void doTransaction(std::shared_ptr<rogue::interfaces::memory::Transaction> transaction);
107};
108
112typedef std::shared_ptr<rogue::interfaces::memory::Emulate> EmulatePtr;
113} // namespace memory
114} // namespace interfaces
115} // namespace rogue
116
117#endif
#define EMULATE_MAP_TYPE
Definition Emulate.h:34
Memory interface emulator device.
Definition Emulate.h:47
static std::shared_ptr< rogue::interfaces::memory::Emulate > create(uint32_t min, uint32_t max)
Creates an emulator device.
Definition Emulate.cpp:43
void doTransaction(std::shared_ptr< rogue::interfaces::memory::Transaction > transaction)
Handles an incoming memory transaction.
Definition Emulate.cpp:65
static void setup_python()
Registers this type with Python bindings.
Definition Emulate.cpp:115
~Emulate()
Destroys the emulator device.
Definition Emulate.cpp:56
Memory slave device.
Definition Slave.h:54
uint32_t max()
Returns configured maximum transaction size.
Definition Slave.cpp:116
uint32_t min()
Returns configured minimum transaction size.
Definition Slave.cpp:111
std::shared_ptr< rogue::interfaces::memory::Emulate > EmulatePtr
Shared pointer alias for Emulate.
Definition Emulate.h:112