Skip to content

Commit ef2deb5

Browse files
fix(MSHR): hold LikelyShared on retried writes (#474)
1 parent 0d20557 commit ef2deb5

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/main/scala/coupledL2/tl2chi/MSHR.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes {
8383
val state = RegInit(new FSMState(), initState)
8484

8585
val req_released_chiOpcode = RegInit(0.U.asTypeOf(UInt(OPCODE_WIDTH.W)))
86+
val req_released_likelyShared = RegInit(false.B)
8687

8788
assert(!(req_valid && dirResult.hit && !isT(meta.state) && meta.dirty),
8889
"directory valid read with dirty under non-T state")
@@ -394,9 +395,8 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes {
394395
oa.ns := enableNS.B
395396
// set 'LikelyShared' to 1 here when:
396397
// - WriteEvictOrEvict (on retry) with SC state
397-
oa.likelyshared := Mux(
398-
release_valid2,
399-
afterIssueEbOrElse(req_released_chiOpcode === WriteEvictOrEvict && meta.state === BRANCH, false.B),
398+
oa.likelyshared := afterIssueEbOrElse(
399+
Mux(release_valid2, req_released_likelyShared, false.B),
400400
false.B
401401
)
402402
oa.allowRetry := state.s_reissue.getOrElse(false.B)
@@ -1053,6 +1053,7 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes {
10531053
}
10541054
}.elsewhen (mp_release_valid) {
10551055
req_released_chiOpcode := mp_release.chiOpcode.get
1056+
req_released_likelyShared := mp_release.likelyshared.get
10561057
state.s_release := true.B
10571058
state.s_cbwrdata.get := isEvict
10581059
when (isEvict) {

0 commit comments

Comments
 (0)