Add plusargs support to testbench.cc
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
This commit is contained in:
		
							parent
							
								
									9129d18bf5
								
							
						
					
					
						commit
						e03c43ea43
					
				
							
								
								
									
										26
									
								
								testbench.cc
								
								
								
								
							
							
						
						
									
										26
									
								
								testbench.cc
								
								
								
								
							| 
						 | 
					@ -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)
 | 
				
			||||||
	top->trace (tfp, 99);
 | 
						VerilatedVcdC* tfp = NULL;
 | 
				
			||||||
        tfp->open ("testbench.vcd");
 | 
						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;
 | 
						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);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue