From b3865c370a1025abab743aabc563049ccfcc3d5b Mon Sep 17 00:00:00 2001 From: Howard Mao Date: Thu, 12 Nov 2015 15:40:38 -0800 Subject: [PATCH] make sure correct addr_beat is sent for Get response by narrower/converter --- uncore/src/main/scala/tilelink.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/uncore/src/main/scala/tilelink.scala b/uncore/src/main/scala/tilelink.scala index d33a5cf0..dea63245 100644 --- a/uncore/src/main/scala/tilelink.scala +++ b/uncore/src/main/scala/tilelink.scala @@ -1426,6 +1426,7 @@ class ClientTileLinkIOUnwrapper(implicit p: Parameters) extends TLModule()(p) { } class NastiIOTileLinkIOConverterInfo(implicit p: Parameters) extends TLBundle()(p) { + val addr_beat = UInt(width = tlBeatAddrBits) val byteOff = UInt(width = tlByteAddrBits) val subblock = Bool() } @@ -1488,6 +1489,7 @@ class NastiIOTileLinkIOConverter(implicit p: Parameters) extends TLModule()(p) roq.io.enq.valid := get_helper.fire(roq.io.enq.ready) roq.io.enq.bits.tag := io.nasti.ar.bits.id + roq.io.enq.bits.data.addr_beat := io.tl.acquire.bits.addr_beat roq.io.enq.bits.data.byteOff := io.tl.acquire.bits.addr_byte() roq.io.enq.bits.data.subblock := is_subblock roq.io.deq.valid := io.nasti.r.fire() && (nasti_wrap_out || roq.io.deq.data.subblock) @@ -1546,7 +1548,7 @@ class NastiIOTileLinkIOConverter(implicit p: Parameters) extends TLModule()(p) Grant.getDataBeatType, Grant.getDataBlockType), client_xact_id = io.nasti.r.bits.id, manager_xact_id = UInt(0), - addr_beat = tl_cnt_in, + addr_beat = Mux(roq.io.deq.data.subblock, roq.io.deq.data.addr_beat, tl_cnt_in), data = r_aligned_data) gnt_arb.io.in(1).valid := io.nasti.b.valid @@ -1749,7 +1751,7 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String) g_type = Grant.getDataBeatType, client_xact_id = ognt.client_xact_id, manager_xact_id = ognt.manager_xact_id, - addr_beat = ognt.addr_beat, + addr_beat = ognt.addr_beat >> UInt(log2Up(factor)), data = ognt.data << get_grant_shift)(innerConfig) io.in.grant.valid := sending_get || (io.out.grant.valid && !ognt_block)