From edcd2c696c8cf93ca7ac1269bcaed3a14f4c268c Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Sat, 29 Jul 2017 11:47:58 -0700 Subject: [PATCH] Avoid needless stall on E-channel back pressure --- src/main/scala/rocket/DCache.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/rocket/DCache.scala b/src/main/scala/rocket/DCache.scala index fd83e9ef..45fe77b4 100644 --- a/src/main/scala/rocket/DCache.scala +++ b/src/main/scala/rocket/DCache.scala @@ -397,7 +397,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) { val blockProbeAfterGrantCount = Reg(init=UInt(0)) when (blockProbeAfterGrantCount > 0) { blockProbeAfterGrantCount := blockProbeAfterGrantCount - 1 } val canAcceptCachedGrant = if (cacheParams.acquireBeforeRelease) release_state === s_ready else true.B - tl_out.d.ready := Mux(grantIsCached, tl_out.e.ready && canAcceptCachedGrant, true.B) + tl_out.d.ready := Mux(grantIsCached, (!d_first || tl_out.e.ready) && canAcceptCachedGrant, true.B) when (tl_out.d.fire()) { when (grantIsCached) { grantInProgress := true