diff --git a/src/main/scala/tilelink/Coalescing.scala b/src/main/scala/tilelink/Coalescing.scala index 2aa87d4..d693562 100644 --- a/src/main/scala/tilelink/Coalescing.scala +++ b/src/main/scala/tilelink/Coalescing.scala @@ -53,9 +53,10 @@ case class CoalescerConfig( coalLogSizes: Seq[Int], // list of coalescer sizes to try in the MonoCoalescers // each size is log(byteSize) sizeEnum: InFlightTableSizeEnum, - numCoalReq: Int, // the total number of coalesced request - arbiterOutputs: Int, //total number RW ports from the - bankStrideInBytes: Int //cache line strides across the different banks + numCoalReqs: Int, // total number of coalesced requests we can generate in one cycle + numArbiterOutputPorts: Int, // total of output ports the arbiter will arbitrate into. + // this has to match downstream cache's configuration + bankStrideInBytes: Int // cache line strides across the different banks ) { // maximum coalesced size def maxCoalLogSize: Int = coalLogSizes.max @@ -77,8 +78,8 @@ object defaultConfig extends CoalescerConfig( respQueueDepth = 4, coalLogSizes = Seq(3), sizeEnum = DefaultInFlightTableSizeEnum, - numCoalReq = 1, - arbiterOutputs = 4, + numCoalReqs = 1, + numArbiterOutputPorts = 4, bankStrideInBytes = 64 //Current L2 is strided by 512 bits ) @@ -1729,10 +1730,10 @@ class TLRAMCoalescerTest(timeout: Int = 500000)(implicit p: Parameters) extends class CoalArbiter(config: CoalescerConfig) (implicit p: Parameters) extends LazyModule { // Let SIMT's word size be 32, and read/write granularity be 256 - val fullSourceIdRange = config.numOldSrcIds * config.numLanes + config.numNewSrcIds * config.numCoalReq + val fullSourceIdRange = config.numOldSrcIds * config.numLanes + config.numNewSrcIds * config.numCoalReqs // K client nodes of edge size 32 for non-coalesced reqs - val nonCoalNarrowNodes = Seq.tabulate(config.arbiterOutputs){ i => + val nonCoalNarrowNodes = Seq.tabulate(config.numArbiterOutputPorts){ i => val nonCoalNarrowParam = Seq( TLMasterParameters.v1( name = "NonCoalNarrowNode" + i.toString, @@ -1750,7 +1751,7 @@ class CoalArbiter(config: CoalescerConfig) (implicit p: Parameters) extends Lazy ) // K client nodes of edge size 256 for the coalesced reqs - val coalReqNodes = Seq.tabulate(config.arbiterOutputs){ i => + val coalReqNodes = Seq.tabulate(config.numArbiterOutputPorts){ i => val coalParam = Seq( TLMasterParameters.v1( name = "CoalReqNode" + i.toString, @@ -1805,10 +1806,10 @@ class CoalArbiterImpl(outer: CoalArbiter, val io =IO(new Bundle { - val nonCoalVec = Vec(config.numLanes, Flipped(Decoupled(nonCoalEntryT.cloneType))) - val coalVec = Vec(config.numCoalReq, Flipped(Decoupled(coalEntryT.cloneType))) - val respNonCoalVec = Vec(config.numLanes, Decoupled(respNonCoalEntryT.cloneType)) - val respCoalBundle = Decoupled(respCoalBundleT.cloneType) + val nonCoalReqs = Vec(config.numLanes, Flipped(Decoupled(nonCoalEntryT))) + val coalReqs = Vec(config.numCoalReqs, Flipped(Decoupled(coalEntryT))) + val nonCoalResps = Vec(config.numLanes, Decoupled(respNonCoalEntryT)) + val coalResp = Decoupled(respCoalBundleT) } )