Set correct static tileId for core and Gemmini tiles

Otherwise, in multiple cluster configs, tiles can have duplicate global
tileId which results in Diplomacy connection errors for interrupt nodes
(among other things).
This commit is contained in:
Hansung Kim
2024-06-11 16:17:08 -07:00
parent a8e35b1f5a
commit a0bff40a87

View File

@@ -43,7 +43,7 @@ class WithRadianceCores(
) extends Config((site, _, up) => {
case TilesLocated(`location`) => {
val prev = up(TilesLocated(`location`))
val idOffset = prev.size
val idOffset = up(NumTiles)
val vortex = RadianceTileParams(
core = VortexCoreParams(fpu = None),
btb = None,
@@ -72,6 +72,7 @@ class WithRadianceCores(
crossing
)) ++ prev
}
case NumTiles => up(NumTiles) + n
}) {
def this(n: Int, location: HierarchicalLocation = InSubsystem, useVxCache: Boolean = false) = this(n, location, RocketCrossingParams(
master = HierarchicalElementMasterPortParams.locationDefault(location),
@@ -88,8 +89,9 @@ class WithRadianceGemmini(location: HierarchicalLocation,
dim: Int, accSizeInKB: Int, tileSize: Int) extends Config((site, _, up) => {
case TilesLocated(`location`) => {
val prev = up(TilesLocated(`location`))
val idOffset = prev.size
val idOffset = up(NumTiles)
if (idOffset == 0) {
// FIXME: this doesn't work for multiple clusters when idOffset may not be 0
println("******WARNING****** gemmini tile id is 0! radiance tiles in the same cluster needs to be before gemmini")
}
val smKey = site(RadianceSharedMemKey).get
@@ -124,6 +126,7 @@ class WithRadianceGemmini(location: HierarchicalLocation,
slaveAddress = smKey.address + smKey.size + 0x3000
))
}
case NumTiles => up(NumTiles) + 1
}) {
def this(location: HierarchicalLocation = InSubsystem, dim: Int, accSizeInKB: Int, tileSize: Int) =
this(location, RocketCrossingParams(
@@ -172,7 +175,7 @@ class WithFuzzerCores(
) extends Config((site, _, up) => {
case TilesLocated(InSubsystem) => {
val prev = up(TilesLocated(InSubsystem))
val idOffset = prev.size
val idOffset = up(NumTiles)
val fuzzer = FuzzerTileParams(
core = VortexCoreParams(fpu = None),
useVxCache = useVxCache)
@@ -181,6 +184,7 @@ class WithFuzzerCores(
RocketCrossingParams()
)) ++ prev
}
case NumTiles => up(NumTiles) + 1
})
class WithRadianceCluster(
@@ -288,7 +292,7 @@ class WithNCustomSmallRocketCores(
) extends Config((site, here, up) => {
case TilesLocated(InSubsystem) => {
val prev = up(TilesLocated(InSubsystem))
val idOffset = overrideIdOffset.getOrElse(prev.size)
val idOffset = up(NumTiles)
val med = RocketTileParams(
core = RocketCoreParams(fpu = None),
btb = None,
@@ -316,6 +320,7 @@ class WithNCustomSmallRocketCores(
crossing
)) ++ prev
}
case NumTiles => up(NumTiles) + n
})
class WithExtGPUMem(address: BigInt = BigInt("0x100000000", 16),