Files
kernels/driver/rtlsim/simulator.h
2020-06-03 06:22:49 -04:00

59 lines
852 B
C++

#pragma once
#include "Vvortex_afu_sim.h"
#include "Vvortex_afu_sim__Syms.h"
#include "verilated.h"
#ifdef VCD_OUTPUT
#include <verilated_vcd_c.h>
#endif
#include <VX_config.h>
#include "ram.h"
#include <ostream>
#include <vector>
#define ENABLE_DRAM_STALLS
#define DRAM_LATENCY 100
#define DRAM_RQ_SIZE 16
#define DRAM_STALLS_MODULO 16
typedef struct {
int cycles_left;
uint8_t *data;
unsigned tag;
} dram_req_t;
class Simulator {
public:
Simulator();
virtual ~Simulator();
void reset();
void step();
int mmio_read(uint64_t addr, uint64_t* value);
int mmio_write(uint64_t addr, uint64_t value);
private:
void eval();
void avs_driver();
void ccip_driver();
std::vector<dram_req_t> dram_rsp_vec_;
RAM ram_;
Vvortex_afu_sim *vortex_;
#ifdef VCD_OUTPUT
VerilatedVcdC *trace_;
#endif
};