This commit is contained in:
Hansung Kim
2023-04-23 20:56:55 -07:00
parent 0f2e4ee8aa
commit c21a196907

View File

@@ -455,16 +455,23 @@ class CoalescingUnitImp(outer: CoalescingUnit, config: CoalescerConfig) extends
val offsetBits = 4 // FIXME hardcoded val offsetBits = 4 // FIXME hardcoded
// but the width of the size enum // but the width of the size enum
val newEntry = Wire( val newEntry = Wire(
new InflightCoalReqTableEntry(config.NUM_LANES, numPerLaneReqs, sourceWidth, offsetBits, new InflightCoalReqTableEntry(
config.SizeEnum.getWidth) config.NUM_LANES,
numPerLaneReqs,
sourceWidth,
offsetBits,
config.SizeEnum.getWidth
)
) )
println(s"=========== table sourceWidth: ${sourceWidth}") println(s"=========== table sourceWidth: ${sourceWidth}")
// println(s"=========== table sizeEnumBits: ${newEntry.sizeEnumBits}") // println(s"=========== table sizeEnumBits: ${newEntry.sizeEnumBits}")
newEntry.source := coalescer.io.out_req.bits.source newEntry.source := coalescer.io.out_req.bits.source
// TODO: richard to write table fill logic // TODO: richard to write table fill logic
assert(tlCoal.params.dataBits == (1 << config.MAX_SIZE) * 8, assert(
s"tlCoal param dataBits (${tlCoal.params.dataBits}) mismatch coalescer constant") tlCoal.params.dataBits == (1 << config.MAX_SIZE) * 8,
s"tlCoal param dataBits (${tlCoal.params.dataBits}) mismatch coalescer constant"
)
val origReqs = reqQueues.map(q => q.io.queue.deq.bits) val origReqs = reqQueues.map(q => q.io.queue.deq.bits)
newEntry.lanes.foreach { l => newEntry.lanes.foreach { l =>
l.reqs.zipWithIndex.foreach { case (r, i) => l.reqs.zipWithIndex.foreach { case (r, i) =>
@@ -545,8 +552,12 @@ class UncoalescingUnit(config: CoalescerConfig) extends Module {
val uncoalResps = Output( val uncoalResps = Output(
Vec( Vec(
config.NUM_LANES, config.NUM_LANES,
Vec(config.DEPTH, ValidIO(new RespQueueEntry( Vec(
log2Ceil(config.NUM_OLD_IDS), config.WORD_WIDTH, config.WORD_SIZE))) config.DEPTH,
ValidIO(
new RespQueueEntry(log2Ceil(config.NUM_OLD_IDS), config.WORD_WIDTH, config.WORD_SIZE)
)
)
) )
) )
}) })
@@ -607,7 +618,12 @@ class UncoalescingUnit(config: CoalescerConfig) extends Module {
val logSize = config.SizeEnum.enumToLogSize(config.SizeEnum(oldReq.sizeEnum)) val logSize = config.SizeEnum.enumToLogSize(config.SizeEnum(oldReq.sizeEnum))
ioOldReq.bits.size := logSize ioOldReq.bits.size := logSize
ioOldReq.bits.data := ioOldReq.bits.data :=
getCoalescedDataChunk(io.coalResp.bits.data, io.coalResp.bits.data.getWidth, oldReq.offset, logSize) getCoalescedDataChunk(
io.coalResp.bits.data,
io.coalResp.bits.data.getWidth,
oldReq.offset,
logSize
)
} }
} }
} }
@@ -621,8 +637,13 @@ class UncoalescingUnit(config: CoalescerConfig) extends Module {
class InflightCoalReqTable(config: CoalescerConfig) extends Module { class InflightCoalReqTable(config: CoalescerConfig) extends Module {
val offsetBits = 4 // FIXME hardcoded val offsetBits = 4 // FIXME hardcoded
val sizeBits = 2 // FIXME hardcoded val sizeBits = 2 // FIXME hardcoded
val entryT = new InflightCoalReqTableEntry(config.NUM_LANES, config.DEPTH, val entryT = new InflightCoalReqTableEntry(
log2Ceil(config.NUM_OLD_IDS), config.MAX_SIZE, config.SizeEnum.getWidth) config.NUM_LANES,
config.DEPTH,
log2Ceil(config.NUM_OLD_IDS),
config.MAX_SIZE,
config.SizeEnum.getWidth
)
val entries = config.NUM_NEW_IDS val entries = config.NUM_NEW_IDS
val sourceWidth = log2Ceil(config.NUM_OLD_IDS) val sourceWidth = log2Ceil(config.NUM_OLD_IDS)