Add plusargs support to testbench.cc

Signed-off-by: Claire Wolf <claire@symbioticeda.com>
This commit is contained in:
Larry Doolittle 2020-04-23 18:00:16 +02:00 committed by Claire Wolf
parent 9129d18bf5
commit e03c43ea43
1 changed files with 20 additions and 6 deletions

View File

@ -7,12 +7,25 @@ int main(int argc, char **argv, char **env)
printf("Recommended: Verilator 4.0 or later.\n"); printf("Recommended: Verilator 4.0 or later.\n");
Verilated::commandArgs(argc, argv); Verilated::commandArgs(argc, argv);
Verilated::traceEverOn(true);
Vpicorv32_wrapper* top = new Vpicorv32_wrapper; Vpicorv32_wrapper* top = new Vpicorv32_wrapper;
VerilatedVcdC* tfp = new VerilatedVcdC; // 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); top->trace (tfp, 99);
tfp->open ("testbench.vcd"); 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; top->clk = 0;
int t = 0; int t = 0;
while (!Verilated::gotFinish()) { while (!Verilated::gotFinish()) {
@ -20,10 +33,11 @@ int main(int argc, char **argv, char **env)
top->resetn = 1; top->resetn = 1;
top->clk = !top->clk; top->clk = !top->clk;
top->eval(); top->eval();
tfp->dump (t); if (tfp) tfp->dump (t);
if (trace_fd && top->clk && top->trace_valid) fprintf(trace_fd, "%9.9lx\n", top->trace_data);
t += 5; t += 5;
} }
tfp->close(); if (tfp) tfp->close();
delete top; delete top;
exit(0); exit(0);
} }