Remove master_xact_id from Probe and Release
This commit is contained in:
parent
d735f64110
commit
10309849b7
@ -79,52 +79,41 @@ class Acquire extends ClientSourcedMessage
|
|||||||
val atomic_opcode = Bits(width = params(TLAtomicOpBits))
|
val atomic_opcode = Bits(width = params(TLAtomicOpBits))
|
||||||
}
|
}
|
||||||
|
|
||||||
object Probe
|
|
||||||
{
|
object Probe {
|
||||||
def apply(p_type: UInt, addr: UInt, master_xact_id: UInt) = {
|
def apply(p_type: UInt, addr: UInt) = {
|
||||||
val prb = new Probe
|
val prb = new Probe
|
||||||
prb.p_type := p_type
|
prb.p_type := p_type
|
||||||
prb.addr := addr
|
prb.addr := addr
|
||||||
prb.master_xact_id := master_xact_id
|
|
||||||
prb
|
prb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Probe extends MasterSourcedMessage
|
class Probe extends MasterSourcedMessage
|
||||||
with HasPhysicalAddress
|
with HasPhysicalAddress {
|
||||||
with HasMasterTransactionId {
|
|
||||||
val p_type = UInt(width = params(TLCoherence).probeTypeWidth)
|
val p_type = UInt(width = params(TLCoherence).probeTypeWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
object Release
|
object Release {
|
||||||
{
|
def apply(r_type: UInt, addr: UInt, client_xact_id: UInt, data: UInt): Release = {
|
||||||
def apply(r_type: UInt, addr: UInt, data: UInt): Release = {
|
|
||||||
val rel = new Release
|
|
||||||
rel.r_type := r_type
|
|
||||||
rel.addr := addr
|
|
||||||
rel.data := data
|
|
||||||
rel
|
|
||||||
}
|
|
||||||
def apply(r_type: UInt, addr: UInt, client_xact_id: UInt, master_xact_id: UInt): Release = {
|
|
||||||
val rel = new Release
|
val rel = new Release
|
||||||
rel.r_type := r_type
|
rel.r_type := r_type
|
||||||
rel.addr := addr
|
rel.addr := addr
|
||||||
rel.client_xact_id := client_xact_id
|
rel.client_xact_id := client_xact_id
|
||||||
rel.master_xact_id := master_xact_id
|
|
||||||
rel.data := UInt(0)
|
|
||||||
rel
|
|
||||||
}
|
|
||||||
def apply(r_type: UInt, addr: UInt, client_xact_id: UInt, master_xact_id: UInt, data: UInt): Release = {
|
|
||||||
val rel = apply(r_type, addr, client_xact_id, master_xact_id)
|
|
||||||
rel.data := data
|
rel.data := data
|
||||||
rel
|
rel
|
||||||
}
|
}
|
||||||
|
def apply(r_type: UInt, addr: UInt, client_xact_id: UInt): Release = {
|
||||||
|
apply(r_type, addr, client_xact_id, UInt(0))
|
||||||
|
}
|
||||||
|
def apply(r_type: UInt, addr: UInt): Release = {
|
||||||
|
apply(r_type, addr, UInt(0), UInt(0))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Release extends ClientSourcedMessage
|
class Release extends ClientSourcedMessage
|
||||||
with HasPhysicalAddress
|
with HasPhysicalAddress
|
||||||
with HasClientTransactionId
|
with HasClientTransactionId
|
||||||
with HasMasterTransactionId
|
|
||||||
with HasTileLinkData {
|
with HasTileLinkData {
|
||||||
val r_type = UInt(width = params(TLCoherence).releaseTypeWidth)
|
val r_type = UInt(width = params(TLCoherence).releaseTypeWidth)
|
||||||
}
|
}
|
||||||
|
@ -62,8 +62,8 @@ class L2CoherenceAgent(bankId: Int, innerId: String, outerId: String) extends
|
|||||||
val any_release_conflict = trackerList.tail.map(_.io.has_release_conflict).reduce(_||_)
|
val any_release_conflict = trackerList.tail.map(_.io.has_release_conflict).reduce(_||_)
|
||||||
val block_releases = Bool(false)
|
val block_releases = Bool(false)
|
||||||
val conflict_idx = Vec(trackerList.map(_.io.has_release_conflict)).lastIndexWhere{b: Bool => b}
|
val conflict_idx = Vec(trackerList.map(_.io.has_release_conflict)).lastIndexWhere{b: Bool => b}
|
||||||
//val release_idx = Mux(voluntary, Mux(any_release_conflict, conflict_idx, UInt(0)), release.bits.payload.master_xact_id) // TODO: Add merging logic to allow allocated AcquireTracker to handle conflicts, send all necessary grants, use first sufficient response
|
val release_idx = Mux(voluntary, UInt(0), conflict_idx)
|
||||||
val release_idx = Mux(voluntary, UInt(0), release.bits.payload.master_xact_id)
|
// TODO: Add merging logic to allow allocated AcquireTracker to handle conflicts, send all necessary grants, use first sufficient response
|
||||||
for( i <- 0 until trackerList.size ) {
|
for( i <- 0 until trackerList.size ) {
|
||||||
val t = trackerList(i).io.inner
|
val t = trackerList(i).io.inner
|
||||||
t.release.bits := release.bits
|
t.release.bits := release.bits
|
||||||
@ -200,9 +200,7 @@ class AcquireTracker(trackerId: Int, bankId: Int, innerId: String, outerId: Stri
|
|||||||
io.inner.probe.valid := Bool(false)
|
io.inner.probe.valid := Bool(false)
|
||||||
io.inner.probe.bits.header.src := UInt(bankId)
|
io.inner.probe.bits.header.src := UInt(bankId)
|
||||||
io.inner.probe.bits.header.dst := curr_p_id
|
io.inner.probe.bits.header.dst := curr_p_id
|
||||||
io.inner.probe.bits.payload := Probe(co.getProbeType(xact, co.masterMetadataOnFlush),
|
io.inner.probe.bits.payload := Probe(co.getProbeType(xact, co.masterMetadataOnFlush), xact.addr)
|
||||||
xact.addr,
|
|
||||||
UInt(trackerId))
|
|
||||||
|
|
||||||
val grant_type = co.getGrantType(xact, co.masterMetadataOnFlush)
|
val grant_type = co.getGrantType(xact, co.masterMetadataOnFlush)
|
||||||
io.inner.grant.valid := Bool(false)
|
io.inner.grant.valid := Bool(false)
|
||||||
|
Loading…
Reference in New Issue
Block a user