diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-10-02 16:47:23 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-10-02 23:29:46 -0600 |
| commit | 2c6998db4ad3b663fa32384739bc11930be5afa2 (patch) | |
| tree | bf8e324a24adb67d9ad4dfcfc013b67ad75b9eed /tb/sim_slave.hpp | |
| parent | fbe3ab39675d338eb6d5388b7deacf98a3a8ae2d (diff) | |
tb: implement verilated slaves
Diffstat (limited to 'tb/sim_slave.hpp')
| -rw-r--r-- | tb/sim_slave.hpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tb/sim_slave.hpp b/tb/sim_slave.hpp new file mode 100644 index 0000000..cdcea78 --- /dev/null +++ b/tb/sim_slave.hpp @@ -0,0 +1,36 @@ +#ifndef TALLER_SIM_SLAVE_HPP +#define TALLER_SIM_SLAVE_HPP + +#include <cstdint> + +#include "Vconspiracion_sim_slave.h" + +#include "avalon.hpp" + +namespace taller::avalon +{ + using verilated_slave = Vconspiracion_sim_slave; + + class sim_slave : public slave + { + public: + sim_slave(verilated_slave &dev, std::uint32_t base, std::uint32_t size); + + virtual void tick() noexcept final override; + virtual void tick_falling() noexcept final override; + + virtual bool read(std::uint32_t addr, std::uint32_t &data) final override; + + virtual bool write + ( + std::uint32_t addr, std::uint32_t data, unsigned byte_enable = 0b1111 + ) final override; + + private: + verilated_slave &dev; + bool latch; + std::uint32_t latch_readdata; + }; +} + +#endif |
