1
0

Chisel3 compat: merge NASTIMasterIO and NASTISlaveIO so we do not depend on flip() modifying the object

This commit is contained in:
Howard Mao 2015-09-24 16:57:50 -07:00
parent ee65f6a84d
commit e3d2207c72
2 changed files with 14 additions and 16 deletions

View File

@ -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]
} }

View File

@ -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)
} }