1
0

L2 WritebackUnit bug fix

This commit is contained in:
Henry Cook 2015-07-02 13:52:40 -07:00
parent b4e38192a1
commit d7cb60e8fa

View File

@ -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 &