summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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 }
+ }
}