Fix io.finished of MemTraceDriver not waiting for inflight responses
This commit is contained in:
@@ -1130,10 +1130,10 @@ class CoalescingUnitImp(outer: CoalescingUnit, config: CoalescerConfig)
|
|||||||
(sameLaneEnqPorts zip sameLaneUncoalResps).foreach {
|
(sameLaneEnqPorts zip sameLaneUncoalResps).foreach {
|
||||||
case (enqPort, uncoalResp) => {
|
case (enqPort, uncoalResp) => {
|
||||||
enqPort <> uncoalResp
|
enqPort <> uncoalResp
|
||||||
// assert(
|
|
||||||
// enqPort.ready,
|
when(!enqPort.ready) {
|
||||||
// cf"respQueue: enq port for uncoalesced response is blocked on lane $lane"
|
printf(s"respQueue: enq port for uncoalesced response is blocked on lane ${lane}\n")
|
||||||
// )
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1676,19 +1676,19 @@ class MemTraceDriverImp(
|
|||||||
dontTouch(tlOut.d)
|
dontTouch(tlOut.d)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Give some slack time after trace EOF to get some outstanding responses
|
|
||||||
// back.
|
|
||||||
val traceFinished = RegInit(false.B)
|
val traceFinished = RegInit(false.B)
|
||||||
when(sim.io.trace_read.finished) {
|
when(sim.io.trace_read.finished) {
|
||||||
traceFinished := true.B
|
traceFinished := true.B
|
||||||
}
|
}
|
||||||
io.finished := traceFinished
|
|
||||||
|
|
||||||
// currently the .cc file ouptuts finished=true while it still need to issue one more request
|
// ensure no more new requests OR inflight requests are remaining
|
||||||
val noValidReqs = sim.io.trace_read.valid === 0.U
|
val noValidReqs = sim.io.trace_read.valid === 0.U
|
||||||
val allReqReclaimed = !(sourceGens.map(_.io.inflight).reduce(_ || _))
|
val allReqReclaimed = !(sourceGens.map(_.io.inflight).reduce(_ || _))
|
||||||
|
|
||||||
when(traceFinished && allReqReclaimed && noValidReqs) {
|
io.finished := traceFinished && allReqReclaimed && noValidReqs
|
||||||
|
|
||||||
|
// FIXME
|
||||||
|
when(io.finished) {
|
||||||
assert(
|
assert(
|
||||||
false.B,
|
false.B,
|
||||||
"\n\n\nsimulation Successfully finished\n\n\n (this assertion intentional fail upon MemTracer termination)"
|
"\n\n\nsimulation Successfully finished\n\n\n (this assertion intentional fail upon MemTracer termination)"
|
||||||
|
|||||||
Reference in New Issue
Block a user