diff options
Diffstat (limited to 'src/main/scala/firrtl/Emitter.scala')
| -rw-r--r-- | src/main/scala/firrtl/Emitter.scala | 35 |
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) + } } |
