From 5869b8e201390b534b06b8960ab32351e51602c0 Mon Sep 17 00:00:00 2001
From: ducky
Date: Sat, 16 Jan 2016 16:31:16 -0800
Subject: Import a logging library so we don't reinvent the wheel and have
implicits flying around everywhere
---
src/main/resources/logback.xml | 10 ++++++
src/main/scala/firrtl/DebugUtils.scala | 62 ++--------------------------------
src/main/scala/firrtl/Driver.scala | 55 ++++++++++++++----------------
src/main/scala/firrtl/Passes.scala | 45 ++++++++++++------------
src/main/scala/firrtl/Primops.scala | 10 +++---
5 files changed, 67 insertions(+), 115 deletions(-)
create mode 100644 src/main/resources/logback.xml
(limited to 'src')
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 00000000..a6bab96e
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,10 @@
+
+
+
+ [%-4level] %msg%n
+
+
+
+
+
+
diff --git a/src/main/scala/firrtl/DebugUtils.scala b/src/main/scala/firrtl/DebugUtils.scala
index e802d935..5d58fba6 100644
--- a/src/main/scala/firrtl/DebugUtils.scala
+++ b/src/main/scala/firrtl/DebugUtils.scala
@@ -2,7 +2,6 @@
package firrtl
-import java.io.PrintWriter
import Utils._
private object DebugUtils {
@@ -63,67 +62,10 @@ private object DebugUtils {
a.ports.foreach(_.preOrderTraversal(f))
a.stmt.preOrderTraversal(f)
}
- case a: Circuit => a.modules.foreach(_.preOrderTraversal(f))
+ case a: Circuit => a.modules.foreach(_.preOrderTraversal(f))
//case _ => throw new Exception(s"Unsupported FIRRTL node ${ast.getClass.getSimpleName}!")
- case _ =>
+ case _ =>
}
}
}
-
-
- /** Private class for recording and organizing debug information */
- class Logger private (
- writer: PrintWriter,
- printMode: Symbol,
- printVars: List[Symbol]){
-
- // Legal printModes: 'none, 'error, 'warn, 'info, 'debug, 'trace
- require(List('none, 'error, 'warn, 'info, 'debug, 'trace) contains printMode)
- val errorEnable = List('error, 'warn, 'info, 'debug, 'trace) contains printMode
- val warnEnable = List('warn, 'info, 'debug, 'trace) contains printMode
- val infoEnable = List('info, 'debug, 'trace) contains printMode
- val debugEnable = List('debug, 'trace) contains printMode
- val traceEnable = List('trace) contains printMode
- val circuitEnable = printVars contains 'circuit
- val debugFlags = printVars.map(_ -> true).toMap.withDefaultValue(false)
-
- def println(message: => String){
- writer.println(message)
- }
- def error(message: => String){
- if (errorEnable) writer.println(message.split("\n").map("[error] " + _).mkString("\n"))
- }
- def warn(message: => String){
- if (warnEnable) writer.println(message.split("\n").map("[warn] " + _).mkString("\n"))
- }
- def info(message: => String){
- if (infoEnable) writer.println(message.split("\n").map("[info] " + _).mkString("\n"))
- }
- def debug(message: => String){
- if (debugEnable) writer.println(message.split("\n").map("[debug] " + _).mkString("\n"))
- }
- def trace(message: => String){
- if (traceEnable) writer.println(message.split("\n").map("[trace] " + _).mkString("\n"))
- }
- def printlnDebug(circuit: Circuit){
- if (circuitEnable) this.println(circuit.serialize(debugFlags))
- }
- // Used if not autoflushing
- def flush() = writer.flush()
-
- }
- /** Factory object for logger
- *
- * Logger records and organizes debug information
- */
- object Logger
- {
- def apply(writer: PrintWriter): Logger =
- new Logger(writer, 'warn, List())
- def apply(writer: PrintWriter, printMode: Symbol): Logger =
- new Logger(writer, printMode, List())
- def apply(writer: PrintWriter, printMode: Symbol, printVars: List[Symbol]): Logger =
- new Logger(writer, printMode, printVars)
- def apply(): Logger = new Logger(null, 'none, List())
- }
}
diff --git a/src/main/scala/firrtl/Driver.scala b/src/main/scala/firrtl/Driver.scala
index 82eb3962..700ee936 100644
--- a/src/main/scala/firrtl/Driver.scala
+++ b/src/main/scala/firrtl/Driver.scala
@@ -1,30 +1,33 @@
package firrtl
import java.io._
-import scala.sys.process._
import java.nio.file.{Paths, Files}
+
import scala.io.Source
+import scala.sys.process._
+
+import com.typesafe.scalalogging.LazyLogging
+
import Utils._
import DebugUtils._
import Passes._
-
trait DriverPass {
- def run(input: String, output: String)(implicit logger: Logger) : Unit
+ def run(input: String, output: String) : Unit
}
-case class StanzaPass(val passes : Seq[String]) extends DriverPass {
- def run(input : String, output : String)(implicit logger : Logger) : Unit = {
+case class StanzaPass(val passes : Seq[String]) extends DriverPass with LazyLogging {
+ def run(input : String, output : String): Unit = {
val cmd = Seq("firrtl-stanza", "-i", input, "-o", output, "-b", "firrtl") ++ passes.flatMap(x=>Seq("-x", x))
- println(cmd.mkString(" "))
+ logger.info(cmd.mkString(" "))
val ret = cmd.!!
- println(ret)
+ logger.info(ret)
}
}
-case class ScalaPass(val func : Circuit => Circuit) extends DriverPass {
- def run(input : String, output : String)(implicit logger : Logger) : Unit = {
+case class ScalaPass(val func : Circuit => Circuit) extends DriverPass with LazyLogging {
+ def run(input : String, output : String): Unit = {
var ast = Parser.parse(input, Source.fromFile(input).getLines)
val newast = func(ast)
- println("Writing to " + output)
+ logger.info("Writing to " + output)
val writer = new PrintWriter(new File(output))
writer.write(newast.serialize())
writer.close()
@@ -53,8 +56,7 @@ object DriverPasses {
}
}
-object Driver
-{
+object Driver extends LazyLogging {
private val usage = """
Usage: java -cp utils/bin/firrtl.jar firrtl.Driver [options] -i -o