#include "components.hpp" #include "config.hpp" #include "vl_wrapper.hpp" #include using VlModule = VlModuleInterfaceCommon; using Registers = _RegistersVPI; extern "C" { void *pmem_get() { static auto pmem = new Memory(config.memory_file, config.memory_file_binary); return pmem; } int pmem_read(int raddr) { void *pmem = pmem_get(); auto mem = static_cast *>(pmem); return mem->read(raddr); } void pmem_write(int waddr, int wdata, char wmask) { void *pmem = pmem_get(); auto mem = static_cast *>(pmem); return mem->write((std::size_t)waddr, wdata, wmask); } } int main(int argc, char **argv, char **env) { config.cli_parse(argc, argv); auto top = std::make_shared(config.do_trace, config.wavefile); Registers regs("TOP.Flow.reg_0.regFile_"); top->reset_eval(10); for (int i = 0; i < config.max_sim_time; i++) { if (top->is_posedge()) { // Posedge regs.update(); regs.print_regs(); } top->eval(); } return 0; }