summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/chiselTests/Mem.scala28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/test/scala/chiselTests/Mem.scala b/src/test/scala/chiselTests/Mem.scala
index ebdb1483..49085f9b 100644
--- a/src/test/scala/chiselTests/Mem.scala
+++ b/src/test/scala/chiselTests/Mem.scala
@@ -33,6 +33,30 @@ class SyncReadMemTester extends BasicTester {
}
}
+class SyncReadMemWriteCollisionTester extends BasicTester {
+ val (cnt, _) = Counter(true.B, 5)
+
+ // Write-first
+ val m0 = SyncReadMem(2, UInt(2.W), SyncReadMem.WriteFirst)
+ val rd0 = m0.read(cnt)
+ m0.write(cnt, cnt)
+
+ // Read-first
+ val m1 = SyncReadMem(2, UInt(2.W), SyncReadMem.ReadFirst)
+ val rd1 = m1.read(cnt)
+ m1.write(cnt, cnt)
+
+ // Read data from address 0
+ when (cnt === 3.U) {
+ assert(rd0 === 2.U)
+ assert(rd1 === 0.U)
+ }
+
+ when (cnt === 4.U) {
+ stop()
+ }
+}
+
class SyncReadMemWithZeroWidthTester extends BasicTester {
val (cnt, _) = Counter(true.B, 3)
val mem = SyncReadMem(2, UInt(0.W))
@@ -81,6 +105,10 @@ class MemorySpec extends ChiselPropSpec {
assertTesterPasses { new SyncReadMemTester }
}
+ property("SyncReadMem write collision behaviors should work") {
+ assertTesterPasses { new SyncReadMemWriteCollisionTester }
+ }
+
property("SyncReadMem should work with zero width entry") {
assertTesterPasses { new SyncReadMemWithZeroWidthTester }
}