aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes
diff options
context:
space:
mode:
authorSchuyler Eldridge2020-04-22 19:55:32 -0400
committerGitHub2020-04-22 19:55:32 -0400
commit65360f886f9b92438d1b6fe609120b34ebb413cf (patch)
tree073ebe73d43e652af1f71a08d34cc30a421c4dbb /src/main/scala/firrtl/passes
parent8653fd628f83c1bcb329dd37844ddfdb8f4cf206 (diff)
parent184d40095179a9f49dd21e73e2c02b998bac5c00 (diff)
Merge pull request #1534 from freechipsproject/deprecate-transform-2
Trait-base Dependency API Migration
Diffstat (limited to 'src/main/scala/firrtl/passes')
-rw-r--r--src/main/scala/firrtl/passes/CInferMDir.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckFlows.scala5
-rw-r--r--src/main/scala/firrtl/passes/CheckHighForm.scala4
-rw-r--r--src/main/scala/firrtl/passes/CheckInitialization.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckTypes.scala4
-rw-r--r--src/main/scala/firrtl/passes/CheckWidths.scala4
-rw-r--r--src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala4
-rw-r--r--src/main/scala/firrtl/passes/ConvertFixedToSInt.scala2
-rw-r--r--src/main/scala/firrtl/passes/ExpandConnects.scala2
-rw-r--r--src/main/scala/firrtl/passes/ExpandWhens.scala12
-rw-r--r--src/main/scala/firrtl/passes/InferBinaryPoints.scala4
-rw-r--r--src/main/scala/firrtl/passes/InferTypes.scala4
-rw-r--r--src/main/scala/firrtl/passes/InferWidths.scala10
-rw-r--r--src/main/scala/firrtl/passes/Inline.scala13
-rw-r--r--src/main/scala/firrtl/passes/Legalize.scala6
-rw-r--r--src/main/scala/firrtl/passes/LowerTypes.scala8
-rw-r--r--src/main/scala/firrtl/passes/PadWidths.scala6
-rw-r--r--src/main/scala/firrtl/passes/Pass.scala19
-rw-r--r--src/main/scala/firrtl/passes/PullMuxes.scala2
-rw-r--r--src/main/scala/firrtl/passes/RemoveAccesses.scala2
-rw-r--r--src/main/scala/firrtl/passes/RemoveCHIRRTL.scala8
-rw-r--r--src/main/scala/firrtl/passes/RemoveEmpty.scala9
-rw-r--r--src/main/scala/firrtl/passes/RemoveIntervals.scala2
-rw-r--r--src/main/scala/firrtl/passes/RemoveValidIf.scala4
-rw-r--r--src/main/scala/firrtl/passes/ReplaceAccesses.scala2
-rw-r--r--src/main/scala/firrtl/passes/ResolveFlows.scala2
-rw-r--r--src/main/scala/firrtl/passes/ResolveKinds.scala2
-rw-r--r--src/main/scala/firrtl/passes/SplitExpressions.scala4
-rw-r--r--src/main/scala/firrtl/passes/ToWorkingIR.scala2
-rw-r--r--src/main/scala/firrtl/passes/TrimIntervals.scala4
-rw-r--r--src/main/scala/firrtl/passes/Uniquify.scala8
-rw-r--r--src/main/scala/firrtl/passes/VerilogModulusCleanup.scala6
-rw-r--r--src/main/scala/firrtl/passes/VerilogPrep.scala6
-rw-r--r--src/main/scala/firrtl/passes/ZeroLengthVecs.scala2
-rw-r--r--src/main/scala/firrtl/passes/ZeroWidth.scala7
-rw-r--r--src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala10
-rw-r--r--src/main/scala/firrtl/passes/memlib/DecorateMems.scala14
-rw-r--r--src/main/scala/firrtl/passes/memlib/InferReadWrite.scala18
-rw-r--r--src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala12
-rw-r--r--src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala16
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala10
-rw-r--r--src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala2
-rw-r--r--src/main/scala/firrtl/passes/wiring/WiringTransform.scala13
43 files changed, 151 insertions, 127 deletions
diff --git a/src/main/scala/firrtl/passes/CInferMDir.scala b/src/main/scala/firrtl/passes/CInferMDir.scala
index 33587741..f12d073d 100644
--- a/src/main/scala/firrtl/passes/CInferMDir.scala
+++ b/src/main/scala/firrtl/passes/CInferMDir.scala
@@ -10,7 +10,7 @@ import Utils.throwInternalError
object CInferMDir extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.ChirrtlForm :+ Dependency(CInferTypes)
+ override def prerequisites = firrtl.stage.Forms.ChirrtlForm :+ Dependency(CInferTypes)
type MPortDirMap = collection.mutable.LinkedHashMap[String, MPortDir]
diff --git a/src/main/scala/firrtl/passes/CheckFlows.scala b/src/main/scala/firrtl/passes/CheckFlows.scala
index 37749f5f..bd637ff0 100644
--- a/src/main/scala/firrtl/passes/CheckFlows.scala
+++ b/src/main/scala/firrtl/passes/CheckFlows.scala
@@ -10,9 +10,9 @@ import firrtl.options.{Dependency, PreservesAll}
object CheckFlows extends Pass with PreservesAll[Transform] {
- override val prerequisites = Dependency(passes.ResolveFlows) +: firrtl.stage.Forms.WorkingIR
+ override def prerequisites = Dependency(passes.ResolveFlows) +: firrtl.stage.Forms.WorkingIR
- override val dependents =
+ override def dependents =
Seq( Dependency[passes.InferBinaryPoints],
Dependency[passes.TrimIntervals],
Dependency[passes.InferWidths],
@@ -118,4 +118,3 @@ object CheckFlows extends Pass with PreservesAll[Transform] {
c
}
}
-
diff --git a/src/main/scala/firrtl/passes/CheckHighForm.scala b/src/main/scala/firrtl/passes/CheckHighForm.scala
index 462367fe..51b9c6f0 100644
--- a/src/main/scala/firrtl/passes/CheckHighForm.scala
+++ b/src/main/scala/firrtl/passes/CheckHighForm.scala
@@ -283,9 +283,9 @@ trait CheckHighFormLike { this: Pass =>
object CheckHighForm extends Pass with CheckHighFormLike with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.WorkingIR
+ override def prerequisites = firrtl.stage.Forms.WorkingIR
- override val dependents =
+ override def dependents =
Seq( Dependency(passes.ResolveKinds),
Dependency(passes.InferTypes),
Dependency(passes.Uniquify),
diff --git a/src/main/scala/firrtl/passes/CheckInitialization.scala b/src/main/scala/firrtl/passes/CheckInitialization.scala
index 63790564..fe0ff450 100644
--- a/src/main/scala/firrtl/passes/CheckInitialization.scala
+++ b/src/main/scala/firrtl/passes/CheckInitialization.scala
@@ -17,7 +17,7 @@ import annotation.tailrec
*/
object CheckInitialization extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.Resolved
+ override def prerequisites = firrtl.stage.Forms.Resolved
private case class VoidExpr(stmt: Statement, voidDeps: Seq[Expression])
diff --git a/src/main/scala/firrtl/passes/CheckTypes.scala b/src/main/scala/firrtl/passes/CheckTypes.scala
index 1e127fa2..eecc692e 100644
--- a/src/main/scala/firrtl/passes/CheckTypes.scala
+++ b/src/main/scala/firrtl/passes/CheckTypes.scala
@@ -13,9 +13,9 @@ import firrtl.options.{Dependency, PreservesAll}
object CheckTypes extends Pass with PreservesAll[Transform] {
- override val prerequisites = Dependency(InferTypes) +: firrtl.stage.Forms.WorkingIR
+ override def prerequisites = Dependency(InferTypes) +: firrtl.stage.Forms.WorkingIR
- override val dependents =
+ override def dependents =
Seq( Dependency(passes.Uniquify),
Dependency(passes.ResolveFlows),
Dependency(passes.CheckFlows),
diff --git a/src/main/scala/firrtl/passes/CheckWidths.scala b/src/main/scala/firrtl/passes/CheckWidths.scala
index 1be7b34e..6761bc7d 100644
--- a/src/main/scala/firrtl/passes/CheckWidths.scala
+++ b/src/main/scala/firrtl/passes/CheckWidths.scala
@@ -13,9 +13,9 @@ import firrtl.options.{Dependency, PreservesAll}
object CheckWidths extends Pass with PreservesAll[Transform] {
- override val prerequisites = Dependency[passes.InferWidths] +: firrtl.stage.Forms.WorkingIR
+ override def prerequisites = Dependency[passes.InferWidths] +: firrtl.stage.Forms.WorkingIR
- override val dependents = Seq(Dependency[transforms.InferResets])
+ override def dependents = Seq(Dependency[transforms.InferResets])
/** The maximum allowed width for any circuit element */
val MaxWidth = 1000000
diff --git a/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala b/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
index d54d8088..100b3187 100644
--- a/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
+++ b/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
@@ -9,14 +9,14 @@ import firrtl.options.{Dependency, PreservesAll}
object CommonSubexpressionElimination extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.LowForm ++
+ override def prerequisites = firrtl.stage.Forms.LowForm ++
Seq( Dependency(firrtl.passes.RemoveValidIf),
Dependency[firrtl.transforms.ConstantPropagation],
Dependency(firrtl.passes.memlib.VerilogMemDelays),
Dependency(firrtl.passes.SplitExpressions),
Dependency[firrtl.transforms.CombineCats] )
- override val dependents =
+ override def dependents =
Seq( Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/ConvertFixedToSInt.scala b/src/main/scala/firrtl/passes/ConvertFixedToSInt.scala
index 7e65bdd1..5b9cc70b 100644
--- a/src/main/scala/firrtl/passes/ConvertFixedToSInt.scala
+++ b/src/main/scala/firrtl/passes/ConvertFixedToSInt.scala
@@ -14,7 +14,7 @@ import firrtl.options.{Dependency, PreservesAll}
*/
object ConvertFixedToSInt extends Pass with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ReplaceAccesses),
Dependency(ExpandConnects),
diff --git a/src/main/scala/firrtl/passes/ExpandConnects.scala b/src/main/scala/firrtl/passes/ExpandConnects.scala
index 250c9ce0..f80c705c 100644
--- a/src/main/scala/firrtl/passes/ExpandConnects.scala
+++ b/src/main/scala/firrtl/passes/ExpandConnects.scala
@@ -8,7 +8,7 @@ import firrtl.Mappers._
object ExpandConnects extends Pass with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ReplaceAccesses) ) ++ firrtl.stage.Forms.Deduped
diff --git a/src/main/scala/firrtl/passes/ExpandWhens.scala b/src/main/scala/firrtl/passes/ExpandWhens.scala
index aaf3d9b4..f84309d0 100644
--- a/src/main/scala/firrtl/passes/ExpandWhens.scala
+++ b/src/main/scala/firrtl/passes/ExpandWhens.scala
@@ -26,7 +26,7 @@ import collection.mutable
*/
object ExpandWhens extends Pass {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ReplaceAccesses),
Dependency(ExpandConnects),
@@ -302,9 +302,9 @@ object ExpandWhens extends Pass {
DoPrim(Eq, Seq(e, zero), Nil, BoolType)
}
-class ExpandWhensAndCheck extends SeqTransform {
+class ExpandWhensAndCheck extends Transform with DependencyAPIMigration {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ReplaceAccesses),
Dependency(ExpandConnects),
@@ -316,9 +316,7 @@ class ExpandWhensAndCheck extends SeqTransform {
case _ => false
}
- override def inputForm = UnknownForm
- override def outputForm = UnknownForm
-
- override val transforms = Seq(ExpandWhens, CheckInitialization)
+ override def execute(a: CircuitState): CircuitState =
+ Seq(ExpandWhens, CheckInitialization).foldLeft(a){ case (acc, tx) => tx.transform(acc) }
}
diff --git a/src/main/scala/firrtl/passes/InferBinaryPoints.scala b/src/main/scala/firrtl/passes/InferBinaryPoints.scala
index 86bc36fc..ab08926c 100644
--- a/src/main/scala/firrtl/passes/InferBinaryPoints.scala
+++ b/src/main/scala/firrtl/passes/InferBinaryPoints.scala
@@ -12,13 +12,13 @@ import firrtl.options.{Dependency, PreservesAll}
class InferBinaryPoints extends Pass with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(ResolveKinds),
Dependency(InferTypes),
Dependency(Uniquify),
Dependency(ResolveFlows) )
- override val dependents = Seq.empty
+ override def dependents = Seq.empty
private val constraintSolver = new ConstraintSolver()
diff --git a/src/main/scala/firrtl/passes/InferTypes.scala b/src/main/scala/firrtl/passes/InferTypes.scala
index d625b626..78213f49 100644
--- a/src/main/scala/firrtl/passes/InferTypes.scala
+++ b/src/main/scala/firrtl/passes/InferTypes.scala
@@ -10,7 +10,7 @@ import firrtl.options.{Dependency, PreservesAll}
object InferTypes extends Pass with PreservesAll[Transform] {
- override val prerequisites = Dependency(ResolveKinds) +: firrtl.stage.Forms.WorkingIR
+ override def prerequisites = Dependency(ResolveKinds) +: firrtl.stage.Forms.WorkingIR
type TypeMap = collection.mutable.LinkedHashMap[String, Type]
@@ -90,7 +90,7 @@ object InferTypes extends Pass with PreservesAll[Transform] {
object CInferTypes extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.ChirrtlForm
+ override def prerequisites = firrtl.stage.Forms.ChirrtlForm
type TypeMap = collection.mutable.LinkedHashMap[String, Type]
diff --git a/src/main/scala/firrtl/passes/InferWidths.scala b/src/main/scala/firrtl/passes/InferWidths.scala
index 1e9657cf..3bee4515 100644
--- a/src/main/scala/firrtl/passes/InferWidths.scala
+++ b/src/main/scala/firrtl/passes/InferWidths.scala
@@ -60,9 +60,12 @@ case class WidthGeqConstraintAnnotation(loc: ReferenceTarget, exp: ReferenceTarg
*
* Uses firrtl.constraint package to infer widths
*/
-class InferWidths extends Transform with ResolvedAnnotationPaths with PreservesAll[Transform] {
+class InferWidths extends Transform
+ with ResolvedAnnotationPaths
+ with DependencyAPIMigration
+ with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(passes.ResolveKinds),
Dependency(passes.InferTypes),
Dependency(passes.Uniquify),
@@ -70,9 +73,6 @@ class InferWidths extends Transform with ResolvedAnnotationPaths with PreservesA
Dependency[passes.InferBinaryPoints],
Dependency[passes.TrimIntervals] ) ++ firrtl.stage.Forms.WorkingIR
- def inputForm: CircuitForm = UnknownForm
- def outputForm: CircuitForm = UnknownForm
-
private val constraintSolver = new ConstraintSolver()
val annotationClasses = Seq(classOf[WidthGeqConstraintAnnotation])
diff --git a/src/main/scala/firrtl/passes/Inline.scala b/src/main/scala/firrtl/passes/Inline.scala
index 9ddbe92e..047703da 100644
--- a/src/main/scala/firrtl/passes/Inline.scala
+++ b/src/main/scala/firrtl/passes/Inline.scala
@@ -9,7 +9,7 @@ import firrtl.annotations._
import firrtl.annotations.TargetToken.{Instance, OfModule}
import firrtl.analyses.{InstanceGraph}
import firrtl.graph.{DiGraph, MutableDiGraph}
-import firrtl.stage.RunFirrtlTransformAnnotation
+import firrtl.stage.{Forms, RunFirrtlTransformAnnotation}
import firrtl.options.{RegisteredTransform, ShellOption}
// Datastructures
@@ -24,13 +24,16 @@ case class InlineAnnotation(target: Named) extends SingleTargetAnnotation[Named]
* @note Only use on legal Firrtl. Specifically, the restriction of instance loops must have been checked, or else this
* pass can infinitely recurse.
*/
-class InlineInstances extends Transform with RegisteredTransform {
- def inputForm = LowForm
- def outputForm = LowForm
- private [firrtl] val inlineDelim: String = "_"
+class InlineInstances extends Transform with DependencyAPIMigration with RegisteredTransform {
+
+ override def prerequisites = Forms.LowForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.LowEmitters
override def invalidates(a: Transform): Boolean = a == ResolveKinds
+ private [firrtl] val inlineDelim: String = "_"
+
val options = Seq(
new ShellOption[Seq[String]](
longOption = "inline",
diff --git a/src/main/scala/firrtl/passes/Legalize.scala b/src/main/scala/firrtl/passes/Legalize.scala
index 37556769..6f0e23f1 100644
--- a/src/main/scala/firrtl/passes/Legalize.scala
+++ b/src/main/scala/firrtl/passes/Legalize.scala
@@ -12,11 +12,11 @@ import firrtl.Mappers._
// TODO replace UInt with zero-width wire instead
object Legalize extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.MidForm :+ Dependency(LowerTypes)
+ override def prerequisites = firrtl.stage.Forms.MidForm :+ Dependency(LowerTypes)
- override val optionalPrerequisites = Seq.empty
+ override def optionalPrerequisites = Seq.empty
- override val dependents = Seq.empty
+ override def dependents = Seq.empty
private def legalizeShiftRight(e: DoPrim): Expression = {
require(e.op == Shr)
diff --git a/src/main/scala/firrtl/passes/LowerTypes.scala b/src/main/scala/firrtl/passes/LowerTypes.scala
index 73ef8a22..8168b665 100644
--- a/src/main/scala/firrtl/passes/LowerTypes.scala
+++ b/src/main/scala/firrtl/passes/LowerTypes.scala
@@ -22,13 +22,11 @@ import firrtl.Mappers._
* wire foo_b : UInt<16>
* }}}
*/
-object LowerTypes extends Transform {
- def inputForm = UnknownForm
- def outputForm = UnknownForm
+object LowerTypes extends Transform with DependencyAPIMigration {
- override val prerequisites = firrtl.stage.Forms.MidForm
+ override def prerequisites = firrtl.stage.Forms.MidForm
- override val dependents = Seq.empty
+ override def dependents = Seq.empty
override def invalidates(a: Transform): Boolean = a match {
case ResolveKinds | InferTypes | ResolveFlows | _: InferWidths => true
diff --git a/src/main/scala/firrtl/passes/PadWidths.scala b/src/main/scala/firrtl/passes/PadWidths.scala
index 163b2270..22dde436 100644
--- a/src/main/scala/firrtl/passes/PadWidths.scala
+++ b/src/main/scala/firrtl/passes/PadWidths.scala
@@ -13,15 +13,15 @@ import scala.collection.mutable
// Makes all implicit width extensions and truncations explicit
object PadWidths extends Pass {
- override val prerequisites =
+ override def prerequisites =
((new mutable.LinkedHashSet())
++ firrtl.stage.Forms.LowForm
- Dependency(firrtl.passes.Legalize)
+ Dependency(firrtl.passes.RemoveValidIf)).toSeq
- override val optionalPrerequisites = Seq(Dependency[firrtl.transforms.ConstantPropagation])
+ override def optionalPrerequisites = Seq(Dependency[firrtl.transforms.ConstantPropagation])
- override val dependents =
+ override def dependents =
Seq( Dependency(firrtl.passes.memlib.VerilogMemDelays),
Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/Pass.scala b/src/main/scala/firrtl/passes/Pass.scala
index 4673a8e1..4b7a34bf 100644
--- a/src/main/scala/firrtl/passes/Pass.scala
+++ b/src/main/scala/firrtl/passes/Pass.scala
@@ -1,26 +1,15 @@
package firrtl.passes
-import firrtl.Utils.error
+import firrtl.DependencyAPIMigration
import firrtl.ir.Circuit
-import firrtl.{CircuitForm, CircuitState, FirrtlUserException, Transform, UnknownForm}
+import firrtl.{CircuitState, FirrtlUserException, Transform}
/** [[Pass]] is simple transform that is generally part of a larger [[Transform]]
* Has an [[UnknownForm]], because larger [[Transform]] should specify form
*/
-trait Pass extends Transform {
- def inputForm: CircuitForm = UnknownForm
- def outputForm: CircuitForm = UnknownForm
+trait Pass extends Transform with DependencyAPIMigration {
def run(c: Circuit): Circuit
- def execute(state: CircuitState): CircuitState = {
- val result = (state.form, inputForm) match {
- case (_, UnknownForm) => run(state.circuit)
- case (UnknownForm, _) => run(state.circuit)
- case (x, y) if x > y =>
- error(s"[$name]: Input form must be lower or equal to $inputForm. Got ${state.form}")
- case _ => run(state.circuit)
- }
- CircuitState(result, outputForm, state.annotations, state.renames)
- }
+ def execute(state: CircuitState): CircuitState = state.copy(circuit = run(state.circuit))
}
// Error handling
diff --git a/src/main/scala/firrtl/passes/PullMuxes.scala b/src/main/scala/firrtl/passes/PullMuxes.scala
index 8befd9fa..768b1cb9 100644
--- a/src/main/scala/firrtl/passes/PullMuxes.scala
+++ b/src/main/scala/firrtl/passes/PullMuxes.scala
@@ -7,7 +7,7 @@ import firrtl.{Transform, WSubAccess, WSubField, WSubIndex}
object PullMuxes extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.Deduped
+ override def prerequisites = firrtl.stage.Forms.Deduped
def run(c: Circuit): Circuit = {
def pull_muxes_e(e: Expression): Expression = e map pull_muxes_e match {
diff --git a/src/main/scala/firrtl/passes/RemoveAccesses.scala b/src/main/scala/firrtl/passes/RemoveAccesses.scala
index 5c6dfc3f..176312d5 100644
--- a/src/main/scala/firrtl/passes/RemoveAccesses.scala
+++ b/src/main/scala/firrtl/passes/RemoveAccesses.scala
@@ -16,7 +16,7 @@ import scala.collection.mutable
*/
object RemoveAccesses extends Pass {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ZeroLengthVecs),
Dependency(ReplaceAccesses),
diff --git a/src/main/scala/firrtl/passes/RemoveCHIRRTL.scala b/src/main/scala/firrtl/passes/RemoveCHIRRTL.scala
index 05dd8bd9..af9518e9 100644
--- a/src/main/scala/firrtl/passes/RemoveCHIRRTL.scala
+++ b/src/main/scala/firrtl/passes/RemoveCHIRRTL.scala
@@ -14,14 +14,12 @@ case class MPort(name: String, clk: Expression)
case class MPorts(readers: ArrayBuffer[MPort], writers: ArrayBuffer[MPort], readwriters: ArrayBuffer[MPort])
case class DataRef(exp: Expression, male: String, female: String, mask: String, rdwrite: Boolean)
-object RemoveCHIRRTL extends Transform with PreservesAll[Transform] {
+object RemoveCHIRRTL extends Transform with DependencyAPIMigration with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.ChirrtlForm ++
+ override def prerequisites = firrtl.stage.Forms.ChirrtlForm ++
Seq( Dependency(passes.CInferTypes),
Dependency(passes.CInferMDir) )
- def inputForm: CircuitForm = UnknownForm
- def outputForm: CircuitForm = UnknownForm
val ut = UnknownType
type MPortMap = collection.mutable.LinkedHashMap[String, MPorts]
type SeqMemSet = collection.mutable.HashSet[String]
@@ -274,6 +272,6 @@ object RemoveCHIRRTL extends Transform with PreservesAll[Transform] {
val renames = RenameMap()
renames.setCircuit(c.main)
val result = c copy (modules = c.modules map remove_chirrtl_m(renames))
- CircuitState(result, outputForm, state.annotations, Some(renames))
+ state.copy(circuit = result, renames = Some(renames))
}
}
diff --git a/src/main/scala/firrtl/passes/RemoveEmpty.scala b/src/main/scala/firrtl/passes/RemoveEmpty.scala
index 087ddeca..5951b5c0 100644
--- a/src/main/scala/firrtl/passes/RemoveEmpty.scala
+++ b/src/main/scala/firrtl/passes/RemoveEmpty.scala
@@ -4,8 +4,15 @@ package firrtl
package passes
import firrtl.ir._
+import firrtl.options.PreservesAll
+import firrtl.stage.Forms
+
+object RemoveEmpty extends Pass with DependencyAPIMigration with PreservesAll[Transform] {
+
+ override def prerequisites = Seq.empty
+ override def optionalPrerequisites = Forms.LowFormOptimized
+ override def dependents = Forms.ChirrtlEmitters
-object RemoveEmpty extends Pass {
private def onModule(m: DefModule): DefModule = {
m match {
case m: Module => Module(m.info, m.name, m.ports, Utils.squashEmpty(m.body))
diff --git a/src/main/scala/firrtl/passes/RemoveIntervals.scala b/src/main/scala/firrtl/passes/RemoveIntervals.scala
index b4114a50..2cf4a3e0 100644
--- a/src/main/scala/firrtl/passes/RemoveIntervals.scala
+++ b/src/main/scala/firrtl/passes/RemoveIntervals.scala
@@ -38,7 +38,7 @@ class WrapWithRemainder(info: Info, mname: String, wrap: DoPrim)
*/
class RemoveIntervals extends Pass with PreservesAll[Transform] {
- override val prerequisites: Seq[Dependency[Transform]] =
+ override def prerequisites: Seq[Dependency[Transform]] =
Seq( Dependency(PullMuxes),
Dependency(ReplaceAccesses),
Dependency(ExpandConnects),
diff --git a/src/main/scala/firrtl/passes/RemoveValidIf.scala b/src/main/scala/firrtl/passes/RemoveValidIf.scala
index 3b5499ac..70a575ad 100644
--- a/src/main/scala/firrtl/passes/RemoveValidIf.scala
+++ b/src/main/scala/firrtl/passes/RemoveValidIf.scala
@@ -29,9 +29,9 @@ object RemoveValidIf extends Pass {
case other => throwInternalError(s"Unexpected type $other")
}
- override val prerequisites = firrtl.stage.Forms.LowForm
+ override def prerequisites = firrtl.stage.Forms.LowForm
- override val dependents =
+ override def dependents =
Seq( Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/ReplaceAccesses.scala b/src/main/scala/firrtl/passes/ReplaceAccesses.scala
index 6992b6b8..5edab1f0 100644
--- a/src/main/scala/firrtl/passes/ReplaceAccesses.scala
+++ b/src/main/scala/firrtl/passes/ReplaceAccesses.scala
@@ -13,7 +13,7 @@ import firrtl.options.{Dependency, PreservesAll}
*/
object ReplaceAccesses extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.Deduped :+ Dependency(PullMuxes)
+ override def prerequisites = firrtl.stage.Forms.Deduped :+ Dependency(PullMuxes)
def run(c: Circuit): Circuit = {
def onStmt(s: Statement): Statement = s map onStmt map onExp
diff --git a/src/main/scala/firrtl/passes/ResolveFlows.scala b/src/main/scala/firrtl/passes/ResolveFlows.scala
index 8f413082..aacbf27c 100644
--- a/src/main/scala/firrtl/passes/ResolveFlows.scala
+++ b/src/main/scala/firrtl/passes/ResolveFlows.scala
@@ -9,7 +9,7 @@ import firrtl.options.{Dependency, PreservesAll}
object ResolveFlows extends Pass with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(passes.ResolveKinds),
Dependency(passes.InferTypes),
Dependency(passes.Uniquify) ) ++ firrtl.stage.Forms.WorkingIR
diff --git a/src/main/scala/firrtl/passes/ResolveKinds.scala b/src/main/scala/firrtl/passes/ResolveKinds.scala
index fb36ccd5..73c8646a 100644
--- a/src/main/scala/firrtl/passes/ResolveKinds.scala
+++ b/src/main/scala/firrtl/passes/ResolveKinds.scala
@@ -9,7 +9,7 @@ import firrtl.options.PreservesAll
object ResolveKinds extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.WorkingIR
+ override def prerequisites = firrtl.stage.Forms.WorkingIR
type KindMap = collection.mutable.LinkedHashMap[String, Kind]
diff --git a/src/main/scala/firrtl/passes/SplitExpressions.scala b/src/main/scala/firrtl/passes/SplitExpressions.scala
index 43d0ed34..808f9f0d 100644
--- a/src/main/scala/firrtl/passes/SplitExpressions.scala
+++ b/src/main/scala/firrtl/passes/SplitExpressions.scala
@@ -16,11 +16,11 @@ import scala.collection.mutable
// and named intermediate nodes
object SplitExpressions extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.LowForm ++
+ override def prerequisites = firrtl.stage.Forms.LowForm ++
Seq( Dependency(firrtl.passes.RemoveValidIf),
Dependency(firrtl.passes.memlib.VerilogMemDelays) )
- override val dependents =
+ override def dependents =
Seq( Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/ToWorkingIR.scala b/src/main/scala/firrtl/passes/ToWorkingIR.scala
index 109654ee..53936c18 100644
--- a/src/main/scala/firrtl/passes/ToWorkingIR.scala
+++ b/src/main/scala/firrtl/passes/ToWorkingIR.scala
@@ -8,7 +8,7 @@ import firrtl.{Transform, UnknownFlow, UnknownKind, WDefInstance, WRef, WSubAcce
// These should be distributed into separate files
object ToWorkingIR extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.MinimalHighForm
+ override def prerequisites = firrtl.stage.Forms.MinimalHighForm
def toExp(e: Expression): Expression = e map toExp match {
case ex: Reference => WRef(ex.name, ex.tpe, UnknownKind, UnknownFlow)
diff --git a/src/main/scala/firrtl/passes/TrimIntervals.scala b/src/main/scala/firrtl/passes/TrimIntervals.scala
index 4e558e2a..65a43787 100644
--- a/src/main/scala/firrtl/passes/TrimIntervals.scala
+++ b/src/main/scala/firrtl/passes/TrimIntervals.scala
@@ -22,14 +22,14 @@ import firrtl.Transform
*/
class TrimIntervals extends Pass with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(ResolveKinds),
Dependency(InferTypes),
Dependency(Uniquify),
Dependency(ResolveFlows),
Dependency[InferBinaryPoints] )
- override val dependents = Seq.empty
+ override def dependents = Seq.empty
def run(c: Circuit): Circuit = {
// Open -> closed
diff --git a/src/main/scala/firrtl/passes/Uniquify.scala b/src/main/scala/firrtl/passes/Uniquify.scala
index 1268cac2..89a99780 100644
--- a/src/main/scala/firrtl/passes/Uniquify.scala
+++ b/src/main/scala/firrtl/passes/Uniquify.scala
@@ -32,9 +32,9 @@ import MemPortUtils.memType
* there WOULD be collisions in references a[0] and a_0 so we still have
* to rename a
*/
-object Uniquify extends Transform {
+object Uniquify extends Transform with DependencyAPIMigration {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(ResolveKinds),
Dependency(InferTypes) ) ++ firrtl.stage.Forms.WorkingIR
@@ -43,8 +43,6 @@ object Uniquify extends Transform {
case _ => false
}
- def inputForm = UnknownForm
- def outputForm = UnknownForm
private case class UniquifyException(msg: String) extends FirrtlInternalException(msg)
private def error(msg: String)(implicit sinfo: Info, mname: String) =
throw new UniquifyException(s"$sinfo: [moduleOpt $mname] $msg")
@@ -392,6 +390,6 @@ object Uniquify extends Transform {
sinfo = c.info
val result = Circuit(c.info, c.modules map uniquifyPorts(renames) map uniquifyModule(renames), c.main)
- CircuitState(result, outputForm, state.annotations, Some(renames))
+ state.copy(circuit = result, renames = Some(renames))
}
}
diff --git a/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala b/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala
index f47ddfbd..f063fccf 100644
--- a/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala
+++ b/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala
@@ -26,7 +26,7 @@ import scala.collection.mutable
*/
object VerilogModulusCleanup extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.LowFormMinimumOptimized ++
+ override def prerequisites = firrtl.stage.Forms.LowFormMinimumOptimized ++
Seq( Dependency[firrtl.transforms.BlackBoxSourceHelper],
Dependency[firrtl.transforms.FixAddingNegativeLiterals],
Dependency[firrtl.transforms.ReplaceTruncatingArithmetic],
@@ -35,9 +35,9 @@ object VerilogModulusCleanup extends Pass with PreservesAll[Transform] {
Dependency[firrtl.transforms.LegalizeClocksTransform],
Dependency[firrtl.transforms.FlattenRegUpdate] )
- override val optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
+ override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override val dependents = Seq.empty
+ override def dependents = Seq.empty
private def onModule(m: Module): Module = {
val namespace = Namespace(m)
diff --git a/src/main/scala/firrtl/passes/VerilogPrep.scala b/src/main/scala/firrtl/passes/VerilogPrep.scala
index 776c0f5f..6733e9d5 100644
--- a/src/main/scala/firrtl/passes/VerilogPrep.scala
+++ b/src/main/scala/firrtl/passes/VerilogPrep.scala
@@ -20,7 +20,7 @@ import scala.collection.mutable
*/
object VerilogPrep extends Pass with PreservesAll[Transform] {
- override val prerequisites = firrtl.stage.Forms.LowFormMinimumOptimized ++
+ override def prerequisites = firrtl.stage.Forms.LowFormMinimumOptimized ++
Seq( Dependency[firrtl.transforms.BlackBoxSourceHelper],
Dependency[firrtl.transforms.FixAddingNegativeLiterals],
Dependency[firrtl.transforms.ReplaceTruncatingArithmetic],
@@ -31,9 +31,9 @@ object VerilogPrep extends Pass with PreservesAll[Transform] {
Dependency(passes.VerilogModulusCleanup),
Dependency[firrtl.transforms.VerilogRename] )
- override val optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
+ override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override val dependents = Seq.empty
+ override def dependents = Seq.empty
type AttachSourceMap = Map[WrappedExpression, Expression]
diff --git a/src/main/scala/firrtl/passes/ZeroLengthVecs.scala b/src/main/scala/firrtl/passes/ZeroLengthVecs.scala
index 67d9bce4..14fcd387 100644
--- a/src/main/scala/firrtl/passes/ZeroLengthVecs.scala
+++ b/src/main/scala/firrtl/passes/ZeroLengthVecs.scala
@@ -16,7 +16,7 @@ import firrtl.options.{Dependency, PreservesAll}
* @note Replaces "source" references to elements of zero-length vectors with always-invalid validif
*/
object ZeroLengthVecs extends Pass with PreservesAll[Transform] {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ResolveKinds),
Dependency(InferTypes),
diff --git a/src/main/scala/firrtl/passes/ZeroWidth.scala b/src/main/scala/firrtl/passes/ZeroWidth.scala
index e60d76d1..4f7e2369 100644
--- a/src/main/scala/firrtl/passes/ZeroWidth.scala
+++ b/src/main/scala/firrtl/passes/ZeroWidth.scala
@@ -8,9 +8,9 @@ import firrtl._
import firrtl.Mappers._
import firrtl.options.Dependency
-object ZeroWidth extends Transform {
+object ZeroWidth extends Transform with DependencyAPIMigration {
- override val prerequisites =
+ override def prerequisites =
Seq( Dependency(PullMuxes),
Dependency(ReplaceAccesses),
Dependency(ExpandConnects),
@@ -24,9 +24,6 @@ object ZeroWidth extends Transform {
case _ => false
}
- def inputForm: CircuitForm = UnknownForm
- def outputForm: CircuitForm = UnknownForm
-
private def makeEmptyMemBundle(name: String): Field =
Field(name, Flip, BundleType(Seq(
Field("addr", Default, UIntType(IntWidth(0))),
diff --git a/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala b/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala
index 26003954..b097d748 100644
--- a/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala
+++ b/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala
@@ -10,7 +10,7 @@ import java.io.{PrintWriter, Writer}
import Utils._
import memlib._
import firrtl.options.{RegisteredTransform, ShellOption}
-import firrtl.stage.RunFirrtlTransformAnnotation
+import firrtl.stage.{Forms, RunFirrtlTransformAnnotation}
case class ClockListAnnotation(target: ModuleName, outputConfig: String) extends
SingleTargetAnnotation[ModuleName] {
@@ -51,9 +51,11 @@ Usage:
}
}
-class ClockListTransform extends Transform with RegisteredTransform {
- def inputForm = LowForm
- def outputForm = LowForm
+class ClockListTransform extends Transform with DependencyAPIMigration with RegisteredTransform {
+
+ override def prerequisites = Forms.LowForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.LowEmitters
val options = Seq(
new ShellOption[String](
diff --git a/src/main/scala/firrtl/passes/memlib/DecorateMems.scala b/src/main/scala/firrtl/passes/memlib/DecorateMems.scala
index 412098fd..48e8041a 100644
--- a/src/main/scala/firrtl/passes/memlib/DecorateMems.scala
+++ b/src/main/scala/firrtl/passes/memlib/DecorateMems.scala
@@ -4,9 +4,17 @@ package firrtl
package passes
package memlib
-class CreateMemoryAnnotations(reader: Option[YamlFileReader]) extends Transform {
- def inputForm = MidForm
- def outputForm = MidForm
+import firrtl.options.PreservesAll
+import firrtl.stage.Forms
+
+class CreateMemoryAnnotations(reader: Option[YamlFileReader]) extends Transform
+ with DependencyAPIMigration
+ with PreservesAll[Transform] {
+
+ override def prerequisites = Forms.MidForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.MidEmitters
+
def execute(state: CircuitState): CircuitState = reader match {
case None => state
case Some(r) =>
diff --git a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
index 1e88a9b0..0de2f46d 100644
--- a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
+++ b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
@@ -8,12 +8,12 @@ import firrtl.ir._
import firrtl.Mappers._
import firrtl.PrimOps._
import firrtl.Utils.{one, zero, BoolType}
-import firrtl.options.{HasShellOptions, ShellOption}
+import firrtl.options.{HasShellOptions, PreservesAll, ShellOption}
import MemPortUtils.memPortField
import firrtl.passes.memlib.AnalysisUtils.{Connects, getConnects, getOrigin}
import WrappedExpression.weq
import annotations._
-import firrtl.stage.RunFirrtlTransformAnnotation
+import firrtl.stage.{Forms, RunFirrtlTransformAnnotation}
case object InferReadWriteAnnotation extends NoTargetAnnotation
@@ -144,9 +144,15 @@ object InferReadWritePass extends Pass {
// Transform input: Middle Firrtl. Called after "HighFirrtlToMidleFirrtl"
// To use this transform, circuit name should be annotated with its TransId.
-class InferReadWrite extends Transform with SeqTransformBased with HasShellOptions {
- def inputForm = MidForm
- def outputForm = MidForm
+class InferReadWrite extends Transform
+ with DependencyAPIMigration
+ with PreservesAll[Transform]
+ with SeqTransformBased
+ with HasShellOptions {
+
+ override def prerequisites = Forms.MidForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.MidEmitters
val options = Seq(
new ShellOption[Unit](
@@ -166,7 +172,7 @@ class InferReadWrite extends Transform with SeqTransformBased with HasShellOptio
val runTransform = state.annotations.contains(InferReadWriteAnnotation)
if (runTransform) {
val ret = runTransforms(state)
- CircuitState(ret.circuit, outputForm, ret.annotations, ret.renames)
+ state.copy(circuit = ret.circuit, annotations = ret.annotations, renames = ret.renames)
} else {
state
}
diff --git a/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala b/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala
index f81dc71b..abc145f0 100644
--- a/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala
+++ b/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala
@@ -10,6 +10,8 @@ import firrtl.Mappers._
import MemPortUtils.{MemPortMap, Modules}
import MemTransformUtils._
import firrtl.annotations._
+import firrtl.options.PreservesAll
+import firrtl.stage.Forms
import wiring._
@@ -24,9 +26,11 @@ object ReplaceMemMacros {
* This will not generate wmask ports if not needed.
* Creates the minimum # of black boxes needed by the design.
*/
-class ReplaceMemMacros(writer: ConfWriter) extends Transform {
- def inputForm = MidForm
- def outputForm = MidForm
+class ReplaceMemMacros(writer: ConfWriter) extends Transform with DependencyAPIMigration with PreservesAll[Transform] {
+
+ override def prerequisites = Forms.MidForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.MidEmitters
/** Return true if mask granularity is per bit, false if per byte or unspecified
*/
@@ -263,6 +267,6 @@ class ReplaceMemMacros(writer: ConfWriter) extends Transform {
case m: ExtModule => SinkAnnotation(ModuleName(m.name, CircuitName(c.main)), pin)
}
} ++ state.annotations
- CircuitState(c.copy(modules = modules ++ memMods), inputForm, annos)
+ state.copy(circuit = c.copy(modules = modules ++ memMods), annotations = annos)
}
}
diff --git a/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala b/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala
index f3ef917b..f5030188 100644
--- a/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala
+++ b/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala
@@ -5,11 +5,11 @@ package memlib
import firrtl._
import firrtl.annotations._
-import firrtl.options.{HasShellOptions, ShellOption}
+import firrtl.options.{HasShellOptions, PreservesAll, ShellOption}
import Utils.error
import java.io.{File, CharArrayWriter, PrintWriter}
import wiring._
-import firrtl.stage.RunFirrtlTransformAnnotation
+import firrtl.stage.{Forms, RunFirrtlTransformAnnotation}
sealed trait PassOption
case object InputConfigFileName extends PassOption
@@ -90,6 +90,10 @@ Optional Arguments:
}
}
+@deprecated(
+ "Migrate to a transform that does not take arguments. This will be removed in 1.4.",
+ "FIRRTL 1.3"
+)
class SimpleTransform(p: Pass, form: CircuitForm) extends Transform {
def inputForm = form
def outputForm = form
@@ -99,9 +103,11 @@ class SimpleTransform(p: Pass, form: CircuitForm) extends Transform {
class SimpleMidTransform(p: Pass) extends SimpleTransform(p, MidForm)
// SimpleRun instead of PassBased because of the arguments to passSeq
-class ReplSeqMem extends Transform with HasShellOptions {
- def inputForm = MidForm
- def outputForm = MidForm
+class ReplSeqMem extends Transform with HasShellOptions with DependencyAPIMigration with PreservesAll[Transform] {
+
+ override def prerequisites = Forms.MidForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.MidEmitters
val options = Seq(
new ShellOption[String](
diff --git a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
index b0d3731f..007aa330 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
@@ -6,6 +6,8 @@ import firrtl._
import firrtl.ir._
import firrtl.Mappers._
import firrtl.annotations._
+import firrtl.options.PreservesAll
+import firrtl.stage.Forms
/** A component, e.g. register etc. Must be declared only once under the TopAnnotation */
case class NoDedupMemAnnotation(target: ComponentName) extends SingleTargetAnnotation[ComponentName] {
@@ -14,9 +16,11 @@ case class NoDedupMemAnnotation(target: ComponentName) extends SingleTargetAnnot
/** Resolves annotation ref to memories that exactly match (except name) another memory
*/
-class ResolveMemoryReference extends Transform {
- def inputForm = MidForm
- def outputForm = MidForm
+class ResolveMemoryReference extends Transform with DependencyAPIMigration with PreservesAll[Transform] {
+
+ override def prerequisites = Forms.MidForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.MidEmitters
/** Helper class for determining when two memories are equivalent while igoring
* irrelevant details like name and info
diff --git a/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala b/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala
index e5e6d6d4..3da4c391 100644
--- a/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala
+++ b/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala
@@ -168,7 +168,7 @@ class MemDelayAndReadwriteTransformer(m: DefModule) {
object VerilogMemDelays extends Pass {
- override val prerequisites = firrtl.stage.Forms.LowForm :+ Dependency(firrtl.passes.RemoveValidIf)
+ override def prerequisites = firrtl.stage.Forms.LowForm :+ Dependency(firrtl.passes.RemoveValidIf)
override val dependents =
Seq( Dependency[VerilogEmitter],
diff --git a/src/main/scala/firrtl/passes/wiring/WiringTransform.scala b/src/main/scala/firrtl/passes/wiring/WiringTransform.scala
index 31030375..2a574f47 100644
--- a/src/main/scala/firrtl/passes/wiring/WiringTransform.scala
+++ b/src/main/scala/firrtl/passes/wiring/WiringTransform.scala
@@ -7,6 +7,8 @@ import firrtl._
import firrtl.Utils._
import scala.collection.mutable
import firrtl.annotations._
+import firrtl.options.Dependency
+import firrtl.stage.Forms
/** A class for all exceptions originating from firrtl.passes.wiring */
case class WiringException(msg: String) extends PassException(msg)
@@ -36,9 +38,14 @@ case class SinkAnnotation(target: Named, pin: String) extends
*
* @throws WiringException if a sink is equidistant to two sources
*/
-class WiringTransform extends Transform {
- def inputForm: CircuitForm = MidForm
- def outputForm: CircuitForm = HighForm
+class WiringTransform extends Transform with DependencyAPIMigration {
+
+ override def prerequisites = Forms.MidForm
+ override def optionalPrerequisites = Seq.empty
+ override def dependents = Forms.MidEmitters
+
+ private val invalidates = Forms.VerilogOptimized.toSet -- Forms.MinimalHighForm
+ override def invalidates(a: Transform): Boolean = invalidates(Dependency.fromTransform(a))
/** Defines the sequence of Transform that should be applied */
private def transforms(w: Seq[WiringInfo]): Seq[Transform] = Seq(