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