@@ -205,7 +205,7 @@ class RawLsuBlockIO(parameter: LsuBlockParameter) extends Bundle {
205205 Decoupled (new MemWrReq (parameter.addressWidth, parameter.bankWidth, parameter.bankCount)))
206206 val memWrResp = Vec (2 , Flipped (Decoupled (new MemWrResp ())))
207207
208- val icacopOut = Valid (new ICacheOp (parameter.addressWidth))
208+ val icacopOut = Valid (new ICacheOp (parameter.addressWidth))
209209 val storeReady = Output (Bool ())
210210}
211211
@@ -307,6 +307,7 @@ class AddrTransStage(parameter: LsuBlockParameter) extends Module {
307307 val cacheInfo =
308308 Output (Vec (parameter.portCount, ValidIO (new CacheInfo (parameter.pRegNum, parameter.robSize))))
309309 val storeCount = Input (UInt (4 .W ))
310+ val storeReady = Output (Bool ())
310311 })
311312 class AddrQueuePtr (override val entries : Int ) extends CircularQueuePtr [AddrQueuePtr ](entries)
312313
@@ -522,9 +523,10 @@ class AddrTransStage(parameter: LsuBlockParameter) extends Module {
522523 io.cacheInfo(i).bits.robIdx := item.in.robIdx
523524 }
524525
525- io.in.ready := allQueueReady & reallyStoreCount <= 7 .U
526- io.out.valid := io.out.bits.exists(x => x.valid)
527- io.noLoad := ~ io.out.bits.exists(x => x.valid)
526+ io.storeReady := reallyStoreCount <= 7 .U
527+ io.in.ready := allQueueReady & reallyStoreCount <= 7 .U
528+ io.out.valid := io.out.bits.exists(x => x.valid)
529+ io.noLoad := ~ io.out.bits.exists(x => x.valid)
528530}
529531
530532/** Hardware Implementation of AluBlock */
@@ -560,6 +562,7 @@ class LsuBlock(val parameter: LsuBlockParameter)
560562 dataRWStage.io.noLoad <> addrTransStage.io.noLoad
561563 io.icacopOut := dataRWStage.io.icacopOut
562564 addrTransStage.io.storeCount := dataRWStage.io.storeCount
565+ io.storeReady := addrTransStage.io.storeReady
563566 if (parameter.hasCache) {
564567 for (i <- 0 until 3 * parameter.portCount) {
565568 io.cacheInfo(i) := dataRWStage.io.cacheInfo(i)
0 commit comments