diff options
| author | Albert Chen | 2018-11-02 11:23:39 -0700 |
|---|---|---|
| committer | Jack Koenig | 2018-11-02 11:23:39 -0700 |
| commit | 38514a5d3d85d5e4be32e91cb376d2cd7c61288f (patch) | |
| tree | f99521dce3fe272512577fea2c1568c75bfb8213 | |
| parent | ece8e1b0bb459fd5aa139390b6cb7d313077d21d (diff) | |
Fix renaming in UniquifyPorts (#930)
| -rw-r--r-- | src/main/scala/firrtl/passes/Uniquify.scala | 4 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/UniquifySpec.scala | 19 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/main/scala/firrtl/passes/Uniquify.scala b/src/main/scala/firrtl/passes/Uniquify.scala index 73f967f4..2b6fa55d 100644 --- a/src/main/scala/firrtl/passes/Uniquify.scala +++ b/src/main/scala/firrtl/passes/Uniquify.scala @@ -355,7 +355,9 @@ object Uniquify extends Transform { portTypeMap += (m.name -> uniquePortsType) ports zip uniquePortsType.fields map { case (p, f) => - renames.rename(p.name, f.name) + (Utils.create_exps(p.name, p.tpe) zip Utils.create_exps(f.name, f.tpe)) foreach { + case (from, to) => renames.rename(from.serialize, to.serialize) + } Port(p.info, f.name, p.direction, f.tpe) } } diff --git a/src/test/scala/firrtlTests/UniquifySpec.scala b/src/test/scala/firrtlTests/UniquifySpec.scala index 27918cc5..43d1e733 100644 --- a/src/test/scala/firrtlTests/UniquifySpec.scala +++ b/src/test/scala/firrtlTests/UniquifySpec.scala @@ -9,6 +9,9 @@ import firrtl.Parser import firrtl.ir.Circuit import firrtl.passes._ import firrtl._ +import firrtl.annotations._ +import firrtl.annotations.TargetToken._ +import firrtl.transforms.DontTouchAnnotation class UniquifySpec extends FirrtlFlatSpec { @@ -20,9 +23,11 @@ class UniquifySpec extends FirrtlFlatSpec { Uniquify ) - private def executeTest(input: String, expected: Seq[String]) = { + private def executeTest(input: String, expected: Seq[String]): Unit = executeTest(input, expected, Seq.empty, Seq.empty) + private def executeTest(input: String, expected: Seq[String], + inputAnnos: Seq[Annotation], expectedAnnos: Seq[Annotation]): Unit = { val circuit = Parser.parse(input.split("\n").toIterator) - val result = transforms.foldLeft(CircuitState(circuit, UnknownForm)) { + val result = transforms.foldLeft(CircuitState(circuit, UnknownForm, inputAnnos)) { (c: CircuitState, p: Transform) => p.runTransform(c) } val c = result.circuit @@ -31,6 +36,8 @@ class UniquifySpec extends FirrtlFlatSpec { expected foreach { e => lines should contain(e) } + + result.annotations.toSeq should equal(expectedAnnos) } behavior of "Uniquify" @@ -48,7 +55,13 @@ class UniquifySpec extends FirrtlFlatSpec { "output a_0_c_ : UInt<5>", "output a__0 : UInt<6>") map normalized - executeTest(input, expected) + val inputAnnos = Seq(DontTouchAnnotation(ReferenceTarget("Test", "Test", Seq.empty, "a", Seq(Index(0), Field("b")))), + DontTouchAnnotation(ReferenceTarget("Test", "Test", Seq.empty, "a", Seq(Index(0), Field("c"), Index(0), Field("e"))))) + + val expectedAnnos = Seq(DontTouchAnnotation(ReferenceTarget("Test", "Test", Seq.empty, "a__", Seq(Index(0), Field("b")))), + DontTouchAnnotation(ReferenceTarget("Test", "Test", Seq.empty, "a__", Seq(Index(0), Field("c_"), Index(0), Field("e"))))) + + executeTest(input, expected, inputAnnos, expectedAnnos) } it should "rename colliding registers" in { |
