diff options
| -rw-r--r-- | src/main/scala/firrtl/Compiler.scala | 2 | ||||
| -rw-r--r-- | src/main/scala/firrtl/Emitter.scala | 19 | ||||
| -rw-r--r-- | src/main/scala/firrtl/stage/Forms.scala | 7 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/CustomTransformSpec.scala | 9 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/LoweringCompilersSpec.scala | 6 |
5 files changed, 17 insertions, 26 deletions
diff --git a/src/main/scala/firrtl/Compiler.scala b/src/main/scala/firrtl/Compiler.scala index 54380875..bed1b6d4 100644 --- a/src/main/scala/firrtl/Compiler.scala +++ b/src/main/scala/firrtl/Compiler.scala @@ -313,7 +313,7 @@ trait Transform extends TransformLike[CircuitState] with DependencyAPI[Transform } override def optionalPrerequisites: Seq[Dependency[Transform]] = inputForm match { - case L => Forms.LowFormOptimized + case L => Forms.LowFormOptimized ++ Forms.AssertsRemoved case _ => Seq.empty } diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala index 850c8ca1..3329cf9e 100644 --- a/src/main/scala/firrtl/Emitter.scala +++ b/src/main/scala/firrtl/Emitter.scala @@ -7,16 +7,15 @@ import java.io.Writer import scala.collection.mutable import firrtl.ir._ import firrtl.passes._ -import firrtl.transforms.{FixAddingNegativeLiterals, LegalizeAndReductionsTransform} +import firrtl.transforms.FixAddingNegativeLiterals import firrtl.annotations._ import firrtl.traversals.Foreachers._ import firrtl.PrimOps._ import firrtl.WrappedExpression._ import Utils._ import MemPortUtils.{memPortField, memType} -import firrtl.options.{Dependency, HasShellOptions, PhaseException, ShellOption, Unserializable} +import firrtl.options.{HasShellOptions, PhaseException, ShellOption, Unserializable} import firrtl.stage.{RunFirrtlTransformAnnotation, TransformManager} -import firrtl.transforms.formal.{RemoveVerificationStatements, ConvertAsserts} // Datastructures import scala.collection.mutable.ArrayBuffer @@ -181,10 +180,7 @@ class VerilogEmitter extends SeqTransform with Emitter { def inputForm = LowForm def outputForm = LowForm - override def prerequisites = - Dependency(ConvertAsserts) +: - Dependency[RemoveVerificationStatements] +: - Dependency[LegalizeAndReductionsTransform] +: + override def prerequisites = firrtl.stage.Forms.AssertsRemoved ++ firrtl.stage.Forms.LowFormOptimized override def optionalPrerequisiteOf = Seq.empty @@ -1254,10 +1250,7 @@ class VerilogEmitter extends SeqTransform with Emitter { class MinimumVerilogEmitter extends VerilogEmitter with Emitter { - override def prerequisites = - Dependency(ConvertAsserts) +: - Dependency[RemoveVerificationStatements] +: - Dependency[LegalizeAndReductionsTransform] +: + override def prerequisites = firrtl.stage.Forms.AssertsRemoved ++ firrtl.stage.Forms.LowFormMinimumOptimized override def transforms = new TransformManager(firrtl.stage.Forms.VerilogMinimumOptimized, prerequisites) @@ -1268,9 +1261,7 @@ class MinimumVerilogEmitter extends VerilogEmitter with Emitter { class SystemVerilogEmitter extends VerilogEmitter { override val outputSuffix: String = ".sv" - override def prerequisites = - Dependency[LegalizeAndReductionsTransform] +: - firrtl.stage.Forms.LowFormOptimized + override def prerequisites = firrtl.stage.Forms.LowFormOptimized override def addFormalStatement(formals: mutable.Map[Expression, ArrayBuffer[Seq[Any]]], clk: Expression, en: Expression, diff --git a/src/main/scala/firrtl/stage/Forms.scala b/src/main/scala/firrtl/stage/Forms.scala index e6ed9603..933db4f4 100644 --- a/src/main/scala/firrtl/stage/Forms.scala +++ b/src/main/scala/firrtl/stage/Forms.scala @@ -72,7 +72,8 @@ object Forms { Seq( Dependency(passes.RemoveValidIf), Dependency(passes.PadWidths), Dependency(passes.memlib.VerilogMemDelays), - Dependency(passes.SplitExpressions) ) + Dependency(passes.SplitExpressions), + Dependency[firrtl.transforms.LegalizeAndReductionsTransform] ) val LowFormOptimized: Seq[TransformDependency] = LowFormMinimumOptimized ++ Seq( Dependency[firrtl.transforms.ConstantPropagation], @@ -95,6 +96,10 @@ object Forms { val VerilogOptimized: Seq[TransformDependency] = LowFormOptimized ++ VerilogMinimumOptimized + val AssertsRemoved: Seq[TransformDependency] = + Seq( Dependency(firrtl.transforms.formal.ConvertAsserts), + Dependency[firrtl.transforms.formal.RemoveVerificationStatements] ) + val BackendEmitters = Seq( Dependency[VerilogEmitter], Dependency[MinimumVerilogEmitter], diff --git a/src/test/scala/firrtlTests/CustomTransformSpec.scala b/src/test/scala/firrtlTests/CustomTransformSpec.scala index 9141a9f7..3e5fd254 100644 --- a/src/test/scala/firrtlTests/CustomTransformSpec.scala +++ b/src/test/scala/firrtlTests/CustomTransformSpec.scala @@ -150,13 +150,6 @@ class CustomTransformSpec extends FirrtlFlatSpec { they should "run right before the emitter* when inputForm=LowForm" in { - val locationMap = Map( - Dependency[LowFirrtlEmitter] -> Dependency[LowFirrtlEmitter], - Dependency[MinimumVerilogEmitter] -> Dependency(ConvertAsserts), - Dependency[VerilogEmitter] -> Dependency(ConvertAsserts), - Dependency[SystemVerilogEmitter] -> Dependency[LegalizeAndReductionsTransform] - ) - Seq( Dependency[LowFirrtlEmitter], Dependency[MinimumVerilogEmitter], @@ -170,7 +163,7 @@ class CustomTransformSpec extends FirrtlFlatSpec { .flattenedTransformOrder .map(Dependency.fromTransform) .sliding(2) - .toList should contain (Seq(custom, locationMap(emitter))) + .toList should contain (Seq(custom, emitter)) } } diff --git a/src/test/scala/firrtlTests/LoweringCompilersSpec.scala b/src/test/scala/firrtlTests/LoweringCompilersSpec.scala index 7df621d3..854763f1 100644 --- a/src/test/scala/firrtlTests/LoweringCompilersSpec.scala +++ b/src/test/scala/firrtlTests/LoweringCompilersSpec.scala @@ -192,7 +192,8 @@ class LoweringCompilersSpec extends FlatSpec with Matchers { val tm = new TransformManager(Forms.LowFormMinimumOptimized, Forms.LowForm) val patches = Seq( Add(4, Seq(Dependency(firrtl.passes.ResolveFlows))), - Add(5, Seq(Dependency(firrtl.passes.ResolveKinds))) + Add(6, Seq(Dependency[firrtl.transforms.LegalizeAndReductionsTransform], + Dependency(firrtl.passes.ResolveKinds))) ) compare(legacyTransforms(new MinimumLowFirrtlOptimization), tm, patches) } @@ -204,7 +205,8 @@ class LoweringCompilersSpec extends FlatSpec with Matchers { val patches = Seq( Add(6, Seq(Dependency(firrtl.passes.ResolveFlows))), Add(7, Seq(Dependency(firrtl.passes.Legalize))), - Add(8, Seq(Dependency(firrtl.passes.ResolveKinds))) + Add(8, Seq(Dependency[firrtl.transforms.LegalizeAndReductionsTransform], + Dependency(firrtl.passes.ResolveKinds))) ) compare(legacyTransforms(new LowFirrtlOptimization), tm, patches) } |
