diff options
| author | ducky | 2015-12-09 14:18:46 -0800 |
|---|---|---|
| committer | ducky | 2015-12-09 14:46:06 -0800 |
| commit | cd016b42a0c940f671bdd3c117b8f0ae3c4b30b5 (patch) | |
| tree | 4c54d1322e2464a0e5c2e25d03cb34b5f21e239f /src | |
| parent | 035a30d25cdd955af6385c1334826781b17d894c (diff) | |
Extend TesterDriver to optionally take in additional Verilog sources
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/Chisel/Driver.scala | 30 | ||||
| -rw-r--r-- | src/main/scala/Chisel/testers/TesterDriver.scala | 2 | ||||
| -rw-r--r-- | src/test/scala/chiselTests/Harness.scala | 2 |
3 files changed, 23 insertions, 11 deletions
diff --git a/src/main/scala/Chisel/Driver.scala b/src/main/scala/Chisel/Driver.scala index a31786d9..b57653c3 100644 --- a/src/main/scala/Chisel/Driver.scala +++ b/src/main/scala/Chisel/Driver.scala @@ -46,22 +46,34 @@ trait BackendCompilationUtilities { dir) } + /** Generates a Verilator invocation to convert Verilog sources to C++ + * simulation sources. + * + * @param prefix output class name + * @param dir output directory + * @oaran vDut .v file containing the top-level DUR + * @param vSources list of additional Verilog sources to compile + * @param cppHarness C++ testharness to compile/link against + * @param vH .h file to generate + */ def verilogToCpp( prefix: String, dir: File, vDut: File, + vSources: Seq[File], cppHarness: File, vH: File): ProcessBuilder = Seq("verilator", - "--cc", vDut.toString, - "--assert", - "--Wno-fatal", - "--trace", - "-O2", - "+define+TOP_TYPE=V" + prefix, - "-CFLAGS", s"""-Wno-undefined-bool-conversion -O2 -DTOP_TYPE=V$prefix -include ${vH.toString}""", - "-Mdir", dir.toString, - "--exe", cppHarness.toString) + "--cc", vDut.toString) ++ + vSources.map(file => Seq("-v", file.toString)).flatten ++ + Seq("--assert", + "--Wno-fatal", + "--trace", + "-O2", + "+define+TOP_TYPE=V" + prefix, + "-CFLAGS", s"""-Wno-undefined-bool-conversion -O2 -DTOP_TYPE=V$prefix -include ${vH.toString}""", + "-Mdir", dir.toString, + "--exe", cppHarness.toString) def cppToExe(prefix: String, dir: File): ProcessBuilder = Seq("make", "-C", dir.toString, "-j", "-f", s"V${prefix}.mk", s"V${prefix}") diff --git a/src/main/scala/Chisel/testers/TesterDriver.scala b/src/main/scala/Chisel/testers/TesterDriver.scala index d104782a..4c6134f0 100644 --- a/src/main/scala/Chisel/testers/TesterDriver.scala +++ b/src/main/scala/Chisel/testers/TesterDriver.scala @@ -29,7 +29,7 @@ object TesterDriver extends BackendCompilationUtilities with FileSystemUtilities // Use sys.Process to invoke a bunch of backend stuff, then run the resulting exe if (((new File(System.getProperty("user.dir") + "/src/main/resources/top.cpp") #> cppHarness) #&& firrtlToVerilog(prefix, dir) #&& - verilogToCpp(prefix, dir, vDut, cppHarness, vH) #&& + verilogToCpp(prefix, dir, vDut, Seq(), cppHarness, vH) #&& cppToExe(prefix, dir)).! == 0) { executeExpectingSuccess(prefix, dir) } else { diff --git a/src/test/scala/chiselTests/Harness.scala b/src/test/scala/chiselTests/Harness.scala index 31a219e4..5c2d29d4 100644 --- a/src/test/scala/chiselTests/Harness.scala +++ b/src/test/scala/chiselTests/Harness.scala @@ -54,7 +54,7 @@ int main(int argc, char **argv, char **env) { val vDut = make(fname) val vH = new File(path + "/V" + prefix + ".h") val cppHarness = makeCppHarness(fname) - verilogToCpp(target, dir, vDut, cppHarness, vH).! + verilogToCpp(target, dir, vDut, Seq(), cppHarness, vH).! cppToExe(prefix, dir).! prefix } |
