1
0

coreplex => subsystem

This commit is contained in:
Henry Cook 2018-01-12 12:29:27 -08:00
parent 32c5c3c04d
commit 8462ea3d5b
45 changed files with 114 additions and 114 deletions

View File

@ -7,7 +7,7 @@ import freechips.rocketchip.config.Parameters
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
import freechips.rocketchip.coreplex.{CrossingWrapper, AsynchronousCrossing} import freechips.rocketchip.subsystem.{CrossingWrapper, AsynchronousCrossing}
class AXI4AsyncCrossingSource(sync: Int = 3)(implicit p: Parameters) extends LazyModule class AXI4AsyncCrossingSource(sync: Int = 3)(implicit p: Parameters) extends LazyModule
{ {

View File

@ -5,7 +5,7 @@ package freechips.rocketchip.devices.debug
import Chisel._ import Chisel._
import chisel3.core.{IntParam, Input, Output} import chisel3.core.{IntParam, Input, Output}
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.HasPeripheryBus import freechips.rocketchip.subsystem.HasPeripheryBus
import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.devices.tilelink._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.jtag._ import freechips.rocketchip.jtag._

View File

@ -4,7 +4,7 @@ package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
@ -58,7 +58,7 @@ class TLROM(val base: BigInt, val size: Int, contentsDelayed: => Seq[Byte], exec
} }
} }
/** Adds a boot ROM that contains the DTB describing the system's coreplex. */ /** Adds a boot ROM that contains the DTB describing the system's subsystem. */
trait HasPeripheryBootROM extends HasPeripheryBus { trait HasPeripheryBootROM extends HasPeripheryBus {
val dtb: DTB val dtb: DTB
private val params = p(BootROMParams) private val params = p(BootROMParams)
@ -74,7 +74,7 @@ trait HasPeripheryBootROM extends HasPeripheryBus {
bootrom.node := pbus.toVariableWidthSlaves bootrom.node := pbus.toVariableWidthSlaves
} }
/** Coreplex will power-on running at 0x10040 (BootROM) */ /** Subsystem will power-on running at 0x10040 (BootROM) */
trait HasPeripheryBootROMModuleImp extends LazyModuleImp trait HasPeripheryBootROMModuleImp extends LazyModuleImp
with HasResetVectorWire { with HasResetVectorWire {
val outer: HasPeripheryBootROM val outer: HasPeripheryBootROM

View File

@ -4,7 +4,7 @@ package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.HasPeripheryBus import freechips.rocketchip.subsystem.HasPeripheryBus
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._

View File

@ -4,7 +4,7 @@ package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.HasPeripheryBus import freechips.rocketchip.subsystem.HasPeripheryBus
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.regmapper._ import freechips.rocketchip.regmapper._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
@ -12,7 +12,7 @@ import freechips.rocketchip.interrupts._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
import scala.math.{min,max} import scala.math.{min,max}
object ClintConsts object CLINTConsts
{ {
def msipOffset(hart: Int) = hart * msipBytes def msipOffset(hart: Int) = hart * msipBytes
def timecmpOffset(hart: Int) = 0x4000 + hart * timecmpBytes def timecmpOffset(hart: Int) = 0x4000 + hart * timecmpBytes
@ -25,16 +25,16 @@ object ClintConsts
def ints = 2 def ints = 2
} }
case class ClintParams(baseAddress: BigInt = 0x02000000, intStages: Int = 0) case class CLINTParams(baseAddress: BigInt = 0x02000000, intStages: Int = 0)
{ {
def address = AddressSet(baseAddress, ClintConsts.size-1) def address = AddressSet(baseAddress, CLINTConsts.size-1)
} }
case object ClintKey extends Field(ClintParams()) case object CLINTKey extends Field(CLINTParams())
class CoreplexLocalInterrupter(params: ClintParams, beatBytes: Int)(implicit p: Parameters) extends LazyModule class CLINT(params: CLINTParams, beatBytes: Int)(implicit p: Parameters) extends LazyModule
{ {
import ClintConsts._ import CLINTConsts._
// clint0 => at most 4095 devices // clint0 => at most 4095 devices
val device = new SimpleDevice("clint", Seq("riscv,clint0")) { val device = new SimpleDevice("clint", Seq("riscv,clint0")) {
@ -90,8 +90,8 @@ class CoreplexLocalInterrupter(params: ClintParams, beatBytes: Int)(implicit p:
} }
} }
/** Trait that will connect a Clint to a coreplex */ /** Trait that will connect a CLINT to a subsystem */
trait HasPeripheryClint extends HasPeripheryBus { trait HasPeripheryCLINT extends HasPeripheryBus {
val clint = LazyModule(new CoreplexLocalInterrupter(p(ClintKey), pbus.beatBytes)) val clint = LazyModule(new CLINT(p(CLINTKey), pbus.beatBytes))
clint.node := pbus.toVariableWidthSlaves clint.node := pbus.toVariableWidthSlaves
} }

View File

@ -4,7 +4,7 @@ package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.HasSystemBus import freechips.rocketchip.subsystem.HasSystemBus
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._

View File

@ -3,7 +3,7 @@
package freechips.rocketchip.devices.tilelink package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import freechips.rocketchip.coreplex.{HasPeripheryBus} import freechips.rocketchip.subsystem.{HasPeripheryBus}
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._

View File

@ -5,7 +5,7 @@ package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.{HasInterruptBus, HasPeripheryBus} import freechips.rocketchip.subsystem.{HasInterruptBus, HasPeripheryBus}
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.regmapper._ import freechips.rocketchip.regmapper._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
@ -268,7 +268,7 @@ class TLPLIC(params: PLICParams, beatBytes: Int)(implicit p: Parameters) extends
} }
} }
/** Trait that will connect a PLIC to a coreplex */ /** Trait that will connect a PLIC to a subsystem */
trait HasPeripheryPLIC extends HasInterruptBus with HasPeripheryBus { trait HasPeripheryPLIC extends HasInterruptBus with HasPeripheryBus {
val plic = LazyModule(new TLPLIC(p(PLICKey), pbus.beatBytes)) val plic = LazyModule(new TLPLIC(p(PLICKey), pbus.beatBytes))
plic.node := pbus.toVariableWidthSlaves plic.node := pbus.toVariableWidthSlaves

View File

@ -4,7 +4,7 @@ package freechips.rocketchip.devices.tilelink
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.HasMemoryBus import freechips.rocketchip.subsystem.HasMemoryBus
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._

View File

@ -211,7 +211,7 @@ case class Resource(owner: Device, key: String)
} }
} }
/** The resource binding scope for a LazyModule that generates a device tree (currently Coreplex only). */ /** The resource binding scope for a LazyModule that generates a device tree (currently Subsystem only). */
trait BindingScope trait BindingScope
{ {
this: LazyModule => this: LazyModule =>

View File

@ -5,13 +5,13 @@ package freechips.rocketchip.groundtest
import Chisel._ import Chisel._
import freechips.rocketchip.config.Config import freechips.rocketchip.config.Config
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.rocket.{DCacheParams} import freechips.rocketchip.rocket.{DCacheParams}
import freechips.rocketchip.tile.{MaxHartIdBits, XLen} import freechips.rocketchip.tile.{MaxHartIdBits, XLen}
/** Actual testing target Configs */ /** Actual testing target Configs */
class TraceGenConfig extends Config(new WithTraceGen(List.fill(2){ DCacheParams(nSets = 16, nWays = 1) }) ++ new BaseCoreplexConfig) class TraceGenConfig extends Config(new WithTraceGen(List.fill(2){ DCacheParams(nSets = 16, nWays = 1) }) ++ new BaseSubsystemConfig)
class TraceGenBufferlessConfig extends Config(new WithBufferlessBroadcastHub ++ new TraceGenConfig) class TraceGenBufferlessConfig extends Config(new WithBufferlessBroadcastHub ++ new TraceGenConfig)

View File

@ -7,7 +7,7 @@ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.interrupts._ import freechips.rocketchip.interrupts._
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.tile._ import freechips.rocketchip.tile._
@ -15,7 +15,7 @@ import scala.math.max
case object TileId extends Field[Int] case object TileId extends Field[Int]
class GroundTestCoreplex(implicit p: Parameters) extends BaseCoreplex class GroundTestSubsystem(implicit p: Parameters) extends BaseSubsystem
with HasMasterAXI4MemPort with HasMasterAXI4MemPort
with HasPeripheryTestRAMSlave with HasPeripheryTestRAMSlave
with HasInterruptBus { with HasInterruptBus {
@ -37,10 +37,10 @@ class GroundTestCoreplex(implicit p: Parameters) extends BaseCoreplex
val pbusRAM = LazyModule(new TLRAM(AddressSet(testRamAddr, 0xffff), true, false, pbus.beatBytes)) val pbusRAM = LazyModule(new TLRAM(AddressSet(testRamAddr, 0xffff), true, false, pbus.beatBytes))
pbusRAM.node := pbus.toVariableWidthSlaves pbusRAM.node := pbus.toVariableWidthSlaves
override lazy val module = new GroundTestCoreplexModule(this) override lazy val module = new GroundTestSubsystemModule(this)
} }
class GroundTestCoreplexModule[+L <: GroundTestCoreplex](_outer: L) extends BaseCoreplexModule(_outer) class GroundTestSubsystemModule[+L <: GroundTestSubsystem](_outer: L) extends BaseSubsystemModule(_outer)
with HasMasterAXI4MemPortModuleImp { with HasMasterAXI4MemPortModuleImp {
val success = IO(Bool(OUTPUT)) val success = IO(Bool(OUTPUT))

View File

@ -9,7 +9,7 @@ import freechips.rocketchip.diplomacy.LazyModule
class TestHarness(implicit p: Parameters) extends Module { class TestHarness(implicit p: Parameters) extends Module {
val io = new Bundle { val success = Bool(OUTPUT) } val io = new Bundle { val success = Bool(OUTPUT) }
val dut = Module(LazyModule(new GroundTestCoreplex).module) val dut = Module(LazyModule(new GroundTestSubsystem).module)
io.success := dut.success io.success := dut.success
dut.connectSimAXIMem() dut.connectSimAXIMem()
} }

View File

@ -6,7 +6,7 @@ package freechips.rocketchip.groundtest
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.interrupts._ import freechips.rocketchip.interrupts._
import freechips.rocketchip.rocket.{DCache, RocketCoreParams} import freechips.rocketchip.rocket.{DCache, RocketCoreParams}
import freechips.rocketchip.tile._ import freechips.rocketchip.tile._

View File

@ -6,7 +6,7 @@ package freechips.rocketchip.rocket
import Chisel._ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import freechips.rocketchip.config.Parameters import freechips.rocketchip.config.Parameters
import freechips.rocketchip.coreplex.CacheBlockBytes import freechips.rocketchip.subsystem.CacheBlockBytes
import freechips.rocketchip.tile.HasCoreParameters import freechips.rocketchip.tile.HasCoreParameters
import freechips.rocketchip.util._ import freechips.rocketchip.util._

View File

@ -5,7 +5,7 @@ package freechips.rocketchip.rocket
import Chisel._ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import freechips.rocketchip.config.Parameters import freechips.rocketchip.config.Parameters
import freechips.rocketchip.coreplex.{RocketTilesKey} import freechips.rocketchip.subsystem.{RocketTilesKey}
import freechips.rocketchip.diplomacy.{AddressSet, RegionType} import freechips.rocketchip.diplomacy.{AddressSet, RegionType}
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._

View File

@ -7,7 +7,7 @@ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import chisel3.core.withReset import chisel3.core.withReset
import freechips.rocketchip.config._ import freechips.rocketchip.config._
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.tile._ import freechips.rocketchip.tile._

View File

@ -6,7 +6,7 @@ package freechips.rocketchip.rocket
import Chisel._ import Chisel._
import chisel3.experimental.dontTouch import chisel3.experimental.dontTouch
import freechips.rocketchip.config.{Parameters, Field} import freechips.rocketchip.config.{Parameters, Field}
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tile._ import freechips.rocketchip.tile._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._

View File

@ -6,7 +6,7 @@ package freechips.rocketchip.rocket
import Chisel._ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import freechips.rocketchip.config.Parameters import freechips.rocketchip.config.Parameters
import freechips.rocketchip.coreplex.RocketTilesKey import freechips.rocketchip.subsystem.RocketTilesKey
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.tile._ import freechips.rocketchip.tile._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._

View File

@ -6,7 +6,7 @@ package freechips.rocketchip.rocket
import Chisel._ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import freechips.rocketchip.config.Parameters import freechips.rocketchip.config.Parameters
import freechips.rocketchip.coreplex.CacheBlockBytes import freechips.rocketchip.subsystem.CacheBlockBytes
import freechips.rocketchip.tile._ import freechips.rocketchip.tile._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._

View File

@ -7,7 +7,7 @@ import Chisel._
import Chisel.ImplicitConversions._ import Chisel.ImplicitConversions._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}
import freechips.rocketchip.coreplex.CacheBlockBytes import freechips.rocketchip.subsystem.CacheBlockBytes
import freechips.rocketchip.diplomacy.RegionType import freechips.rocketchip.diplomacy.RegionType
import freechips.rocketchip.tile.{XLen, CoreModule, CoreBundle} import freechips.rocketchip.tile.{XLen, CoreModule, CoreBundle}
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config.Parameters import freechips.rocketchip.config.Parameters
@ -9,14 +9,14 @@ import freechips.rocketchip.tilelink._
import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.devices.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
/** BareCoreplex is the root class for creating a coreplex sub-system */ /** BareSubsystem is the root class for creating a subsystem */
abstract class BareCoreplex(implicit p: Parameters) extends LazyModule with BindingScope { abstract class BareSubsystem(implicit p: Parameters) extends LazyModule with BindingScope {
lazy val dts = DTS(bindingTree) lazy val dts = DTS(bindingTree)
lazy val dtb = DTB(dts) lazy val dtb = DTB(dts)
lazy val json = JSON(bindingTree) lazy val json = JSON(bindingTree)
} }
abstract class BareCoreplexModule[+L <: BareCoreplex](_outer: L) extends LazyModuleImp(_outer) { abstract class BareSubsystemModule[+L <: BareSubsystem](_outer: L) extends LazyModuleImp(_outer) {
val outer = _outer val outer = _outer
ElaborationArtefacts.add("graphml", outer.graphML) ElaborationArtefacts.add("graphml", outer.graphML)
ElaborationArtefacts.add("dts", outer.dts) ElaborationArtefacts.add("dts", outer.dts)
@ -25,13 +25,13 @@ abstract class BareCoreplexModule[+L <: BareCoreplex](_outer: L) extends LazyMod
println(outer.dts) println(outer.dts)
} }
/** Base Coreplex class with no peripheral devices or ports added */ /** Base Subsystem class with no peripheral devices or ports added */
abstract class BaseCoreplex(implicit p: Parameters) extends BareCoreplex abstract class BaseSubsystem(implicit p: Parameters) extends BareSubsystem
with HasInterruptBus with HasInterruptBus
with HasSystemBus with HasSystemBus
with HasPeripheryBus with HasPeripheryBus
with HasMemoryBus { with HasMemoryBus {
override val module: BaseCoreplexModule[BaseCoreplex] override val module: BaseSubsystemModule[BaseSubsystem]
// Make topManagers an Option[] so as to avoid LM name reflection evaluating it... // Make topManagers an Option[] so as to avoid LM name reflection evaluating it...
lazy val topManagers = Some(ManagerUnification(sharedMemoryTLEdge.manager.managers)) lazy val topManagers = Some(ManagerUnification(sharedMemoryTLEdge.manager.managers))
@ -59,7 +59,7 @@ abstract class BaseCoreplex(implicit p: Parameters) extends BareCoreplex
} }
} }
abstract class BaseCoreplexModule[+L <: BaseCoreplex](_outer: L) extends BareCoreplexModule(_outer) { abstract class BaseSubsystemModule[+L <: BaseSubsystem](_outer: L) extends BareSubsystemModule(_outer) {
println("Generated Address Map") println("Generated Address Map")
private val aw = (outer.sharedMemoryTLEdge.bundle.addressBits-1)/4 + 1 private val aw = (outer.sharedMemoryTLEdge.bundle.addressBits-1)/4 + 1
private val fmt = s"\t%${aw}x - %${aw}x %c%c%c%c%c %s" private val fmt = s"\t%${aw}x - %${aw}x %c%c%c%c%c %s"

View File

@ -1,7 +1,7 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
// See LICENSE.Berkeley for license details. // See LICENSE.Berkeley for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
@ -13,7 +13,7 @@ import freechips.rocketchip.tile._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
class BaseCoreplexConfig extends Config ((site, here, up) => { class BaseSubsystemConfig extends Config ((site, here, up) => {
// Tile parameters // Tile parameters
case PgLevels => if (site(XLen) == 64) 3 /* Sv39 */ else 2 /* Sv32 */ case PgLevels => if (site(XLen) == 64) 3 /* Sv39 */ else 2 /* Sv32 */
case XLen => 64 // Applies to all cores case XLen => 64 // Applies to all cores
@ -155,8 +155,8 @@ class WithIncoherentTiles extends Config((site, here, up) => {
case RocketCrossingKey => up(RocketCrossingKey, site) map { r => case RocketCrossingKey => up(RocketCrossingKey, site) map { r =>
r.copy(master = r.master.copy(cork = Some(true))) r.copy(master = r.master.copy(cork = Some(true)))
} }
case BankedL2Key => up(BankedL2Key, site).copy(coherenceManager = { coreplex => case BankedL2Key => up(BankedL2Key, site).copy(coherenceManager = { subsystem =>
val ww = LazyModule(new TLWidthWidget(coreplex.sbusBeatBytes)(coreplex.p)) val ww = LazyModule(new TLWidthWidget(subsystem.sbusBeatBytes)(subsystem.p))
(ww.node, ww.node, () => None) (ww.node, ww.node, () => None)
}) })
}) })

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
@ -11,16 +11,16 @@ import freechips.rocketchip.interrupts._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
/** Enumerates the three types of clock crossing between tiles and system bus */ /** Enumerates the three types of clock crossing between tiles and system bus */
sealed trait CoreplexClockCrossing sealed trait SubsystemClockCrossing
{ {
def sameClock = this match { def sameClock = this match {
case _: SynchronousCrossing => true case _: SynchronousCrossing => true
case _ => false case _ => false
} }
} }
case class SynchronousCrossing(params: BufferParams = BufferParams.default) extends CoreplexClockCrossing case class SynchronousCrossing(params: BufferParams = BufferParams.default) extends SubsystemClockCrossing
case class RationalCrossing(direction: RationalDirection = FastToSlow) extends CoreplexClockCrossing case class RationalCrossing(direction: RationalDirection = FastToSlow) extends SubsystemClockCrossing
case class AsynchronousCrossing(depth: Int, sync: Int = 3) extends CoreplexClockCrossing case class AsynchronousCrossing(depth: Int, sync: Int = 3) extends SubsystemClockCrossing
private case class CrossingCheck(out: Boolean, source: BaseNode, sink: BaseNode) private case class CrossingCheck(out: Boolean, source: BaseNode, sink: BaseNode)
@ -77,13 +77,13 @@ trait HasCrossingMethods extends LazyModule with LazyScope
def crossTLRationalIn (direction: RationalDirection)(implicit p: Parameters): TLNode = crossTLRationalInOut(false)(direction) def crossTLRationalIn (direction: RationalDirection)(implicit p: Parameters): TLNode = crossTLRationalInOut(false)(direction)
def crossTLRationalOut(direction: RationalDirection)(implicit p: Parameters): TLNode = crossTLRationalInOut(true )(direction) def crossTLRationalOut(direction: RationalDirection)(implicit p: Parameters): TLNode = crossTLRationalInOut(true )(direction)
def crossTLIn(arg: CoreplexClockCrossing)(implicit p: Parameters): TLNode = arg match { def crossTLIn(arg: SubsystemClockCrossing)(implicit p: Parameters): TLNode = arg match {
case x: SynchronousCrossing => crossTLSyncIn(x.params) case x: SynchronousCrossing => crossTLSyncIn(x.params)
case x: AsynchronousCrossing => crossTLAsyncIn(x.depth, x.sync) case x: AsynchronousCrossing => crossTLAsyncIn(x.depth, x.sync)
case x: RationalCrossing => crossTLRationalIn(x.direction) case x: RationalCrossing => crossTLRationalIn(x.direction)
} }
def crossTLOut(arg: CoreplexClockCrossing)(implicit p: Parameters): TLNode = arg match { def crossTLOut(arg: SubsystemClockCrossing)(implicit p: Parameters): TLNode = arg match {
case x: SynchronousCrossing => crossTLSyncOut(x.params) case x: SynchronousCrossing => crossTLSyncOut(x.params)
case x: AsynchronousCrossing => crossTLAsyncOut(x.depth, x.sync) case x: AsynchronousCrossing => crossTLAsyncOut(x.depth, x.sync)
case x: RationalCrossing => crossTLRationalOut(x.direction) case x: RationalCrossing => crossTLRationalOut(x.direction)
@ -112,13 +112,13 @@ trait HasCrossingMethods extends LazyModule with LazyScope
def crossAXI4AsyncIn (depth: Int = 8, sync: Int = 3)(implicit p: Parameters): AXI4Node = crossAXI4AsyncInOut(false)(depth, sync) def crossAXI4AsyncIn (depth: Int = 8, sync: Int = 3)(implicit p: Parameters): AXI4Node = crossAXI4AsyncInOut(false)(depth, sync)
def crossAXI4AsyncOut(depth: Int = 8, sync: Int = 3)(implicit p: Parameters): AXI4Node = crossAXI4AsyncInOut(true )(depth, sync) def crossAXI4AsyncOut(depth: Int = 8, sync: Int = 3)(implicit p: Parameters): AXI4Node = crossAXI4AsyncInOut(true )(depth, sync)
def crossAXI4In(arg: CoreplexClockCrossing)(implicit p: Parameters): AXI4Node = arg match { def crossAXI4In(arg: SubsystemClockCrossing)(implicit p: Parameters): AXI4Node = arg match {
case x: SynchronousCrossing => crossAXI4SyncIn(x.params) case x: SynchronousCrossing => crossAXI4SyncIn(x.params)
case x: AsynchronousCrossing => crossAXI4AsyncIn(x.depth, x.sync) case x: AsynchronousCrossing => crossAXI4AsyncIn(x.depth, x.sync)
case x: RationalCrossing => throw new IllegalArgumentException("AXI4 Rational crossing unimplemented") case x: RationalCrossing => throw new IllegalArgumentException("AXI4 Rational crossing unimplemented")
} }
def crossAXI4Out(arg: CoreplexClockCrossing)(implicit p: Parameters): AXI4Node = arg match { def crossAXI4Out(arg: SubsystemClockCrossing)(implicit p: Parameters): AXI4Node = arg match {
case x: SynchronousCrossing => crossAXI4SyncOut(x.params) case x: SynchronousCrossing => crossAXI4SyncOut(x.params)
case x: AsynchronousCrossing => crossAXI4AsyncOut(x.depth, x.sync) case x: AsynchronousCrossing => crossAXI4AsyncOut(x.depth, x.sync)
case x: RationalCrossing => throw new IllegalArgumentException("AXI4 Rational crossing unimplemented") case x: RationalCrossing => throw new IllegalArgumentException("AXI4 Rational crossing unimplemented")
@ -163,26 +163,26 @@ trait HasCrossingMethods extends LazyModule with LazyScope
def crossIntRationalIn (alreadyRegistered: Boolean = false)(implicit p: Parameters): IntNode = crossIntRationalInOut(false)(alreadyRegistered) def crossIntRationalIn (alreadyRegistered: Boolean = false)(implicit p: Parameters): IntNode = crossIntRationalInOut(false)(alreadyRegistered)
def crossIntRationalOut(alreadyRegistered: Boolean = false)(implicit p: Parameters): IntNode = crossIntRationalInOut(true )(alreadyRegistered) def crossIntRationalOut(alreadyRegistered: Boolean = false)(implicit p: Parameters): IntNode = crossIntRationalInOut(true )(alreadyRegistered)
def crossIntIn(arg: CoreplexClockCrossing, alreadyRegistered: Boolean)(implicit p: Parameters): IntNode = arg match { def crossIntIn(arg: SubsystemClockCrossing, alreadyRegistered: Boolean)(implicit p: Parameters): IntNode = arg match {
case x: SynchronousCrossing => crossIntSyncIn(alreadyRegistered) case x: SynchronousCrossing => crossIntSyncIn(alreadyRegistered)
case x: AsynchronousCrossing => crossIntAsyncIn(x.sync, alreadyRegistered) case x: AsynchronousCrossing => crossIntAsyncIn(x.sync, alreadyRegistered)
case x: RationalCrossing => crossIntRationalIn(alreadyRegistered) case x: RationalCrossing => crossIntRationalIn(alreadyRegistered)
} }
def crossIntOut(arg: CoreplexClockCrossing, alreadyRegistered: Boolean)(implicit p: Parameters): IntNode = arg match { def crossIntOut(arg: SubsystemClockCrossing, alreadyRegistered: Boolean)(implicit p: Parameters): IntNode = arg match {
case x: SynchronousCrossing => crossIntSyncOut(alreadyRegistered) case x: SynchronousCrossing => crossIntSyncOut(alreadyRegistered)
case x: AsynchronousCrossing => crossIntAsyncOut(x.sync, alreadyRegistered) case x: AsynchronousCrossing => crossIntAsyncOut(x.sync, alreadyRegistered)
case x: RationalCrossing => crossIntRationalOut(alreadyRegistered) case x: RationalCrossing => crossIntRationalOut(alreadyRegistered)
} }
def crossIntIn (arg: CoreplexClockCrossing)(implicit p: Parameters): IntNode = crossIntIn (arg, false) def crossIntIn (arg: SubsystemClockCrossing)(implicit p: Parameters): IntNode = crossIntIn (arg, false)
def crossIntOut(arg: CoreplexClockCrossing)(implicit p: Parameters): IntNode = crossIntOut(arg, false) def crossIntOut(arg: SubsystemClockCrossing)(implicit p: Parameters): IntNode = crossIntOut(arg, false)
} }
trait HasCrossing extends HasCrossingMethods trait HasCrossing extends HasCrossingMethods
{ {
this: LazyModule => this: LazyModule =>
val crossing: CoreplexClockCrossing val crossing: SubsystemClockCrossing
def crossTLIn (implicit p: Parameters): TLNode = crossTLIn (crossing) def crossTLIn (implicit p: Parameters): TLNode = crossTLIn (crossing)
def crossTLOut (implicit p: Parameters): TLNode = crossTLOut (crossing) def crossTLOut (implicit p: Parameters): TLNode = crossTLOut (crossing)
@ -195,4 +195,4 @@ trait HasCrossing extends HasCrossingMethods
def crossIntOut(alreadyRegistered: Boolean)(implicit p: Parameters): IntNode = crossIntOut(crossing, alreadyRegistered) def crossIntOut(alreadyRegistered: Boolean)(implicit p: Parameters): IntNode = crossIntOut(crossing, alreadyRegistered)
} }
class CrossingWrapper(val crossing: CoreplexClockCrossing)(implicit p: Parameters) extends SimpleLazyModule with HasCrossing class CrossingWrapper(val crossing: SubsystemClockCrossing)(implicit p: Parameters) extends SimpleLazyModule with HasCrossing

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import chisel3.experimental.dontTouch import chisel3.experimental.dontTouch

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
@ -22,11 +22,11 @@ case object BroadcastKey extends Field(BroadcastParams())
case class BankedL2Params( case class BankedL2Params(
nMemoryChannels: Int = 1, nMemoryChannels: Int = 1,
nBanksPerChannel: Int = 1, nBanksPerChannel: Int = 1,
coherenceManager: HasMemoryBus => (TLInwardNode, TLOutwardNode, () => Option[Bool]) = { coreplex => coherenceManager: HasMemoryBus => (TLInwardNode, TLOutwardNode, () => Option[Bool]) = { subsystem =>
implicit val p = coreplex.p implicit val p = subsystem.p
val BroadcastParams(nTrackers, bufferless) = p(BroadcastKey) val BroadcastParams(nTrackers, bufferless) = p(BroadcastKey)
val bh = LazyModule(new TLBroadcast(coreplex.memBusBlockBytes, nTrackers, bufferless)) val bh = LazyModule(new TLBroadcast(subsystem.memBusBlockBytes, nTrackers, bufferless))
val ww = LazyModule(new TLWidthWidget(coreplex.sbusBeatBytes)) val ww = LazyModule(new TLWidthWidget(subsystem.sbusBeatBytes))
ww.node :*= bh.node ww.node :*= bh.node
(bh.node, ww.node, () => None) (bh.node, ww.node, () => None)
}) { }) {

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}

View File

@ -1,13 +1,13 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.diplomacy.{LazyModuleImp, DTSTimebase} import freechips.rocketchip.diplomacy.{LazyModuleImp, DTSTimebase}
import freechips.rocketchip.devices.tilelink.HasPeripheryClint import freechips.rocketchip.devices.tilelink.HasPeripheryCLINT
trait HasRTCModuleImp extends LazyModuleImp { trait HasRTCModuleImp extends LazyModuleImp {
val outer: HasPeripheryClint val outer: HasPeripheryCLINT
private val pbusFreq = outer.p(PeripheryBusKey).frequency private val pbusFreq = outer.p(PeripheryBusKey).frequency
private val rtcFreq = outer.p(DTSTimebase) private val rtcFreq = outer.p(DTSTimebase)
private val internalPeriod: BigInt = pbusFreq / rtcFreq private val internalPeriod: BigInt = pbusFreq / rtcFreq

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import chisel3.internal.sourceinfo.SourceInfo import chisel3.internal.sourceinfo.SourceInfo
@ -18,7 +18,7 @@ case class TileMasterPortParams(
addBuffers: Int = 0, addBuffers: Int = 0,
cork: Option[Boolean] = None) { cork: Option[Boolean] = None) {
def adapt(coreplex: HasPeripheryBus) def adapt(subsystem: HasPeripheryBus)
(masterNode: TLOutwardNode) (masterNode: TLOutwardNode)
(implicit p: Parameters, sourceInfo: SourceInfo): TLOutwardNode = { (implicit p: Parameters, sourceInfo: SourceInfo): TLOutwardNode = {
val tile_master_cork = cork.map(u => (LazyModule(new TLCacheCork(unsafe = u)))) val tile_master_cork = cork.map(u => (LazyModule(new TLCacheCork(unsafe = u))))
@ -33,22 +33,22 @@ case class TileSlavePortParams(
addBuffers: Int = 0, addBuffers: Int = 0,
blockerCtrlAddr: Option[BigInt] = None) { blockerCtrlAddr: Option[BigInt] = None) {
def adapt(coreplex: HasPeripheryBus) def adapt(subsystem: HasPeripheryBus)
(slaveNode: TLInwardNode) (slaveNode: TLInwardNode)
(implicit p: Parameters, sourceInfo: SourceInfo): TLInwardNode = { (implicit p: Parameters, sourceInfo: SourceInfo): TLInwardNode = {
val tile_slave_blocker = val tile_slave_blocker =
blockerCtrlAddr blockerCtrlAddr
.map(BasicBusBlockerParams(_, coreplex.pbus.beatBytes, coreplex.sbus.beatBytes)) .map(BasicBusBlockerParams(_, subsystem.pbus.beatBytes, subsystem.sbus.beatBytes))
.map(bp => LazyModule(new BasicBusBlocker(bp))) .map(bp => LazyModule(new BasicBusBlocker(bp)))
tile_slave_blocker.foreach { _.controlNode := coreplex.pbus.toVariableWidthSlaves } tile_slave_blocker.foreach { _.controlNode := subsystem.pbus.toVariableWidthSlaves }
(Seq() ++ tile_slave_blocker.map(_.node) ++ TLBuffer.chain(addBuffers)) (Seq() ++ tile_slave_blocker.map(_.node) ++ TLBuffer.chain(addBuffers))
.foldLeft(slaveNode)(_ :*= _) .foldLeft(slaveNode)(_ :*= _)
} }
} }
case class RocketCrossingParams( case class RocketCrossingParams(
crossingType: CoreplexClockCrossing = SynchronousCrossing(), crossingType: SubsystemClockCrossing = SynchronousCrossing(),
master: TileMasterPortParams = TileMasterPortParams(), master: TileMasterPortParams = TileMasterPortParams(),
slave: TileSlavePortParams = TileSlavePortParams()) { slave: TileSlavePortParams = TileSlavePortParams()) {
def knownRatio: Option[Int] = crossingType match { def knownRatio: Option[Int] = crossingType match {
@ -63,7 +63,7 @@ case object RocketCrossingKey extends Field[Seq[RocketCrossingParams]](List(Rock
trait HasRocketTiles extends HasTiles trait HasRocketTiles extends HasTiles
with HasPeripheryBus with HasPeripheryBus
with HasPeripheryPLIC with HasPeripheryPLIC
with HasPeripheryClint with HasPeripheryCLINT
with HasPeripheryDebug { with HasPeripheryDebug {
val module: HasRocketTilesModuleImp val module: HasRocketTilesModuleImp
@ -163,13 +163,13 @@ trait HasRocketTilesModuleImp extends HasTilesModuleImp
val outer: HasRocketTiles val outer: HasRocketTiles
} }
class RocketCoreplex(implicit p: Parameters) extends BaseCoreplex class RocketSubsystem(implicit p: Parameters) extends BaseSubsystem
with HasRocketTiles { with HasRocketTiles {
val tiles = rocketTiles val tiles = rocketTiles
override lazy val module = new RocketCoreplexModule(this) override lazy val module = new RocketSubsystemModule(this)
} }
class RocketCoreplexModule[+L <: RocketCoreplex](_outer: L) extends BaseCoreplexModule(_outer) class RocketSubsystemModule[+L <: RocketSubsystem](_outer: L) extends BaseSubsystemModule(_outer)
with HasRocketTilesModuleImp { with HasRocketTilesModuleImp {
tile_inputs.zip(outer.hartIdList).foreach { case(wire, i) => tile_inputs.zip(outer.hartIdList).foreach { case(wire, i) =>
wire.clock := clock wire.clock := clock

View File

@ -1,6 +1,6 @@
// See LICENSE.SiFive for license details. // See LICENSE.SiFive for license details.
package freechips.rocketchip.coreplex package freechips.rocketchip.subsystem
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Field, Parameters} import freechips.rocketchip.config.{Field, Parameters}

View File

@ -5,13 +5,13 @@ package freechips.rocketchip.system
import Chisel._ import Chisel._
import freechips.rocketchip.config.Config import freechips.rocketchip.config.Config
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.devices.debug.{IncludeJtagDTM, JtagDTMKey} import freechips.rocketchip.devices.debug.{IncludeJtagDTM, JtagDTMKey}
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
class WithJtagDTMSystem extends freechips.rocketchip.coreplex.WithJtagDTM class WithJtagDTMSystem extends freechips.rocketchip.subsystem.WithJtagDTM
class BaseConfig extends Config(new BaseCoreplexConfig().alter((site,here,up) => { class BaseConfig extends Config(new BaseSubsystemConfig().alter((site,here,up) => {
// DTS descriptive parameters // DTS descriptive parameters
case DTSModel => "freechips,rocketchip-unknown" case DTSModel => "freechips,rocketchip-unknown"
case DTSCompat => Nil case DTSCompat => Nil

View File

@ -4,12 +4,12 @@ package freechips.rocketchip.system
import Chisel._ import Chisel._
import freechips.rocketchip.config.Parameters import freechips.rocketchip.config.Parameters
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.devices.tilelink._
import freechips.rocketchip.util.DontTouch import freechips.rocketchip.util.DontTouch
/** Example Top with periphery devices and ports, and a Rocket coreplex */ /** Example Top with periphery devices and ports, and a Rocket subsystem */
class ExampleRocketSystem(implicit p: Parameters) extends RocketCoreplex class ExampleRocketSystem(implicit p: Parameters) extends RocketSubsystem
with HasAsyncExtInterrupts with HasAsyncExtInterrupts
with HasMasterAXI4MemPort with HasMasterAXI4MemPort
with HasMasterAXI4MMIOPort with HasMasterAXI4MMIOPort
@ -19,7 +19,7 @@ class ExampleRocketSystem(implicit p: Parameters) extends RocketCoreplex
override lazy val module = new ExampleRocketSystemModule(this) override lazy val module = new ExampleRocketSystemModule(this)
} }
class ExampleRocketSystemModule[+L <: ExampleRocketSystem](_outer: L) extends RocketCoreplexModule(_outer) class ExampleRocketSystemModule[+L <: ExampleRocketSystem](_outer: L) extends RocketSubsystemModule(_outer)
with HasRTCModuleImp with HasRTCModuleImp
with HasExtInterruptsModuleImp with HasExtInterruptsModuleImp
with HasMasterAXI4MemPortModuleImp with HasMasterAXI4MemPortModuleImp

View File

@ -2,13 +2,13 @@
package freechips.rocketchip.system package freechips.rocketchip.system
import freechips.rocketchip.coreplex.RocketTilesKey import freechips.rocketchip.subsystem.RocketTilesKey
import freechips.rocketchip.tile.XLen import freechips.rocketchip.tile.XLen
import freechips.rocketchip.util.GeneratorApp import freechips.rocketchip.util.GeneratorApp
import scala.collection.mutable.LinkedHashSet import scala.collection.mutable.LinkedHashSet
/** A Generator for platforms containing Rocket Coreplexes */ /** A Generator for platforms containing Rocket Subsystemes */
object Generator extends GeneratorApp { object Generator extends GeneratorApp {
val rv64RegrTestNames = LinkedHashSet( val rv64RegrTestNames = LinkedHashSet(
@ -50,7 +50,7 @@ object Generator extends GeneratorApp {
override def addTestSuites { override def addTestSuites {
import DefaultTestSuites._ import DefaultTestSuites._
val xlen = params(XLen) val xlen = params(XLen)
// TODO: for now only generate tests for the first core in the first coreplex // TODO: for now only generate tests for the first core in the first subsystem
val tileParams = params(RocketTilesKey).head val tileParams = params(RocketTilesKey).head
val coreParams = tileParams.core val coreParams = tileParams.core
val vm = coreParams.useVM val vm = coreParams.useVM

View File

@ -5,7 +5,7 @@ package freechips.rocketchip.tile
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.interrupts._ import freechips.rocketchip.interrupts._
import freechips.rocketchip.rocket._ import freechips.rocketchip.rocket._
@ -122,7 +122,7 @@ trait HasTileParameters {
} }
/** Base class for all Tiles that use TileLink */ /** Base class for all Tiles that use TileLink */
abstract class BaseTile(tileParams: TileParams, val crossing: CoreplexClockCrossing) abstract class BaseTile(tileParams: TileParams, val crossing: SubsystemClockCrossing)
(implicit p: Parameters) extends LazyModule with HasTileParameters with HasCrossing (implicit p: Parameters) extends LazyModule with HasTileParameters with HasCrossing
{ {
def module: BaseTileModuleImp[BaseTile] def module: BaseTileModuleImp[BaseTile]

View File

@ -18,7 +18,7 @@ class TileInterrupts(implicit p: Parameters) extends CoreBundle()(p) {
val lip = Vec(coreParams.nLocalInterrupts, Bool()) val lip = Vec(coreParams.nLocalInterrupts, Bool())
} }
// Use diplomatic interrupts to external interrupts from the coreplex into the tile // Use diplomatic interrupts to external interrupts from the subsystem into the tile
trait HasExternalInterrupts { this: BaseTile => trait HasExternalInterrupts { this: BaseTile =>
val intInwardNode = intXbar.intnode val intInwardNode = intXbar.intnode
@ -50,7 +50,7 @@ trait HasExternalInterrupts { this: BaseTile =>
// TODO: the order of the following two functions must match, and // TODO: the order of the following two functions must match, and
// also match the order which things are connected to the // also match the order which things are connected to the
// per-tile crossbar in coreplex.HasRocketTiles // per-tile crossbar in subsystem.HasRocketTiles
// debug, msip, mtip, meip, seip, lip offsets in CSRs // debug, msip, mtip, meip, seip, lip offsets in CSRs
def csrIntMap: List[Int] = { def csrIntMap: List[Int] = {

View File

@ -5,7 +5,7 @@ package freechips.rocketchip.tile
import Chisel._ import Chisel._
import freechips.rocketchip.config.{Parameters, Field} import freechips.rocketchip.config.{Parameters, Field}
import freechips.rocketchip.coreplex.CacheBlockBytes import freechips.rocketchip.subsystem.CacheBlockBytes
import freechips.rocketchip.tilelink.ClientMetadata import freechips.rocketchip.tilelink.ClientMetadata
import freechips.rocketchip.util._ import freechips.rocketchip.util._

View File

@ -6,7 +6,7 @@ package freechips.rocketchip.tile
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
import freechips.rocketchip.coreplex._ import freechips.rocketchip.subsystem._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.rocket._ import freechips.rocketchip.rocket._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._

View File

@ -5,7 +5,7 @@ package freechips.rocketchip.tile
import Chisel._ import Chisel._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
import freechips.rocketchip.coreplex.CoreplexClockCrossing import freechips.rocketchip.subsystem.SubsystemClockCrossing
import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.devices.tilelink._
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.interrupts._ import freechips.rocketchip.interrupts._
@ -33,7 +33,7 @@ case class RocketTileParams(
class RocketTile( class RocketTile(
val rocketParams: RocketTileParams, val rocketParams: RocketTileParams,
crossing: CoreplexClockCrossing) crossing: SubsystemClockCrossing)
(implicit p: Parameters) extends BaseTile(rocketParams, crossing)(p) (implicit p: Parameters) extends BaseTile(rocketParams, crossing)(p)
with HasExternalInterrupts with HasExternalInterrupts
with HasLazyRoCC // implies CanHaveSharedFPU with CanHavePTW with HasHellaCache with HasLazyRoCC // implies CanHaveSharedFPU with CanHavePTW with HasHellaCache

View File

@ -7,7 +7,7 @@ import freechips.rocketchip.config.Parameters
import freechips.rocketchip.diplomacy._ import freechips.rocketchip.diplomacy._
import freechips.rocketchip.util._ import freechips.rocketchip.util._
import freechips.rocketchip.util.property._ import freechips.rocketchip.util.property._
import freechips.rocketchip.coreplex.{CrossingWrapper, AsynchronousCrossing} import freechips.rocketchip.subsystem.{CrossingWrapper, AsynchronousCrossing}
class TLAsyncCrossingSource(sync: Int = 3)(implicit p: Parameters) extends LazyModule class TLAsyncCrossingSource(sync: Int = 3)(implicit p: Parameters) extends LazyModule
{ {

View File

@ -7,7 +7,7 @@ import freechips.rocketchip.amba.ahb._
import freechips.rocketchip.amba.apb._ import freechips.rocketchip.amba.apb._
import freechips.rocketchip.amba.axi4._ import freechips.rocketchip.amba.axi4._
import freechips.rocketchip.config._ import freechips.rocketchip.config._
import freechips.rocketchip.coreplex.{BaseCoreplexConfig} import freechips.rocketchip.subsystem.{BaseSubsystemConfig}
import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.devices.tilelink._
import freechips.rocketchip.tilelink._ import freechips.rocketchip.tilelink._
@ -79,7 +79,7 @@ class WithTLXbarUnitTests extends Config((site, here, up) => {
Module(new TLMulticlientXbarTest(4,4, txns=2*txns, timeout=timeout)) ) } Module(new TLMulticlientXbarTest(4,4, txns=2*txns, timeout=timeout)) ) }
}) })
class AMBAUnitTestConfig extends Config(new WithAMBAUnitTests ++ new WithTestDuration(10) ++ new BaseCoreplexConfig) class AMBAUnitTestConfig extends Config(new WithAMBAUnitTests ++ new WithTestDuration(10) ++ new BaseSubsystemConfig)
class TLSimpleUnitTestConfig extends Config(new WithTLSimpleUnitTests ++ new WithTestDuration(10) ++ new BaseCoreplexConfig) class TLSimpleUnitTestConfig extends Config(new WithTLSimpleUnitTests ++ new WithTestDuration(10) ++ new BaseSubsystemConfig)
class TLWidthUnitTestConfig extends Config(new WithTLWidthUnitTests ++ new WithTestDuration(10) ++ new BaseCoreplexConfig) class TLWidthUnitTestConfig extends Config(new WithTLWidthUnitTests ++ new WithTestDuration(10) ++ new BaseSubsystemConfig)
class TLXbarUnitTestConfig extends Config(new WithTLXbarUnitTests ++ new WithTestDuration(10) ++ new BaseCoreplexConfig) class TLXbarUnitTestConfig extends Config(new WithTLXbarUnitTests ++ new WithTestDuration(10) ++ new BaseSubsystemConfig)

View File

@ -108,7 +108,7 @@ trait GeneratorApp extends App with HasGeneratorUtilities {
/** Output software test Makefrags, which provide targets for integration testing. */ /** Output software test Makefrags, which provide targets for integration testing. */
def generateTestSuiteMakefrags { def generateTestSuiteMakefrags {
addTestSuites addTestSuites
writeOutputFile(td, s"$longName.d", TestGeneration.generateMakefrag) // Coreplex-specific test suites writeOutputFile(td, s"$longName.d", TestGeneration.generateMakefrag) // Subsystem-specific test suites
} }
def addTestSuites { def addTestSuites {