Add rocket-chip cluster support in WithRadianceCores

This commit is contained in:
Hansung Kim
2024-02-29 17:37:54 -08:00
parent 55d00d25bb
commit c05897abfc

View File

@@ -13,10 +13,12 @@ import radiance.memory._
class WithRadianceCores( class WithRadianceCores(
n: Int, n: Int,
location: HierarchicalLocation,
crossing: RocketCrossingParams,
useVxCache: Boolean useVxCache: Boolean
) extends Config((site, _, up) => { ) extends Config((site, _, up) => {
case TilesLocated(InSubsystem) => { case TilesLocated(`location`) => {
val prev = up(TilesLocated(InSubsystem), site) val prev = up(TilesLocated(`location`), site)
val idOffset = prev.size val idOffset = prev.size
val vortex = RadianceTileParams( val vortex = RadianceTileParams(
core = VortexCoreParams(fpu = None), core = VortexCoreParams(fpu = None),
@@ -43,10 +45,19 @@ class WithRadianceCores(
blockBytes = site(CacheBlockBytes)))) blockBytes = site(CacheBlockBytes))))
List.tabulate(n)(i => RadianceTileAttachParams( List.tabulate(n)(i => RadianceTileAttachParams(
vortex.copy(tileId = i + idOffset), vortex.copy(tileId = i + idOffset),
RocketCrossingParams() crossing
)) ++ prev )) ++ prev
} }
}) }) {
def this(n: Int, location: HierarchicalLocation = InSubsystem, useVxCache: Boolean = false) = this(n, location, RocketCrossingParams(
master = HierarchicalElementMasterPortParams.locationDefault(location),
slave = HierarchicalElementSlavePortParams.locationDefault(location),
mmioBaseAddressPrefixWhere = location match {
case InSubsystem => CBUS
case InCluster(clusterId) => CCBUS(clusterId)
}
), useVxCache)
}
class WithFuzzerCores( class WithFuzzerCores(
n: Int, n: Int,