aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala
diff options
context:
space:
mode:
authorJiuyang Liu2020-11-10 00:12:06 +0000
committerGitHub2020-11-10 00:12:06 +0000
commit92af63c599fc480f6480ee22f23763f54881085f (patch)
treeb4fde701d44a0d5a0d44d3a05489a61481762a7f /src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala
parentfe95544d573fff9bb114b3302986aa746e1f4763 (diff)
Refactor emiter (#1879)
* split big Emitter to submodules. * fix all deprecated warning. Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Diffstat (limited to 'src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala')
-rw-r--r--src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala b/src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala
new file mode 100644
index 00000000..2d8e3089
--- /dev/null
+++ b/src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala
@@ -0,0 +1,31 @@
+package firrtl
+
+import firrtl.ir.{Expression, Info, StringLit}
+
+import scala.collection.mutable
+import scala.collection.mutable.ArrayBuffer
+
+class SystemVerilogEmitter extends VerilogEmitter {
+ override val outputSuffix: String = ".sv"
+
+ override def prerequisites = firrtl.stage.Forms.LowFormOptimized
+
+ override def addFormalStatement(
+ formals: mutable.Map[Expression, ArrayBuffer[Seq[Any]]],
+ clk: Expression,
+ en: Expression,
+ stmt: Seq[Any],
+ info: Info,
+ msg: StringLit
+ ): Unit = {
+ val lines = formals.getOrElseUpdate(clk, ArrayBuffer[Seq[Any]]())
+ lines += Seq("// ", msg.serialize)
+ lines += Seq("if (", en, ") begin")
+ lines += Seq(tab, stmt, info)
+ lines += Seq("end")
+ }
+
+ override def execute(state: CircuitState): CircuitState = {
+ super.execute(state)
+ }
+}