summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/Assert.scala
diff options
context:
space:
mode:
authorJack Koenig2016-03-20 12:03:02 -0700
committerJack Koenig2016-03-20 12:03:02 -0700
commit28ebd2009f5d37aa0302508d1ce71156cc49a807 (patch)
tree2355641a4d220a9e153bcfe8ba9f002dfc85b704 /src/test/scala/chiselTests/Assert.scala
parente7594b79fa1979ca65da15aea0834660292ee378 (diff)
parent7602c999b7c05d290e858bc5a355db9300928070 (diff)
Merge pull request #124 from ucb-bar/fix-assert
Fix assert
Diffstat (limited to 'src/test/scala/chiselTests/Assert.scala')
-rw-r--r--src/test/scala/chiselTests/Assert.scala34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/test/scala/chiselTests/Assert.scala b/src/test/scala/chiselTests/Assert.scala
index 54ebf366..24eb8b55 100644
--- a/src/test/scala/chiselTests/Assert.scala
+++ b/src/test/scala/chiselTests/Assert.scala
@@ -8,12 +8,39 @@ import Chisel.testers.BasicTester
class FailingAssertTester() extends BasicTester {
assert(Bool(false))
- stop()
+ // Wait to come out of reset
+ val (_, done) = Counter(!reset, 4)
+ when (done) {
+ stop()
+ }
}
class SucceedingAssertTester() extends BasicTester {
assert(Bool(true))
- stop()
+ // Wait to come out of reset
+ val (_, done) = Counter(!reset, 4)
+ when (done) {
+ stop()
+ }
+}
+
+class PipelinedResetModule extends Module {
+ val io = new Bundle { }
+ val a = Reg(init = UInt(0xbeef))
+ val b = Reg(init = UInt(0xbeef))
+ assert(a === b)
+}
+
+// This relies on reset being asserted for 3 or more cycles
+class PipelinedResetTester extends BasicTester {
+ val module = Module(new PipelinedResetModule)
+
+ module.reset := Reg(next = Reg(next = Reg(next = reset)))
+
+ val (_, done) = Counter(!reset, 4)
+ when (done) {
+ stop()
+ }
}
class AssertSpec extends ChiselFlatSpec {
@@ -23,4 +50,7 @@ class AssertSpec extends ChiselFlatSpec {
"A succeeding assertion" should "not fail the testbench" in {
assertTesterPasses{ new SucceedingAssertTester }
}
+ "An assertion" should "not assert until we come out of reset" in {
+ assertTesterPasses{ new PipelinedResetTester }
+ }
}