summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/When.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/chiselTests/When.scala')
-rw-r--r--src/test/scala/chiselTests/When.scala20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/When.scala b/src/test/scala/chiselTests/When.scala
index 3bd63831..a1a7afb7 100644
--- a/src/test/scala/chiselTests/When.scala
+++ b/src/test/scala/chiselTests/When.scala
@@ -76,6 +76,23 @@ class NoOtherwiseOverlappedWhenTester() extends BasicTester {
}
}
+class SubmoduleWhenTester extends BasicTester {
+ val (cycle, done) = Counter(true.B, 3)
+ when (done) { stop() }
+ val children = Seq(Module(new PassthroughModule),
+ Module(new PassthroughMultiIOModule),
+ Module(new PassthroughRawModule))
+ children.foreach { child =>
+ when (cycle === 1.U) {
+ child.io.in := "hdeadbeef".U
+ assert(child.io.out === "hdeadbeef".U)
+ } .otherwise {
+ child.io.in := "h0badcad0".U
+ assert(child.io.out === "h0badcad0".U)
+ }
+ }
+}
+
class WhenSpec extends ChiselFlatSpec {
"When, elsewhen, and otherwise with orthogonal conditions" should "work" in {
assertTesterPasses{ new WhenTester }
@@ -86,4 +103,7 @@ class WhenSpec extends ChiselFlatSpec {
"When and elsewhen without otherwise with overlapped conditions" should "work" in {
assertTesterPasses{ new NoOtherwiseOverlappedWhenTester }
}
+ "Conditional connections to submodule ports" should "be handled properly" in {
+ assertTesterPasses(new SubmoduleWhenTester)
+ }
}