L2 WritebackUnit bug fix
This commit is contained in:
parent
b4e38192a1
commit
d7cb60e8fa
@ -1012,9 +1012,11 @@ class L2WritebackUnit(trackerId: Int) extends L2XactTracker {
|
|||||||
io.inner.release.ready := state === s_inner_probe || state === s_busy
|
io.inner.release.ready := state === s_inner_probe || state === s_busy
|
||||||
when(io.inner.release.fire()) {
|
when(io.inner.release.fire()) {
|
||||||
xact.coh.inner := inner_coh_on_irel
|
xact.coh.inner := inner_coh_on_irel
|
||||||
when(io.irel().hasData()) { xact.coh.outer := outer_coh_on_irel } // WB is a write
|
|
||||||
data_buffer(io.inner.release.bits.addr_beat) := io.inner.release.bits.data
|
data_buffer(io.inner.release.bits.addr_beat) := io.inner.release.bits.data
|
||||||
}
|
}
|
||||||
|
when(io.inner.release.valid && io.irel().conflicts(xact_addr_block) && io.irel().hasData()) {
|
||||||
|
xact.coh.outer := outer_coh_on_irel // must writeback dirty data supplied by any matching release, even voluntary ones
|
||||||
|
}
|
||||||
|
|
||||||
// If a release didn't write back data, have to read it from data array
|
// If a release didn't write back data, have to read it from data array
|
||||||
pending_reads := (pending_reads &
|
pending_reads := (pending_reads &
|
||||||
|
Loading…
Reference in New Issue
Block a user