Fix stupid D$ probe bug
This commit is contained in:
parent
90a7d6a343
commit
be4eceec0d
@ -474,7 +474,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
|
|||||||
probe_bits.address := Cat(s2_victim_tag, s2_req.addr(idxMSB, idxLSB)) << idxLSB
|
probe_bits.address := Cat(s2_victim_tag, s2_req.addr(idxMSB, idxLSB)) << idxLSB
|
||||||
}
|
}
|
||||||
when (s2_probe) {
|
when (s2_probe) {
|
||||||
s1_nack := true
|
val probeNack = Wire(init = true.B)
|
||||||
when (s2_meta_error) {
|
when (s2_meta_error) {
|
||||||
release_state := s_probe_retry
|
release_state := s_probe_retry
|
||||||
}.elsewhen (s2_prb_ack_data) {
|
}.elsewhen (s2_prb_ack_data) {
|
||||||
@ -485,9 +485,10 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
|
|||||||
release_state := Mux(releaseDone, s_probe_write_meta, s_probe_rep_clean)
|
release_state := Mux(releaseDone, s_probe_write_meta, s_probe_rep_clean)
|
||||||
}.otherwise {
|
}.otherwise {
|
||||||
tl_out.c.valid := true
|
tl_out.c.valid := true
|
||||||
s1_nack := !releaseDone
|
probeNack := !releaseDone
|
||||||
release_state := Mux(releaseDone, s_ready, s_probe_rep_miss)
|
release_state := Mux(releaseDone, s_ready, s_probe_rep_miss)
|
||||||
}
|
}
|
||||||
|
when (probeNack) { s1_nack := true }
|
||||||
}
|
}
|
||||||
when (release_state === s_probe_retry) {
|
when (release_state === s_probe_retry) {
|
||||||
metaArb.io.in(6).valid := true
|
metaArb.io.in(6).valid := true
|
||||||
|
Loading…
Reference in New Issue
Block a user