rocketchip: rename some periphery ports
This commit is contained in:
parent
6c3011d513
commit
a281ad8ad2
2
chisel3
2
chisel3
@ -1 +1 @@
|
|||||||
Subproject commit 50db343d5192cd39fa5786e217517c2f139cda64
|
Subproject commit 3ef63639284b2b56f415e1540c58d85d88c360db
|
2
firrtl
2
firrtl
@ -1 +1 @@
|
|||||||
Subproject commit b69e787c0a698b7fb703ccd8d24003f83207e296
|
Subproject commit 568f25b221884eeb0db362c902c933f734c7e47e
|
@ -12,6 +12,7 @@ import uncore.devices._
|
|||||||
import util._
|
import util._
|
||||||
import rocket._
|
import rocket._
|
||||||
|
|
||||||
|
/** BareTop is the root class for creating a top-level RTL module */
|
||||||
abstract class BareTop(implicit p: Parameters) extends LazyModule {
|
abstract class BareTop(implicit p: Parameters) extends LazyModule {
|
||||||
ElaborationArtefacts.add("graphml", graphML)
|
ElaborationArtefacts.add("graphml", graphML)
|
||||||
}
|
}
|
||||||
@ -26,17 +27,20 @@ abstract class BareTopModule[+L <: BareTop, +B <: BareTopBundle[L]](_outer: L, _
|
|||||||
val io = _io ()
|
val io = _io ()
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Base Top with no Periphery */
|
/** HasTopLevelNetworks provides buses that will serve as attachment points,
|
||||||
trait TopNetwork extends HasPeripheryParameters {
|
* for use in sub-traits that connect individual agents or external ports.
|
||||||
val module: TopNetworkModule
|
*/
|
||||||
|
trait HasTopLevelNetworks extends HasPeripheryParameters {
|
||||||
|
val module: HasTopLevelNetworksModule
|
||||||
|
|
||||||
// Add a SoC and peripheral bus
|
val socBus = LazyModule(new TLXbar) // Wide or unordered-access slave devices (TL-UH)
|
||||||
val socBus = LazyModule(new TLXbar)
|
val peripheryBus = LazyModule(new TLXbar) // Narrow and ordered-access slave devices (TL-UL)
|
||||||
val peripheryBus = LazyModule(new TLXbar)
|
val intBus = LazyModule(new IntXbar) // Interrupts
|
||||||
val intBus = LazyModule(new IntXbar)
|
val l2FrontendBus = LazyModule(new TLBuffer) // Master devices talking to the frontside of the L2
|
||||||
val l2 = LazyModule(new TLBuffer)
|
val mem = Seq.fill(nMemoryChannels) { LazyModule(new TLXbar) } // Ports out to DRAM
|
||||||
val mem = Seq.fill(p(coreplex.BankedL2Config).nMemoryChannels) { LazyModule(new TLXbar) }
|
|
||||||
|
|
||||||
|
// The peripheryBus hangs off of socBus;
|
||||||
|
// here we convert TL-UH -> TL-UL
|
||||||
peripheryBus.node :=
|
peripheryBus.node :=
|
||||||
TLBuffer()(
|
TLBuffer()(
|
||||||
TLWidthWidget(socBusConfig.beatBytes)(
|
TLWidthWidget(socBusConfig.beatBytes)(
|
||||||
@ -44,23 +48,23 @@ trait TopNetwork extends HasPeripheryParameters {
|
|||||||
socBus.node)))
|
socBus.node)))
|
||||||
}
|
}
|
||||||
|
|
||||||
trait TopNetworkBundle extends HasPeripheryParameters {
|
trait HasTopLevelNetworksBundle extends HasPeripheryParameters {
|
||||||
val outer: TopNetwork
|
val outer: HasTopLevelNetworks
|
||||||
}
|
}
|
||||||
|
|
||||||
trait TopNetworkModule extends HasPeripheryParameters {
|
trait HasTopLevelNetworksModule extends HasPeripheryParameters {
|
||||||
val io: TopNetworkBundle
|
val outer: HasTopLevelNetworks
|
||||||
val outer: TopNetwork
|
val io: HasTopLevelNetworksBundle
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Base Top with no Periphery */
|
/** Base Top class with no peripheral devices or ports added */
|
||||||
class BaseTop(implicit p: Parameters) extends BareTop
|
class BaseTop(implicit p: Parameters) extends BareTop
|
||||||
with TopNetwork {
|
with HasTopLevelNetworks {
|
||||||
override lazy val module = new BaseTopModule(this, () => new BaseTopBundle(this))
|
override lazy val module = new BaseTopModule(this, () => new BaseTopBundle(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
class BaseTopBundle[+L <: BaseTop](_outer: L) extends BareTopBundle(_outer)
|
class BaseTopBundle[+L <: BaseTop](_outer: L) extends BareTopBundle(_outer)
|
||||||
with TopNetworkBundle
|
with HasTopLevelNetworksBundle
|
||||||
|
|
||||||
class BaseTopModule[+L <: BaseTop, +B <: BaseTopBundle[L]](_outer: L, _io: () => B) extends BareTopModule(_outer, _io)
|
class BaseTopModule[+L <: BaseTop, +B <: BaseTopBundle[L]](_outer: L, _io: () => B) extends BareTopModule(_outer, _io)
|
||||||
with TopNetworkModule
|
with HasTopLevelNetworksModule
|
||||||
|
@ -37,16 +37,17 @@ case object ZeroConfig extends Field[ZeroConfig]
|
|||||||
/** Utility trait for quick access to some relevant parameters */
|
/** Utility trait for quick access to some relevant parameters */
|
||||||
trait HasPeripheryParameters {
|
trait HasPeripheryParameters {
|
||||||
implicit val p: Parameters
|
implicit val p: Parameters
|
||||||
lazy val peripheryBusConfig = p(PeripheryBusConfig)
|
def peripheryBusConfig = p(PeripheryBusConfig)
|
||||||
lazy val socBusConfig = p(SOCBusConfig)
|
def socBusConfig = p(SOCBusConfig)
|
||||||
lazy val cacheBlockBytes = p(CacheBlockBytes)
|
def cacheBlockBytes = p(CacheBlockBytes)
|
||||||
lazy val peripheryBusArithmetic = p(PeripheryBusArithmetic)
|
def peripheryBusArithmetic = p(PeripheryBusArithmetic)
|
||||||
|
def nMemoryChannels = p(coreplex.BankedL2Config).nMemoryChannels
|
||||||
}
|
}
|
||||||
|
|
||||||
/////
|
/////
|
||||||
|
|
||||||
trait PeripheryExtInterrupts {
|
trait PeripheryExtInterrupts {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
|
|
||||||
val nExtInterrupts = p(NExtTopInterrupts)
|
val nExtInterrupts = p(NExtTopInterrupts)
|
||||||
val extInterrupts = IntInternalInputNode(nExtInterrupts)
|
val extInterrupts = IntInternalInputNode(nExtInterrupts)
|
||||||
@ -57,14 +58,14 @@ trait PeripheryExtInterrupts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryExtInterruptsBundle {
|
trait PeripheryExtInterruptsBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryExtInterrupts
|
val outer: PeripheryExtInterrupts
|
||||||
} =>
|
} =>
|
||||||
val interrupts = UInt(INPUT, width = outer.nExtInterrupts)
|
val interrupts = UInt(INPUT, width = outer.nExtInterrupts)
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryExtInterruptsModule {
|
trait PeripheryExtInterruptsModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryExtInterrupts
|
val outer: PeripheryExtInterrupts
|
||||||
val io: PeripheryExtInterruptsBundle
|
val io: PeripheryExtInterruptsBundle
|
||||||
} =>
|
} =>
|
||||||
@ -74,7 +75,7 @@ trait PeripheryExtInterruptsModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
trait PeripheryMasterAXI4Mem {
|
trait PeripheryMasterAXI4Mem {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
val module: PeripheryMasterAXI4MemModule
|
val module: PeripheryMasterAXI4MemModule
|
||||||
|
|
||||||
private val config = p(ExtMem)
|
private val config = p(ExtMem)
|
||||||
@ -107,14 +108,14 @@ trait PeripheryMasterAXI4Mem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterAXI4MemBundle {
|
trait PeripheryMasterAXI4MemBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryMasterAXI4Mem
|
val outer: PeripheryMasterAXI4Mem
|
||||||
} =>
|
} =>
|
||||||
val mem_axi4 = outer.mem_axi4.bundleOut
|
val mem_axi4 = outer.mem_axi4.bundleOut
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterAXI4MemModule {
|
trait PeripheryMasterAXI4MemModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryMasterAXI4Mem
|
val outer: PeripheryMasterAXI4Mem
|
||||||
val io: PeripheryMasterAXI4MemBundle
|
val io: PeripheryMasterAXI4MemBundle
|
||||||
} =>
|
} =>
|
||||||
@ -123,7 +124,7 @@ trait PeripheryMasterAXI4MemModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
trait PeripheryZero {
|
trait PeripheryZero {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
val module: PeripheryZeroModule
|
val module: PeripheryZeroModule
|
||||||
|
|
||||||
private val config = p(ZeroConfig)
|
private val config = p(ZeroConfig)
|
||||||
@ -138,13 +139,13 @@ trait PeripheryZero {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryZeroBundle {
|
trait PeripheryZeroBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryZero
|
val outer: PeripheryZero
|
||||||
} =>
|
} =>
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryZeroModule {
|
trait PeripheryZeroModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryZero
|
val outer: PeripheryZero
|
||||||
val io: PeripheryZeroBundle
|
val io: PeripheryZeroBundle
|
||||||
} =>
|
} =>
|
||||||
@ -154,7 +155,7 @@ trait PeripheryZeroModule {
|
|||||||
|
|
||||||
// PeripheryMasterAXI4MMIO is an example, make your own cake pattern like this one.
|
// PeripheryMasterAXI4MMIO is an example, make your own cake pattern like this one.
|
||||||
trait PeripheryMasterAXI4MMIO {
|
trait PeripheryMasterAXI4MMIO {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
|
|
||||||
private val config = p(ExtBus)
|
private val config = p(ExtBus)
|
||||||
val mmio_axi4 = AXI4BlindOutputNode(Seq(AXI4SlavePortParameters(
|
val mmio_axi4 = AXI4BlindOutputNode(Seq(AXI4SlavePortParameters(
|
||||||
@ -175,14 +176,14 @@ trait PeripheryMasterAXI4MMIO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterAXI4MMIOBundle {
|
trait PeripheryMasterAXI4MMIOBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryMasterAXI4MMIO
|
val outer: PeripheryMasterAXI4MMIO
|
||||||
} =>
|
} =>
|
||||||
val mmio_axi4 = outer.mmio_axi4.bundleOut
|
val mmio_axi4 = outer.mmio_axi4.bundleOut
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterAXI4MMIOModule {
|
trait PeripheryMasterAXI4MMIOModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryMasterAXI4MMIO
|
val outer: PeripheryMasterAXI4MMIO
|
||||||
val io: PeripheryMasterAXI4MMIOBundle
|
val io: PeripheryMasterAXI4MMIOBundle
|
||||||
} =>
|
} =>
|
||||||
@ -192,26 +193,26 @@ trait PeripheryMasterAXI4MMIOModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
// PeripherySlaveAXI4 is an example, make your own cake pattern like this one.
|
// PeripherySlaveAXI4 is an example, make your own cake pattern like this one.
|
||||||
trait PeripherySlaveAXI4 extends TopNetwork {
|
trait PeripherySlaveAXI4 extends HasTopLevelNetworks {
|
||||||
private val config = p(ExtIn)
|
private val config = p(ExtIn)
|
||||||
val l2_axi4 = AXI4BlindInputNode(Seq(AXI4MasterPortParameters(
|
val l2FrontendAXI4Node = AXI4BlindInputNode(Seq(AXI4MasterPortParameters(
|
||||||
masters = Seq(AXI4MasterParameters(
|
masters = Seq(AXI4MasterParameters(
|
||||||
id = IdRange(0, 1 << config.idBits))))))
|
id = IdRange(0, 1 << config.idBits))))))
|
||||||
|
|
||||||
l2.node :=
|
l2FrontendBus.node :=
|
||||||
TLSourceShrinker(1 << config.sourceBits)(
|
TLSourceShrinker(1 << config.sourceBits)(
|
||||||
TLWidthWidget(config.beatBytes)(
|
TLWidthWidget(config.beatBytes)(
|
||||||
AXI4ToTL()(
|
AXI4ToTL()(
|
||||||
AXI4Fragmenter()(
|
AXI4Fragmenter()(
|
||||||
l2_axi4))))
|
l2FrontendAXI4Node))))
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripherySlaveAXI4Bundle extends TopNetworkBundle {
|
trait PeripherySlaveAXI4Bundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: PeripherySlaveAXI4
|
val outer: PeripherySlaveAXI4
|
||||||
val l2_axi4 = outer.l2_axi4.bundleIn
|
val l2_frontend_bus_axi4 = outer.l2FrontendAXI4Node.bundleIn
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripherySlaveAXI4Module extends TopNetworkModule {
|
trait PeripherySlaveAXI4Module extends HasTopLevelNetworksModule {
|
||||||
val outer: PeripherySlaveAXI4
|
val outer: PeripherySlaveAXI4
|
||||||
val io: PeripherySlaveAXI4Bundle
|
val io: PeripherySlaveAXI4Bundle
|
||||||
// nothing to do
|
// nothing to do
|
||||||
@ -221,7 +222,7 @@ trait PeripherySlaveAXI4Module extends TopNetworkModule {
|
|||||||
|
|
||||||
// Add an external TL-UL slave
|
// Add an external TL-UL slave
|
||||||
trait PeripheryMasterTLMMIO {
|
trait PeripheryMasterTLMMIO {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
|
|
||||||
private val config = p(ExtBus)
|
private val config = p(ExtBus)
|
||||||
val mmio_tl = TLBlindOutputNode(Seq(TLManagerPortParameters(
|
val mmio_tl = TLBlindOutputNode(Seq(TLManagerPortParameters(
|
||||||
@ -241,14 +242,14 @@ trait PeripheryMasterTLMMIO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterTLMMIOBundle {
|
trait PeripheryMasterTLMMIOBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryMasterTLMMIO
|
val outer: PeripheryMasterTLMMIO
|
||||||
} =>
|
} =>
|
||||||
val mmio_tl = outer.mmio_tl.bundleOut
|
val mmio_tl = outer.mmio_tl.bundleOut
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryMasterTLMMIOModule {
|
trait PeripheryMasterTLMMIOModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryMasterTLMMIO
|
val outer: PeripheryMasterTLMMIO
|
||||||
val io: PeripheryMasterTLMMIOBundle
|
val io: PeripheryMasterTLMMIOBundle
|
||||||
} =>
|
} =>
|
||||||
@ -258,24 +259,24 @@ trait PeripheryMasterTLMMIOModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
// NOTE: this port is NOT allowed to issue Acquires
|
// NOTE: this port is NOT allowed to issue Acquires
|
||||||
trait PeripherySlaveTL extends TopNetwork {
|
trait PeripherySlaveTL extends HasTopLevelNetworks {
|
||||||
private val config = p(ExtIn)
|
private val config = p(ExtIn)
|
||||||
val l2_tl = TLBlindInputNode(Seq(TLClientPortParameters(
|
val l2FrontendTLNode = TLBlindInputNode(Seq(TLClientPortParameters(
|
||||||
clients = Seq(TLClientParameters(
|
clients = Seq(TLClientParameters(
|
||||||
sourceId = IdRange(0, 1 << config.idBits))))))
|
sourceId = IdRange(0, 1 << config.idBits))))))
|
||||||
|
|
||||||
l2.node :=
|
l2FrontendBus.node :=
|
||||||
TLSourceShrinker(1 << config.sourceBits)(
|
TLSourceShrinker(1 << config.sourceBits)(
|
||||||
TLWidthWidget(config.beatBytes)(
|
TLWidthWidget(config.beatBytes)(
|
||||||
l2_tl))
|
l2FrontendTLNode))
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripherySlaveTLBundle extends TopNetworkBundle {
|
trait PeripherySlaveTLBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: PeripherySlaveTL
|
val outer: PeripherySlaveTL
|
||||||
val l2_tl = outer.l2_tl.bundleIn
|
val l2_frontend_bus_tl = outer.l2FrontendTLNode.bundleIn
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripherySlaveTLModule extends TopNetworkModule {
|
trait PeripherySlaveTLModule extends HasTopLevelNetworksModule {
|
||||||
val outer: PeripherySlaveTL
|
val outer: PeripherySlaveTL
|
||||||
val io: PeripherySlaveTLBundle
|
val io: PeripherySlaveTLBundle
|
||||||
// nothing to do
|
// nothing to do
|
||||||
@ -284,7 +285,7 @@ trait PeripherySlaveTLModule extends TopNetworkModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
trait PeripheryBootROM {
|
trait PeripheryBootROM {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
val coreplex: CoreplexRISCVPlatform
|
val coreplex: CoreplexRISCVPlatform
|
||||||
|
|
||||||
private val bootrom_address = 0x1000
|
private val bootrom_address = 0x1000
|
||||||
@ -295,13 +296,13 @@ trait PeripheryBootROM {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryBootROMBundle {
|
trait PeripheryBootROMBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryBootROM
|
val outer: PeripheryBootROM
|
||||||
} =>
|
} =>
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryBootROMModule {
|
trait PeripheryBootROMModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryBootROM
|
val outer: PeripheryBootROM
|
||||||
val io: PeripheryBootROMBundle
|
val io: PeripheryBootROMBundle
|
||||||
} =>
|
} =>
|
||||||
@ -310,20 +311,20 @@ trait PeripheryBootROMModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
trait PeripheryTestRAM {
|
trait PeripheryTestRAM {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
|
|
||||||
val testram = LazyModule(new TLRAM(AddressSet(0x52000000, 0xfff), true, peripheryBusConfig.beatBytes))
|
val testram = LazyModule(new TLRAM(AddressSet(0x52000000, 0xfff), true, peripheryBusConfig.beatBytes))
|
||||||
testram.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
|
testram.node := TLFragmenter(peripheryBusConfig.beatBytes, cacheBlockBytes)(peripheryBus.node)
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryTestRAMBundle {
|
trait PeripheryTestRAMBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryTestRAM
|
val outer: PeripheryTestRAM
|
||||||
} =>
|
} =>
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryTestRAMModule {
|
trait PeripheryTestRAMModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryTestRAM
|
val outer: PeripheryTestRAM
|
||||||
val io: PeripheryTestRAMBundle
|
val io: PeripheryTestRAMBundle
|
||||||
} =>
|
} =>
|
||||||
@ -332,19 +333,19 @@ trait PeripheryTestRAMModule {
|
|||||||
/////
|
/////
|
||||||
|
|
||||||
trait PeripheryTestBusMaster {
|
trait PeripheryTestBusMaster {
|
||||||
this: TopNetwork =>
|
this: HasTopLevelNetworks =>
|
||||||
val fuzzer = LazyModule(new TLFuzzer(5000))
|
val fuzzer = LazyModule(new TLFuzzer(5000))
|
||||||
peripheryBus.node := fuzzer.node
|
peripheryBus.node := fuzzer.node
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryTestBusMasterBundle {
|
trait PeripheryTestBusMasterBundle {
|
||||||
this: TopNetworkBundle {
|
this: HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryTestBusMaster
|
val outer: PeripheryTestBusMaster
|
||||||
} =>
|
} =>
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryTestBusMasterModule {
|
trait PeripheryTestBusMasterModule {
|
||||||
this: TopNetworkModule {
|
this: HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryTestBusMaster
|
val outer: PeripheryTestBusMaster
|
||||||
val io: PeripheryTestBusMasterBundle
|
val io: PeripheryTestBusMasterBundle
|
||||||
} =>
|
} =>
|
||||||
|
@ -13,18 +13,18 @@ import coreplex._
|
|||||||
|
|
||||||
/// Core with JTAG for debug only
|
/// Core with JTAG for debug only
|
||||||
|
|
||||||
trait PeripheryJTAG extends TopNetwork {
|
trait PeripheryJTAG extends HasTopLevelNetworks {
|
||||||
val module: PeripheryJTAGModule
|
val module: PeripheryJTAGModule
|
||||||
val coreplex: CoreplexRISCVPlatform
|
val coreplex: CoreplexRISCVPlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryJTAGBundle extends TopNetworkBundle {
|
trait PeripheryJTAGBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryJTAG
|
val outer: PeripheryJTAG
|
||||||
|
|
||||||
val jtag = new JTAGIO(true).flip
|
val jtag = new JTAGIO(true).flip
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryJTAGModule extends TopNetworkModule {
|
trait PeripheryJTAGModule extends HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryJTAG
|
val outer: PeripheryJTAG
|
||||||
val io: PeripheryJTAGBundle
|
val io: PeripheryJTAGBundle
|
||||||
|
|
||||||
@ -38,18 +38,18 @@ trait PeripheryJTAGModule extends TopNetworkModule {
|
|||||||
|
|
||||||
/// Core with DTM for debug only
|
/// Core with DTM for debug only
|
||||||
|
|
||||||
trait PeripheryDTM extends TopNetwork {
|
trait PeripheryDTM extends HasTopLevelNetworks {
|
||||||
val module: PeripheryDTMModule
|
val module: PeripheryDTMModule
|
||||||
val coreplex: CoreplexRISCVPlatform
|
val coreplex: CoreplexRISCVPlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryDTMBundle extends TopNetworkBundle {
|
trait PeripheryDTMBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryDTM
|
val outer: PeripheryDTM
|
||||||
|
|
||||||
val debug = new DebugBusIO().flip
|
val debug = new DebugBusIO().flip
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryDTMModule extends TopNetworkModule {
|
trait PeripheryDTMModule extends HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryDTM
|
val outer: PeripheryDTM
|
||||||
val io: PeripheryDTMBundle
|
val io: PeripheryDTMBundle
|
||||||
|
|
||||||
@ -58,19 +58,19 @@ trait PeripheryDTMModule extends TopNetworkModule {
|
|||||||
|
|
||||||
/// Core with DTM or JTAG based on a parameter
|
/// Core with DTM or JTAG based on a parameter
|
||||||
|
|
||||||
trait PeripheryDebug extends TopNetwork {
|
trait PeripheryDebug extends HasTopLevelNetworks {
|
||||||
val module: PeripheryDebugModule
|
val module: PeripheryDebugModule
|
||||||
val coreplex: CoreplexRISCVPlatform
|
val coreplex: CoreplexRISCVPlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryDebugBundle extends TopNetworkBundle {
|
trait PeripheryDebugBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryDebug
|
val outer: PeripheryDebug
|
||||||
|
|
||||||
val debug = (!p(IncludeJtagDTM)).option(new DebugBusIO().flip)
|
val debug = (!p(IncludeJtagDTM)).option(new DebugBusIO().flip)
|
||||||
val jtag = (p(IncludeJtagDTM)).option(new JTAGIO(true).flip)
|
val jtag = (p(IncludeJtagDTM)).option(new JTAGIO(true).flip)
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryDebugModule extends TopNetworkModule {
|
trait PeripheryDebugModule extends HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryDebug
|
val outer: PeripheryDebug
|
||||||
val io: PeripheryDebugBundle
|
val io: PeripheryDebugBundle
|
||||||
|
|
||||||
@ -86,16 +86,16 @@ trait PeripheryDebugModule extends TopNetworkModule {
|
|||||||
|
|
||||||
/// Real-time clock is based on RTCPeriod relative to Top clock
|
/// Real-time clock is based on RTCPeriod relative to Top clock
|
||||||
|
|
||||||
trait PeripheryCounter extends TopNetwork {
|
trait PeripheryCounter extends HasTopLevelNetworks {
|
||||||
val module: PeripheryCounterModule
|
val module: PeripheryCounterModule
|
||||||
val coreplex: CoreplexRISCVPlatform
|
val coreplex: CoreplexRISCVPlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryCounterBundle extends TopNetworkBundle {
|
trait PeripheryCounterBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: PeripheryCounter
|
val outer: PeripheryCounter
|
||||||
}
|
}
|
||||||
|
|
||||||
trait PeripheryCounterModule extends TopNetworkModule {
|
trait PeripheryCounterModule extends HasTopLevelNetworksModule {
|
||||||
val outer: PeripheryCounter
|
val outer: PeripheryCounter
|
||||||
val io: PeripheryCounterBundle
|
val io: PeripheryCounterBundle
|
||||||
|
|
||||||
@ -111,16 +111,16 @@ trait PeripheryCounterModule extends TopNetworkModule {
|
|||||||
|
|
||||||
/// Coreplex will power-on running at 0x1000 (BootROM)
|
/// Coreplex will power-on running at 0x1000 (BootROM)
|
||||||
|
|
||||||
trait HardwiredResetVector extends TopNetwork {
|
trait HardwiredResetVector extends HasTopLevelNetworks {
|
||||||
val module: HardwiredResetVectorModule
|
val module: HardwiredResetVectorModule
|
||||||
val coreplex: CoreplexRISCVPlatform
|
val coreplex: CoreplexRISCVPlatform
|
||||||
}
|
}
|
||||||
|
|
||||||
trait HardwiredResetVectorBundle extends TopNetworkBundle {
|
trait HardwiredResetVectorBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: HardwiredResetVector
|
val outer: HardwiredResetVector
|
||||||
}
|
}
|
||||||
|
|
||||||
trait HardwiredResetVectorModule extends TopNetworkModule {
|
trait HardwiredResetVectorModule extends HasTopLevelNetworksModule {
|
||||||
val outer: HardwiredResetVector
|
val outer: HardwiredResetVector
|
||||||
val io: HardwiredResetVectorBundle
|
val io: HardwiredResetVectorBundle
|
||||||
|
|
||||||
|
@ -10,12 +10,12 @@ import uncore.devices._
|
|||||||
import util._
|
import util._
|
||||||
import coreplex._
|
import coreplex._
|
||||||
|
|
||||||
trait RocketPlexMaster extends TopNetwork {
|
trait RocketPlexMaster extends HasTopLevelNetworks {
|
||||||
val module: RocketPlexMasterModule
|
val module: RocketPlexMasterModule
|
||||||
|
|
||||||
val coreplex = LazyModule(new DefaultCoreplex)
|
val coreplex = LazyModule(new DefaultCoreplex)
|
||||||
|
|
||||||
coreplex.l2in :=* l2.node
|
coreplex.l2in :=* l2FrontendBus.node
|
||||||
socBus.node := coreplex.mmio
|
socBus.node := coreplex.mmio
|
||||||
coreplex.mmioInt := intBus.intnode
|
coreplex.mmioInt := intBus.intnode
|
||||||
|
|
||||||
@ -23,11 +23,11 @@ trait RocketPlexMaster extends TopNetwork {
|
|||||||
(mem zip coreplex.mem) foreach { case (xbar, channel) => xbar.node :=* channel }
|
(mem zip coreplex.mem) foreach { case (xbar, channel) => xbar.node :=* channel }
|
||||||
}
|
}
|
||||||
|
|
||||||
trait RocketPlexMasterBundle extends TopNetworkBundle {
|
trait RocketPlexMasterBundle extends HasTopLevelNetworksBundle {
|
||||||
val outer: RocketPlexMaster
|
val outer: RocketPlexMaster
|
||||||
}
|
}
|
||||||
|
|
||||||
trait RocketPlexMasterModule extends TopNetworkModule {
|
trait RocketPlexMasterModule extends HasTopLevelNetworksModule {
|
||||||
val outer: RocketPlexMaster
|
val outer: RocketPlexMaster
|
||||||
val io: RocketPlexMasterBundle
|
val io: RocketPlexMasterBundle
|
||||||
val clock: Clock
|
val clock: Clock
|
||||||
|
@ -29,7 +29,7 @@ class TestHarness()(implicit p: Parameters) extends Module {
|
|||||||
val mmio_sim = Module(LazyModule(new SimAXIMem(1, 4096)).module)
|
val mmio_sim = Module(LazyModule(new SimAXIMem(1, 4096)).module)
|
||||||
mmio_sim.io.axi4 <> dut.io.mmio_axi4
|
mmio_sim.io.axi4 <> dut.io.mmio_axi4
|
||||||
|
|
||||||
val l2_axi4 = dut.io.l2_axi4(0)
|
val l2_axi4 = dut.io.l2_frontend_bus_axi4(0)
|
||||||
l2_axi4.ar.valid := Bool(false)
|
l2_axi4.ar.valid := Bool(false)
|
||||||
l2_axi4.aw.valid := Bool(false)
|
l2_axi4.aw.valid := Bool(false)
|
||||||
l2_axi4.w .valid := Bool(false)
|
l2_axi4.w .valid := Bool(false)
|
||||||
|
Loading…
Reference in New Issue
Block a user