aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/scala/firrtlTests/CustomTransformSpec.scala53
1 files changed, 21 insertions, 32 deletions
diff --git a/src/test/scala/firrtlTests/CustomTransformSpec.scala b/src/test/scala/firrtlTests/CustomTransformSpec.scala
index 7a683ea9..9141a9f7 100644
--- a/src/test/scala/firrtlTests/CustomTransformSpec.scala
+++ b/src/test/scala/firrtlTests/CustomTransformSpec.scala
@@ -6,11 +6,11 @@ import firrtl.ir.Circuit
import firrtl._
import firrtl.passes.Pass
import firrtl.ir._
-import firrtl.stage.{FirrtlSourceAnnotation, FirrtlStage, Forms, RunFirrtlTransformAnnotation}
+import firrtl.stage.{FirrtlSourceAnnotation, FirrtlStage, RunFirrtlTransformAnnotation}
import firrtl.options.Dependency
import firrtl.transforms.{IdentityTransform, LegalizeAndReductionsTransform}
import firrtl.testutils._
-import firrtl.transforms.formal.{RemoveVerificationStatements, ConvertAsserts}
+import firrtl.transforms.formal.ConvertAsserts
import scala.reflect.runtime
@@ -150,40 +150,29 @@ class CustomTransformSpec extends FirrtlFlatSpec {
they should "run right before the emitter* when inputForm=LowForm" in {
- val custom = Dependency[IdentityLowForm]
-
- def testOrder(after: Seq[Dependency[Transform]], before: Seq[Dependency[Transform]]): Unit = {
- val expectedSlice: Seq[Dependency[Transform]] = before ++: custom +: after
-
- info(expectedSlice.map(_.getSimpleName).mkString(" -> ") + " ok!")
-
- val compiler = new firrtl.stage.transforms.Compiler(custom +: after)
- info("Transform Order: \n" + compiler.prettyPrint(" "))
-
+ val locationMap = Map(
+ Dependency[LowFirrtlEmitter] -> Dependency[LowFirrtlEmitter],
+ Dependency[MinimumVerilogEmitter] -> Dependency(ConvertAsserts),
+ Dependency[VerilogEmitter] -> Dependency(ConvertAsserts),
+ Dependency[SystemVerilogEmitter] -> Dependency[LegalizeAndReductionsTransform]
+ )
- compiler
+ Seq(
+ Dependency[LowFirrtlEmitter],
+ Dependency[MinimumVerilogEmitter],
+ Dependency[VerilogEmitter],
+ Dependency[SystemVerilogEmitter]
+ ).foreach { emitter =>
+ val custom = Dependency[IdentityLowForm]
+ val tm = new firrtl.stage.transforms.Compiler(custom :: emitter :: Nil)
+ info(s"when using ${emitter.getObject.name}")
+ tm
.flattenedTransformOrder
- .map(Dependency.fromTransform(_))
- .containsSlice(expectedSlice) should be (true)
+ .map(Dependency.fromTransform)
+ .sliding(2)
+ .toList should contain (Seq(custom, locationMap(emitter)))
}
- val Seq(low, lowMinOpt, lowOpt) =
- Seq(Forms.LowForm, Forms.LowFormMinimumOptimized, Forms.LowFormOptimized)
- .map(target => new firrtl.stage.transforms.Compiler(target))
- .map(_.flattenedTransformOrder.map(Dependency.fromTransform(_)))
-
- Seq( (Seq(Dependency[LowFirrtlEmitter]), Seq(low.last) ),
- (Seq(Dependency[LegalizeAndReductionsTransform],
- Dependency(ConvertAsserts),
- Dependency[RemoveVerificationStatements],
- Dependency[MinimumVerilogEmitter]), Seq(lowMinOpt.last)),
- (Seq(Dependency[LegalizeAndReductionsTransform],
- Dependency(ConvertAsserts),
- Dependency[RemoveVerificationStatements],
- Dependency[VerilogEmitter]), Seq(lowOpt.last) ),
- (Seq(Dependency[LegalizeAndReductionsTransform],
- Dependency[SystemVerilogEmitter]), Seq(lowOpt.last) )
- ).foreach((testOrder _).tupled)
}
they should "work if placed inside an object" in {