File tree 2 files changed +16
-2
lines changed
src/main/scala/coupledL2/tl2chi
2 files changed +16
-2
lines changed Original file line number Diff line number Diff line change @@ -179,13 +179,17 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module {
179
179
req_chiOpcode === SnpCleanShared ||
180
180
req_chiOpcode === SnpCleanInvalid
181
181
)
182
- val doRespData_retToSrc_fwd = req.retToSrc.get && isSnpToBFwd(req_chiOpcode)
183
- val doRespData_retToSrc_nonFwd = req.retToSrc.get && meta.state === BRANCH && isSnpToBNonFwd(req_chiOpcode)
182
+ val doRespData_retToSrc_fwd = req.retToSrc.get && ( isSnpToBFwd(req_chiOpcode) || isSnpToNFwd(req_chiOpcode) )
183
+ val doRespData_retToSrc_nonFwd = req.retToSrc.get && meta.state === BRANCH && ( isSnpToBNonFwd(req_chiOpcode) || isSnpToNNonFwd(req_chiOpcode) )
184
184
val doRespData = Mux (
185
185
dirResult.hit,
186
186
doRespData_dirty || doRespData_retToSrc_fwd || doRespData_retToSrc_nonFwd,
187
187
req.snpHitRelease && req.snpHitReleaseWithData
188
188
)
189
+ dontTouch(doRespData_dirty)
190
+ dontTouch(doRespData_retToSrc_fwd)
191
+ dontTouch(doRespData_retToSrc_nonFwd)
192
+
189
193
/**
190
194
* About which snoop should echo SnpResp[Data]Fwded instead of SnpResp[Data]:
191
195
* 1. When the snoop opcode is Snp*Fwd and the snooped block is valid.
Original file line number Diff line number Diff line change @@ -186,6 +186,16 @@ object CHIOpcode {
186
186
opcode === SnpSharedFwd
187
187
}
188
188
189
+ def isSnpToNNonFwd (opcode : UInt ): Bool = {
190
+ widthCheck(opcode)
191
+ opcode === SnpUnique || opcode === SnpUniqueStash
192
+ }
193
+
194
+ def isSnpToNFwd (opcode : UInt ): Bool = {
195
+ widthCheck(opcode)
196
+ opcode === SnpUniqueFwd
197
+ }
198
+
189
199
def isSnpUniqueX (opcode : UInt ): Bool = {
190
200
widthCheck(opcode)
191
201
opcode === SnpUnique || opcode === SnpUniqueFwd || opcode === SnpUniqueStash
You can’t perform that action at this time.
0 commit comments