From a0b1772404fb8f184b15910bb9f18d88f7c1f2b8 Mon Sep 17 00:00:00 2001 From: Howard Mao Date: Thu, 30 Jun 2016 15:50:23 -0700 Subject: [PATCH] change TileLinkWidthAdapter interface --- .../src/main/scala/converters/Tilelink.scala | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/uncore/src/main/scala/converters/Tilelink.scala b/uncore/src/main/scala/converters/Tilelink.scala index e3cd4474..d196776b 100644 --- a/uncore/src/main/scala/converters/Tilelink.scala +++ b/uncore/src/main/scala/converters/Tilelink.scala @@ -151,20 +151,21 @@ class ClientTileLinkIOUnwrapper(implicit p: Parameters) extends TLModule()(p) { } 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))) + def apply(in: ClientUncachedTileLinkIO, outerId: String)(implicit p: Parameters) = { + val outerDataBits = p(TLKey(outerId)).dataBitsPerBeat + if (outerDataBits > in.tlDataBits) { + val widener = Module(new TileLinkIOWidener(in.p(TLId), outerId)) widener.io.in <> in - out <> widener.io.out - } else if (out.tlDataBits < in.tlDataBits) { - val narrower = Module(new TileLinkIONarrower(in.p(TLId), out.p(TLId))) + widener.io.out + } else if (outerDataBits < in.tlDataBits) { + val narrower = Module(new TileLinkIONarrower(in.p(TLId), outerId)) narrower.io.in <> in - out <> narrower.io.out - } else { - out <> in - } + narrower.io.out + } else { in } + } + def apply(out: ClientUncachedTileLinkIO, in: ClientUncachedTileLinkIO)(implicit p: Parameters): Unit = { + require(out.tlDataBits * out.tlDataBeats == in.tlDataBits * in.tlDataBeats) + out <> apply(in, out.p(TLId)) } }