tilelink2 broadcast: support bufferless Config
This commit is contained in:
parent
3703ed39f7
commit
06a7b95d0d
@ -20,10 +20,6 @@ case object NMemoryChannels extends Field[Int]
|
|||||||
case object NBanksPerMemoryChannel extends Field[Int]
|
case object NBanksPerMemoryChannel extends Field[Int]
|
||||||
/** Number of tracker per bank */
|
/** Number of tracker per bank */
|
||||||
case object NTrackersPerBank extends Field[Int]
|
case object NTrackersPerBank extends Field[Int]
|
||||||
/** Least significant bit of address used for bank partitioning */
|
|
||||||
case object BankIdLSB extends Field[Int]
|
|
||||||
/** Function for building some kind of coherence manager agent */
|
|
||||||
case object BuildL2CoherenceManager extends Field[(Int, Parameters) => CoherenceAgent]
|
|
||||||
/** The file to read the BootROM contents from */
|
/** The file to read the BootROM contents from */
|
||||||
case object BootROMFile extends Field[String]
|
case object BootROMFile extends Field[String]
|
||||||
|
|
||||||
|
@ -62,10 +62,6 @@ class BaseCoreplexConfig extends Config (
|
|||||||
case NAcquireTransactors => 7
|
case NAcquireTransactors => 7
|
||||||
case L2StoreDataQueueDepth => 1
|
case L2StoreDataQueueDepth => 1
|
||||||
case L2DirectoryRepresentation => new NullRepresentation(site(NTiles))
|
case L2DirectoryRepresentation => new NullRepresentation(site(NTiles))
|
||||||
case BuildL2CoherenceManager => (id: Int, p: Parameters) =>
|
|
||||||
Module(new L2BroadcastHub()(p.alterPartial({
|
|
||||||
case InnerTLId => "L1toL2"
|
|
||||||
case OuterTLId => "L2toMC" })))
|
|
||||||
//Tile Constants
|
//Tile Constants
|
||||||
case BuildRoCC => Nil
|
case BuildRoCC => Nil
|
||||||
case RoccNMemChannels => site(BuildRoCC).map(_.nMemChannels).foldLeft(0)(_ + _)
|
case RoccNMemChannels => site(BuildRoCC).map(_.nMemChannels).foldLeft(0)(_ + _)
|
||||||
@ -142,10 +138,10 @@ class BaseCoreplexConfig extends Config (
|
|||||||
}
|
}
|
||||||
|
|
||||||
case BootROMFile => "./bootrom/bootrom.img"
|
case BootROMFile => "./bootrom/bootrom.img"
|
||||||
|
case BufferlessBroadcast => false
|
||||||
case NTiles => 1
|
case NTiles => 1
|
||||||
case NBanksPerMemoryChannel => Knob("NBANKS_PER_MEM_CHANNEL")
|
case NBanksPerMemoryChannel => Knob("NBANKS_PER_MEM_CHANNEL")
|
||||||
case NTrackersPerBank => Knob("NTRACKERS_PER_BANK")
|
case NTrackersPerBank => Knob("NTRACKERS_PER_BANK")
|
||||||
case BankIdLSB => 0
|
|
||||||
case CacheBlockBytes => Dump("CACHE_BLOCK_BYTES", 64)
|
case CacheBlockBytes => Dump("CACHE_BLOCK_BYTES", 64)
|
||||||
case CacheBlockOffsetBits => log2Up(here(CacheBlockBytes))
|
case CacheBlockOffsetBits => log2Up(here(CacheBlockBytes))
|
||||||
case EnableL2Logging => false
|
case EnableL2Logging => false
|
||||||
@ -203,12 +199,6 @@ class WithL2Cache extends Config(
|
|||||||
case NAcquireTransactors => 2
|
case NAcquireTransactors => 2
|
||||||
case NSecondaryMisses => 4
|
case NSecondaryMisses => 4
|
||||||
case L2DirectoryRepresentation => new FullRepresentation(site(NTiles))
|
case L2DirectoryRepresentation => new FullRepresentation(site(NTiles))
|
||||||
case BuildL2CoherenceManager => (id: Int, p: Parameters) =>
|
|
||||||
Module(new L2HellaCacheBank()(p.alterPartial({
|
|
||||||
case CacheId => id
|
|
||||||
case CacheName => "L2Bank"
|
|
||||||
case InnerTLId => "L1toL2"
|
|
||||||
case OuterTLId => "L2toMC"})))
|
|
||||||
case L2Replacer => () => new SeqRandom(site(NWays))
|
case L2Replacer => () => new SeqRandom(site(NWays))
|
||||||
case _ => throw new CDEMatchError
|
case _ => throw new CDEMatchError
|
||||||
},
|
},
|
||||||
@ -217,10 +207,7 @@ class WithL2Cache extends Config(
|
|||||||
|
|
||||||
class WithBufferlessBroadcastHub extends Config(
|
class WithBufferlessBroadcastHub extends Config(
|
||||||
(pname, site, here) => pname match {
|
(pname, site, here) => pname match {
|
||||||
case BuildL2CoherenceManager => (id: Int, p: Parameters) =>
|
case BufferlessBroadcast => true
|
||||||
Module(new BufferlessBroadcastHub()(p.alterPartial({
|
|
||||||
case InnerTLId => "L1toL2"
|
|
||||||
case OuterTLId => "L2toMC" })))
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -236,12 +223,6 @@ class WithBufferlessBroadcastHub extends Config(
|
|||||||
* DO NOT use this configuration.
|
* DO NOT use this configuration.
|
||||||
*/
|
*/
|
||||||
class WithStatelessBridge extends Config (
|
class WithStatelessBridge extends Config (
|
||||||
topDefinitions = (pname, site, here) => pname match {
|
|
||||||
case BuildL2CoherenceManager => (id: Int, p: Parameters) =>
|
|
||||||
Module(new ManagerToClientStatelessBridge()(p.alterPartial({
|
|
||||||
case InnerTLId => "L1toL2"
|
|
||||||
case OuterTLId => "L2toMC" })))
|
|
||||||
},
|
|
||||||
knobValues = {
|
knobValues = {
|
||||||
case "L1D_MSHRS" => 0
|
case "L1D_MSHRS" => 0
|
||||||
case _ => throw new CDEMatchError
|
case _ => throw new CDEMatchError
|
||||||
|
@ -10,9 +10,12 @@ import uncore.util._
|
|||||||
import util._
|
import util._
|
||||||
import rocket._
|
import rocket._
|
||||||
|
|
||||||
|
/** Should the broadcast hub have no buffers */
|
||||||
|
case object BufferlessBroadcast extends Field[Boolean]
|
||||||
|
|
||||||
trait BroadcastL2 extends BankedL2CoherenceManagers {
|
trait BroadcastL2 extends BankedL2CoherenceManagers {
|
||||||
def l2ManagerFactory() = {
|
def l2ManagerFactory() = {
|
||||||
val bh = LazyModule(new TLBroadcast(l1tol2_lineBytes, nTrackersPerBank))
|
val bh = LazyModule(new TLBroadcast(l1tol2_lineBytes, nTrackersPerBank, p(BufferlessBroadcast)))
|
||||||
(bh.node, bh.node)
|
(bh.node, bh.node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user