some fixes and cleanup to stateless bridge
This commit is contained in:
parent
c31c650def
commit
75347eed56
@ -48,9 +48,9 @@ CONFIGS=DefaultConfig DefaultL2Config DefaultBufferlessConfig RoccExampleConfig
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(SUITE),GroundtestSuite)
|
ifeq ($(SUITE),GroundtestSuite)
|
||||||
CONFIGS=MemtestConfig MemtestBufferlessConfig FancyMemtestConfig \
|
CONFIGS=MemtestConfig MemtestBufferlessConfig MemtestStatelessConfig FancyMemtestConfig \
|
||||||
BroadcastRegressionTestConfig BufferlessRegressionTestConfig CacheRegressionTestConfig \
|
BroadcastRegressionTestConfig BufferlessRegressionTestConfig CacheRegressionTestConfig \
|
||||||
ComparatorConfig ComparatorBufferlessConfig ComparatorL2Config \
|
ComparatorConfig ComparatorBufferlessConfig ComparatorL2Config ComparatorStatelessConfig \
|
||||||
UnitTestConfig
|
UnitTestConfig
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ class BaseConfig extends Config (
|
|||||||
dataBits = site(XLen))
|
dataBits = site(XLen))
|
||||||
case TLKey("L1toL2") =>
|
case TLKey("L1toL2") =>
|
||||||
TileLinkParameters(
|
TileLinkParameters(
|
||||||
coherencePolicy = (if (site(NTiles) == 1)
|
coherencePolicy = (if (site(NCachedTileLinkPorts) <= 1)
|
||||||
new MEICoherence(site(L2DirectoryRepresentation)) else
|
new MEICoherence(site(L2DirectoryRepresentation)) else
|
||||||
new MESICoherence(site(L2DirectoryRepresentation))),
|
new MESICoherence(site(L2DirectoryRepresentation))),
|
||||||
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels) + 1 /* MMIO */,
|
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels) + 1 /* MMIO */,
|
||||||
@ -381,12 +381,28 @@ class WithBufferlessBroadcastHub extends Config(
|
|||||||
case OuterTLId => "L2toMC" })))
|
case OuterTLId => "L2toMC" })))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WARNING!!! IGNORE AT YOUR OWN PERIL!!!
|
||||||
|
*
|
||||||
|
* There is a very restrictive set of conditions under which the stateless
|
||||||
|
* bridge will function properly. There can only be a single tile. This tile
|
||||||
|
* MUST use the blocking data cache (L1D_MSHRS == 0) and MUST NOT have an
|
||||||
|
* uncached channel capable of writes (i.e. a RoCC accelerator).
|
||||||
|
*
|
||||||
|
* This is because the stateless bridge CANNOT generate probes, so if your
|
||||||
|
* system depends on coherence between channels in any way,
|
||||||
|
* DO NOT use this configuration.
|
||||||
|
*/
|
||||||
class WithStatelessBridge extends Config (
|
class WithStatelessBridge extends Config (
|
||||||
(pname, site, here) => pname match {
|
topDefinitions = (pname, site, here) => pname match {
|
||||||
case BuildL2CoherenceManager => (id: Int, p: Parameters) =>
|
case BuildL2CoherenceManager => (id: Int, p: Parameters) =>
|
||||||
Module(new ManagerToClientStatelessBridge()(p.alterPartial({
|
Module(new ManagerToClientStatelessBridge()(p.alterPartial({
|
||||||
case InnerTLId => "L1toL2"
|
case InnerTLId => "L1toL2"
|
||||||
case OuterTLId => "L2toMC" })))
|
case OuterTLId => "L2toMC" })))
|
||||||
|
},
|
||||||
|
knobValues = {
|
||||||
|
case "L1D_MSHRS" => 0
|
||||||
|
case _ => throw new CDEMatchError
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,7 +19,9 @@ class WithGroundTest extends Config(
|
|||||||
(pname, site, here) => pname match {
|
(pname, site, here) => pname match {
|
||||||
case TLKey("L1toL2") =>
|
case TLKey("L1toL2") =>
|
||||||
TileLinkParameters(
|
TileLinkParameters(
|
||||||
coherencePolicy = new MESICoherence(site(L2DirectoryRepresentation)),
|
coherencePolicy = (if (site(NCachedTileLinkPorts) <= 1)
|
||||||
|
new MEICoherence(site(L2DirectoryRepresentation)) else
|
||||||
|
new MESICoherence(site(L2DirectoryRepresentation))),
|
||||||
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels) + 1,
|
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels) + 1,
|
||||||
nCachingClients = site(NCachedTileLinkPorts),
|
nCachingClients = site(NCachedTileLinkPorts),
|
||||||
nCachelessClients = site(NUncachedTileLinkPorts),
|
nCachelessClients = site(NUncachedTileLinkPorts),
|
||||||
@ -211,12 +213,16 @@ class ComparatorL2Config extends Config(
|
|||||||
new WithL2Cache ++ new ComparatorConfig)
|
new WithL2Cache ++ new ComparatorConfig)
|
||||||
class ComparatorBufferlessConfig extends Config(
|
class ComparatorBufferlessConfig extends Config(
|
||||||
new WithBufferlessBroadcastHub ++ new ComparatorConfig)
|
new WithBufferlessBroadcastHub ++ new ComparatorConfig)
|
||||||
|
class ComparatorStatelessConfig extends Config(
|
||||||
|
new WithStatelessBridge ++ new ComparatorConfig)
|
||||||
|
|
||||||
class MemtestConfig extends Config(new WithMemtest ++ new GroundTestConfig)
|
class MemtestConfig extends Config(new WithMemtest ++ new GroundTestConfig)
|
||||||
class MemtestL2Config extends Config(
|
class MemtestL2Config extends Config(
|
||||||
new WithMemtest ++ new WithL2Cache ++ new GroundTestConfig)
|
new WithL2Cache ++ new MemtestConfig)
|
||||||
class MemtestBufferlessConfig extends Config(
|
class MemtestBufferlessConfig extends Config(
|
||||||
new WithMemtest ++ new WithBufferlessBroadcastHub ++ new GroundTestConfig)
|
new WithBufferlessBroadcastHub ++ new MemtestConfig)
|
||||||
|
class MemtestStatelessConfig extends Config(
|
||||||
|
new WithNGenerators(0, 1) ++ new WithStatelessBridge ++ new MemtestConfig)
|
||||||
// Test ALL the things
|
// Test ALL the things
|
||||||
class FancyMemtestConfig extends Config(
|
class FancyMemtestConfig extends Config(
|
||||||
new WithNGenerators(1, 2) ++ new WithNCores(2) ++ new WithMemtest ++
|
new WithNGenerators(1, 2) ++ new WithNCores(2) ++ new WithMemtest ++
|
||||||
|
2
uncore
2
uncore
@ -1 +1 @@
|
|||||||
Subproject commit b4092a6ff8021b0e57ab5ce8c11ef6a6dafec1fb
|
Subproject commit 384655ea7b09f9d14014737a2cba1a9489151900
|
Loading…
Reference in New Issue
Block a user