From 4acdc6748504aec863d8d4467f40990fdc9f5cc3 Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Fri, 26 Feb 2016 18:36:47 -0800 Subject: [PATCH] Add an assertion in the NastiIOTileLink converter This uses an reorder queue but doesn't check to ensure that the data it fetches from the queue is actually in the queue before using it. It seems that during correct operation this never breaks, but I'm trying to get the backup memory port working again and this assertion fails with it enabled (without the assertion the core just gets a bogus data beat dies). Closes #16 --- uncore/src/main/scala/converters.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/uncore/src/main/scala/converters.scala b/uncore/src/main/scala/converters.scala index 25953952..e626a4a7 100644 --- a/uncore/src/main/scala/converters.scala +++ b/uncore/src/main/scala/converters.scala @@ -500,6 +500,7 @@ class NastiIOTileLinkIOConverter(implicit p: Parameters) extends TLModule()(p) manager_xact_id = UInt(0), addr_beat = Mux(roq.io.deq.data.subblock, roq.io.deq.data.addr_beat, tl_cnt_in), data = r_aligned_data) + assert(!gnt_arb.io.in(0).valid || roq.io.deq.matches, "NASTI tag error") gnt_arb.io.in(1).valid := io.nasti.b.valid io.nasti.b.ready := gnt_arb.io.in(1).ready