From 7441d8c5c556f2a8c2feb46d76ef051841ef71de Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Tue, 2 Feb 2016 23:31:38 -0800 Subject: Add some Chisel2 driver emulation methods I don't want to have to maintain a big rocket-chip fork to have it run through Chisel3, so instead I'm adding back some of the driver routines that existed in Chisel2. --- src/main/scala/Chisel/Driver.scala | 3 +++ src/main/scala/Chisel/FileSystemUtilities.scala | 10 ++++++++++ src/main/scala/Chisel/Main.scala | 8 ++++++++ src/main/scala/Chisel/throwException.scala | 11 +++++++++++ 4 files changed, 32 insertions(+) create mode 100644 src/main/scala/Chisel/FileSystemUtilities.scala create mode 100644 src/main/scala/Chisel/throwException.scala (limited to 'src') diff --git a/src/main/scala/Chisel/Driver.scala b/src/main/scala/Chisel/Driver.scala index 6a5e2095..a6f61f69 100644 --- a/src/main/scala/Chisel/Driver.scala +++ b/src/main/scala/Chisel/Driver.scala @@ -113,4 +113,7 @@ object Driver extends BackendCompilationUtilities { w.close() f } + + // FIXME: This is hard coded and should come in from a command-line argument + def targetDir(): String = { "vsim/generated-src" } } diff --git a/src/main/scala/Chisel/FileSystemUtilities.scala b/src/main/scala/Chisel/FileSystemUtilities.scala new file mode 100644 index 00000000..efb7178d --- /dev/null +++ b/src/main/scala/Chisel/FileSystemUtilities.scala @@ -0,0 +1,10 @@ +// See LICENSE for details + +package Chisel + +@deprecated("FileSystemUtilities doesn't exist in chisel3", "3.0.0") +trait FileSystemUtilities { + def createOutputFile(name: String) = { + new java.io.FileWriter(Driver.targetDir + "/" + name) + } +} diff --git a/src/main/scala/Chisel/Main.scala b/src/main/scala/Chisel/Main.scala index 23abc763..750e8712 100644 --- a/src/main/scala/Chisel/Main.scala +++ b/src/main/scala/Chisel/Main.scala @@ -2,7 +2,15 @@ package Chisel +import java.io.File + @deprecated("chiselMain doesn't exist in Chisel3", "3.0") object chiselMain { def apply[T <: Module](args: Array[String], gen: () => T) = Predef.assert(false) + + def run[T <: Module] (args: Array[String], gen: () => T) = { + def circuit = Driver.elaborate(gen) + def output_file = new File(Driver.targetDir + "/" + circuit.name + ".fir") + Driver.dumpFirrtl(circuit, Option(output_file)) + } } diff --git a/src/main/scala/Chisel/throwException.scala b/src/main/scala/Chisel/throwException.scala new file mode 100644 index 00000000..998b2cd6 --- /dev/null +++ b/src/main/scala/Chisel/throwException.scala @@ -0,0 +1,11 @@ +// See LICENSE for details + +package Chisel + +@deprecated("throwException doesn't exist in Chisel3", "3.0.0") +object throwException { + def apply(s: String, t: Throwable = null) = { + val xcpt = new Exception(s, t) + throw xcpt + } +} -- cgit v1.2.3