aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorJack Koenig2019-01-04 13:39:04 -0800
committerJack Koenig2019-01-04 16:13:54 -0800
commit1931649a050619a711c066f669d93d436bd03296 (patch)
treef130774f6b1b4fec295ddc9a6d987bc41d9a36ad /src/test
parent8bc25bbc0ff998565afd153a44bf8f11316ba0f0 (diff)
Fix GroupComponents to work with unused components
Previously, components that did not affect the output would cause exceptions because they were missing from the label2group Map. This commit treats them as "reachable" by the ports so they are included in the default "ungrouped" group.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/transforms/GroupComponentsSpec.scala37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/transforms/GroupComponentsSpec.scala b/src/test/scala/firrtlTests/transforms/GroupComponentsSpec.scala
index f51d44ae..c54e02e3 100644
--- a/src/test/scala/firrtlTests/transforms/GroupComponentsSpec.scala
+++ b/src/test/scala/firrtlTests/transforms/GroupComponentsSpec.scala
@@ -46,6 +46,43 @@ class GroupComponentsSpec extends LowTransformSpec {
""".stripMargin
execute(input, check, groups)
}
+ "Grouping" should "work even when there are unused nodes" in {
+ val input =
+ s"""circuit $top :
+ | module $top :
+ | input in: UInt<16>
+ | output out: UInt<16>
+ | node n = UInt<16>("h0")
+ | wire w : UInt<16>
+ | wire a : UInt<16>
+ | wire b : UInt<16>
+ | a <= UInt<16>("h0")
+ | b <= a
+ | w <= in
+ | out <= w
+ """.stripMargin
+ val groups = Seq(
+ GroupAnnotation(Seq(topComp("w")), "Child", "inst", Some("_OUT"), Some("_IN"))
+ )
+ val check =
+ s"""circuit Top :
+ | module $top :
+ | input in: UInt<16>
+ | output out: UInt<16>
+ | inst inst of Child
+ | node n = UInt<16>("h0")
+ | inst.in_IN <= in
+ | node a = UInt<16>("h0")
+ | node b = a
+ | out <= inst.w_OUT
+ | module Child :
+ | input in_IN : UInt<16>
+ | output w_OUT : UInt<16>
+ | node w = in_IN
+ | w_OUT <= w
+ """.stripMargin
+ execute(input, check, groups)
+ }
"The two sets of instances" should "be grouped" in {
val input =