From dcf67b49fa77e212e8b9506c52a14cd1e84cbe34 Mon Sep 17 00:00:00 2001 From: "Wesley W. Terpstra" Date: Mon, 6 Nov 2017 11:13:15 -0800 Subject: [PATCH] BusBypass: only stall A once the last beat is accepted (#1090) When switching ports, the bypass stalls new messages until all outstanding messages have received their responses. However, this stall must NOT stop the remaining beats of a partially sent request. --- src/main/scala/devices/tilelink/BusBypass.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/devices/tilelink/BusBypass.scala b/src/main/scala/devices/tilelink/BusBypass.scala index 08d61418..d9784818 100644 --- a/src/main/scala/devices/tilelink/BusBypass.scala +++ b/src/main/scala/devices/tilelink/BusBypass.scala @@ -93,7 +93,7 @@ class TLBusBypassBar(implicit p: Parameters) extends LazyModule flight := next_flight when (next_flight === UInt(0)) { bypass := io.bypass } - val stall = bypass != io.bypass + val stall = (bypass != io.bypass) && a_first out0.a.valid := !stall && in.a.valid && bypass out1.a.valid := !stall && in.a.valid && !bypass