aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSchuyler Eldridge2020-04-22 20:26:11 -0400
committerGitHub2020-04-22 20:26:11 -0400
commit404d419a42c33ce4a68eedce636c336adf7d53be (patch)
tree607b55e30774227895c75b60fb8fd67845ed23a8
parent65360f886f9b92438d1b6fe609120b34ebb413cf (diff)
parentffa6958535292d636923739d9d77b566054e2208 (diff)
Merge pull request #1537 from freechipsproject/optionalPrerequisitesOf
Change `dependents` to `optionalPrerequisiteOf`
-rw-r--r--src/main/scala/firrtl/AddDescriptionNodes.scala2
-rw-r--r--src/main/scala/firrtl/Compiler.scala2
-rw-r--r--src/main/scala/firrtl/DependencyAPIMigration.scala4
-rw-r--r--src/main/scala/firrtl/Emitter.scala2
-rw-r--r--src/main/scala/firrtl/analyses/GetNamespace.scala2
-rw-r--r--src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala2
-rw-r--r--src/main/scala/firrtl/checks/CheckResets.scala2
-rw-r--r--src/main/scala/firrtl/options/DependencyManager.scala37
-rw-r--r--src/main/scala/firrtl/options/Phase.scala30
-rw-r--r--src/main/scala/firrtl/options/phases/AddDefaults.scala2
-rw-r--r--src/main/scala/firrtl/options/phases/Checks.scala2
-rw-r--r--src/main/scala/firrtl/options/phases/ConvertLegacyAnnotations.scala2
-rw-r--r--src/main/scala/firrtl/options/phases/DeletedWrapper.scala2
-rw-r--r--src/main/scala/firrtl/options/phases/GetIncludes.scala2
-rw-r--r--src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckChirrtl.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckFlows.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckHighForm.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckTypes.scala2
-rw-r--r--src/main/scala/firrtl/passes/CheckWidths.scala2
-rw-r--r--src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala2
-rw-r--r--src/main/scala/firrtl/passes/InferBinaryPoints.scala2
-rw-r--r--src/main/scala/firrtl/passes/Inline.scala2
-rw-r--r--src/main/scala/firrtl/passes/Legalize.scala2
-rw-r--r--src/main/scala/firrtl/passes/LowerTypes.scala2
-rw-r--r--src/main/scala/firrtl/passes/PadWidths.scala2
-rw-r--r--src/main/scala/firrtl/passes/RemoveEmpty.scala2
-rw-r--r--src/main/scala/firrtl/passes/RemoveValidIf.scala2
-rw-r--r--src/main/scala/firrtl/passes/SplitExpressions.scala2
-rw-r--r--src/main/scala/firrtl/passes/TrimIntervals.scala2
-rw-r--r--src/main/scala/firrtl/passes/VerilogModulusCleanup.scala2
-rw-r--r--src/main/scala/firrtl/passes/VerilogPrep.scala2
-rw-r--r--src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala2
-rw-r--r--src/main/scala/firrtl/passes/memlib/DecorateMems.scala2
-rw-r--r--src/main/scala/firrtl/passes/memlib/InferReadWrite.scala2
-rw-r--r--src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala2
-rw-r--r--src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala2
-rw-r--r--src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala2
-rw-r--r--src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala2
-rw-r--r--src/main/scala/firrtl/passes/wiring/WiringTransform.scala2
-rw-r--r--src/main/scala/firrtl/stage/FirrtlStage.scala4
-rw-r--r--src/main/scala/firrtl/stage/phases/AddCircuit.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/AddDefaults.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/AddImplicitEmitter.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/CatchExceptions.scala6
-rw-r--r--src/main/scala/firrtl/stage/phases/Checks.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/Compiler.scala2
-rw-r--r--src/main/scala/firrtl/stage/phases/DriverCompatibility.scala9
-rw-r--r--src/main/scala/firrtl/stage/phases/WriteEmitted.scala2
-rw-r--r--src/main/scala/firrtl/stage/transforms/WrappedTransform.scala14
-rw-r--r--src/main/scala/firrtl/transforms/BlackBoxSourceHelper.scala2
-rw-r--r--src/main/scala/firrtl/transforms/CheckCombLoops.scala2
-rw-r--r--src/main/scala/firrtl/transforms/CombineCats.scala2
-rw-r--r--src/main/scala/firrtl/transforms/ConstantPropagation.scala2
-rw-r--r--src/main/scala/firrtl/transforms/DeadCodeElimination.scala2
-rw-r--r--src/main/scala/firrtl/transforms/Dedup.scala2
-rw-r--r--src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala2
-rw-r--r--src/main/scala/firrtl/transforms/Flatten.scala2
-rw-r--r--src/main/scala/firrtl/transforms/FlattenRegUpdate.scala2
-rw-r--r--src/main/scala/firrtl/transforms/GroupComponents.scala2
-rw-r--r--src/main/scala/firrtl/transforms/InlineBitExtractions.scala2
-rw-r--r--src/main/scala/firrtl/transforms/InlineCasts.scala2
-rw-r--r--src/main/scala/firrtl/transforms/LegalizeClocks.scala2
-rw-r--r--src/main/scala/firrtl/transforms/PropagatePresetAnnotations.scala2
-rw-r--r--src/main/scala/firrtl/transforms/RemoveKeywordCollisions.scala2
-rw-r--r--src/main/scala/firrtl/transforms/RemoveReset.scala2
-rw-r--r--src/main/scala/firrtl/transforms/RemoveWires.scala2
-rw-r--r--src/main/scala/firrtl/transforms/RenameModules.scala2
-rw-r--r--src/main/scala/firrtl/transforms/ReplaceTruncatingArithmetic.scala2
-rw-r--r--src/main/scala/firrtl/transforms/SimplifyMems.scala2
-rw-r--r--src/main/scala/firrtl/transforms/TopWiring.scala2
-rw-r--r--src/main/scala/logger/phases/AddDefaults.scala2
-rw-r--r--src/main/scala/logger/phases/Checks.scala2
-rw-r--r--src/test/scala/firrtl/testutils/FirrtlSpec.scala2
-rw-r--r--src/test/scala/firrtl/testutils/PassTests.scala2
-rw-r--r--src/test/scala/firrtlTests/InferReadWriteSpec.scala2
-rw-r--r--src/test/scala/firrtlTests/options/PhaseManagerSpec.scala28
78 files changed, 151 insertions, 121 deletions
diff --git a/src/main/scala/firrtl/AddDescriptionNodes.scala b/src/main/scala/firrtl/AddDescriptionNodes.scala
index bd3412a4..9ba400c3 100644
--- a/src/main/scala/firrtl/AddDescriptionNodes.scala
+++ b/src/main/scala/firrtl/AddDescriptionNodes.scala
@@ -85,7 +85,7 @@ class AddDescriptionNodes extends Transform with DependencyAPIMigration with Pre
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def onStmt(compMap: Map[String, Seq[String]])(stmt: Statement): Statement = {
stmt.map(onStmt(compMap)) match {
diff --git a/src/main/scala/firrtl/Compiler.scala b/src/main/scala/firrtl/Compiler.scala
index f80825d4..06bd512e 100644
--- a/src/main/scala/firrtl/Compiler.scala
+++ b/src/main/scala/firrtl/Compiler.scala
@@ -238,7 +238,7 @@ trait Transform extends TransformLike[CircuitState] with DependencyAPI[Transform
private lazy val fullCompilerSet = new mutable.LinkedHashSet[Dependency[Transform]] ++ Forms.VerilogOptimized
- override def dependents: Seq[Dependency[Transform]] = {
+ override def optionalPrerequisiteOf: Seq[Dependency[Transform]] = {
val lowEmitters = Dependency[LowFirrtlEmitter] :: Dependency[VerilogEmitter] :: Dependency[MinimumVerilogEmitter] ::
Dependency[SystemVerilogEmitter] :: Nil
diff --git a/src/main/scala/firrtl/DependencyAPIMigration.scala b/src/main/scala/firrtl/DependencyAPIMigration.scala
index 8dabe849..6a5ff642 100644
--- a/src/main/scala/firrtl/DependencyAPIMigration.scala
+++ b/src/main/scala/firrtl/DependencyAPIMigration.scala
@@ -10,7 +10,7 @@ import firrtl.stage.TransformManager.TransformDependency
*
* - `prerequisites` are empty
* - `optionalPrerequisites` are empty
- * - `dependents` are empty
+ * - `optionalPrerequisiteOf` are empty
* - all transforms are invalidated
*
* For more information, see: https://bit.ly/2Voppre
@@ -31,7 +31,7 @@ trait DependencyAPIMigration { this: Transform =>
override def optionalPrerequisites: Seq[TransformDependency] = Seq.empty
- override def dependents: Seq[TransformDependency] = Seq.empty
+ override def optionalPrerequisiteOf: Seq[TransformDependency] = Seq.empty
override def invalidates(a: Transform): Boolean = true
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 459404c3..dcf1a1ad 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -182,7 +182,7 @@ class VerilogEmitter extends SeqTransform with Emitter {
override def prerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
val outputSuffix = ".v"
val tab = " "
diff --git a/src/main/scala/firrtl/analyses/GetNamespace.scala b/src/main/scala/firrtl/analyses/GetNamespace.scala
index a2aed3f1..040b550f 100644
--- a/src/main/scala/firrtl/analyses/GetNamespace.scala
+++ b/src/main/scala/firrtl/analyses/GetNamespace.scala
@@ -16,7 +16,7 @@ case class ModuleNamespaceAnnotation(namespace: Namespace) extends NoTargetAnnot
class GetNamespace extends Transform with DependencyAPIMigration with PreservesAll[Transform] {
override def prerequisites = Forms.LowForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.LowEmitters
+ override def optionalPrerequisiteOf = Forms.LowEmitters
def execute(state: CircuitState): CircuitState = {
val namespace = Namespace(state.circuit)
diff --git a/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala b/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala
index fe5090b2..5ba6e4fa 100644
--- a/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala
+++ b/src/main/scala/firrtl/annotations/transforms/EliminateTargetPaths.scala
@@ -47,7 +47,7 @@ class EliminateTargetPaths extends Transform with DependencyAPIMigration with Pr
override def prerequisites = Forms.MinimalHighForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Replaces old ofModules with new ofModules by calling dupMap methods
* Updates oldUsedOfModules, newUsedOfModules
diff --git a/src/main/scala/firrtl/checks/CheckResets.scala b/src/main/scala/firrtl/checks/CheckResets.scala
index 8ff13e6e..6442846c 100644
--- a/src/main/scala/firrtl/checks/CheckResets.scala
+++ b/src/main/scala/firrtl/checks/CheckResets.scala
@@ -37,7 +37,7 @@ class CheckResets extends Transform with DependencyAPIMigration with PreservesAl
override def optionalPrerequisites = Seq(Dependency[firrtl.transforms.CheckCombLoops])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
import CheckResets._
diff --git a/src/main/scala/firrtl/options/DependencyManager.scala b/src/main/scala/firrtl/options/DependencyManager.scala
index 537f87bd..910d44bb 100644
--- a/src/main/scala/firrtl/options/DependencyManager.scala
+++ b/src/main/scala/firrtl/options/DependencyManager.scala
@@ -22,10 +22,11 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
override def prerequisites = currentState
- override def dependents = Seq.empty
override def optionalPrerequisites = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
+
override def invalidates(a: B): Boolean = (_currentState &~ _targets)(oToD(a))
/** Requested [[firrtl.options.TransformLike TransformLike]]s that should be run. Internally, this will be converted to
@@ -121,11 +122,11 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
}
/** A directed graph consisting of prerequisites derived from only those transforms which are supposed to run. This
- * pulls in dependents for transforms which are not in the target set.
+ * pulls in optionalPrerequisiteOf for transforms which are not in the target set.
*/
- private lazy val dependentsGraph: DiGraph[B] = {
+ private lazy val optionalPrerequisiteOfGraph: DiGraph[B] = {
val v = new LinkedHashSet() ++ prerequisiteGraph.getVertices
- DiGraph(new LinkedHashMap() ++ v.map(vv => vv -> (v & (vv._dependents).map(dToO)))).reverse
+ DiGraph(new LinkedHashMap() ++ v.map(vv => vv -> (v & (vv._optionalPrerequisiteOf.toSet).map(dToO)))).reverse
}
/** A directed graph of *optional* prerequisites. Each optional prerequisite is promoted to a full prerequisite if the
@@ -139,11 +140,11 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
/** A directed graph consisting of prerequisites derived from ALL targets. This is necessary for defining targets for
* [[DependencyManager]] sub-problems.
*/
- private lazy val otherDependents: DiGraph[B] = {
+ private lazy val otherPrerequisites: DiGraph[B] = {
val edges = {
val x = new LinkedHashMap ++ _targets
.map(dependencyToObject)
- .map{ a => a -> prerequisiteGraph.getVertices.filter(a._dependents(_)) }
+ .map{ a => a -> prerequisiteGraph.getVertices.filter(a._optionalPrerequisiteOf(_)) }
x
.values
.reduce(_ ++ _)
@@ -152,8 +153,10 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
DiGraph(edges).reverse
}
- /** A directed graph consisting of all prerequisites, including prerequisites derived from dependents */
- lazy val dependencyGraph: DiGraph[B] = prerequisiteGraph + dependentsGraph + optionalPrerequisitesGraph
+ /** A directed graph consisting of all prerequisites, including prerequisites derived from optionalPrerequisites and
+ * optionalPrerequisiteOf
+ */
+ lazy val dependencyGraph: DiGraph[B] = prerequisiteGraph + optionalPrerequisiteOfGraph + optionalPrerequisitesGraph
/** A directed graph consisting of invalidation edges */
lazy val invalidateGraph: DiGraph[B] = {
@@ -178,9 +181,9 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
/** An ordering of [[firrtl.options.TransformLike TransformLike]]s that causes the requested [[DependencyManager.targets
* targets]] to be executed starting from the [[DependencyManager.currentState currentState]]. This ordering respects
- * prerequisites, dependents, and invalidates of all constituent [[firrtl.options.TransformLike TransformLike]]s.
- * This uses an algorithm that attempts to reduce the number of re-lowerings due to invalidations. Re-lowerings are
- * implemented as new [[DependencyManager]]s.
+ * prerequisites, optionalPrerequisites, optionalPrerequisiteOf, and invalidates of all constituent
+ * [[firrtl.options.TransformLike TransformLike]]s. This uses an algorithm that attempts to reduce the number of
+ * re-lowerings due to invalidations. Re-lowerings are implemented as new [[DependencyManager]]s.
* @throws DependencyManagerException if a cycle exists in either the [[DependencyManager.dependencyGraph
* dependencyGraph]] or the [[DependencyManager.invalidateGraph invalidateGraph]].
*/
@@ -199,7 +202,7 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
v.map(vv => vv -> (new LinkedHashSet() ++ (dependencyGraph.getEdges(vv).toSeq.sortWith(cmp))))
}
- cyclePossible("prerequisites/dependents", dependencyGraph) {
+ cyclePossible("prerequisites", dependencyGraph) {
DiGraph(edges)
.linearize
.reverse
@@ -209,10 +212,9 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
/* [todo] Seq is inefficient here, but Array has ClassTag problems. Use something else? */
val (s, l) = sorted.foldLeft((_currentState, Seq[B]())){ case ((state, out), in) =>
- /* The prerequisites are both prerequisites AND dependents. */
val prereqs = in._prerequisites ++
dependencyGraph.getEdges(in).toSeq.map(oToD) ++
- otherDependents.getEdges(in).toSeq.map(oToD)
+ otherPrerequisites.getEdges(in).toSeq.map(oToD)
val preprocessing: Option[B] = {
if ((prereqs -- state).nonEmpty) { Some(this.copy(prereqs.toSeq, state.toSeq)) }
else { None }
@@ -267,7 +269,8 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
/** Get a name of some [[firrtl.options.TransformLike TransformLike]] */
private def transformName(transform: B, suffix: String = ""): String = s""""${transform.name}$suffix""""
- /** Convert all prerequisites, dependents, and invalidates to a Graphviz representation.
+ /** Convert all prerequisites, optionalPrerequisites, optionalPrerequisiteOf, and invalidates to a Graphviz
+ * representation.
* @param file the name of the output file
*/
def dependenciesToGraphviz: String = {
@@ -291,14 +294,14 @@ trait DependencyManager[A, B <: TransformLike[A] with DependencyAPI[B]] extends
val connections =
Seq( (prerequisiteGraph, "edge []"),
- (dependentsGraph, """edge [style=bold color="#4292c6"]"""),
+ (optionalPrerequisiteOfGraph, """edge [style=bold color="#4292c6"]"""),
(invalidateGraph, """edge [minlen=2 style=dashed constraint=false color="#fb6a4a"]"""),
(optionalPrerequisitesGraph, """edge [style=dotted color="#a1d99b"]""") )
.flatMap{ case (a, b) => toGraphviz(a, b) }
.mkString("\n")
val nodes =
- (prerequisiteGraph + dependentsGraph + invalidateGraph + otherDependents)
+ (prerequisiteGraph + optionalPrerequisiteOfGraph + invalidateGraph + otherPrerequisites)
.getVertices
.map(v => s"""${transformName(v)} [label="${v.name}"]""")
diff --git a/src/main/scala/firrtl/options/Phase.scala b/src/main/scala/firrtl/options/Phase.scala
index 847a4cf2..6dd5d969 100644
--- a/src/main/scala/firrtl/options/Phase.scala
+++ b/src/main/scala/firrtl/options/Phase.scala
@@ -106,11 +106,12 @@ trait IdentityLike[A] { this: TransformLike[A] =>
* "transforms")
*
* This trait forms the basis of the Dependency API of the Chisel/FIRRTL Hardware Compiler Framework. Dependencies are
- * defined in terms of prerequisistes, dependents, and invalidates. A prerequisite is a transform that must run before
- * this transform. A dependent is a transform that must run ''after'' this transform. (This can be viewed as a means of
- * injecting a prerequisite into some other transform.) Finally, invalidates define the set of transforms whose effects
- * this transform undos/invalidates. (Invalidation then implies that a transform that is invalidated by this transform
- * and needed by another transform will need to be re-run.)
+ * defined in terms of prerequisistes, optional prerequisites, optional prerequisites of, and invalidates. A
+ * prerequisite is a transform that must run before this transform. An optional prerequisites is transform that should
+ * run before this transform if the other transform is a target (or the prerequisite of a target). An optional
+ * prerequisite of is an optional prerequisite injected into another transform. Finally, invalidates define the set of
+ * transforms whose effects this transform undos/invalidates. (Invalidation then implies that a transform that is
+ * invalidated by this transform and needed by another transform will need to be re-run.)
*
* This Dependency API only defines dependencies. A concrete [[DependencyManager]] is expected to be used to statically
* resolve a linear ordering of transforms that satisfies dependency requirements.
@@ -152,8 +153,25 @@ trait DependencyAPI[A <: DependencyAPI[A]] { this: TransformLike[_] =>
* @see [[firrtl.passes.CheckTypes]] for an example of an optional checking [[firrtl.Transform]]
* $seqNote
*/
+ @deprecated(
+ "Due to confusion, 'dependents' is being renamed to 'optionalPrerequisiteOf'. Override the latter instead.",
+ "FIRRTL 1.3"
+ )
def dependents: Seq[Dependency[A]] = Seq.empty
- private[options] lazy val _dependents: LinkedHashSet[Dependency[A]] = new LinkedHashSet() ++ dependents.toSet
+
+ /** A sequence of transforms to add this transform as an `optionalPrerequisite`. The use of `optionalPrerequisiteOf`
+ * enables the transform declaring them to always run before some other transforms. However, declaring
+ * `optionalPrerequisiteOf` will not result in the sequence of transforms executing.
+ *
+ * This is useful for providing an ordering constraint to guarantee that other transforms (e.g., emitters) will not
+ * be scheduled before you.
+ *
+ * @note This method **will not** result in the listed transforms running. If you want to add multiple transforms at
+ * once, you should use a `DependencyManager` with multiple targets.
+ */
+ def optionalPrerequisiteOf: Seq[Dependency[A]] = dependents
+ private[options] lazy val _optionalPrerequisiteOf: LinkedHashSet[Dependency[A]] =
+ new LinkedHashSet() ++ optionalPrerequisiteOf.toSet
/** A function that, given *another* transform (parameter `a`) will return true if this transform invalidates/undos the
* effects of the *other* transform (parameter `a`).
diff --git a/src/main/scala/firrtl/options/phases/AddDefaults.scala b/src/main/scala/firrtl/options/phases/AddDefaults.scala
index 034c502f..79089194 100644
--- a/src/main/scala/firrtl/options/phases/AddDefaults.scala
+++ b/src/main/scala/firrtl/options/phases/AddDefaults.scala
@@ -14,7 +14,7 @@ class AddDefaults extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[GetIncludes], Dependency[ConvertLegacyAnnotations])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def transform(annotations: AnnotationSeq): AnnotationSeq = {
val td = annotations.collectFirst{ case a: TargetDirAnnotation => a}.isEmpty
diff --git a/src/main/scala/firrtl/options/phases/Checks.scala b/src/main/scala/firrtl/options/phases/Checks.scala
index 69cbc7ed..ed2f1a28 100644
--- a/src/main/scala/firrtl/options/phases/Checks.scala
+++ b/src/main/scala/firrtl/options/phases/Checks.scala
@@ -14,7 +14,7 @@ class Checks extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[GetIncludes], Dependency[ConvertLegacyAnnotations], Dependency[AddDefaults])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Validate an [[AnnotationSeq]] for [[StageOptions]]
* @throws OptionsException if annotations are invalid
diff --git a/src/main/scala/firrtl/options/phases/ConvertLegacyAnnotations.scala b/src/main/scala/firrtl/options/phases/ConvertLegacyAnnotations.scala
index 7611f66f..1eb4c2d9 100644
--- a/src/main/scala/firrtl/options/phases/ConvertLegacyAnnotations.scala
+++ b/src/main/scala/firrtl/options/phases/ConvertLegacyAnnotations.scala
@@ -11,7 +11,7 @@ class ConvertLegacyAnnotations extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[GetIncludes])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def transform(annotations: AnnotationSeq): AnnotationSeq = LegacyAnnotation.convertLegacyAnnos(annotations)
diff --git a/src/main/scala/firrtl/options/phases/DeletedWrapper.scala b/src/main/scala/firrtl/options/phases/DeletedWrapper.scala
index 4a112172..76ff21ad 100644
--- a/src/main/scala/firrtl/options/phases/DeletedWrapper.scala
+++ b/src/main/scala/firrtl/options/phases/DeletedWrapper.scala
@@ -17,7 +17,7 @@ class DeletedWrapper(p: Phase) extends Phase with Translator[AnnotationSeq, (Ann
override def prerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
override lazy val name: String = p.name
diff --git a/src/main/scala/firrtl/options/phases/GetIncludes.scala b/src/main/scala/firrtl/options/phases/GetIncludes.scala
index 3b26795f..86e451eb 100644
--- a/src/main/scala/firrtl/options/phases/GetIncludes.scala
+++ b/src/main/scala/firrtl/options/phases/GetIncludes.scala
@@ -20,7 +20,7 @@ class GetIncludes extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Read all [[annotations.Annotation]] from a file in JSON or YAML format
* @param filename a JSON or YAML file of [[annotations.Annotation]]
diff --git a/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala b/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala
index 79769a81..2d226de1 100644
--- a/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala
+++ b/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala
@@ -20,7 +20,7 @@ class WriteOutputAnnotations extends Phase with PreservesAll[Phase] {
Dependency[AddDefaults],
Dependency[Checks] )
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Write the input [[AnnotationSeq]] to a fie. */
def transform(annotations: AnnotationSeq): AnnotationSeq = {
diff --git a/src/main/scala/firrtl/passes/CheckChirrtl.scala b/src/main/scala/firrtl/passes/CheckChirrtl.scala
index 08c127da..355f728e 100644
--- a/src/main/scala/firrtl/passes/CheckChirrtl.scala
+++ b/src/main/scala/firrtl/passes/CheckChirrtl.scala
@@ -8,7 +8,7 @@ import firrtl.options.{Dependency, PreservesAll}
object CheckChirrtl extends Pass with CheckHighFormLike with PreservesAll[Transform] {
- override val dependents = firrtl.stage.Forms.ChirrtlForm ++
+ override val optionalPrerequisiteOf = firrtl.stage.Forms.ChirrtlForm ++
Seq( Dependency(CInferTypes),
Dependency(CInferMDir),
Dependency(RemoveCHIRRTL) )
diff --git a/src/main/scala/firrtl/passes/CheckFlows.scala b/src/main/scala/firrtl/passes/CheckFlows.scala
index bd637ff0..3fdb3443 100644
--- a/src/main/scala/firrtl/passes/CheckFlows.scala
+++ b/src/main/scala/firrtl/passes/CheckFlows.scala
@@ -12,7 +12,7 @@ object CheckFlows extends Pass with PreservesAll[Transform] {
override def prerequisites = Dependency(passes.ResolveFlows) +: firrtl.stage.Forms.WorkingIR
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency[passes.InferBinaryPoints],
Dependency[passes.TrimIntervals],
Dependency[passes.InferWidths],
diff --git a/src/main/scala/firrtl/passes/CheckHighForm.scala b/src/main/scala/firrtl/passes/CheckHighForm.scala
index 51b9c6f0..25bfc20b 100644
--- a/src/main/scala/firrtl/passes/CheckHighForm.scala
+++ b/src/main/scala/firrtl/passes/CheckHighForm.scala
@@ -285,7 +285,7 @@ object CheckHighForm extends Pass with CheckHighFormLike with PreservesAll[Trans
override def prerequisites = firrtl.stage.Forms.WorkingIR
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency(passes.ResolveKinds),
Dependency(passes.InferTypes),
Dependency(passes.Uniquify),
diff --git a/src/main/scala/firrtl/passes/CheckTypes.scala b/src/main/scala/firrtl/passes/CheckTypes.scala
index eecc692e..702e7355 100644
--- a/src/main/scala/firrtl/passes/CheckTypes.scala
+++ b/src/main/scala/firrtl/passes/CheckTypes.scala
@@ -15,7 +15,7 @@ object CheckTypes extends Pass with PreservesAll[Transform] {
override def prerequisites = Dependency(InferTypes) +: firrtl.stage.Forms.WorkingIR
- override def dependents =
+ override def optionalPrerequisiteOf =
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 6761bc7d..3c7ad0a8 100644
--- a/src/main/scala/firrtl/passes/CheckWidths.scala
+++ b/src/main/scala/firrtl/passes/CheckWidths.scala
@@ -15,7 +15,7 @@ object CheckWidths extends Pass with PreservesAll[Transform] {
override def prerequisites = Dependency[passes.InferWidths] +: firrtl.stage.Forms.WorkingIR
- override def dependents = Seq(Dependency[transforms.InferResets])
+ override def optionalPrerequisiteOf = 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 100b3187..567cf5f1 100644
--- a/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
+++ b/src/main/scala/firrtl/passes/CommonSubexpressionElimination.scala
@@ -16,7 +16,7 @@ object CommonSubexpressionElimination extends Pass with PreservesAll[Transform]
Dependency(firrtl.passes.SplitExpressions),
Dependency[firrtl.transforms.CombineCats] )
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/InferBinaryPoints.scala b/src/main/scala/firrtl/passes/InferBinaryPoints.scala
index ab08926c..a3e832f0 100644
--- a/src/main/scala/firrtl/passes/InferBinaryPoints.scala
+++ b/src/main/scala/firrtl/passes/InferBinaryPoints.scala
@@ -18,7 +18,7 @@ class InferBinaryPoints extends Pass with PreservesAll[Transform] {
Dependency(Uniquify),
Dependency(ResolveFlows) )
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
private val constraintSolver = new ConstraintSolver()
diff --git a/src/main/scala/firrtl/passes/Inline.scala b/src/main/scala/firrtl/passes/Inline.scala
index 047703da..ec674c19 100644
--- a/src/main/scala/firrtl/passes/Inline.scala
+++ b/src/main/scala/firrtl/passes/Inline.scala
@@ -28,7 +28,7 @@ class InlineInstances extends Transform with DependencyAPIMigration with Registe
override def prerequisites = Forms.LowForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.LowEmitters
+ override def optionalPrerequisiteOf = Forms.LowEmitters
override def invalidates(a: Transform): Boolean = a == ResolveKinds
diff --git a/src/main/scala/firrtl/passes/Legalize.scala b/src/main/scala/firrtl/passes/Legalize.scala
index 6f0e23f1..7a59605a 100644
--- a/src/main/scala/firrtl/passes/Legalize.scala
+++ b/src/main/scala/firrtl/passes/Legalize.scala
@@ -16,7 +16,7 @@ object Legalize extends Pass with PreservesAll[Transform] {
override def optionalPrerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = 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 8168b665..4a87ff8b 100644
--- a/src/main/scala/firrtl/passes/LowerTypes.scala
+++ b/src/main/scala/firrtl/passes/LowerTypes.scala
@@ -26,7 +26,7 @@ object LowerTypes extends Transform with DependencyAPIMigration {
override def prerequisites = firrtl.stage.Forms.MidForm
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = 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 22dde436..ca5c2544 100644
--- a/src/main/scala/firrtl/passes/PadWidths.scala
+++ b/src/main/scala/firrtl/passes/PadWidths.scala
@@ -21,7 +21,7 @@ object PadWidths extends Pass {
override def optionalPrerequisites = Seq(Dependency[firrtl.transforms.ConstantPropagation])
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency(firrtl.passes.memlib.VerilogMemDelays),
Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/RemoveEmpty.scala b/src/main/scala/firrtl/passes/RemoveEmpty.scala
index 5951b5c0..2407acb6 100644
--- a/src/main/scala/firrtl/passes/RemoveEmpty.scala
+++ b/src/main/scala/firrtl/passes/RemoveEmpty.scala
@@ -11,7 +11,7 @@ object RemoveEmpty extends Pass with DependencyAPIMigration with PreservesAll[Tr
override def prerequisites = Seq.empty
override def optionalPrerequisites = Forms.LowFormOptimized
- override def dependents = Forms.ChirrtlEmitters
+ override def optionalPrerequisiteOf = Forms.ChirrtlEmitters
private def onModule(m: DefModule): DefModule = {
m match {
diff --git a/src/main/scala/firrtl/passes/RemoveValidIf.scala b/src/main/scala/firrtl/passes/RemoveValidIf.scala
index 70a575ad..895cb10f 100644
--- a/src/main/scala/firrtl/passes/RemoveValidIf.scala
+++ b/src/main/scala/firrtl/passes/RemoveValidIf.scala
@@ -31,7 +31,7 @@ object RemoveValidIf extends Pass {
override def prerequisites = firrtl.stage.Forms.LowForm
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/SplitExpressions.scala b/src/main/scala/firrtl/passes/SplitExpressions.scala
index 808f9f0d..7124111b 100644
--- a/src/main/scala/firrtl/passes/SplitExpressions.scala
+++ b/src/main/scala/firrtl/passes/SplitExpressions.scala
@@ -20,7 +20,7 @@ object SplitExpressions extends Pass with PreservesAll[Transform] {
Seq( Dependency(firrtl.passes.RemoveValidIf),
Dependency(firrtl.passes.memlib.VerilogMemDelays) )
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/TrimIntervals.scala b/src/main/scala/firrtl/passes/TrimIntervals.scala
index 65a43787..50da2323 100644
--- a/src/main/scala/firrtl/passes/TrimIntervals.scala
+++ b/src/main/scala/firrtl/passes/TrimIntervals.scala
@@ -29,7 +29,7 @@ class TrimIntervals extends Pass with PreservesAll[Transform] {
Dependency(ResolveFlows),
Dependency[InferBinaryPoints] )
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def run(c: Circuit): Circuit = {
// Open -> closed
diff --git a/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala b/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala
index f063fccf..6debaf93 100644
--- a/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala
+++ b/src/main/scala/firrtl/passes/VerilogModulusCleanup.scala
@@ -37,7 +37,7 @@ object VerilogModulusCleanup extends Pass with PreservesAll[Transform] {
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = 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 6733e9d5..9f5de84e 100644
--- a/src/main/scala/firrtl/passes/VerilogPrep.scala
+++ b/src/main/scala/firrtl/passes/VerilogPrep.scala
@@ -33,7 +33,7 @@ object VerilogPrep extends Pass with PreservesAll[Transform] {
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
type AttachSourceMap = Map[WrappedExpression, Expression]
diff --git a/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala b/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala
index b097d748..e6617857 100644
--- a/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala
+++ b/src/main/scala/firrtl/passes/clocklist/ClockListTransform.scala
@@ -55,7 +55,7 @@ class ClockListTransform extends Transform with DependencyAPIMigration with Regi
override def prerequisites = Forms.LowForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.LowEmitters
+ override def optionalPrerequisiteOf = 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 48e8041a..7d537387 100644
--- a/src/main/scala/firrtl/passes/memlib/DecorateMems.scala
+++ b/src/main/scala/firrtl/passes/memlib/DecorateMems.scala
@@ -13,7 +13,7 @@ class CreateMemoryAnnotations(reader: Option[YamlFileReader]) extends Transform
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
def execute(state: CircuitState): CircuitState = reader match {
case None => state
diff --git a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
index 0de2f46d..ddcf9483 100644
--- a/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
+++ b/src/main/scala/firrtl/passes/memlib/InferReadWrite.scala
@@ -152,7 +152,7 @@ class InferReadWrite extends Transform
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
val options = Seq(
new ShellOption[Unit](
diff --git a/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala b/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala
index abc145f0..f14a793e 100644
--- a/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala
+++ b/src/main/scala/firrtl/passes/memlib/ReplaceMemMacros.scala
@@ -30,7 +30,7 @@ class ReplaceMemMacros(writer: ConfWriter) extends Transform with DependencyAPIM
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
/** Return true if mask granularity is per bit, false if per byte or unspecified
*/
diff --git a/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala b/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala
index f5030188..fe470ef9 100644
--- a/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala
+++ b/src/main/scala/firrtl/passes/memlib/ReplaceMemTransform.scala
@@ -107,7 +107,7 @@ class ReplSeqMem extends Transform with HasShellOptions with DependencyAPIMigrat
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = 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 007aa330..e64f6cd9 100644
--- a/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
+++ b/src/main/scala/firrtl/passes/memlib/ResolveMemoryReference.scala
@@ -20,7 +20,7 @@ class ResolveMemoryReference extends Transform with DependencyAPIMigration with
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = 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 3da4c391..131a198b 100644
--- a/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala
+++ b/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala
@@ -170,7 +170,7 @@ object VerilogMemDelays extends Pass {
override def prerequisites = firrtl.stage.Forms.LowForm :+ Dependency(firrtl.passes.RemoveValidIf)
- override val dependents =
+ override val optionalPrerequisiteOf =
Seq( Dependency[VerilogEmitter],
Dependency[SystemVerilogEmitter] )
diff --git a/src/main/scala/firrtl/passes/wiring/WiringTransform.scala b/src/main/scala/firrtl/passes/wiring/WiringTransform.scala
index 2a574f47..20fb1215 100644
--- a/src/main/scala/firrtl/passes/wiring/WiringTransform.scala
+++ b/src/main/scala/firrtl/passes/wiring/WiringTransform.scala
@@ -42,7 +42,7 @@ class WiringTransform extends Transform with DependencyAPIMigration {
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
private val invalidates = Forms.VerilogOptimized.toSet -- Forms.MinimalHighForm
override def invalidates(a: Transform): Boolean = invalidates(Dependency.fromTransform(a))
diff --git a/src/main/scala/firrtl/stage/FirrtlStage.scala b/src/main/scala/firrtl/stage/FirrtlStage.scala
index 606a888d..45ea5194 100644
--- a/src/main/scala/firrtl/stage/FirrtlStage.scala
+++ b/src/main/scala/firrtl/stage/FirrtlStage.scala
@@ -21,10 +21,10 @@ class FirrtlStage extends Stage {
override def prerequisites = phase.prerequisites
- override def dependents = phase.dependents
-
override def optionalPrerequisites = phase.optionalPrerequisites
+ override def optionalPrerequisiteOf = phase.optionalPrerequisiteOf
+
override def invalidates(a: Phase): Boolean = phase.invalidates(a)
val shell: Shell = new Shell("firrtl") with FirrtlCli
diff --git a/src/main/scala/firrtl/stage/phases/AddCircuit.scala b/src/main/scala/firrtl/stage/phases/AddCircuit.scala
index 5f1e381e..8b0982f3 100644
--- a/src/main/scala/firrtl/stage/phases/AddCircuit.scala
+++ b/src/main/scala/firrtl/stage/phases/AddCircuit.scala
@@ -29,7 +29,7 @@ class AddCircuit extends Phase with PreservesAll[Phase] {
override val prerequisites = Seq(Dependency[AddDefaults], Dependency[Checks])
- override val dependents = Seq.empty
+ override val optionalPrerequisiteOf = Seq.empty
/** Extract the info mode from an [[AnnotationSeq]] or use the default info mode if no annotation exists
* @param annotations some annotations
diff --git a/src/main/scala/firrtl/stage/phases/AddDefaults.scala b/src/main/scala/firrtl/stage/phases/AddDefaults.scala
index ed504a49..fade119c 100644
--- a/src/main/scala/firrtl/stage/phases/AddDefaults.scala
+++ b/src/main/scala/firrtl/stage/phases/AddDefaults.scala
@@ -14,7 +14,7 @@ class AddDefaults extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Append any missing default annotations to an annotation sequence */
def transform(annotations: AnnotationSeq): AnnotationSeq = {
diff --git a/src/main/scala/firrtl/stage/phases/AddImplicitEmitter.scala b/src/main/scala/firrtl/stage/phases/AddImplicitEmitter.scala
index ff3ec450..632ed741 100644
--- a/src/main/scala/firrtl/stage/phases/AddImplicitEmitter.scala
+++ b/src/main/scala/firrtl/stage/phases/AddImplicitEmitter.scala
@@ -13,7 +13,7 @@ class AddImplicitEmitter extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[AddDefaults])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def transform(annos: AnnotationSeq): AnnotationSeq = {
val emitter = annos.collectFirst{ case a: EmitAnnotation => a }
diff --git a/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala b/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala
index 4eee8f70..8f35fe0c 100644
--- a/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala
+++ b/src/main/scala/firrtl/stage/phases/AddImplicitOutputFile.scala
@@ -24,7 +24,7 @@ class AddImplicitOutputFile extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[AddCircuit])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Add an [[OutputFileAnnotation]] to an [[AnnotationSeq]] */
def transform(annotations: AnnotationSeq): AnnotationSeq =
diff --git a/src/main/scala/firrtl/stage/phases/CatchExceptions.scala b/src/main/scala/firrtl/stage/phases/CatchExceptions.scala
index b93b9da8..f65ed481 100644
--- a/src/main/scala/firrtl/stage/phases/CatchExceptions.scala
+++ b/src/main/scala/firrtl/stage/phases/CatchExceptions.scala
@@ -13,8 +13,12 @@ import scala.util.control.ControlThrowable
class CatchExceptions(val underlying: Phase) extends Phase {
override final def prerequisites = underlying.prerequisites
- override final def optionalPrerequisites = underlying.optionalPrerequisites
+ @deprecated(
+ "Due to confusion, 'dependents' is being renamed to 'optionalPrerequisiteOf'. Override the latter instead.",
+ "FIRRTL 1.3"
+ )
override final def dependents = underlying.dependents
+ override final def optionalPrerequisiteOf = underlying.optionalPrerequisiteOf
override final def invalidates(a: Phase): Boolean = underlying.invalidates(a)
override final lazy val name = underlying.name
diff --git a/src/main/scala/firrtl/stage/phases/Checks.scala b/src/main/scala/firrtl/stage/phases/Checks.scala
index ebf4c04f..fdab8d61 100644
--- a/src/main/scala/firrtl/stage/phases/Checks.scala
+++ b/src/main/scala/firrtl/stage/phases/Checks.scala
@@ -20,7 +20,7 @@ class Checks extends Phase with PreservesAll[Phase] {
override val prerequisites = Seq(Dependency[AddDefaults], Dependency[AddImplicitEmitter])
- override val dependents = Seq.empty
+ override val optionalPrerequisiteOf = Seq.empty
/** Determine if annotations are sane
*
diff --git a/src/main/scala/firrtl/stage/phases/Compiler.scala b/src/main/scala/firrtl/stage/phases/Compiler.scala
index 3c555b85..6d3a9423 100644
--- a/src/main/scala/firrtl/stage/phases/Compiler.scala
+++ b/src/main/scala/firrtl/stage/phases/Compiler.scala
@@ -51,7 +51,7 @@ class Compiler extends Phase with Translator[AnnotationSeq, Seq[CompilerRun]] wi
Dependency[AddCircuit],
Dependency[AddImplicitOutputFile])
- override def dependents = Seq(Dependency[WriteEmitted])
+ override def optionalPrerequisiteOf = Seq(Dependency[WriteEmitted])
/** Convert an [[AnnotationSeq]] into a sequence of compiler runs. */
protected def aToB(a: AnnotationSeq): Seq[CompilerRun] = {
diff --git a/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala b/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala
index cc93d7ac..7ac88d53 100644
--- a/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala
+++ b/src/main/scala/firrtl/stage/phases/DriverCompatibility.scala
@@ -126,7 +126,7 @@ object DriverCompatibility {
override def prerequisites = Seq(Dependency[AddImplicitFirrtlFile])
- override def dependents = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
+ override def optionalPrerequisiteOf = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
/** Try to add an [[firrtl.options.InputAnnotationFileAnnotation InputAnnotationFileAnnotation]] implicitly specified by
* an [[AnnotationSeq]]. */
@@ -165,7 +165,8 @@ object DriverCompatibility {
override def prerequisites = Seq.empty
- override def dependents = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
+ override def optionalPrerequisiteOf = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
+
/** Try to add a [[FirrtlFileAnnotation]] implicitly specified by an [[AnnotationSeq]]. */
def transform(annotations: AnnotationSeq): AnnotationSeq = {
@@ -196,7 +197,7 @@ object DriverCompatibility {
override def prerequisites = Seq.empty
- override def dependents = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
+ override def optionalPrerequisiteOf = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
/** Add one [[EmitAnnotation]] foreach [[CompilerAnnotation]]. */
def transform(annotations: AnnotationSeq): AnnotationSeq = {
@@ -222,7 +223,7 @@ object DriverCompatibility {
override def prerequisites = Seq(Dependency[AddImplicitFirrtlFile])
- override def dependents = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
+ override def optionalPrerequisiteOf = Seq(Dependency[FirrtlPhase], Dependency[FirrtlStage])
/** Add an [[OutputFileAnnotation]] derived from a [[TopNameAnnotation]] if needed. */
def transform(annotations: AnnotationSeq): AnnotationSeq = {
diff --git a/src/main/scala/firrtl/stage/phases/WriteEmitted.scala b/src/main/scala/firrtl/stage/phases/WriteEmitted.scala
index 3fcc214c..22ced954 100644
--- a/src/main/scala/firrtl/stage/phases/WriteEmitted.scala
+++ b/src/main/scala/firrtl/stage/phases/WriteEmitted.scala
@@ -28,7 +28,7 @@ class WriteEmitted extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Write any [[EmittedAnnotation]]s in an [[AnnotationSeq]] to files. Written [[EmittedAnnotation]]s are deleted. */
def transform(annotations: AnnotationSeq): AnnotationSeq = {
diff --git a/src/main/scala/firrtl/stage/transforms/WrappedTransform.scala b/src/main/scala/firrtl/stage/transforms/WrappedTransform.scala
index 6cdb9038..8f1ed3d3 100644
--- a/src/main/scala/firrtl/stage/transforms/WrappedTransform.scala
+++ b/src/main/scala/firrtl/stage/transforms/WrappedTransform.scala
@@ -23,11 +23,15 @@ trait WrappedTransform { this: Transform =>
case _ => underlying
}
- override final def inputForm = underlying.inputForm
- override final def outputForm = underlying.outputForm
- override final def prerequisites = underlying.prerequisites
- override final def optionalPrerequisites = underlying.optionalPrerequisites
- override final def dependents = underlying.dependents
+ override def inputForm = underlying.inputForm
+ override def outputForm = underlying.outputForm
+ override def prerequisites = underlying.prerequisites
+ @deprecated(
+ "Due to confusion, 'dependents' is being renamed to 'optionalPrerequisiteOf'. Override the latter instead.",
+ "FIRRTL 1.3"
+ )
+ override def dependents = underlying.dependents
+ override def optionalPrerequisiteOf = underlying.optionalPrerequisiteOf
override final def invalidates(b: Transform): Boolean = underlying.invalidates(b)
override final lazy val name = underlying.name
diff --git a/src/main/scala/firrtl/transforms/BlackBoxSourceHelper.scala b/src/main/scala/firrtl/transforms/BlackBoxSourceHelper.scala
index f922a038..322634dd 100644
--- a/src/main/scala/firrtl/transforms/BlackBoxSourceHelper.scala
+++ b/src/main/scala/firrtl/transforms/BlackBoxSourceHelper.scala
@@ -63,7 +63,7 @@ class BlackBoxSourceHelper extends Transform with DependencyAPIMigration with Pr
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Collect BlackBoxHelperAnnos and and find the target dir if specified
* @param annos a list of generic annotations for this transform
diff --git a/src/main/scala/firrtl/transforms/CheckCombLoops.scala b/src/main/scala/firrtl/transforms/CheckCombLoops.scala
index 2660c848..8a1cda66 100644
--- a/src/main/scala/firrtl/transforms/CheckCombLoops.scala
+++ b/src/main/scala/firrtl/transforms/CheckCombLoops.scala
@@ -106,7 +106,7 @@ class CheckCombLoops extends Transform
override def optionalPrerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
import CheckCombLoops._
diff --git a/src/main/scala/firrtl/transforms/CombineCats.scala b/src/main/scala/firrtl/transforms/CombineCats.scala
index 4f678826..009f52ff 100644
--- a/src/main/scala/firrtl/transforms/CombineCats.scala
+++ b/src/main/scala/firrtl/transforms/CombineCats.scala
@@ -63,7 +63,7 @@ class CombineCats extends Transform with DependencyAPIMigration with PreservesAl
override def optionalPrerequisites = Seq.empty
- override def dependents = Seq(
+ override def optionalPrerequisiteOf = Seq(
Dependency[SystemVerilogEmitter],
Dependency[VerilogEmitter] )
diff --git a/src/main/scala/firrtl/transforms/ConstantPropagation.scala b/src/main/scala/firrtl/transforms/ConstantPropagation.scala
index b97ce94b..0b21df21 100644
--- a/src/main/scala/firrtl/transforms/ConstantPropagation.scala
+++ b/src/main/scala/firrtl/transforms/ConstantPropagation.scala
@@ -109,7 +109,7 @@ class ConstantPropagation extends Transform with DependencyAPIMigration with Res
override def optionalPrerequisites = Seq.empty
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency(firrtl.passes.memlib.VerilogMemDelays),
Dependency(firrtl.passes.SplitExpressions),
Dependency[SystemVerilogEmitter],
diff --git a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
index 0262f535..3ed4dfd9 100644
--- a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
+++ b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
@@ -45,7 +45,7 @@ class DeadCodeElimination extends Transform
override def optionalPrerequisites = Seq.empty
- override def dependents =
+ override def optionalPrerequisiteOf =
Seq( Dependency[firrtl.transforms.BlackBoxSourceHelper],
Dependency[firrtl.transforms.ReplaceTruncatingArithmetic],
Dependency[firrtl.transforms.FlattenRegUpdate],
diff --git a/src/main/scala/firrtl/transforms/Dedup.scala b/src/main/scala/firrtl/transforms/Dedup.scala
index 62f9c3f5..d7769820 100644
--- a/src/main/scala/firrtl/transforms/Dedup.scala
+++ b/src/main/scala/firrtl/transforms/Dedup.scala
@@ -43,7 +43,7 @@ class DedupModules extends Transform with DependencyAPIMigration with PreservesA
override def prerequisites = firrtl.stage.Forms.Resolved
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Deduplicate a Circuit
* @param state Input Firrtl AST
diff --git a/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala b/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala
index 6a7e75e0..f6990082 100644
--- a/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala
+++ b/src/main/scala/firrtl/transforms/FixAddingNegativeLiteralsTransform.scala
@@ -113,7 +113,7 @@ class FixAddingNegativeLiterals extends Transform with DependencyAPIMigration wi
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def execute(state: CircuitState): CircuitState = {
val modulesx = state.circuit.modules.map(FixAddingNegativeLiterals.fixupModule)
diff --git a/src/main/scala/firrtl/transforms/Flatten.scala b/src/main/scala/firrtl/transforms/Flatten.scala
index 8826a370..7a7c7338 100644
--- a/src/main/scala/firrtl/transforms/Flatten.scala
+++ b/src/main/scala/firrtl/transforms/Flatten.scala
@@ -28,7 +28,7 @@ class Flatten extends Transform with DependencyAPIMigration with PreservesAll[Tr
override def prerequisites = Forms.LowForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.LowEmitters
+ override def optionalPrerequisiteOf = Forms.LowEmitters
val inlineTransform = new InlineInstances
diff --git a/src/main/scala/firrtl/transforms/FlattenRegUpdate.scala b/src/main/scala/firrtl/transforms/FlattenRegUpdate.scala
index 242f238e..ea694719 100644
--- a/src/main/scala/firrtl/transforms/FlattenRegUpdate.scala
+++ b/src/main/scala/firrtl/transforms/FlattenRegUpdate.scala
@@ -117,7 +117,7 @@ class FlattenRegUpdate extends Transform with DependencyAPIMigration {
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
override def invalidates(a: Transform): Boolean = a match {
case _: DeadCodeElimination => true
diff --git a/src/main/scala/firrtl/transforms/GroupComponents.scala b/src/main/scala/firrtl/transforms/GroupComponents.scala
index 083ddbb7..3b982fbf 100644
--- a/src/main/scala/firrtl/transforms/GroupComponents.scala
+++ b/src/main/scala/firrtl/transforms/GroupComponents.scala
@@ -50,7 +50,7 @@ class GroupComponents extends Transform with DependencyAPIMigration {
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
override def invalidates(a: Transform): Boolean = a match {
case InferTypes | ResolveKinds => true
diff --git a/src/main/scala/firrtl/transforms/InlineBitExtractions.scala b/src/main/scala/firrtl/transforms/InlineBitExtractions.scala
index 1c49a9b2..3f2fcdcd 100644
--- a/src/main/scala/firrtl/transforms/InlineBitExtractions.scala
+++ b/src/main/scala/firrtl/transforms/InlineBitExtractions.scala
@@ -103,7 +103,7 @@ class InlineBitExtractionsTransform extends Transform with DependencyAPIMigratio
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def execute(state: CircuitState): CircuitState = {
val modulesx = state.circuit.modules.map(InlineBitExtractionsTransform.onMod(_))
diff --git a/src/main/scala/firrtl/transforms/InlineCasts.scala b/src/main/scala/firrtl/transforms/InlineCasts.scala
index 5789a87c..3dac938e 100644
--- a/src/main/scala/firrtl/transforms/InlineCasts.scala
+++ b/src/main/scala/firrtl/transforms/InlineCasts.scala
@@ -77,7 +77,7 @@ class InlineCastsTransform extends Transform with DependencyAPIMigration {
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
override def invalidates(a: Transform): Boolean = a match {
case _: LegalizeClocksTransform => true
diff --git a/src/main/scala/firrtl/transforms/LegalizeClocks.scala b/src/main/scala/firrtl/transforms/LegalizeClocks.scala
index 2e3cb8ff..e3185deb 100644
--- a/src/main/scala/firrtl/transforms/LegalizeClocks.scala
+++ b/src/main/scala/firrtl/transforms/LegalizeClocks.scala
@@ -70,7 +70,7 @@ class LegalizeClocksTransform extends Transform with DependencyAPIMigration with
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def execute(state: CircuitState): CircuitState = {
val modulesx = state.circuit.modules.map(LegalizeClocksTransform.onMod(_))
diff --git a/src/main/scala/firrtl/transforms/PropagatePresetAnnotations.scala b/src/main/scala/firrtl/transforms/PropagatePresetAnnotations.scala
index f9c55270..e70fa47e 100644
--- a/src/main/scala/firrtl/transforms/PropagatePresetAnnotations.scala
+++ b/src/main/scala/firrtl/transforms/PropagatePresetAnnotations.scala
@@ -45,7 +45,7 @@ class PropagatePresetAnnotations extends Transform with DependencyAPIMigration w
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
import PropagatePresetAnnotations._
diff --git a/src/main/scala/firrtl/transforms/RemoveKeywordCollisions.scala b/src/main/scala/firrtl/transforms/RemoveKeywordCollisions.scala
index 214692e6..c7ed6688 100644
--- a/src/main/scala/firrtl/transforms/RemoveKeywordCollisions.scala
+++ b/src/main/scala/firrtl/transforms/RemoveKeywordCollisions.scala
@@ -245,6 +245,6 @@ class VerilogRename extends RemoveKeywordCollisions(v_keywords) with PreservesAl
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
}
diff --git a/src/main/scala/firrtl/transforms/RemoveReset.scala b/src/main/scala/firrtl/transforms/RemoveReset.scala
index 128496d4..530b12d9 100644
--- a/src/main/scala/firrtl/transforms/RemoveReset.scala
+++ b/src/main/scala/firrtl/transforms/RemoveReset.scala
@@ -23,7 +23,7 @@ object RemoveReset extends Transform with DependencyAPIMigration {
override def optionalPrerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
override def invalidates(a: Transform): Boolean = a match {
case firrtl.passes.ResolveFlows => true
diff --git a/src/main/scala/firrtl/transforms/RemoveWires.scala b/src/main/scala/firrtl/transforms/RemoveWires.scala
index 444df4b1..cfb4fc54 100644
--- a/src/main/scala/firrtl/transforms/RemoveWires.scala
+++ b/src/main/scala/firrtl/transforms/RemoveWires.scala
@@ -30,7 +30,7 @@ class RemoveWires extends Transform with DependencyAPIMigration with PreservesAl
override def optionalPrerequisites = Seq(Dependency[checks.CheckResets])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
// Extract all expressions that are references to a Node, Wire, or Reg
// Since we are operating on LowForm, they can only be WRefs
diff --git a/src/main/scala/firrtl/transforms/RenameModules.scala b/src/main/scala/firrtl/transforms/RenameModules.scala
index c8a757ba..3015ebf7 100644
--- a/src/main/scala/firrtl/transforms/RenameModules.scala
+++ b/src/main/scala/firrtl/transforms/RenameModules.scala
@@ -18,7 +18,7 @@ class RenameModules extends Transform with DependencyAPIMigration with Preserves
override def prerequisites = Forms.LowForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.LowEmitters
+ override def optionalPrerequisiteOf = Forms.LowEmitters
def collectNameMapping(namespace: Namespace, moduleNameMap: mutable.HashMap[String, String])(mod: DefModule): Unit = {
val newName = namespace.newName(mod.name)
diff --git a/src/main/scala/firrtl/transforms/ReplaceTruncatingArithmetic.scala b/src/main/scala/firrtl/transforms/ReplaceTruncatingArithmetic.scala
index 1ab60650..9699d012 100644
--- a/src/main/scala/firrtl/transforms/ReplaceTruncatingArithmetic.scala
+++ b/src/main/scala/firrtl/transforms/ReplaceTruncatingArithmetic.scala
@@ -85,7 +85,7 @@ class ReplaceTruncatingArithmetic extends Transform with DependencyAPIMigration
override def optionalPrerequisites = firrtl.stage.Forms.LowFormOptimized
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
def execute(state: CircuitState): CircuitState = {
val modulesx = state.circuit.modules.map(ReplaceTruncatingArithmetic.onMod(_))
diff --git a/src/main/scala/firrtl/transforms/SimplifyMems.scala b/src/main/scala/firrtl/transforms/SimplifyMems.scala
index 74b291f5..37302f45 100644
--- a/src/main/scala/firrtl/transforms/SimplifyMems.scala
+++ b/src/main/scala/firrtl/transforms/SimplifyMems.scala
@@ -23,7 +23,7 @@ class SimplifyMems extends Transform with DependencyAPIMigration with PreservesA
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
def onModule(c: Circuit, renames: RenameMap)(m: DefModule): DefModule = {
val moduleNS = Namespace(m)
diff --git a/src/main/scala/firrtl/transforms/TopWiring.scala b/src/main/scala/firrtl/transforms/TopWiring.scala
index f70e92b7..2e123803 100644
--- a/src/main/scala/firrtl/transforms/TopWiring.scala
+++ b/src/main/scala/firrtl/transforms/TopWiring.scala
@@ -33,7 +33,7 @@ class TopWiringTransform extends Transform with DependencyAPIMigration {
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
override def invalidates(a: Transform): Boolean = a match {
case InferTypes | ResolveKinds | ResolveFlows | ExpandConnects => true
diff --git a/src/main/scala/logger/phases/AddDefaults.scala b/src/main/scala/logger/phases/AddDefaults.scala
index a77acca6..9e7449c6 100644
--- a/src/main/scala/logger/phases/AddDefaults.scala
+++ b/src/main/scala/logger/phases/AddDefaults.scala
@@ -11,7 +11,7 @@ import logger.{LoggerOption, LogLevelAnnotation}
private [logger] class AddDefaults extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq.empty
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Add missing default [[Logger]] [[Annotation]]s to an [[AnnotationSeq]]
* @param annotations input annotations
diff --git a/src/main/scala/logger/phases/Checks.scala b/src/main/scala/logger/phases/Checks.scala
index 03c2cbb2..b3cda2bc 100644
--- a/src/main/scala/logger/phases/Checks.scala
+++ b/src/main/scala/logger/phases/Checks.scala
@@ -15,7 +15,7 @@ import scala.collection.mutable
object Checks extends Phase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[AddDefaults])
- override def dependents = Seq.empty
+ override def optionalPrerequisiteOf = Seq.empty
/** Ensure that an [[firrtl.AnnotationSeq AnnotationSeq]] has necessary [[Logger]] [[firrtl.annotations.Annotation
* Annotation]]s
diff --git a/src/test/scala/firrtl/testutils/FirrtlSpec.scala b/src/test/scala/firrtl/testutils/FirrtlSpec.scala
index 1dc56b15..e14dc78c 100644
--- a/src/test/scala/firrtl/testutils/FirrtlSpec.scala
+++ b/src/test/scala/firrtl/testutils/FirrtlSpec.scala
@@ -39,7 +39,7 @@ object RenameTop extends Transform with PreservesAll[Transform] {
override val optionalPrerequisites = Seq(Dependency[RenameModules])
- override val dependents = Seq(Dependency[VerilogEmitter], Dependency[MinimumVerilogEmitter])
+ override val optionalPrerequisiteOf = Seq(Dependency[VerilogEmitter], Dependency[MinimumVerilogEmitter])
def execute(state: CircuitState): CircuitState = {
val c = state.circuit
diff --git a/src/test/scala/firrtl/testutils/PassTests.scala b/src/test/scala/firrtl/testutils/PassTests.scala
index 7d1b80ac..f8e1b845 100644
--- a/src/test/scala/firrtl/testutils/PassTests.scala
+++ b/src/test/scala/firrtl/testutils/PassTests.scala
@@ -73,7 +73,7 @@ class CustomResolveAndCheck(form: CircuitForm) extends SeqTransform {
object ReRunResolveAndCheck extends Transform with DependencyAPIMigration with IdentityLike[CircuitState] {
override val optionalPrerequisites = Forms.LowFormOptimized
- override val dependents = Forms.ChirrtlEmitters
+ override val optionalPrerequisiteOf = Forms.ChirrtlEmitters
override def invalidates(a: Transform) = {
val resolveAndCheck = Forms.Resolved.toSet -- Forms.WorkingIR
diff --git a/src/test/scala/firrtlTests/InferReadWriteSpec.scala b/src/test/scala/firrtlTests/InferReadWriteSpec.scala
index 4268bd2b..21228c27 100644
--- a/src/test/scala/firrtlTests/InferReadWriteSpec.scala
+++ b/src/test/scala/firrtlTests/InferReadWriteSpec.scala
@@ -17,7 +17,7 @@ class InferReadWriteSpec extends SimpleTransformSpec {
object InferReadWriteCheck extends Pass with PreservesAll[Transform] {
override def prerequisites = Forms.MidForm
override def optionalPrerequisites = Seq.empty
- override def dependents = Forms.MidEmitters
+ override def optionalPrerequisiteOf = Forms.MidEmitters
def findReadWrite(s: Statement): Boolean = s match {
case s: DefMemory if s.readLatency > 0 && s.readwriters.size == 1 =>
diff --git a/src/test/scala/firrtlTests/options/PhaseManagerSpec.scala b/src/test/scala/firrtlTests/options/PhaseManagerSpec.scala
index e6504737..5f796b4f 100644
--- a/src/test/scala/firrtlTests/options/PhaseManagerSpec.scala
+++ b/src/test/scala/firrtlTests/options/PhaseManagerSpec.scala
@@ -173,7 +173,7 @@ object InvertedAnalysisFixture {
}
-object DependentsFixture {
+object OptionalPrerequisitesOfFixture {
class First extends IdentityPhase {
override def invalidates(phase: Phase): Boolean = false
@@ -190,7 +190,7 @@ object DependentsFixture {
*/
class Custom extends IdentityPhase {
override def prerequisites = Seq(Dependency[First])
- override def dependents = Seq(Dependency[Second])
+ override def optionalPrerequisiteOf = Seq(Dependency[Second])
override def invalidates(phase: Phase): Boolean = false
}
@@ -255,7 +255,7 @@ object UnrelatedFixture {
class B6Sub extends B6 {
override def prerequisites = Seq(Dependency[B6])
- override def dependents = Seq(Dependency[B7])
+ override def optionalPrerequisiteOf = Seq(Dependency[B7])
}
class B6_0 extends B6Sub
@@ -276,7 +276,7 @@ object UnrelatedFixture {
class B6_15 extends B6Sub
class B8Dep extends B8 {
- override def dependents = Seq(Dependency[B8])
+ override def optionalPrerequisiteOf = Seq(Dependency[B8])
}
class B8_0 extends B8Dep
@@ -304,12 +304,12 @@ object CustomAfterOptimizationFixture {
class OptMinimum extends IdentityPhase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[Root])
- override def dependents = Seq(Dependency[AfterOpt])
+ override def optionalPrerequisiteOf = Seq(Dependency[AfterOpt])
}
class OptFull extends IdentityPhase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[Root], Dependency[OptMinimum])
- override def dependents = Seq(Dependency[AfterOpt])
+ override def optionalPrerequisiteOf = Seq(Dependency[AfterOpt])
}
class AfterOpt extends IdentityPhase with PreservesAll[Phase]
@@ -324,7 +324,7 @@ object CustomAfterOptimizationFixture {
class Custom extends IdentityPhase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[Root], Dependency[AfterOpt])
- override def dependents = Seq(Dependency[DoneMinimum], Dependency[DoneFull])
+ override def optionalPrerequisiteOf = Seq(Dependency[DoneMinimum], Dependency[DoneFull])
}
}
@@ -352,7 +352,7 @@ object OptionalPrerequisitesFixture {
class Custom extends IdentityPhase with PreservesAll[Phase] {
override def prerequisites = Seq(Dependency[Root])
override def optionalPrerequisites = Seq(Dependency[OptMinimum], Dependency[OptFull])
- override def dependents = Seq(Dependency[DoneMinimum], Dependency[DoneFull])
+ override def optionalPrerequisiteOf = Seq(Dependency[DoneMinimum], Dependency[DoneFull])
}
}
@@ -524,9 +524,9 @@ class PhaseManagerSpec extends AnyFlatSpec with Matchers {
pm.flattenedTransformOrder.map(_.getClass) should be (order)
}
- /** This test shows how the dependents member can be used to run one transform before another. */
- it should "handle a custom Phase with a dependent" in {
- val f = DependentsFixture
+ /** This test shows how the optionalPrerequisiteOf member can be used to run one transform before another. */
+ it should "handle a custom Phase with an optionalPrerequisiteOf" in {
+ val f = OptionalPrerequisitesOfFixture
info("without the custom transform it runs: First -> Second")
val pm = new PhaseManager(Seq(Dependency[f.Second]))
@@ -578,7 +578,7 @@ class PhaseManagerSpec extends AnyFlatSpec with Matchers {
Dependency[f.B14],
Dependency[f.B15] )
/** A sequence of custom transforms that should all run after B6 and before B7. This exercises correct ordering of the
- * prerequisiteGraph and dependentsGraph.
+ * prerequisiteGraph and optionalPrerequisiteOfGraph.
*/
val prerequisiteTargets =
Seq( Dependency[f.B6_0],
@@ -597,8 +597,8 @@ class PhaseManagerSpec extends AnyFlatSpec with Matchers {
Dependency[f.B6_13],
Dependency[f.B6_14],
Dependency[f.B6_15] )
- /** A sequence of transforms that are invalidated by B0 and only define dependents on B8. This exercises the ordering
- * defined by "otherDependents".
+ /** A sequence of transforms that are invalidated by B0 and only define optionalPrerequisiteOf on B8. This exercises
+ * the ordering defined by "otherPrerequisites".
*/
val current =
Seq( Dependency[f.B8_0],