From a93a70c8ec1caeb3f34a529c6da60bf574a68561 Mon Sep 17 00:00:00 2001 From: Howard Mao Date: Mon, 27 Jun 2016 11:40:32 -0700 Subject: [PATCH] make sure merged voluntary releases are handled properly --- uncore/src/main/scala/trackers.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uncore/src/main/scala/trackers.scala b/uncore/src/main/scala/trackers.scala index cdf5b6d4..ec14730e 100644 --- a/uncore/src/main/scala/trackers.scala +++ b/uncore/src/main/scala/trackers.scala @@ -247,16 +247,16 @@ trait AcceptsVoluntaryReleases extends HasVoluntaryReleaseMetadataBuffer { xact_vol_ir_r_type := io.irel().r_type xact_vol_ir_src := io.irel().client_id xact_vol_ir_client_xact_id := io.irel().client_xact_id + // If this release has data, set all the pending bits except the first. + // Otherwise, clear all the pending bits pending_irel_data := Mux(io.irel().hasMultibeatData(), dropPendingBitWhenBeatHasData(io.inner.release), UInt(0)) + } .elsewhen (irel_same_xact) { + pending_irel_data := (pending_irel_data & dropPendingBitWhenBeatHasData(io.inner.release)) } } - when (irel_is_merging) { - pending_irel_data := (pending_irel_data & dropPendingBitWhenBeatHasData(io.inner.release)) - } - io.inner.grant.valid := Vec(s_wb_req, s_wb_resp, s_inner_probe, s_busy).contains(state) && vol_ignt_counter.pending && !(pending_irel_data.orR || block_vol_ignt)