simplify base Coreplex bundle
This commit is contained in:
		@@ -41,8 +41,7 @@ case class CoreplexConfig(
 | 
			
		||||
    nExtInterrupts: Int,
 | 
			
		||||
    nSlaves: Int,
 | 
			
		||||
    nMemChannels: Int,
 | 
			
		||||
    hasSupervisor: Boolean,
 | 
			
		||||
    hasExtMMIOPort: Boolean)
 | 
			
		||||
    hasSupervisor: Boolean)
 | 
			
		||||
{
 | 
			
		||||
  val plicKey = PLICConfig(nTiles, hasSupervisor, nExtInterrupts, 0)
 | 
			
		||||
}
 | 
			
		||||
@@ -52,14 +51,14 @@ abstract class BaseCoreplex(c: CoreplexConfig)(implicit p: Parameters) extends L
 | 
			
		||||
abstract class BaseCoreplexBundle(val c: CoreplexConfig)(implicit val p: Parameters) extends Bundle with HasCoreplexParameters {
 | 
			
		||||
  val master = new Bundle {
 | 
			
		||||
    val mem = Vec(c.nMemChannels, new ClientUncachedTileLinkIO()(outermostParams))
 | 
			
		||||
    val mmio = c.hasExtMMIOPort.option(new ClientUncachedTileLinkIO()(outermostMMIOParams))
 | 
			
		||||
    val mmio = new ClientUncachedTileLinkIO()(outermostMMIOParams)
 | 
			
		||||
  }
 | 
			
		||||
  val slave = Vec(c.nSlaves, new ClientUncachedTileLinkIO()(innerParams)).flip
 | 
			
		||||
  val interrupts = Vec(c.nExtInterrupts, Bool()).asInput
 | 
			
		||||
  val debug = new DebugBusIO()(p).flip
 | 
			
		||||
  val clint = Vec(c.nTiles, new CoreplexLocalInterrupts).asInput
 | 
			
		||||
  val success = Bool(OUTPUT)
 | 
			
		||||
  val resetVector = UInt(INPUT, p(XLen))
 | 
			
		||||
  val success = Bool(OUTPUT) // used for testing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class BaseCoreplexModule[+L <: BaseCoreplex, +B <: BaseCoreplexBundle](
 | 
			
		||||
@@ -67,9 +66,6 @@ abstract class BaseCoreplexModule[+L <: BaseCoreplex, +B <: BaseCoreplexBundle](
 | 
			
		||||
  val outer: L = l
 | 
			
		||||
  val io: B = b
 | 
			
		||||
 | 
			
		||||
  // Coreplex doesn't know when to stop running
 | 
			
		||||
  io.success := Bool(false)
 | 
			
		||||
 | 
			
		||||
  // Build a set of Tiles
 | 
			
		||||
  val tiles = p(BuildTiles) map { _(reset, p) }
 | 
			
		||||
  val uncoreTileIOs = (tiles zipWithIndex) map { case (tile, i) => Wire(tile.io) }
 | 
			
		||||
@@ -162,6 +158,9 @@ abstract class BaseCoreplexModule[+L <: BaseCoreplex, +B <: BaseCoreplexBundle](
 | 
			
		||||
    for ((t, m) <- (uncoreTileIOs.map(_.slave).flatten) zip (tileSlavePorts map (cBus port _)))
 | 
			
		||||
      t <> m
 | 
			
		||||
 | 
			
		||||
    io.master.mmio.foreach { _ <> cBus.port("pbus") }
 | 
			
		||||
    io.master.mmio <> cBus.port("pbus")
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Coreplex doesn't know when to stop running
 | 
			
		||||
  io.success := Bool(false)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -36,8 +36,7 @@ abstract class BaseTop(q: Parameters) extends LazyModule {
 | 
			
		||||
    nExtInterrupts = pInterrupts.sum,
 | 
			
		||||
    nSlaves = pBusMasters.sum,
 | 
			
		||||
    nMemChannels = q(NMemoryChannels),
 | 
			
		||||
    hasSupervisor = q(UseVM),
 | 
			
		||||
    hasExtMMIOPort = true
 | 
			
		||||
    hasSupervisor = q(UseVM)
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  lazy val genGlobalAddrMap = GenerateGlobalAddrMap(q, pDevices.get, peripheryManagers)
 | 
			
		||||
@@ -68,7 +67,7 @@ abstract class BaseTopModule[+L <: BaseTop, +B <: BaseTopBundle](
 | 
			
		||||
  val pBus =
 | 
			
		||||
    Module(new TileLinkRecursiveInterconnect(1, p(GlobalAddrMap).subMap("io:pbus"))(
 | 
			
		||||
      p.alterPartial({ case TLId => "L2toMMIO" })))
 | 
			
		||||
  pBus.io.in.head <> coreplexIO.master.mmio.get
 | 
			
		||||
  pBus.io.in.head <> coreplexIO.master.mmio
 | 
			
		||||
  outer.legacy.module.io.legacy <> pBus.port("TL2")
 | 
			
		||||
 | 
			
		||||
  println("Generated Address Map")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user