add convenient constructors for NASTI channels
This commit is contained in:
		@@ -113,6 +113,75 @@ class NASTIReadDataChannel extends NASTIResponseChannel with HasNASTIData {
 | 
				
			|||||||
  val user = UInt(width = nastiRUserBits)
 | 
					  val user = UInt(width = nastiRUserBits)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					object NASTIWriteAddressChannel {
 | 
				
			||||||
 | 
					  def apply(id: UInt, addr: UInt, size: UInt, len: UInt) = {
 | 
				
			||||||
 | 
					    val aw = Wire(new NASTIWriteAddressChannel)
 | 
				
			||||||
 | 
					    aw.id := id
 | 
				
			||||||
 | 
					    aw.addr := addr
 | 
				
			||||||
 | 
					    aw.len := len
 | 
				
			||||||
 | 
					    aw.size := size
 | 
				
			||||||
 | 
					    aw.burst := UInt("b01")
 | 
				
			||||||
 | 
					    aw.lock := Bool(false)
 | 
				
			||||||
 | 
					    aw.cache := UInt("b0000")
 | 
				
			||||||
 | 
					    aw.prot := UInt("b000")
 | 
				
			||||||
 | 
					    aw.qos := UInt("b0000")
 | 
				
			||||||
 | 
					    aw.region := UInt("b0000")
 | 
				
			||||||
 | 
					    aw.user := UInt(0)
 | 
				
			||||||
 | 
					    aw
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					object NASTIReadAddressChannel {
 | 
				
			||||||
 | 
					  def apply(id: UInt, addr: UInt, size: UInt, len: UInt) = {
 | 
				
			||||||
 | 
					    val ar = Wire(new NASTIReadAddressChannel)
 | 
				
			||||||
 | 
					    ar.id := id
 | 
				
			||||||
 | 
					    ar.addr := addr
 | 
				
			||||||
 | 
					    ar.len := len
 | 
				
			||||||
 | 
					    ar.size := size
 | 
				
			||||||
 | 
					    ar.burst := UInt("b01")
 | 
				
			||||||
 | 
					    ar.lock := Bool(false)
 | 
				
			||||||
 | 
					    ar.cache := UInt(0)
 | 
				
			||||||
 | 
					    ar.prot := UInt(0)
 | 
				
			||||||
 | 
					    ar.qos := UInt(0)
 | 
				
			||||||
 | 
					    ar.region := UInt(0)
 | 
				
			||||||
 | 
					    ar.user := UInt(0)
 | 
				
			||||||
 | 
					    ar
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					object NASTIWriteDataChannel {
 | 
				
			||||||
 | 
					  def apply(strb: UInt, data: UInt, last: Bool) = {
 | 
				
			||||||
 | 
					    val w = Wire(new NASTIWriteDataChannel)
 | 
				
			||||||
 | 
					    w.strb := strb
 | 
				
			||||||
 | 
					    w.data := data
 | 
				
			||||||
 | 
					    w.last := last
 | 
				
			||||||
 | 
					    w.user := UInt(0)
 | 
				
			||||||
 | 
					    w
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					object NASTIReadDataChannel {
 | 
				
			||||||
 | 
					  def apply(id: UInt, data: UInt, last: Bool, resp: UInt = UInt(0)) = {
 | 
				
			||||||
 | 
					    val r = Wire(new NASTIReadDataChannel)
 | 
				
			||||||
 | 
					    r.id := id
 | 
				
			||||||
 | 
					    r.data := data
 | 
				
			||||||
 | 
					    r.last := last
 | 
				
			||||||
 | 
					    r.resp := resp
 | 
				
			||||||
 | 
					    r.user := UInt(0)
 | 
				
			||||||
 | 
					    r
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					object NASTIWriteResponseChannel {
 | 
				
			||||||
 | 
					  def apply(id: UInt, resp: UInt = UInt(0)) = {
 | 
				
			||||||
 | 
					    val b = Wire(new NASTIWriteResponseChannel)
 | 
				
			||||||
 | 
					    b.id := id
 | 
				
			||||||
 | 
					    b.resp := resp
 | 
				
			||||||
 | 
					    b.user := UInt(0)
 | 
				
			||||||
 | 
					    b
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MemIONASTISlaveIOConverter(cacheBlockOffsetBits: Int) extends MIFModule with NASTIParameters {
 | 
					class MemIONASTISlaveIOConverter(cacheBlockOffsetBits: Int) extends MIFModule with NASTIParameters {
 | 
				
			||||||
  val io = new Bundle {
 | 
					  val io = new Bundle {
 | 
				
			||||||
    val nasti = new NASTISlaveIO
 | 
					    val nasti = new NASTISlaveIO
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -121,10 +121,10 @@ class SMIIONASTIReadIOConverter(val dataWidth: Int, val addrWidth: Int)
 | 
				
			|||||||
  io.smi.resp.ready := (state === s_read)
 | 
					  io.smi.resp.ready := (state === s_read)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  io.r.valid := (state === s_resp)
 | 
					  io.r.valid := (state === s_resp)
 | 
				
			||||||
  io.r.bits.resp := Bits(0)
 | 
					  io.r.bits := NASTIReadDataChannel(
 | 
				
			||||||
  io.r.bits.data := buffer.toBits
 | 
					    id = id,
 | 
				
			||||||
  io.r.bits.id := id
 | 
					    data = buffer.toBits,
 | 
				
			||||||
  io.r.bits.last := (nBeats === UInt(0))
 | 
					    last = (nBeats === UInt(0)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  when (io.ar.fire()) {
 | 
					  when (io.ar.fire()) {
 | 
				
			||||||
    when (io.ar.bits.size < UInt(byteOffBits)) {
 | 
					    when (io.ar.bits.size < UInt(byteOffBits)) {
 | 
				
			||||||
@@ -207,8 +207,7 @@ class SMIIONASTIWriteIOConverter(val dataWidth: Int, val addrWidth: Int)
 | 
				
			|||||||
  io.smi.req.bits.data := data(dataWidth - 1, 0)
 | 
					  io.smi.req.bits.data := data(dataWidth - 1, 0)
 | 
				
			||||||
  io.smi.resp.ready := (state === s_ack)
 | 
					  io.smi.resp.ready := (state === s_ack)
 | 
				
			||||||
  io.b.valid := (state === s_resp)
 | 
					  io.b.valid := (state === s_resp)
 | 
				
			||||||
  io.b.bits.resp := Bits(0)
 | 
					  io.b.bits := NASTIWriteResponseChannel(id)
 | 
				
			||||||
  io.b.bits.id := id
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  val jump = PriorityMux(strb(maxWordsPerBeat - 1, 1),
 | 
					  val jump = PriorityMux(strb(maxWordsPerBeat - 1, 1),
 | 
				
			||||||
    (1 until maxWordsPerBeat).map(UInt(_)))
 | 
					    (1 until maxWordsPerBeat).map(UInt(_)))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user