summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorAlbert Magyar2017-08-17 17:55:44 -0700
committerJack Koenig2017-08-17 17:55:44 -0700
commit6297e00aa845cf6cc1275c05d313f3237e69de9d (patch)
tree05363bfee404a441d5a759e292bd894c1e2db8a6 /src/test
parent6e12ed9fd7a771eb30f44b8e1c4ab33f6ad8e0a6 (diff)
Use firrtl elses in elsewhen/otherwise case emission (#510)
Preprocess chisel3 IR before emission to determing whether whens have alternatives.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/chiselTests/When.scala25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/When.scala b/src/test/scala/chiselTests/When.scala
index d4491e13..d2646df7 100644
--- a/src/test/scala/chiselTests/When.scala
+++ b/src/test/scala/chiselTests/When.scala
@@ -53,6 +53,28 @@ class OverlappedWhenTester() extends BasicTester {
}
}
+class NoOtherwiseOverlappedWhenTester() extends BasicTester {
+ val cnt = Counter(4)
+ when(true.B) { cnt.inc() }
+
+ val out = Wire(UInt(3.W))
+ when(cnt.value <= 0.U) {
+ out := 1.U
+ } .elsewhen (cnt.value <= 1.U) {
+ out := 2.U
+ } .elsewhen (cnt.value <= 2.U) {
+ out := 3.U
+ } .elsewhen (cnt.value <= 3.U) {
+ out := 0.U
+ }
+
+ assert(out === cnt.value + 1.U)
+
+ when(cnt.value === 3.U) {
+ stop()
+ }
+}
+
class WhenSpec extends ChiselFlatSpec {
"When, elsewhen, and otherwise with orthogonal conditions" should "work" in {
assertTesterPasses{ new WhenTester }
@@ -60,4 +82,7 @@ class WhenSpec extends ChiselFlatSpec {
"When, elsewhen, and otherwise with overlapped conditions" should "work" in {
assertTesterPasses{ new OverlappedWhenTester }
}
+ "When and elsewhen without otherwise with overlapped conditions" should "work" in {
+ assertTesterPasses{ new NoOtherwiseOverlappedWhenTester }
+ }
}