Skip to content

Commit

Permalink
added v2copy and fragmenter
Browse files Browse the repository at this point in the history
  • Loading branch information
brrmorre committed Jul 17, 2020
1 parent b45bafd commit d11c923
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 14 deletions.
30 changes: 16 additions & 14 deletions src/main/scala/tilelink/Fragmenter.scala
Original file line number Diff line number Diff line change
Expand Up @@ -54,22 +54,24 @@ class TLFragmenter(val minSize: Int, val maxSize: Int, val alwaysMin: Boolean =
val node = TLAdapterNode(
// We require that all the responses are mutually FIFO
// Thus we need to compact all of the masters into one big master
clientFn = { c => c.v1copy(
clients = Seq(TLMasterParameters.v1(
clientFn = { c => c.v2copy(
masters = Seq(TLMasterParameters.v2(
name = "TLFragmenter",
sourceId = IdRange(0, if (minSize == maxSize) c.endSourceId else (c.endSourceId << addedBits)),
requestFifo = true))),
// This master can only produce:
// emitsAcquireT = c.clients.map(_.knownToEmit.get.emitsAcquireT).reduce(_ cover _),
// emitsAcquireB = c.clients.map(_.knownToEmit.get.emitsAcquireB).reduce(_ cover _),
// emitsArithmetic = c.clients.map(_.knownToEmit.get.emitsArithmetic).reduce(_ cover _),
// emitsLogical = c.clients.map(_.knownToEmit.get.emitsLogical).reduce(_ cover _),
// emitsGet = c.clients.map(_.knownToEmit.get.emitsGet).reduce(_ cover _),
// emitsPutFull = c.clients.map(_.knownToEmit.get.emitsPutFull).reduce(_ cover _),
// emitsPutPartial = c.clients.map(_.knownToEmit.get.emitsPutPartial).reduce(_ cover _),
// emitsHint = c.clients.map(_.knownToEmit.get.emitsHint).reduce(_ cover _)
},
managerFn = { m => m.v1copy(managers = m.managers.map(mapManager)) })
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 _)
)
))
)},
managerFn = { m => m.v2copy(slaves = m.slaves.map(mapManager)) })

lazy val module = new LazyModuleImp(this) {
(node.in zip node.out) foreach { case ((in, edgeIn), (out, edgeOut)) =>
Expand Down
17 changes: 17 additions & 0 deletions src/main/scala/tilelink/Parameters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,23 @@ class TLSlavePortParameters private(
requestKeys = requestKeys)
}

def v2copy(
slaves: Seq[TLSlaveParameters] = slaves,
channelBytes: TLChannelBeatBytes = channelBytes,
endSinkId: Int = endSinkId,
minLatency: Int = minLatency,
responseFields: Seq[BundleFieldBase] = responseFields,
requestKeys: Seq[BundleKeyBase] = requestKeys) =
{
new TLSlavePortParameters(
slaves = slaves,
channelBytes = channelBytes,
endSinkId = endSinkId,
minLatency = minLatency,
responseFields = responseFields,
requestKeys = requestKeys)
}

@deprecated("Use v1copy instead of copy","")
def copy(
managers: Seq[TLSlaveParameters] = slaves,
Expand Down

0 comments on commit d11c923

Please sign in to comment.