git rid of reorder queue in narrower
This commit is contained in:
parent
c6e974b110
commit
00b3908d92
@ -884,9 +884,6 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
val acq_addr_beat = Reg(iacq.addr_beat)
|
val acq_addr_beat = Reg(iacq.addr_beat)
|
||||||
val oacq_ctr = Counter(factor)
|
val oacq_ctr = Counter(factor)
|
||||||
|
|
||||||
// this part of the address shifts from the inner byte address
|
|
||||||
// to the outer beat address
|
|
||||||
val readshift = iacq.full_addr()(innerByteAddrBits - 1, outerByteAddrBits)
|
|
||||||
val outer_beat_addr = iacq.full_addr()(outerBlockOffset - 1, outerByteAddrBits)
|
val outer_beat_addr = iacq.full_addr()(outerBlockOffset - 1, outerByteAddrBits)
|
||||||
val outer_byte_addr = iacq.full_addr()(outerByteAddrBits - 1, 0)
|
val outer_byte_addr = iacq.full_addr()(outerByteAddrBits - 1, 0)
|
||||||
|
|
||||||
@ -958,32 +955,15 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
|
|
||||||
val sending_put = Reg(init = Bool(false))
|
val sending_put = Reg(init = Bool(false))
|
||||||
|
|
||||||
val pass_valid = io.in.acquire.valid && !stretch && !smallget
|
val pass_valid = io.in.acquire.valid && !stretch
|
||||||
val smallget_valid = smallget && io.in.acquire.valid
|
|
||||||
|
|
||||||
val smallget_roq = Module(new ReorderQueue(
|
|
||||||
readshift, outerIdBits, outerMaxClients))
|
|
||||||
|
|
||||||
val smallget_helper = DecoupledHelper(
|
|
||||||
smallget_valid,
|
|
||||||
smallget_roq.io.enq.ready,
|
|
||||||
io.out.acquire.ready)
|
|
||||||
|
|
||||||
smallget_roq.io.enq.valid := smallget_helper.fire(
|
|
||||||
smallget_roq.io.enq.ready, !sending_put)
|
|
||||||
smallget_roq.io.enq.bits.data := readshift
|
|
||||||
smallget_roq.io.enq.bits.tag := iacq.client_xact_id
|
|
||||||
|
|
||||||
io.out.acquire.bits := MuxBundle(Wire(io.out.acquire.bits, init=iacq), Seq(
|
io.out.acquire.bits := MuxBundle(Wire(io.out.acquire.bits, init=iacq), Seq(
|
||||||
(sending_put, put_block_acquire),
|
(sending_put, put_block_acquire),
|
||||||
(shrink, get_block_acquire),
|
(shrink, get_block_acquire),
|
||||||
(smallput, put_acquire),
|
(smallput, put_acquire),
|
||||||
(smallget, get_acquire)))
|
(smallget, get_acquire)))
|
||||||
io.out.acquire.valid := sending_put || pass_valid ||
|
io.out.acquire.valid := sending_put || pass_valid
|
||||||
smallget_helper.fire(io.out.acquire.ready)
|
io.in.acquire.ready := !sending_put && (stretch || io.out.acquire.ready)
|
||||||
io.in.acquire.ready := !sending_put && (stretch ||
|
|
||||||
(!smallget && io.out.acquire.ready) ||
|
|
||||||
smallget_helper.fire(smallget_valid))
|
|
||||||
|
|
||||||
when (io.in.acquire.fire() && stretch) {
|
when (io.in.acquire.fire() && stretch) {
|
||||||
acq_data_buffer := iacq.data
|
acq_data_buffer := iacq.data
|
||||||
@ -1018,11 +998,9 @@ class TileLinkIONarrower(innerTLId: String, outerTLId: String)
|
|||||||
data = gnt_data_buffer.toBits)(innerConfig)
|
data = gnt_data_buffer.toBits)(innerConfig)
|
||||||
|
|
||||||
val smallget_grant = ognt.g_type === Grant.getDataBeatType
|
val smallget_grant = ognt.g_type === Grant.getDataBeatType
|
||||||
val get_grant_shift = Cat(smallget_roq.io.deq.data,
|
val get_grant_align = io.out.grant.bits.addr_beat(
|
||||||
UInt(0, outerByteAddrBits + 3))
|
innerByteAddrBits - outerByteAddrBits - 1, 0)
|
||||||
|
val get_grant_shift = Cat(get_grant_align, UInt(0, outerByteAddrBits + 3))
|
||||||
smallget_roq.io.deq.valid := io.out.grant.fire() && smallget_grant
|
|
||||||
smallget_roq.io.deq.tag := ognt.client_xact_id
|
|
||||||
|
|
||||||
val get_grant = Grant(
|
val get_grant = Grant(
|
||||||
is_builtin_type = Bool(true),
|
is_builtin_type = Bool(true),
|
||||||
|
Loading…
Reference in New Issue
Block a user