axi4: Deinterleaver must gather R also for single ID
In order to guarantee that a complete R can be sent without sinking B, the Deinterleaver must do its job even on AXI-Lite.
This commit is contained in:
parent
8fc27b0bf2
commit
db76ff2d86
@ -38,8 +38,8 @@ class AXI4Deinterleaver(maxReadBytes: Int)(implicit p: Parameters) extends LazyM
|
||||
out.w <> in.w
|
||||
in.b <> out.b
|
||||
|
||||
if (queues == 1) {
|
||||
// Gracefully do nothing
|
||||
if (beats <= 1) {
|
||||
// Nothing to do if only single-beat R
|
||||
in.r <> out.r
|
||||
} else {
|
||||
// Buffer R response
|
||||
@ -48,7 +48,7 @@ class AXI4Deinterleaver(maxReadBytes: Int)(implicit p: Parameters) extends LazyM
|
||||
|
||||
// Which ID is being enqueued and dequeued?
|
||||
val locked = RegInit(Bool(false))
|
||||
val deq_id = Reg(UInt(width=log2Ceil(queues)))
|
||||
val deq_id = Reg(UInt(width=log2Up(queues)))
|
||||
val enq_id = out.r.bits.id
|
||||
val deq_OH = UIntToOH(deq_id, queues)
|
||||
val enq_OH = UIntToOH(enq_id, queues)
|
||||
|
Loading…
Reference in New Issue
Block a user