summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/chisel3/compatibility.scala22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/main/scala/chisel3/compatibility.scala b/src/main/scala/chisel3/compatibility.scala
index 0c4c18a9..476241b0 100644
--- a/src/main/scala/chisel3/compatibility.scala
+++ b/src/main/scala/chisel3/compatibility.scala
@@ -6,6 +6,7 @@
import chisel3._ // required for implicit conversions.
import chisel3.experimental.chiselName
import chisel3.util.random.FibonacciLFSR
+import chisel3.stage.{ChiselCircuitAnnotation, ChiselOutputFileAnnotation, ChiselStage, phases}
package object Chisel { // scalastyle:ignore package.object.name number.of.types number.of.methods
import chisel3.internal.firrtl.Width
@@ -395,21 +396,32 @@ package object Chisel { // scalastyle:ignore package.object.name number.of.t
implicit class fromIntToWidth(x: Int) extends chisel3.fromIntToWidth(x)
type BackendCompilationUtilities = firrtl.util.BackendCompilationUtilities
- val Driver = chisel3.Driver
val ImplicitConversions = chisel3.util.ImplicitConversions
// Deprecated as of Chisel3
object chiselMain {
import java.io.File
+ private var target_dir: Option[String] = None
+
+ private def parseArgs(args: Array[String]): Unit = {
+ for (i <- 0 until args.size) {
+ if (args(i) == "--targetDir") {
+ target_dir = Some(args(i + 1))
+ }
+ }
+ }
+
def apply[T <: Module](args: Array[String], gen: () => T): Unit =
Predef.assert(false, "No more chiselMain in Chisel3")
def run[T <: Module] (args: Array[String], gen: () => T): Unit = {
- val circuit = Driver.elaborate(gen)
- Driver.parseArgs(args)
- val output_file = new File(Driver.targetDir + "/" + circuit.name + ".fir")
- Driver.dumpFirrtl(circuit, Option(output_file))
+ val circuit = ChiselStage.elaborate(gen())
+ parseArgs(args)
+ val output_file = new File(target_dir.getOrElse(new File(".").getCanonicalPath) + "/" + circuit.name + ".fir")
+
+ (new phases.Emitter).transform(Seq(ChiselCircuitAnnotation(circuit),
+ ChiselOutputFileAnnotation(output_file.toString)))
}
}