File tree Expand file tree Collapse file tree
rtl/src/backend/execute/fu/lsu/dcache/store Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -87,19 +87,18 @@ class StoreBuffer(val parameter: LsuBlockParameter) extends Module {
8787 }
8888
8989 // Redirect
90- val redirectValidList = VecInit ((0 until parameter.bufferLength).map(i => {
91- val currentPtr = headPtr + (parameter.bufferLength - i - 1 ).U
92- bufferQueue(currentPtr.value).attr.valid &
93- bufferQueue(currentPtr.value).attr.upstream.brIdx <= io.redirectPtr.bits &
94- currentPtr < tailPtr
90+ val redirectList = VecInit ((0 until parameter.bufferLength).map(i => {
91+ bufferQueue(i).attr.valid &
92+ bufferQueue(i).attr.upstream.brIdx > io.redirectPtr.bits &
93+ io.redirectPtr.valid
9594 }))
96- val maxHeadPtrOffset =
97- Mux (
98- redirectValidList.asUInt.orR,
99- PriorityEncoder (redirectValidList.asUInt),
100- parameter.bufferLength. U )
101- val maxTailPtr = headPtr + (parameter.bufferLength. U - maxHeadPtrOffset)
102- val baseTailPtr = Mux (io.redirectPtr.valid, maxTailPtr, tailPtr)
95+ val redirectCount = PopCount (redirectList)
96+ for (i <- 0 until parameter.bufferLength) {
97+ when(redirectList(i)) {
98+ bufferQueue(i).attr.valid := false . B
99+ }
100+ }
101+ val baseTailPtr = tailPtr - redirectCount
103102
104103 // EnQueue
105104 private val canEnque =
You can’t perform that action at this time.
0 commit comments