Skip to content

Commit 9e5eb3e

Browse files
committed
feat(lsu): add storeready
Signed-off-by: Woshiluo Luo <woshiluo.luo@outlook.com>
1 parent 1321d27 commit 9e5eb3e

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

rtl/src/backend/execute/fu/LsuBlock.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)