From e03c43ea4392c2f87d7ebf23656a60ed8cda185b Mon Sep 17 00:00:00 2001 From: Larry Doolittle Date: Thu, 23 Apr 2020 18:00:16 +0200 Subject: Add plusargs support to testbench.cc Signed-off-by: Claire Wolf --- testbench.cc | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/testbench.cc b/testbench.cc index cd835df..61c4366 100644 --- a/testbench.cc +++ b/testbench.cc @@ -7,12 +7,25 @@ int main(int argc, char **argv, char **env) printf("Recommended: Verilator 4.0 or later.\n"); Verilated::commandArgs(argc, argv); - Verilated::traceEverOn(true); Vpicorv32_wrapper* top = new Vpicorv32_wrapper; - VerilatedVcdC* tfp = new VerilatedVcdC; - top->trace (tfp, 99); - tfp->open ("testbench.vcd"); + // 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()) { @@ -20,10 +33,11 @@ int main(int argc, char **argv, char **env) top->resetn = 1; top->clk = !top->clk; 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; } - tfp->close(); + if (tfp) tfp->close(); delete top; exit(0); } -- cgit