Fix generating PutPartialData from toTLA

Including mask in the argument calls the method override that generates
PutPartialData.
This commit is contained in:
Hansung Kim
2023-04-23 11:53:42 -07:00
parent 0c0a8ec553
commit b6115cc394

View File

@@ -102,7 +102,6 @@ class ReqQueueEntry(sourceWidth: Int, sizeWidth: Int, addressWidth: Int, maxSize
toAddress = this.address,
lgSize = this.size,
data = this.data,
mask = this.mask
)
val (glegal, gbits) = edgeOut.Get(
fromSource = this.source,
@@ -303,6 +302,11 @@ class CoalescingUnitImp(outer: CoalescingUnit, config: CoalescerConfig) extends
req.address := tlIn.a.bits.address
req.data := tlIn.a.bits.data
req.size := tlIn.a.bits.size
// FIXME: req.data is still containing TL-aligned data. This is fine if
// we're simply passing through this data out the other end, but not if
// the outgoing TL edge (tlOut) has different data width from the incoming
// edge (tlIn). Possible TODO to only store the relevant portion of the
// data, at the cost of re-aligning at the outgoing end.
req.mask := tlIn.a.bits.mask
assert(reqQueue.io.queue.enq.ready, "reqQueue is supposed to be always ready")
@@ -689,6 +693,7 @@ class InflightCoalReqTableEntry(
object TLUtils {
def AOpcodeIsStore(opcode: UInt): Bool = {
// 0: PutFullData, 1: PutPartialData, 4: Get
assert(
opcode === TLMessages.PutFullData || opcode === TLMessages.Get,
"unhandled TL A opcode found"