diff options
| author | Albert Chen | 2020-06-19 17:03:37 -0700 |
|---|---|---|
| committer | GitHub | 2020-06-19 17:03:37 -0700 |
| commit | 9ff347c48eef530be9cbf1f8e5bbfb9ed053d182 (patch) | |
| tree | 40497116c8c50c9ff9895a86fdf700b4d0d6e9b2 /src | |
| parent | b750754c10289909925d0c031bb5946bb54a33c7 (diff) | |
RemoveIntervals: invalidate InferTypes and ResolveKinds (#1689)
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/passes/RemoveIntervals.scala | 13 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/LoweringCompilersSpec.scala | 8 |
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) } |
