Skip to content

Commit 2264e55

Browse files
jin120811cyril0124
authored andcommittedMar 17, 2025
fix(RXSNP): fix x_value in vcs (OpenXiangShan#381)
Assertion is required only if `rxsnp.valid` = 1. Otherwise x may be generated in vcs.
1 parent d99e48b commit 2264e55

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed
 

‎src/main/scala/coupledL2/tl2chi/RXSNP.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class RXSNP(
5858
* while waitings for DS write were unnecessary since the silent transition would only happen on clean block.
5959
*/
6060
val reqBlockSnpMask = VecInit(io.msInfo.map(s =>
61-
s.valid && s.bits.set === task.set && s.bits.reqTag === task.tag && (
61+
s.valid && s.bits.set === task.set && s.bits.reqTag === task.tag && (
6262
s.bits.w_grantfirst || // See [2], [3] above with 's.bits.blockRefill'
6363
s.bits.aliasTask.getOrElse(false.B) && !s.bits.w_rprobeacklast || // See [5] above
6464
!s.bits.s_cmoresp && (!s.bits.w_rprobeacklast || !s.bits.s_cmometaw) // See [6] above
@@ -93,7 +93,7 @@ class RXSNP(
9393
// '!s.bits.dirHit' : Nesting a Cache Replacement subsequent release
9494
// '!s.bits.s_cmoresp' : Nesting a CMO subsequent release
9595
val replaceNestSnpMask = VecInit(io.msInfo.map(s =>
96-
s.valid && s.bits.set === task.set && s.bits.metaTag === task.tag &&
96+
s.valid && s.bits.set === task.set && s.bits.metaTag === task.tag &&
9797
(!s.bits.dirHit || !s.bits.s_cmoresp) && s.bits.meta.state =/= INVALID &&
9898
RegNext(s.bits.w_replResp) && s.bits.w_rprobeacklast && !s.bits.w_releaseack
9999
)).asUInt
@@ -109,7 +109,7 @@ class RXSNP(
109109
Mux(hit, ms.bits.meta, MetaEntry())
110110
}})
111111

112-
assert(PopCount(replaceNestSnpMask) <= 1.U, "multiple replace nest snoop")
112+
assert(!rxsnp.valid || PopCount(replaceNestSnpMask) <= 1.U, "multiple replace nest snoop")
113113

114114
task := fromSnpToTaskBundle(rxsnp.bits)
115115

0 commit comments

Comments
 (0)