Remove latching behaviour in Regfile.
Change-Id: I1b58ab5dc17b703432ed15cacfc39e32c6ba1843
diff --git a/hdl/chisel/src/kelvin/scalar/Regfile.scala b/hdl/chisel/src/kelvin/scalar/Regfile.scala
index d773722..29fb3be 100644
--- a/hdl/chisel/src/kelvin/scalar/Regfile.scala
+++ b/hdl/chisel/src/kelvin/scalar/Regfile.scala
@@ -182,18 +182,14 @@
}
for (i <- 0 until (p.instructionLanes * 2)) {
- val setValid = io.readSet(i).valid
- val setValue = io.readSet(i).value
+ nxtReadDataBits(i) := Mux(
+ io.readSet(i).valid, io.readSet(i).value, rwdata(i))
- val nxtReadDataReady = io.readAddr(i).valid || setValid
-
- readDataReady(i) := nxtReadDataReady
-
- nxtReadDataBits(i) := Mux(setValid, setValue, rwdata(i))
-
- when (nxtReadDataReady) {
- readDataBits(i) := nxtReadDataBits(i)
- }
+ readDataReady(i) := io.readAddr(i).valid || io.readSet(i).valid
+ readDataBits(i) := MuxCase(readDataBits(i), Seq(
+ io.readSet(i).valid -> io.readSet(i).value,
+ io.readAddr(i).valid -> rwdata(i)
+ ))
}
// Bus port priority encoded address.