diff options
| author | Albert Magyar | 2017-08-17 17:55:44 -0700 |
|---|---|---|
| committer | Jack Koenig | 2017-08-17 17:55:44 -0700 |
| commit | 6297e00aa845cf6cc1275c05d313f3237e69de9d (patch) | |
| tree | 05363bfee404a441d5a759e292bd894c1e2db8a6 /src/test/scala/chiselTests/When.scala | |
| parent | 6e12ed9fd7a771eb30f44b8e1c4ab33f6ad8e0a6 (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/scala/chiselTests/When.scala')
| -rw-r--r-- | src/test/scala/chiselTests/When.scala | 25 |
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 } + } } |
