From b6d26e90f844cb92fd8029ac9b1975ffb5dee2fc Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 26 May 2016 15:59:42 -0700 Subject: [PATCH] Add generic TileLink width adapter --- uncore/src/main/scala/converters.scala | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/uncore/src/main/scala/converters.scala b/uncore/src/main/scala/converters.scala index 129835d1..167bebb7 100644 --- a/uncore/src/main/scala/converters.scala +++ b/uncore/src/main/scala/converters.scala @@ -747,6 +747,24 @@ class TileLinkIONastiIOConverter(implicit p: Parameters) extends TLModule()(p) io.nasti.b.ready, io.nasti.r.ready) } +object TileLinkWidthAdapter { + def apply(in: ClientUncachedTileLinkIO, out: ClientUncachedTileLinkIO)(implicit p: Parameters): Unit = { + require(out.tlDataBits * out.tlDataBeats == in.tlDataBits * in.tlDataBeats) + + if (out.tlDataBits > in.tlDataBits) { + val widener = Module(new TileLinkIOWidener(in.p(TLId), out.p(TLId))) + widener.io.in <> in + out <> widener.io.out + } else if (out.tlDataBits < in.tlDataBits) { + val narrower = Module(new TileLinkIOWidener(in.p(TLId), out.p(TLId))) + narrower.io.in <> in + out <> narrower.io.out + } else { + out <> in + } + } +} + class TileLinkIOWidener(innerTLId: String, outerTLId: String) (implicit p: Parameters) extends TLModule()(p) {