1
0
Fork 0

Permit early grant acks to broadcast hub

This commit is contained in:
Andrew Waterman 2017-04-17 17:27:00 -07:00 committed by Andrew Waterman
parent cc9ec1d51a
commit 657f4d4e0c
1 changed files with 9 additions and 6 deletions

View File

@ -226,17 +226,20 @@ class TLBroadcastTracker(id: Int, lineBytes: Int, probeCountBits: Int, bufferles
// Only one operation can be inflight per line, because we need to be sure
// we send the request after all the probes we sent and before all the next probes
val idle = RegInit(Bool(true))
val got_e = RegInit(Bool(true))
val sent_d = RegInit(Bool(true))
val opcode = Reg(io.in_a.bits.opcode)
val param = Reg(io.in_a.bits.param)
val size = Reg(io.in_a.bits.size)
val source = Reg(io.in_a.bits.source)
val address = RegInit(UInt(id << lineShift, width = io.in_a.bits.address.getWidth))
val count = Reg(UInt(width = probeCountBits))
val idle = got_e && sent_d
when (io.in_a.fire() && io.in_a_first) {
assert (idle)
idle := Bool(false)
sent_d := Bool(false)
got_e := io.in_a.bits.opcode =/= TLMessages.Acquire
opcode := io.in_a.bits.opcode
param := io.in_a.bits.param
size := io.in_a.bits.size
@ -245,12 +248,12 @@ class TLBroadcastTracker(id: Int, lineBytes: Int, probeCountBits: Int, bufferles
count := io.probe
}
when (io.d_last) {
assert (!idle)
idle := opcode =/= TLMessages.Acquire
assert (!sent_d)
sent_d := Bool(true)
}
when (io.e_last) {
assert (!idle)
idle := Bool(true)
assert (!got_e)
got_e := Bool(true)
}
when (io.probenack || io.probedack) {