#include #include #include "verilated.h" #include "verilated_vcd_c.h" #include "Vtop.h" void tick(int tickcount, Vtop *tb, VerilatedVcdC* tfp) { tb->eval(); if (tfp) tfp->dump(tickcount * 10 - 2); tb->i_clk = 1; tb->eval(); if (tfp) tfp->dump(tickcount * 10); tb->i_clk = 0; tb->eval(); if (tfp) { tfp->dump(tickcount * 10 + 5); tfp->flush(); } } int main(int argc, char **argv) { // Call commandArgs first! Verilated::commandArgs(argc, argv); // Instantiate our design Vtop *tb = new Vtop; Verilated::traceEverOn(true); VerilatedVcdC* tfp = new VerilatedVcdC; tb->trace(tfp, 00); tfp->open("build/waveform.vcd"); tb->i_resetN = 1; tb->i_startN = 1; tb->i_stopN = 1; unsigned tickcount = 0; for (int k = 0; k < 2; k++) tick(++tickcount, tb, tfp); tb->i_resetN = 0; tick(++tickcount, tb, tfp); tb->i_resetN = 1; for (int k = 0; k < 3; k++) tick(++tickcount, tb, tfp); for (int i = 0; i < 1000; i++) { tb->i_startN = 0; tick(++tickcount, tb, tfp); tb->i_startN = 1; tick(++tickcount, tb, tfp); } for (int k = 0; k < 15; k++) tick(++tickcount, tb, tfp); tb->i_stopN = 0; tick(++tickcount, tb, tfp); tb->i_stopN = 1; for (int k = 0; k < 3; k++) tick(++tickcount, tb, tfp); tb->i_resetN = 0; tick(++tickcount, tb, tfp); tb->i_resetN = 1; for (int k = 0; k < 3; k++) tick(++tickcount, tb, tfp); }