make sure NastiIOStreamIOConverter does not depend on external last signal
This commit is contained in:
		| @@ -27,14 +27,19 @@ class NastiIOStreamIOConverter(w: Int)(implicit p: Parameters) extends Module { | |||||||
|   val streamSize = UInt(log2Up(w / 8)) |   val streamSize = UInt(log2Up(w / 8)) | ||||||
|   assert(!io.nasti.ar.valid || io.nasti.ar.bits.size === streamSize, |   assert(!io.nasti.ar.valid || io.nasti.ar.bits.size === streamSize, | ||||||
|          "read channel wrong size on stream") |          "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") |          "read channel wrong burst type on stream") | ||||||
|   assert(!io.nasti.aw.valid || io.nasti.aw.bits.size === streamSize, |   assert(!io.nasti.aw.valid || io.nasti.aw.bits.size === streamSize, | ||||||
|          "write channel wrong size on stream") |          "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") |          "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_id = Reg(io.nasti.ar.bits.id) | ||||||
|  |   val read_cnt = Reg(io.nasti.ar.bits.len) | ||||||
|   val reading = Reg(init = Bool(false)) |   val reading = Reg(init = Bool(false)) | ||||||
|  |  | ||||||
|   io.nasti.ar.ready := !reading |   io.nasti.ar.ready := !reading | ||||||
| @@ -46,11 +51,16 @@ class NastiIOStreamIOConverter(w: Int)(implicit p: Parameters) extends Module { | |||||||
|  |  | ||||||
|   when (io.nasti.ar.fire()) { |   when (io.nasti.ar.fire()) { | ||||||
|     read_id := io.nasti.ar.bits.id |     read_id := io.nasti.ar.bits.id | ||||||
|  |     read_cnt := io.nasti.ar.bits.len | ||||||
|     reading := Bool(true) |     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) |       reading := Bool(false) | ||||||
|  |     } .otherwise { | ||||||
|  |       read_cnt := read_cnt - UInt(1) | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   val write_id = Reg(io.nasti.aw.bits.id) |   val write_id = Reg(io.nasti.aw.bits.id) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user