blob: 276ac50a078036dd92d5b23d6e6aa9fb49726c8f [file] [log] [blame]
/*
* fwrisc_fpga_tests.h
*
* Created on: Nov 21, 2018
* Author: ballance
*/
#ifndef INCLUDED_FWRISC_FPGA_TESTS_H
#define INCLUDED_FWRISC_FPGA_TESTS_H
#include "Vfwrisc_fpga_tb_hdl.h"
#include "fwrisc_tracer_bfm.h"
#include "GoogletestHdl.h"
#include <stack>
#include <set>
#include <string>
#include <functional>
#include "ElfSymtabReader.h"
class fwrisc_fpga_tests : public ::testing::Test, public virtual fwrisc_tracer_bfm_rsp_if {
public:
fwrisc_fpga_tests();
virtual ~fwrisc_fpga_tests();
virtual void SetUp();
virtual void regwrite(uint32_t raddr, uint32_t rdata);
virtual void exec(uint32_t addr, uint32_t instr);
virtual void memwrite(uint32_t addr, uint8_t mask, uint32_t data);
virtual void led(uint8_t led0, uint8_t led1);
void filter_func(const std::string &func) { m_filter_funcs.insert(func); }
virtual void enter_func(uint32_t addr, const std::string &name);
virtual void leave_func(uint32_t addr, const std::string &name);
public:
static fwrisc_fpga_tests *test;
protected:
ElfSymtabReader m_symtab;
bool m_trace_funcs;
bool m_trace_instr;
bool m_trace_writes;
int32_t m_max_instr;
uint32_t m_instr_count;
std::stack<std::pair<Elf32_Addr,Elf32_Addr>> m_call_stack;
std::set<std::string> m_filter_funcs;
std::string m_indent;
std::function<void (uint8_t,uint8_t)> m_led;
};
#endif /* INCLUDED_FWRISC_FPGA_TESTS_H */