#include #include #include #include #include #include const int MAX_SIM_TIME=100; int main(int argc, char **argv, char **env) { int sim_time = 0; Verilated::commandArgs(argc, argv); Vexample *top = new Vexample; Verilated::traceEverOn(true); VerilatedVcdC *m_trace = new VerilatedVcdC; #ifdef VERILATOR_TRACE top->trace(m_trace, 5); m_trace->open("waveform.vcd"); #endif for (sim_time = 0; sim_time < MAX_SIM_TIME; sim_time++) { CData sw = rand() & 0b11; top->sw = sw; top->eval(); printf("sw0 = %d, sw1 = %d, ledr = %d\n", sw & 0b1, sw >> 1, top->ledr); assert(top->ledr == ((sw >> 1) ^ (sw & 0b1)) ); #ifdef VERILATOR_TRACE m_trace->dump(sim_time); #endif } #ifdef VERILATOR_TRACE m_trace->close(); #endif delete top; exit(EXIT_SUCCESS); }