1
0
rocket-chip/src/main/scala/rocketchip/BaseTop.scala

74 lines
1.9 KiB
Scala
Raw Normal View History

// See LICENSE.SiFive for license details.
package rocketchip
import Chisel._
import config._
import junctions._
import diplomacy._
import uncore.tilelink._
import uncore.tilelink2._
import uncore.devices._
import util._
import rocket._
abstract class BareTop(implicit p: Parameters) extends LazyModule {
2016-10-29 06:56:11 +02:00
TopModule.contents = Some(this)
}
2016-09-15 09:38:46 +02:00
abstract class BareTopBundle[+L <: BareTop](_outer: L) extends GenericParameterizedBundle(_outer) {
val outer = _outer
implicit val p = outer.p
}
abstract class BareTopModule[+L <: BareTop, +B <: BareTopBundle[L]](_outer: L, _io: () => B) extends LazyModuleImp(_outer) {
val outer = _outer
val io = _io ()
2016-10-29 06:56:11 +02:00
}
/** Base Top with no Periphery */
2016-10-29 07:30:13 +02:00
trait TopNetwork extends HasPeripheryParameters {
val module: TopNetworkModule
// Add a SoC and peripheral bus
val socBus = LazyModule(new TLXbar)
val peripheryBus = LazyModule(new TLXbar)
2016-10-29 06:20:49 +02:00
val intBus = LazyModule(new IntXbar)
peripheryBus.node :=
TLWidthWidget(socBusConfig.beatBytes)(
TLAtomicAutomata(arithmetic = peripheryBusArithmetic)(
socBus.node))
}
2016-10-29 07:30:13 +02:00
trait TopNetworkBundle extends HasPeripheryParameters {
val outer: TopNetwork
}
2016-10-29 07:30:13 +02:00
trait TopNetworkModule extends HasPeripheryParameters {
val io: TopNetworkBundle
val outer: TopNetwork
}
2016-10-29 06:56:11 +02:00
/** Base Top with no Periphery */
class BaseTop(implicit p: Parameters) extends BareTop
2016-10-29 06:56:11 +02:00
with TopNetwork {
override lazy val module = new BaseTopModule(this, () => new BaseTopBundle(this))
2016-10-29 06:56:11 +02:00
}
class BaseTopBundle[+L <: BaseTop](_outer: L) extends BareTopBundle(_outer)
2016-10-29 06:56:11 +02:00
with TopNetworkBundle
class BaseTopModule[+L <: BaseTop, +B <: BaseTopBundle[L]](_outer: L, _io: () => B) extends BareTopModule(_outer, _io)
2016-10-29 06:56:11 +02:00
with TopNetworkModule
2016-11-23 01:58:24 +01:00
trait L2Crossbar extends TopNetwork {
val l2 = LazyModule(new TLXbar)
}
trait L2CrossbarBundle extends TopNetworkBundle {
}
trait L2CrossbarModule extends TopNetworkModule {
}