From 0e8288d6aded9f7f91b4b6bfef44f0d41f0d928b Mon Sep 17 00:00:00 2001 From: Minyong Li <ml10g20@soton.ac.uk> Date: Tue, 13 Jul 2021 17:38:49 +0100 Subject: [PATCH] core.{Data,Program}Memory: fix Read-After-Write behavior Now Read-After-Write gives old data (Read-First). Quartus does not give warnings. No bypass logic is implemented. --- src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala | 2 +- src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala b/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala index 8244854..e4a1f78 100644 --- a/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala +++ b/src/main/scala/uk/ac/soton/ecs/can/core/DataMemory.scala @@ -16,7 +16,7 @@ class DataMemory(implicit cfg: CanCoreConfiguration) extends MultiIOModule { private val mem = if (cfg.syncReadMemory) - SyncReadMem(cfg.dataMemoryWords, UInt(512.W)) + SyncReadMem(cfg.dataMemoryWords, UInt(512.W), SyncReadMem.ReadFirst) else Mem(cfg.dataMemoryWords, UInt(512.W)) diff --git a/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala b/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala index 14a82d1..1f96ea5 100644 --- a/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala +++ b/src/main/scala/uk/ac/soton/ecs/can/core/ProgramMemory.scala @@ -24,7 +24,11 @@ class ProgramMemory(implicit cfg: CanCoreConfiguration) extends MultiIOModule { private val mem = if (cfg.syncReadMemory) - SyncReadMem(cfg.programMemoryWords, UInt(cwWidth.W)) + SyncReadMem( + cfg.programMemoryWords, + UInt(cwWidth.W), + SyncReadMem.ReadFirst + ) else Mem(cfg.programMemoryWords, UInt(cwWidth.W)) -- GitLab