aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjackkoenig2016-01-28 18:04:20 -0800
committerjackkoenig2016-01-28 18:04:20 -0800
commit53cac5ce88100b6c50781e0ddaecada235e5fe27 (patch)
tree99ad0235dbafaa38401af314311ab90d5d19847b
parent86872a2888698656487e1201406a0786553d8480 (diff)
WIP Added support for printf to Scala FIRRTL
-rw-r--r--src/main/scala/firrtl/Utils.scala3
-rw-r--r--src/main/scala/firrtl/Visitor.scala2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Utils.scala b/src/main/scala/firrtl/Utils.scala
index 46253923..ca4153e7 100644
--- a/src/main/scala/firrtl/Utils.scala
+++ b/src/main/scala/firrtl/Utils.scala
@@ -173,7 +173,8 @@ object Utils {
}
case i: IsInvalid => s"${i.exp} is invalid"
case s: Stop => s"stop(${s.clk}, ${s.en}, ${s.ret})"
- case p: Print => s"printf(${p.clk}, ${p.en}, ${p.string}" + p.args.map(_.serialize).mkString(", ")
+ case p: Print => s"printf(${p.clk.serialize}, ${p.en.serialize}, ${p.string}" +
+ (if (p.args.nonEmpty) p.args.map(_.serialize).mkString(", ", ", ", "") else "") + ")"
case Empty => "skip"
}
ret + debug(stmt)
diff --git a/src/main/scala/firrtl/Visitor.scala b/src/main/scala/firrtl/Visitor.scala
index c9d34003..8cdb0110 100644
--- a/src/main/scala/firrtl/Visitor.scala
+++ b/src/main/scala/firrtl/Visitor.scala
@@ -135,6 +135,8 @@ class Visitor(val fullFilename: String) extends FIRRTLBaseVisitor[AST]
}
// TODO implement stop
// TODO implement printf
+ case "printf(" => Print(info, ctx.StringLit.getText, ctx.exp.drop(2).map(visitExp),
+ visitExp(ctx.exp(0)), visitExp(ctx.exp(1)))
case "skip" => Empty
// If we don't match on the first child, try the next one
case _ => {