diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/util/BackendCompilationUtilities.scala | 2 | ||||
| -rw-r--r-- | src/test/resources/top.cpp | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/util/BackendCompilationUtilities.scala b/src/main/scala/firrtl/util/BackendCompilationUtilities.scala index c1ead8b9..502f02df 100644 --- a/src/main/scala/firrtl/util/BackendCompilationUtilities.scala +++ b/src/main/scala/firrtl/util/BackendCompilationUtilities.scala @@ -98,7 +98,7 @@ trait BackendCompilationUtilities { s"+define+PRINTF_COND=!$topModule.reset", s"+define+STOP_COND=!$topModule.reset", "-CFLAGS", - s"""-Wno-undefined-bool-conversion -O1 -DTOP_TYPE=V$dutFile -include V$dutFile.h""", + s"""-Wno-undefined-bool-conversion -O1 -DTOP_TYPE=V$dutFile -DVL_USER_FINISH -include V$dutFile.h""", "-Mdir", dir.toString, "--exe", cppHarness.toString) System.out.println(s"${command.mkString(" ")}") // scalastyle:ignore regex diff --git a/src/test/resources/top.cpp b/src/test/resources/top.cpp index 08ad42fa..ba27c917 100644 --- a/src/test/resources/top.cpp +++ b/src/test/resources/top.cpp @@ -7,6 +7,13 @@ # include <verilated_vcd_c.h> // Trace file format header #endif +// Override Verilator definition so first $finish ends simulation +// Note: VL_USER_FINISH needs to be defined when compiling Verilator code +void vl_finish(const char* filename, int linenum, const char* hier) { + Verilated::flushCall(); + exit(0); +} + using namespace std; //VGCDTester *top; @@ -61,6 +68,7 @@ int main(int argc, char** argv) { if (main_time >= timeout) { cout << "Assertion failed! Simulation terminated by timeout at time " << main_time << " (cycle " << main_time / 10 << ")"<< endl; + return -1; } else { cout << "Simulation completed at time " << main_time << " (cycle " << main_time / 10 << ")"<< endl; |
