Chisel3 compat: merge NASTIMasterIO and NASTISlaveIO so we do not depend on flip() modifying the object
This commit is contained in:
parent
ee65f6a84d
commit
e3d2207c72
@ -55,7 +55,7 @@ trait NASTIChannel extends NASTIBundle
|
|||||||
trait NASTIMasterToSlaveChannel extends NASTIChannel
|
trait NASTIMasterToSlaveChannel extends NASTIChannel
|
||||||
trait NASTISlaveToMasterChannel extends NASTIChannel
|
trait NASTISlaveToMasterChannel extends NASTIChannel
|
||||||
|
|
||||||
class NASTIMasterIO extends Bundle {
|
class NASTIIO extends Bundle {
|
||||||
val aw = Decoupled(new NASTIWriteAddressChannel)
|
val aw = Decoupled(new NASTIWriteAddressChannel)
|
||||||
val w = Decoupled(new NASTIWriteDataChannel)
|
val w = Decoupled(new NASTIWriteDataChannel)
|
||||||
val b = Decoupled(new NASTIWriteResponseChannel).flip
|
val b = Decoupled(new NASTIWriteResponseChannel).flip
|
||||||
@ -63,8 +63,6 @@ class NASTIMasterIO extends Bundle {
|
|||||||
val r = Decoupled(new NASTIReadDataChannel).flip
|
val r = Decoupled(new NASTIReadDataChannel).flip
|
||||||
}
|
}
|
||||||
|
|
||||||
class NASTISlaveIO extends NASTIMasterIO { flip() }
|
|
||||||
|
|
||||||
trait HasNASTIMetadata extends NASTIBundle {
|
trait HasNASTIMetadata extends NASTIBundle {
|
||||||
val addr = UInt(width = nastiXAddrBits)
|
val addr = UInt(width = nastiXAddrBits)
|
||||||
val len = UInt(width = nastiXLenBits)
|
val len = UInt(width = nastiXLenBits)
|
||||||
@ -182,9 +180,9 @@ object NASTIWriteResponseChannel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MemIONASTISlaveIOConverter(cacheBlockOffsetBits: Int) extends MIFModule with NASTIParameters {
|
class MemIONASTIIOConverter(cacheBlockOffsetBits: Int) extends MIFModule with NASTIParameters {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val nasti = new NASTISlaveIO
|
val nasti = (new NASTIIO).flip
|
||||||
val mem = new MemIO
|
val mem = new MemIO
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,8 +236,8 @@ class MemIONASTISlaveIOConverter(cacheBlockOffsetBits: Int) extends MIFModule wi
|
|||||||
/** Arbitrate among arbN masters requesting to a single slave */
|
/** Arbitrate among arbN masters requesting to a single slave */
|
||||||
class NASTIArbiter(val arbN: Int) extends NASTIModule {
|
class NASTIArbiter(val arbN: Int) extends NASTIModule {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val master = Vec(new NASTISlaveIO, arbN)
|
val master = Vec(new NASTIIO, arbN).flip
|
||||||
val slave = new NASTIMasterIO
|
val slave = new NASTIIO
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arbN > 1) {
|
if (arbN > 1) {
|
||||||
@ -346,7 +344,7 @@ class NASTIReadDataArbiter(arbN: Int) extends NASTIModule {
|
|||||||
|
|
||||||
/** A slave that send decode error for every request it receives */
|
/** A slave that send decode error for every request it receives */
|
||||||
class NASTIErrorSlave extends NASTIModule {
|
class NASTIErrorSlave extends NASTIModule {
|
||||||
val io = new NASTISlaveIO
|
val io = (new NASTIIO).flip
|
||||||
|
|
||||||
when (io.ar.fire()) { printf("Invalid read address %x\n", io.ar.bits.addr) }
|
when (io.ar.fire()) { printf("Invalid read address %x\n", io.ar.bits.addr) }
|
||||||
when (io.aw.fire()) { printf("Invalid write address %x\n", io.aw.bits.addr) }
|
when (io.aw.fire()) { printf("Invalid write address %x\n", io.aw.bits.addr) }
|
||||||
@ -401,8 +399,8 @@ class NASTIRouter(addrmap: Seq[(BigInt, BigInt)]) extends NASTIModule {
|
|||||||
val nSlaves = addrmap.size
|
val nSlaves = addrmap.size
|
||||||
|
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val master = new NASTISlaveIO
|
val master = (new NASTIIO).flip
|
||||||
val slave = Vec(new NASTIMasterIO, nSlaves)
|
val slave = Vec(new NASTIIO, nSlaves)
|
||||||
}
|
}
|
||||||
|
|
||||||
var ar_ready = Bool(false)
|
var ar_ready = Bool(false)
|
||||||
@ -479,8 +477,8 @@ class NASTIRouter(addrmap: Seq[(BigInt, BigInt)]) extends NASTIModule {
|
|||||||
class NASTICrossbar(nMasters: Int, nSlaves: Int, addrmap: Seq[(BigInt, BigInt)])
|
class NASTICrossbar(nMasters: Int, nSlaves: Int, addrmap: Seq[(BigInt, BigInt)])
|
||||||
extends NASTIModule {
|
extends NASTIModule {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val masters = Vec(new NASTISlaveIO, nMasters)
|
val masters = Vec(new NASTIIO, nMasters).flip
|
||||||
val slaves = Vec(new NASTIMasterIO, nSlaves)
|
val slaves = Vec(new NASTIIO, nSlaves)
|
||||||
}
|
}
|
||||||
|
|
||||||
val routers = Vec.fill(nMasters) { Module(new NASTIRouter(addrmap)).io }
|
val routers = Vec.fill(nMasters) { Module(new NASTIRouter(addrmap)).io }
|
||||||
@ -594,8 +592,8 @@ case object NASTIAddrHashMap extends Field[AddrHashMap]
|
|||||||
class NASTIInterconnectIO(val nMasters: Int, val nSlaves: Int) extends Bundle {
|
class NASTIInterconnectIO(val nMasters: Int, val nSlaves: Int) extends Bundle {
|
||||||
/* This is a bit confusing. The interconnect is a slave to the masters and
|
/* This is a bit confusing. The interconnect is a slave to the masters and
|
||||||
* a master to the slaves. Hence why the declarations seem to be backwards. */
|
* a master to the slaves. Hence why the declarations seem to be backwards. */
|
||||||
val masters = Vec(new NASTISlaveIO, nMasters)
|
val masters = Vec(new NASTIIO, nMasters).flip
|
||||||
val slaves = Vec(new NASTIMasterIO, nSlaves)
|
val slaves = Vec(new NASTIIO, nSlaves)
|
||||||
override def cloneType =
|
override def cloneType =
|
||||||
new NASTIInterconnectIO(nMasters, nSlaves).asInstanceOf[this.type]
|
new NASTIInterconnectIO(nMasters, nSlaves).asInstanceOf[this.type]
|
||||||
}
|
}
|
||||||
|
@ -250,10 +250,10 @@ class SMIIONASTIWriteIOConverter(val dataWidth: Int, val addrWidth: Int)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Convert NASTI protocol to SMI protocol */
|
/** Convert NASTI protocol to SMI protocol */
|
||||||
class SMIIONASTISlaveIOConverter(val dataWidth: Int, val addrWidth: Int)
|
class SMIIONASTIIOConverter(val dataWidth: Int, val addrWidth: Int)
|
||||||
extends NASTIModule {
|
extends NASTIModule {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val nasti = new NASTISlaveIO
|
val nasti = (new NASTIIO).flip
|
||||||
val smi = new SMIIO(dataWidth, addrWidth)
|
val smi = new SMIIO(dataWidth, addrWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user