diff --git a/src/main/scala/amba/ahb/ToTL.scala b/src/main/scala/amba/ahb/ToTL.scala index a62b5c13fd..fec1fadc93 100644 --- a/src/main/scala/amba/ahb/ToTL.scala +++ b/src/main/scala/amba/ahb/ToTL.scala @@ -13,6 +13,7 @@ case class AHBToTLNode()(implicit valName: ValName) extends MixedAdapterNode(AHB dFn = { case mp => TLMasterPortParameters.v2( masters = mp.masters.map { m => + // This value should be constrained by a data width parameter that flows from masters to slaves // AHB fixed length transfer size maximum is 16384 = 1024 * 16 bits, hsize is capped at 111 = 1024 bit transfer size and hburst is capped at 111 = 16 beat burst TLMasterParameters.v2( name = m.name, diff --git a/src/main/scala/amba/axis/Parameters.scala b/src/main/scala/amba/axis/Parameters.scala index b58f280569..a353def75b 100644 --- a/src/main/scala/amba/axis/Parameters.scala +++ b/src/main/scala/amba/axis/Parameters.scala @@ -61,7 +61,7 @@ class AXISSlavePortParameters private ( beatBytes.foreach { b => require(isPow2(b)) } val endDestinationId = slaves.map(_.destinationId).max + 1 - val supportsCover = TransferSizes.cover(slaves.map(_.supportsSizes)) + val supportsMinCover = TransferSizes.mincover(slaves.map(_.supportsSizes)) def v1copy( slaves: Seq[AXISSlaveParameters] = slaves, @@ -146,7 +146,7 @@ class AXISMasterPortParameters private ( beatBytes.foreach { b => require(isPow2(b)) } val endSourceId = masters.map(_.sourceId.end).max - val emitsCover = TransferSizes.cover(masters.map(_.emitsSizes)) + val emitsMinCover = TransferSizes.mincover(masters.map(_.emitsSizes)) def v1copy( masters: Seq[AXISMasterParameters] = masters, @@ -272,7 +272,7 @@ class AXISEdgeParameters private ( require (!slave.reqContinuous || master.isContinuous, s"Slave port requires continuous stream data at ${sourceInfo}") val beatBytes = slave.beatBytes.getOrElse(master.beatBytes.get) - val transferSizes = master.emitsCover intersect slave.supportsCover + val transferSizes = master.emitsMinCover intersect slave.supportsMinCover val bundle = AXISBundleParameters.v1( idBits = log2Ceil(master.endSourceId), diff --git a/src/main/scala/diplomacy/Parameters.scala b/src/main/scala/diplomacy/Parameters.scala index a30dddfba9..b846ade5ce 100644 --- a/src/main/scala/diplomacy/Parameters.scala +++ b/src/main/scala/diplomacy/Parameters.scala @@ -100,7 +100,7 @@ case class TransferSizes(min: Int, max: Int) // Not a union, because the result may contain sizes contained by neither term // NOT TO BE CONFUSED WITH COVERPOINTS - def cover(x: TransferSizes) = { + def mincover(x: TransferSizes) = { if (none) { x } else if (x.none) { @@ -117,7 +117,7 @@ object TransferSizes { def apply(x: Int) = new TransferSizes(x) val none = new TransferSizes(0) - def cover(seq: Seq[TransferSizes]) = seq.foldLeft(none)(_ cover _) + def mincover(seq: Seq[TransferSizes]) = seq.foldLeft(none)(_ mincover _) def intersect(seq: Seq[TransferSizes]) = seq.reduce(_ intersect _) implicit def asBool(x: TransferSizes) = !x.none diff --git a/src/main/scala/tilelink/Fragmenter.scala b/src/main/scala/tilelink/Fragmenter.scala index dde122bf1a..d079f87129 100644 --- a/src/main/scala/tilelink/Fragmenter.scala +++ b/src/main/scala/tilelink/Fragmenter.scala @@ -60,14 +60,14 @@ class TLFragmenter(val minSize: Int, val maxSize: Int, val alwaysMin: Boolean = sourceId = IdRange(0, if (minSize == maxSize) c.endSourceId else (c.endSourceId << addedBits)), requestFifo = true, emits = TLMasterToSlaveTransferSizes( - acquireT = c.masters.map(_.emits.acquireT) .reduce(_ cover _), - acquireB = c.masters.map(_.emits.acquireB) .reduce(_ cover _), - arithmetic = c.masters.map(_.emits.arithmetic).reduce(_ cover _), - logical = c.masters.map(_.emits.logical) .reduce(_ cover _), - get = c.masters.map(_.emits.get) .reduce(_ cover _), - putFull = c.masters.map(_.emits.putFull) .reduce(_ cover _), - putPartial = c.masters.map(_.emits.putPartial).reduce(_ cover _), - hint = c.masters.map(_.emits.hint) .reduce(_ cover _) + acquireT = shrinkTransfer(c.masters.map(_.emits.acquireT) .reduce(_ mincover _)), + acquireB = shrinkTransfer(c.masters.map(_.emits.acquireB) .reduce(_ mincover _)), + arithmetic = shrinkTransfer(c.masters.map(_.emits.arithmetic).reduce(_ mincover _)), + logical = shrinkTransfer(c.masters.map(_.emits.logical) .reduce(_ mincover _)), + get = shrinkTransfer(c.masters.map(_.emits.get) .reduce(_ mincover _)), + putFull = shrinkTransfer(c.masters.map(_.emits.putFull) .reduce(_ mincover _)), + putPartial = shrinkTransfer(c.masters.map(_.emits.putPartial).reduce(_ mincover _)), + hint = shrinkTransfer(c.masters.map(_.emits.hint) .reduce(_ mincover _)) ) )) )}, diff --git a/src/main/scala/tilelink/Parameters.scala b/src/main/scala/tilelink/Parameters.scala index ba2e3a4d1f..ef2a092d80 100644 --- a/src/main/scala/tilelink/Parameters.scala +++ b/src/main/scala/tilelink/Parameters.scala @@ -31,15 +31,15 @@ case class TLMasterToSlaveTransferSizes( putFull = putFull .intersect(rhs.putFull), putPartial = putPartial.intersect(rhs.putPartial), hint = hint .intersect(rhs.hint)) - def cover(rhs: TLMasterToSlaveTransferSizes) = TLMasterToSlaveTransferSizes( - acquireT = acquireT .cover(rhs.acquireT), - acquireB = acquireB .cover(rhs.acquireB), - arithmetic = arithmetic.cover(rhs.arithmetic), - logical = logical .cover(rhs.logical), - get = get .cover(rhs.get), - putFull = putFull .cover(rhs.putFull), - putPartial = putPartial.cover(rhs.putPartial), - hint = hint .cover(rhs.hint)) + def mincover(rhs: TLMasterToSlaveTransferSizes) = TLMasterToSlaveTransferSizes( + acquireT = acquireT .mincover(rhs.acquireT), + acquireB = acquireB .mincover(rhs.acquireB), + arithmetic = arithmetic.mincover(rhs.arithmetic), + logical = logical .mincover(rhs.logical), + get = get .mincover(rhs.get), + putFull = putFull .mincover(rhs.putFull), + putPartial = putPartial.mincover(rhs.putPartial), + hint = hint .mincover(rhs.hint)) // Reduce rendering to a simple yes/no per field override def toString = { def str(x: TransferSizes, flag: String) = if (x.none) "" else flag @@ -101,14 +101,14 @@ case class TLSlaveToMasterTransferSizes( putPartial = putPartial.intersect(rhs.putPartial), hint = hint .intersect(rhs.hint) ) - def cover(rhs: TLSlaveToMasterTransferSizes) = TLSlaveToMasterTransferSizes( - probe = probe .cover(rhs.probe), - arithmetic = arithmetic.cover(rhs.arithmetic), - logical = logical .cover(rhs.logical), - get = get .cover(rhs.get), - putFull = putFull .cover(rhs.putFull), - putPartial = putPartial.cover(rhs.putPartial), - hint = hint .cover(rhs.hint) + def mincover(rhs: TLSlaveToMasterTransferSizes) = TLSlaveToMasterTransferSizes( + probe = probe .mincover(rhs.probe), + arithmetic = arithmetic.mincover(rhs.arithmetic), + logical = logical .mincover(rhs.logical), + get = get .mincover(rhs.get), + putFull = putFull .mincover(rhs.putFull), + putPartial = putPartial.mincover(rhs.putPartial), + hint = hint .mincover(rhs.hint) ) // Reduce rendering to a simple yes/no per field override def toString = { @@ -306,7 +306,7 @@ class TLSlaveParameters private( def v2copy( nodePath: Seq[BaseNode] = nodePath, resources: Seq[Resource] = resources, - setName: Option[String] = setName, + name: Option[String] = setName, address: Seq[AddressSet] = address, regionType: RegionType.T = regionType, executable: Boolean = executable, @@ -320,7 +320,7 @@ class TLSlaveParameters private( new TLSlaveParameters( nodePath = nodePath, resources = resources, - setName = setName, + setName = name, address = address, regionType = regionType, executable = executable, @@ -420,7 +420,7 @@ object TLSlaveParameters { address: Seq[AddressSet], nodePath: Seq[BaseNode] = Seq(), resources: Seq[Resource] = Seq(), - setName: Option[String] = None, + name: Option[String] = None, regionType: RegionType.T = RegionType.GET_EFFECTS, executable: Boolean = false, fifoId: Option[Int] = None, @@ -433,7 +433,7 @@ object TLSlaveParameters { new TLSlaveParameters( nodePath = nodePath, resources = resources, - setName = setName, + setName = name, address = address, regionType = regionType, executable = executable, @@ -570,7 +570,7 @@ class TLSlavePortParameters private( val allSupportHint = allSupports.hint // Operation supported by at least one outward Slaves - val anySupports = slaves.map(_.supports).reduce(_ cover _) + val anySupports = slaves.map(_.supports).reduce(_ mincover _) val anySupportAcquireT = !anySupports.acquireT.none val anySupportAcquireB = !anySupports.acquireB.none val anySupportArithmetic = !anySupports.arithmetic.none