1
0

Fix PutBlock after Release bug

There is logic in the broadcast hub to skip the outer acquire if there
is an outgoing release, since the data will be written out through the
release channel. However, this will cause an issue in the case of
PutBlock requests. If the tail beats of the PutBlock show up after the
outer release has already been sent, the data will be corrupted.

The fix is to make the outer release block if there are pending
inner PutBlock beats.
This commit is contained in:
Howard Mao 2016-10-28 18:23:50 -07:00
parent cb81ea516c
commit f0e9a2a081

View File

@ -175,6 +175,7 @@ class BufferedBroadcastAcquireTracker(trackerId: Int)(implicit p: Parameters)
// If there was a writeback, forward it outwards // If there was a writeback, forward it outwards
outerRelease( outerRelease(
block_orel = pending_put_data(vol_ognt_counter.up.idx),
coh = outer_coh.onHit(M_XWR), coh = outer_coh.onHit(M_XWR),
data = data_buffer(vol_ognt_counter.up.idx)) data = data_buffer(vol_ognt_counter.up.idx))