From 2d8a49cc0637b500fd29df9201ecf44e4ce07bbd Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Mon, 8 May 2017 00:56:45 -0700 Subject: [PATCH] tilelink2: Fragmenter client must request global FIFO --- src/main/scala/uncore/tilelink2/Fragmenter.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/scala/uncore/tilelink2/Fragmenter.scala b/src/main/scala/uncore/tilelink2/Fragmenter.scala index c726d7ff..a1a28591 100644 --- a/src/main/scala/uncore/tilelink2/Fragmenter.scala +++ b/src/main/scala/uncore/tilelink2/Fragmenter.scala @@ -37,11 +37,13 @@ class TLFragmenter(val minSize: Int, val maxSize: Int, val alwaysMin: Boolean = supportsPutFull = expandTransfer(m.supportsPutFull), supportsPutPartial = expandTransfer(m.supportsPutPartial), supportsHint = expandTransfer(m.supportsHint)) - def mapClient(c: TLClientParameters) = c.copy( - sourceId = IdRange(c.sourceId.start << fragmentBits, c.sourceId.end << fragmentBits)) val node = TLAdapterNode( - clientFn = { c => c.copy(clients = c.clients.map(mapClient)) }, + // 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.copy(clients = Seq(TLClientParameters( + sourceId = IdRange(0, c.endSourceId << fragmentBits), + requestFifo = true))) }, managerFn = { m => m.copy(managers = m.managers.map(mapManager)) }) lazy val module = new LazyModuleImp(this) {