aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Chen2020-06-19 17:03:37 -0700
committerGitHub2020-06-19 17:03:37 -0700
commit9ff347c48eef530be9cbf1f8e5bbfb9ed053d182 (patch)
tree40497116c8c50c9ff9895a86fdf700b4d0d6e9b2 /src
parentb750754c10289909925d0c031bb5946bb54a33c7 (diff)
RemoveIntervals: invalidate InferTypes and ResolveKinds (#1689)
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/passes/RemoveIntervals.scala13
-rw-r--r--src/test/scala/firrtlTests/LoweringCompilersSpec.scala8
2 files changed, 15 insertions, 6 deletions
diff --git a/src/main/scala/firrtl/passes/RemoveIntervals.scala b/src/main/scala/firrtl/passes/RemoveIntervals.scala
index 2cf4a3e0..7059526c 100644
--- a/src/main/scala/firrtl/passes/RemoveIntervals.scala
+++ b/src/main/scala/firrtl/passes/RemoveIntervals.scala
@@ -8,7 +8,7 @@ import firrtl._
import firrtl.Mappers._
import Implicits.{bigint2WInt}
import firrtl.constraint.IsKnown
-import firrtl.options.{Dependency, PreservesAll}
+import firrtl.options.Dependency
import scala.math.BigDecimal.RoundingMode._
@@ -36,7 +36,7 @@ class WrapWithRemainder(info: Info, mname: String, wrap: DoPrim)
* c. replace with SIntType
* 3) Run InferTypes
*/
-class RemoveIntervals extends Pass with PreservesAll[Transform] {
+class RemoveIntervals extends Pass {
override def prerequisites: Seq[Dependency[Transform]] =
Seq( Dependency(PullMuxes),
@@ -45,13 +45,20 @@ class RemoveIntervals extends Pass with PreservesAll[Transform] {
Dependency(RemoveAccesses),
Dependency[ExpandWhensAndCheck] ) ++ firrtl.stage.Forms.Deduped
+ override def invalidates(transform: Transform): Boolean = {
+ transform match {
+ case InferTypes | ResolveKinds => true
+ case _ => false
+ }
+ }
+
def run(c: Circuit): Circuit = {
val alignedCircuit = c
val errors = new Errors()
val wiredCircuit = alignedCircuit map makeWireModule
val replacedCircuit = wiredCircuit map replaceModuleInterval(errors)
errors.trigger()
- InferTypes.run(replacedCircuit)
+ replacedCircuit
}
/* Replace interval types */
diff --git a/src/test/scala/firrtlTests/LoweringCompilersSpec.scala b/src/test/scala/firrtlTests/LoweringCompilersSpec.scala
index b9143b26..cc4914f2 100644
--- a/src/test/scala/firrtlTests/LoweringCompilersSpec.scala
+++ b/src/test/scala/firrtlTests/LoweringCompilersSpec.scala
@@ -171,7 +171,9 @@ class LoweringCompilersSpec extends FlatSpec with Matchers {
Del(13),
Add(12, Seq(Dependency(firrtl.passes.ResolveFlows),
Dependency[firrtl.passes.InferWidths])),
- Del(14)
+ Del(14),
+ Add(15, Seq(Dependency(firrtl.passes.ResolveKinds),
+ Dependency(firrtl.passes.InferTypes)))
)
compare(legacyTransforms(new HighFirrtlToMiddleFirrtl), tm, patches)
}
@@ -349,7 +351,7 @@ class LoweringCompilersSpec extends FlatSpec with Matchers {
Seq(new Transforms.LowToLow, new firrtl.MinimumVerilogEmitter)
val tm = (new TransformManager(Seq(Dependency[firrtl.MinimumVerilogEmitter], Dependency[Transforms.LowToLow])))
val patches = Seq(
- Add(60, Seq(Dependency[firrtl.transforms.LegalizeAndReductionsTransform]))
+ Add(62, Seq(Dependency[firrtl.transforms.LegalizeAndReductionsTransform]))
)
compare(expected, tm, patches)
}
@@ -360,7 +362,7 @@ class LoweringCompilersSpec extends FlatSpec with Matchers {
Seq(new Transforms.LowToLow, new firrtl.VerilogEmitter)
val tm = (new TransformManager(Seq(Dependency[firrtl.VerilogEmitter], Dependency[Transforms.LowToLow])))
val patches = Seq(
- Add(67, Seq(Dependency[firrtl.transforms.LegalizeAndReductionsTransform]))
+ Add(69, Seq(Dependency[firrtl.transforms.LegalizeAndReductionsTransform]))
)
compare(expected, tm, patches)
}