From 357d06ac9cdd6e370effcdd40bf361c5cc179b2c Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Tue, 27 Sep 2016 14:06:02 -0700 Subject: [PATCH] tilelink2 WidthWidget: Gets must have their mask adjusted (#353) The mask of a Get should also be converted. This manifested as a bug when going from 32=>64 bits. A large Get could end up with mask that was not full. --- src/main/scala/uncore/tilelink2/WidthWidget.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/uncore/tilelink2/WidthWidget.scala b/src/main/scala/uncore/tilelink2/WidthWidget.scala index 853524bc..e024a907 100644 --- a/src/main/scala/uncore/tilelink2/WidthWidget.scala +++ b/src/main/scala/uncore/tilelink2/WidthWidget.scala @@ -65,7 +65,8 @@ class TLWidthWidget(innerBeatBytes: Int) extends LazyModule } val dataOut = if (edgeIn.staticHasData(in.bits) == Some(false)) UInt(0) else dataMux(size) - val maskOut = maskMux(size) & edgeOut.mask(addr_lo, size) + val maskFull = edgeOut.mask(addr_lo, size) + val maskOut = Mux(hasData, maskMux(size) & maskFull, maskFull) in.ready := out.ready || !last out.valid := in.valid && last