aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Emitter.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/Emitter.scala')
-rw-r--r--src/main/scala/firrtl/Emitter.scala35
1 files changed, 15 insertions, 20 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 12ef17c2..36734d81 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -16,7 +16,7 @@ import firrtl.WrappedExpression._
import Utils._
import MemPortUtils.{memPortField, memType}
import firrtl.options.{HasShellOptions, ShellOption, StageUtils, PhaseException, Unserializable}
-import firrtl.stage.RunFirrtlTransformAnnotation
+import firrtl.stage.{RunFirrtlTransformAnnotation, TransformManager}
// Datastructures
import scala.collection.mutable.ArrayBuffer
@@ -180,6 +180,11 @@ case class VRandom(width: BigInt) extends Expression {
class VerilogEmitter extends SeqTransform with Emitter {
def inputForm = LowForm
def outputForm = LowForm
+
+ override val prerequisites = firrtl.stage.Forms.LowFormOptimized
+
+ override val dependents = Seq.empty
+
val outputSuffix = ".v"
val tab = " "
def AND(e1: WrappedExpression, e2: WrappedExpression): Expression = {
@@ -973,19 +978,7 @@ class VerilogEmitter extends SeqTransform with Emitter {
}
/** Preamble for every emitted Verilog file */
- def transforms = Seq(
- new BlackBoxSourceHelper,
- new FixAddingNegativeLiterals,
- new ReplaceTruncatingArithmetic,
- new InlineBitExtractionsTransform,
- new InlineCastsTransform,
- new LegalizeClocksTransform,
- new FlattenRegUpdate,
- new DeadCodeElimination,
- passes.VerilogModulusCleanup,
- new VerilogRename,
- passes.VerilogPrep,
- new AddDescriptionNodes)
+ def transforms = new TransformManager(firrtl.stage.Forms.VerilogOptimized, prerequisites).flattenedTransformOrder
def emit(state: CircuitState, writer: Writer): Unit = {
val circuit = runTransforms(state).circuit
@@ -1033,16 +1026,18 @@ class VerilogEmitter extends SeqTransform with Emitter {
class MinimumVerilogEmitter extends VerilogEmitter with Emitter {
+ override val prerequisites = firrtl.stage.Forms.LowFormMinimumOptimized
- override def transforms = super.transforms.filter{
- case _: DeadCodeElimination => false
- case _ => true
- }
+ override def transforms = new TransformManager(firrtl.stage.Forms.VerilogMinimumOptimized, prerequisites)
+ .flattenedTransformOrder
}
class SystemVerilogEmitter extends VerilogEmitter {
- StageUtils.dramaticWarning("SystemVerilog Emitter is the same as the Verilog Emitter!")
-
override val outputSuffix: String = ".sv"
+
+ override def execute(state: CircuitState): CircuitState = {
+ StageUtils.dramaticWarning("SystemVerilog Emitter is the same as the Verilog Emitter!")
+ super.execute(state)
+ }
}