aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala
diff options
context:
space:
mode:
authorJack Koenig2019-11-04 19:02:59 -0800
committerGitHub2019-11-04 19:02:59 -0800
commitcae20ae9ff51e7ebc2151b4f88853d3ac3859f65 (patch)
treeec0c3eba1789733087a2020fd17ea083957e5d34 /src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala
parentcd433e7cd54f53066b7c1f338e828d8e1d0b9d8a (diff)
parent0d7defc81b02c41e416237ad226adc5f1ab0f8f2 (diff)
Merge branch 'master' into serialization-utils
Diffstat (limited to 'src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala')
-rw-r--r--src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala41
1 files changed, 36 insertions, 5 deletions
diff --git a/src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala b/src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala
index e98c1895..eb62c564 100644
--- a/src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala
+++ b/src/test/scala/firrtlTests/analyses/InstanceGraphTests.scala
@@ -1,12 +1,8 @@
package firrtlTests.analyses
-import java.io._
-import org.scalatest._
-import org.scalatest.prop._
-import org.scalatest.Matchers._
import firrtl.analyses.InstanceGraph
import firrtl.graph.DiGraph
-import firrtl.Parser.parse
+import firrtl.WDefInstance
import firrtl.passes._
import firrtlTests._
@@ -39,6 +35,41 @@ circuit Top :
getEdgeSet(graph) shouldBe Map("Top" -> Set("Child1", "Child2"), "Child1" -> Set("Child1a", "Child1b"), "Child2" -> Set(), "Child1a" -> Set(), "Child1b" -> Set())
}
+ it should "find hierarchical instances correctly in disconnected hierarchies" in {
+ val input = """
+circuit Top :
+ module Top :
+ inst c of Child1
+ module Child1 :
+ skip
+
+ module Top2 :
+ inst a of Child2
+ inst b of Child3
+ skip
+ module Child2 :
+ inst a of Child2a
+ inst b of Child2b
+ skip
+ module Child2a :
+ skip
+ module Child2b :
+ skip
+ module Child3 :
+ skip
+"""
+
+ val circuit = ToWorkingIR.run(parse(input))
+ val iGraph = new InstanceGraph(circuit)
+ iGraph.findInstancesInHierarchy("Top") shouldBe Seq(Seq(WDefInstance("Top", "Top")))
+ iGraph.findInstancesInHierarchy("Child1") shouldBe Seq(Seq(WDefInstance("Top", "Top"), WDefInstance("c", "Child1")))
+ iGraph.findInstancesInHierarchy("Top2") shouldBe Nil
+ iGraph.findInstancesInHierarchy("Child2") shouldBe Nil
+ iGraph.findInstancesInHierarchy("Child2a") shouldBe Nil
+ iGraph.findInstancesInHierarchy("Child2b") shouldBe Nil
+ iGraph.findInstancesInHierarchy("Child3") shouldBe Nil
+ }
+
it should "recognize disconnected hierarchies" in {
val input = """
circuit Top :