| #include "Vpicorv32_wrapper.h" |
| #include "verilated_vcd_c.h" |
| |
| int main(int argc, char **argv, char **env) |
| { |
| printf("Built with %s %s.\n", Verilated::productName(), Verilated::productVersion()); |
| printf("Recommended: Verilator 4.0 or later.\n"); |
| |
| Verilated::commandArgs(argc, argv); |
| Vpicorv32_wrapper* top = new Vpicorv32_wrapper; |
| |
| // Tracing (vcd) |
| VerilatedVcdC* tfp = NULL; |
| const char* flag_vcd = Verilated::commandArgsPlusMatch("vcd"); |
| if (flag_vcd && 0==strcmp(flag_vcd, "+vcd")) { |
| Verilated::traceEverOn(true); |
| tfp = new VerilatedVcdC; |
| top->trace (tfp, 99); |
| tfp->open("testbench.vcd"); |
| } |
| |
| // Tracing (data bus, see showtrace.py) |
| FILE *trace_fd = NULL; |
| const char* flag_trace = Verilated::commandArgsPlusMatch("trace"); |
| if (flag_trace && 0==strcmp(flag_trace, "+trace")) { |
| trace_fd = fopen("testbench.trace", "w"); |
| } |
| |
| top->clk = 0; |
| int t = 0; |
| while (!Verilated::gotFinish()) { |
| if (t > 200) |
| top->resetn = 1; |
| top->clk = !top->clk; |
| top->eval(); |
| if (tfp) tfp->dump (t); |
| if (trace_fd && top->clk && top->trace_valid) fprintf(trace_fd, "%9.9lx\n", top->trace_data); |
| t += 5; |
| } |
| if (tfp) tfp->close(); |
| delete top; |
| exit(0); |
| } |
| |