make sure NastiIOStreamIOConverter does not depend on external last signal
This commit is contained in:
parent
b4856da819
commit
fef8a2d862
@ -27,14 +27,19 @@ class NastiIOStreamIOConverter(w: Int)(implicit p: Parameters) extends Module {
|
||||
val streamSize = UInt(log2Up(w / 8))
|
||||
assert(!io.nasti.ar.valid || io.nasti.ar.bits.size === streamSize,
|
||||
"read channel wrong size on stream")
|
||||
assert(!io.nasti.ar.valid || io.nasti.ar.bits.burst === BURST_FIXED,
|
||||
assert(!io.nasti.ar.valid || io.nasti.ar.bits.len === UInt(0) ||
|
||||
io.nasti.ar.bits.burst === BURST_FIXED,
|
||||
"read channel wrong burst type on stream")
|
||||
assert(!io.nasti.aw.valid || io.nasti.aw.bits.size === streamSize,
|
||||
"write channel wrong size on stream")
|
||||
assert(!io.nasti.aw.valid || io.nasti.aw.bits.burst === BURST_FIXED,
|
||||
assert(!io.nasti.aw.valid || io.nasti.aw.bits.len === UInt(0) ||
|
||||
io.nasti.aw.bits.burst === BURST_FIXED,
|
||||
"write channel wrong burst type on stream")
|
||||
assert(!io.nasti.w.valid || io.nasti.w.bits.strb.andR,
|
||||
"write channel cannot take partial writes")
|
||||
|
||||
val read_id = Reg(io.nasti.ar.bits.id)
|
||||
val read_cnt = Reg(io.nasti.ar.bits.len)
|
||||
val reading = Reg(init = Bool(false))
|
||||
|
||||
io.nasti.ar.ready := !reading
|
||||
@ -46,11 +51,16 @@ class NastiIOStreamIOConverter(w: Int)(implicit p: Parameters) extends Module {
|
||||
|
||||
when (io.nasti.ar.fire()) {
|
||||
read_id := io.nasti.ar.bits.id
|
||||
read_cnt := io.nasti.ar.bits.len
|
||||
reading := Bool(true)
|
||||
}
|
||||
|
||||
when (io.nasti.r.fire() && io.nasti.r.bits.last) {
|
||||
when (io.nasti.r.fire()) {
|
||||
when (read_cnt === UInt(0)) {
|
||||
reading := Bool(false)
|
||||
} .otherwise {
|
||||
read_cnt := read_cnt - UInt(1)
|
||||
}
|
||||
}
|
||||
|
||||
val write_id = Reg(io.nasti.aw.bits.id)
|
||||
|
Loading…
Reference in New Issue
Block a user