add probe unit
This commit is contained in:
parent
6e32cc8b20
commit
1258f31825
@ -135,6 +135,12 @@ trait ThreeStateIncoherence extends CoherencePolicy {
|
|||||||
Mux(outstanding.t_type === X_INIT_READ_EXCLUSIVE, tileDirty, tileClean)
|
Mux(outstanding.t_type === X_INIT_READ_EXCLUSIVE, tileDirty, tileClean)
|
||||||
}
|
}
|
||||||
def newStateOnProbeReq(incoming: ProbeRequest, state: UFix): Bits = state
|
def newStateOnProbeReq(incoming: ProbeRequest, state: UFix): Bits = state
|
||||||
|
def newProbeReply (incoming: ProbeRequest, has_data: Bool): ProbeReply = {
|
||||||
|
val reply = Wire() { new ProbeReply() }
|
||||||
|
reply.p_type := P_REP_INVALIDATE_ACK
|
||||||
|
reply.global_xact_id := UFix(0)
|
||||||
|
reply
|
||||||
|
}
|
||||||
def probeReplyHasData (reply: ProbeReply): Bool = Bool(false)
|
def probeReplyHasData (reply: ProbeReply): Bool = Bool(false)
|
||||||
def transactionInitHasData (init: TransactionInit): Bool = (init.t_type === X_INIT_WRITE_UNCACHED)
|
def transactionInitHasData (init: TransactionInit): Bool = (init.t_type === X_INIT_WRITE_UNCACHED)
|
||||||
}
|
}
|
||||||
@ -199,6 +205,22 @@ trait FourStateCoherence extends CoherencePolicy {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = {
|
||||||
|
val reply = Wire() { new ProbeReply() }
|
||||||
|
val with_data = MuxLookup(incoming.p_type, state, Array(
|
||||||
|
probeInvalidate -> P_REP_INVALIDATE_DATA,
|
||||||
|
probeDowngrade -> P_REP_DOWNGRADE_DATA,
|
||||||
|
probeCopy -> P_REP_COPY_DATA
|
||||||
|
))
|
||||||
|
val without_data = MuxLookup(incoming.p_type, state, Array(
|
||||||
|
probeInvalidate -> P_REP_INVALIDATE_ACK,
|
||||||
|
probeDowngrade -> P_REP_DOWNGRADE_ACK,
|
||||||
|
probeCopy -> P_REP_COPY_ACK
|
||||||
|
))
|
||||||
|
reply.p_type := Mux(needsWriteback(state), with_data, without_data)
|
||||||
|
reply.global_xact_id := incoming.global_xact_id
|
||||||
|
reply
|
||||||
|
}
|
||||||
def probeReplyHasData (reply: ProbeReply): Bool = {
|
def probeReplyHasData (reply: ProbeReply): Bool = {
|
||||||
(reply.p_type === P_REP_INVALIDATE_DATA ||
|
(reply.p_type === P_REP_INVALIDATE_DATA ||
|
||||||
reply.p_type === P_REP_DOWNGRADE_DATA ||
|
reply.p_type === P_REP_DOWNGRADE_DATA ||
|
||||||
@ -446,6 +468,9 @@ class CoherenceHubNull extends CoherenceHub {
|
|||||||
|
|
||||||
io.tiles(0).xact_abort.valid := Bool(false)
|
io.tiles(0).xact_abort.valid := Bool(false)
|
||||||
io.tiles(0).xact_finish.ready := Bool(true)
|
io.tiles(0).xact_finish.ready := Bool(true)
|
||||||
|
io.tiles(0).probe_req.valid := Bool(false)
|
||||||
|
io.tiles(0).probe_rep.ready := Bool(true)
|
||||||
|
io.tiles(0).probe_rep_data.ready := Bool(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user