From 3aca2967a35d05dac3d9121a882d608b10a588bb Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Sun, 16 Oct 2022 16:01:47 -0600 Subject: Implement simulation testbenches --- tb/avalon.impl.hpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tb/avalon.impl.hpp') diff --git a/tb/avalon.impl.hpp b/tb/avalon.impl.hpp index 60f36a4..6864c6d 100644 --- a/tb/avalon.impl.hpp +++ b/tb/avalon.impl.hpp @@ -84,6 +84,32 @@ namespace taller::avalon plat.avl_waitrequest = !active->write(pos, avl_writedata, avl_byteenable); } } + + template + std::uint32_t interconnect::dump(std::uint32_t addr) + { + std::uint32_t avl_address = addr << 2; + + for(auto &binding : devices) + { + if((avl_address & binding.mask) == binding.base) + { + auto &dev = binding.dev; + auto pos = (avl_address & ~dev.address_mask()) >> 2; + + std::uint32_t readdata; + while(!dev.read(pos, readdata)) + { + continue; + } + + return readdata; + } + } + + fprintf(stderr, "[avl] attempt to dump memory hole at 0x%08x\n", addr); + assert(false); + } } #endif -- cgit v1.2.3