| // Verilated -*- C++ -*- | |
| // DESCRIPTION: Verilator output: main() simulation loop, created with --main | |
| //====================== | |
| int main(int argc, char** argv, char**) { | |
| // Setup context, defaults, and parse command line | |
| Verilated::debug(0); | |
| const std::unique_ptr<VerilatedContext> contextp{new VerilatedContext}; | |
| contextp->traceEverOn(true); | |
| contextp->threads(1); | |
| contextp->commandArgs(argc, argv); | |
| // Construct the Verilated model, from Vtop.h generated from Verilating | |
| const std::unique_ptr<Vsim> topp{new Vsim{contextp.get(), ""}}; | |
| // Simulate until $finish | |
| while (VL_LIKELY(!contextp->gotFinish())) { | |
| // Evaluate model | |
| topp->eval(); | |
| // Advance time | |
| if (!topp->eventsPending()) break; | |
| contextp->time(topp->nextTimeSlot()); | |
| } | |
| if (VL_LIKELY(!contextp->gotFinish())) { | |
| VL_DEBUG_IF(VL_PRINTF("+ Exiting without $finish; no events left\n");); | |
| } | |
| // Execute 'final' processes | |
| topp->final(); | |
| // Print statistical summary report | |
| contextp->statsPrintSummary(); | |
| return 0; | |
| } | |