aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/backends/verilog/SystemVerilogEmitter.scala
blob: 2d8e308991ed737475faf915c34647f5eb6c1748 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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)
  }
}