fix wb bug
This commit is contained in:
parent
05b5188ad9
commit
404773eb9f
@ -462,6 +462,7 @@ class L2AcquireTracker(trackerId: Int, bankId: Int, innerId: String, outerId: St
|
|||||||
val crel_wb_src = Reg(init = UInt(0, width = log2Up(nClients)))
|
val crel_wb_src = Reg(init = UInt(0, width = log2Up(nClients)))
|
||||||
val crel_wb_g_type = Reg(init = UInt(0, width = co.grantTypeWidth))
|
val crel_wb_g_type = Reg(init = UInt(0, width = co.grantTypeWidth))
|
||||||
val wb_buffer = Reg{xact.data.clone}
|
val wb_buffer = Reg{xact.data.clone}
|
||||||
|
val addr_wb = Cat(xact_internal.meta.tag, xact.addr(untagBits-1,blockOffBits))
|
||||||
|
|
||||||
val release_count = Reg(init = UInt(0, width = log2Up(nClients+1)))
|
val release_count = Reg(init = UInt(0, width = log2Up(nClients+1)))
|
||||||
val pending_probes = Reg(init = co.dir().flush)
|
val pending_probes = Reg(init = co.dir().flush)
|
||||||
@ -476,7 +477,8 @@ class L2AcquireTracker(trackerId: Int, bankId: Int, innerId: String, outerId: St
|
|||||||
|
|
||||||
io.has_acquire_conflict := co.isCoherenceConflict(xact.addr, c_acq.payload.addr) &&
|
io.has_acquire_conflict := co.isCoherenceConflict(xact.addr, c_acq.payload.addr) &&
|
||||||
(state != s_idle) //TODO: Also indexes
|
(state != s_idle) //TODO: Also indexes
|
||||||
io.has_release_conflict := co.isCoherenceConflict(xact.addr, c_rel.payload.addr) &&
|
io.has_release_conflict := (co.isCoherenceConflict(xact.addr, c_rel.payload.addr) ||
|
||||||
|
co.isCoherenceConflict(addr_wb, c_rel.payload.addr)) &&
|
||||||
(state != s_idle) //TODO: Also indexes?
|
(state != s_idle) //TODO: Also indexes?
|
||||||
|
|
||||||
val next_coh_on_release = co.masterMetadataOnRelease(
|
val next_coh_on_release = co.masterMetadataOnRelease(
|
||||||
@ -488,7 +490,6 @@ class L2AcquireTracker(trackerId: Int, bankId: Int, innerId: String, outerId: St
|
|||||||
xact_internal.meta.coh,
|
xact_internal.meta.coh,
|
||||||
c_gnt.header.dst)
|
c_gnt.header.dst)
|
||||||
|
|
||||||
val addr_wb = Cat(xact_internal.meta.tag, xact.addr(untagBits-1,blockOffBits))
|
|
||||||
val outer_write_acq = Bundle(UncachedWrite(xact.addr, UInt(trackerId), xact.data),
|
val outer_write_acq = Bundle(UncachedWrite(xact.addr, UInt(trackerId), xact.data),
|
||||||
{ case TLId => outerId })
|
{ case TLId => outerId })
|
||||||
val outer_write_wb = Bundle(UncachedWrite(addr_wb, UInt(trackerId), wb_buffer),
|
val outer_write_wb = Bundle(UncachedWrite(addr_wb, UInt(trackerId), wb_buffer),
|
||||||
|
Loading…
Reference in New Issue
Block a user