From aa0ce2998effbc2dd53de36f4df1caecac729e2f Mon Sep 17 00:00:00 2001 From: Hansung Kim Date: Thu, 4 May 2023 16:40:20 -0700 Subject: [PATCH] Respect io.coalescable for deq.valid in CoalShiftQueue Otherwise disabling coalescer globally wouldn't work. --- src/main/scala/tilelink/Coalescing.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/tilelink/Coalescing.scala b/src/main/scala/tilelink/Coalescing.scala index 7c115a9..c60e361 100644 --- a/src/main/scala/tilelink/Coalescing.scala +++ b/src/main/scala/tilelink/Coalescing.scala @@ -235,7 +235,8 @@ class CoalShiftQueue[T <: Data](gen: T, entries: Int, config: CoalescerConfig) e // dequeue is valid when: // head entry is valid, has not been processed by downstream, and is not coalescable deq.bits := elts.map(_.head.bits)(i) - deq.valid := elts.map(_.head.valid)(i) && !deqDone(i) && !io.coalescable(i) + deq.valid := elts.map(_.head.valid)(i) && !deqDone(i) && + (!io.invalidate.valid || !io.coalescable(i)) // can take new entries if not empty, or if full but shifting enq.ready := (!ctrl.full) || ctrl.shift