Clean up uncoalescer -> respQueue doc
This commit is contained in:
@@ -1076,18 +1076,26 @@ class CoalescingUnitImp(outer: CoalescingUnit, config: CoalescerConfig)
|
|||||||
// Connect lookup result from InflightTable
|
// Connect lookup result from InflightTable
|
||||||
uncoalescer.io.inflightLookup <> inflightTable.io.lookup
|
uncoalescer.io.inflightLookup <> inflightTable.io.lookup
|
||||||
// InflightTable IO: Look up the table with incoming coalesced responses
|
// InflightTable IO: Look up the table with incoming coalesced responses
|
||||||
// FIXME: this should be done inside uncoalescer
|
// @cleanup: this should be done inside uncoalescer
|
||||||
inflightTable.io.lookupSourceId := tlCoal.d.bits.source
|
inflightTable.io.lookupSourceId := tlCoal.d.bits.source
|
||||||
|
|
||||||
// Connect uncoalescer results back into response queue
|
// Connect uncoalescer results back into response queue
|
||||||
(respQueues zip uncoalescer.io.respQueueIO).foreach { case (q, uncoalEnqs) =>
|
(respQueues zip uncoalescer.io.respQueueIO).zipWithIndex.foreach
|
||||||
|
{ case ((q, sameLaneUncoalResps), lane) =>
|
||||||
|
// reqQueueDepth here is the maximum number of same-lane, different-time
|
||||||
|
// requests that can go into a single coalesced response. We need to have
|
||||||
|
// that many enq ports to not backpressure the uncoalescer.
|
||||||
require(q.io.enq.length == config.reqQueueDepth + respQueueUncoalPortOffset,
|
require(q.io.enq.length == config.reqQueueDepth + respQueueUncoalPortOffset,
|
||||||
s"wrong number of enq ports for MultiPort response queue")
|
s"wrong number of enq ports for MultiPort response queue")
|
||||||
// slice the ports reserved for uncoalesced response
|
// slice the ports reserved for uncoalesced response
|
||||||
val qUncoalEnqs = q.io.enq.slice(respQueueUncoalPortOffset, q.io.enq.length)
|
val sameLaneEnqPorts = q.io.enq.slice(respQueueUncoalPortOffset, q.io.enq.length)
|
||||||
(qUncoalEnqs zip uncoalEnqs).foreach {
|
(sameLaneEnqPorts zip sameLaneUncoalResps).foreach {
|
||||||
case (enq, uncoalEnq) => {
|
case (enqPort, uncoalResp) => {
|
||||||
enq <> uncoalEnq
|
enqPort <> uncoalResp
|
||||||
|
// assert(
|
||||||
|
// enqPort.ready,
|
||||||
|
// cf"respQueue: enq port for uncoalesced response is blocked on lane $lane"
|
||||||
|
// )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user