Vectorize RoCC and Tile memory interfaces (bump uncore, rocket, zscale)
This commit is contained in:
parent
4346111d2a
commit
3fc630405b
2
rocket
2
rocket
@ -1 +1 @@
|
|||||||
Subproject commit 3c3e35a56e954b35e6ceb17179ebadc52e8d9b3f
|
Subproject commit 6a165e8b90f09041e9dce30268da8b827d4fdc8c
|
@ -98,8 +98,7 @@ class DefaultConfig extends ChiselConfig (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case BuildRoCC => None
|
case BuildRoCC => None
|
||||||
case NDCachePorts => 2 + (if(site(BuildRoCC).isEmpty) 0 else 1)
|
case RoccNMemChannels => 1
|
||||||
case NPTWPorts => 2 + (if(site(BuildRoCC).isEmpty) 0 else 3)
|
|
||||||
//Rocket Core Constants
|
//Rocket Core Constants
|
||||||
case FetchWidth => 1
|
case FetchWidth => 1
|
||||||
case RetireWidth => 1
|
case RetireWidth => 1
|
||||||
@ -109,18 +108,17 @@ class DefaultConfig extends ChiselConfig (
|
|||||||
case FastLoadByte => false
|
case FastLoadByte => false
|
||||||
case FastMulDiv => true
|
case FastMulDiv => true
|
||||||
case XLen => 64
|
case XLen => 64
|
||||||
case BuildFPU => {
|
case UseFPU => {
|
||||||
val env = if(site(UseVM)) List("p","pt","v") else List("p","pt")
|
val env = if(site(UseVM)) List("p","pt","v") else List("p","pt")
|
||||||
if(site(FDivSqrt)) TestGeneration.addSuites(env.map(rv64uf))
|
if(site(FDivSqrt)) TestGeneration.addSuites(env.map(rv64uf))
|
||||||
else TestGeneration.addSuites(env.map(rv64ufNoDiv))
|
else TestGeneration.addSuites(env.map(rv64ufNoDiv))
|
||||||
Some((p: Parameters) => Module(new FPU()(p)))
|
true
|
||||||
}
|
}
|
||||||
case FDivSqrt => true
|
case FDivSqrt => true
|
||||||
case SFMALatency => 2
|
case SFMALatency => 2
|
||||||
case DFMALatency => 3
|
case DFMALatency => 3
|
||||||
case CoreInstBits => 32
|
case CoreInstBits => 32
|
||||||
case CoreDataBits => site(XLen)
|
case CoreDataBits => site(XLen)
|
||||||
case CoreDCacheReqTagBits => 7 + log2Up(here(NDCachePorts))
|
|
||||||
case NCustomMRWCSRs => 0
|
case NCustomMRWCSRs => 0
|
||||||
//Uncore Paramters
|
//Uncore Paramters
|
||||||
case RTCPeriod => 100 // gives 10 MHz RTC assuming 1 GHz uncore clock
|
case RTCPeriod => 100 // gives 10 MHz RTC assuming 1 GHz uncore clock
|
||||||
@ -132,13 +130,12 @@ class DefaultConfig extends ChiselConfig (
|
|||||||
coherencePolicy = new MESICoherence(site(L2DirectoryRepresentation)),
|
coherencePolicy = new MESICoherence(site(L2DirectoryRepresentation)),
|
||||||
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels),
|
nManagers = site(NBanksPerMemoryChannel)*site(NMemoryChannels),
|
||||||
nCachingClients = site(NTiles),
|
nCachingClients = site(NTiles),
|
||||||
nCachelessClients = site(NTiles) + 1,
|
nCachelessClients = 1 + site(NTiles) *
|
||||||
|
(1 + (if(site(BuildRoCC).isEmpty) 0 else site(RoccNMemChannels))),
|
||||||
maxClientXacts = max(site(NMSHRs) + site(NIOMSHRs),
|
maxClientXacts = max(site(NMSHRs) + site(NIOMSHRs),
|
||||||
if(site(BuildRoCC).isEmpty) 1
|
if(site(BuildRoCC).isEmpty) 1 else site(RoccMaxTaggedMemXacts)),
|
||||||
else site(RoCCMaxTaggedMemXacts)),
|
maxClientsPerPort = if(site(BuildRoCC).isEmpty) 1 else 2,
|
||||||
maxClientsPerPort = if(site(BuildRoCC).isEmpty) 1 else 3,
|
|
||||||
maxManagerXacts = site(NAcquireTransactors) + 2,
|
maxManagerXacts = site(NAcquireTransactors) + 2,
|
||||||
addrBits = site(PAddrBits) - site(CacheBlockOffsetBits),
|
|
||||||
dataBits = site(CacheBlockBytes)*8)
|
dataBits = site(CacheBlockBytes)*8)
|
||||||
case TLKey("L2toMC") =>
|
case TLKey("L2toMC") =>
|
||||||
TileLinkParameters(
|
TileLinkParameters(
|
||||||
@ -149,7 +146,6 @@ class DefaultConfig extends ChiselConfig (
|
|||||||
maxClientXacts = 1,
|
maxClientXacts = 1,
|
||||||
maxClientsPerPort = site(NAcquireTransactors) + 2,
|
maxClientsPerPort = site(NAcquireTransactors) + 2,
|
||||||
maxManagerXacts = 1,
|
maxManagerXacts = 1,
|
||||||
addrBits = site(PAddrBits) - site(CacheBlockOffsetBits),
|
|
||||||
dataBits = site(CacheBlockBytes)*8)
|
dataBits = site(CacheBlockBytes)*8)
|
||||||
case TLKey("Outermost") => site(TLKey("L2toMC")).copy(dataBeats = site(MIFDataBeats))
|
case TLKey("Outermost") => site(TLKey("L2toMC")).copy(dataBeats = site(MIFDataBeats))
|
||||||
case NTiles => Knob("NTILES")
|
case NTiles => Knob("NTILES")
|
||||||
@ -249,7 +245,7 @@ class DefaultFPGAConfig extends ChiselConfig(new FPGAConfig ++ new DefaultConfig
|
|||||||
|
|
||||||
class SmallConfig extends ChiselConfig (
|
class SmallConfig extends ChiselConfig (
|
||||||
topDefinitions = { (pname,site,here) => pname match {
|
topDefinitions = { (pname,site,here) => pname match {
|
||||||
case BuildFPU => None
|
case UseFPU => false
|
||||||
case FastMulDiv => false
|
case FastMulDiv => false
|
||||||
case NTLBEntries => 4
|
case NTLBEntries => 4
|
||||||
case BtbKey => BtbParameters(nEntries = 8)
|
case BtbKey => BtbParameters(nEntries = 8)
|
||||||
|
@ -33,6 +33,8 @@ case object ExternalIOStart extends Field[BigInt]
|
|||||||
trait HasTopLevelParameters {
|
trait HasTopLevelParameters {
|
||||||
implicit val p: Parameters
|
implicit val p: Parameters
|
||||||
lazy val nTiles = p(NTiles)
|
lazy val nTiles = p(NTiles)
|
||||||
|
lazy val nCachedTilePorts = p(TLKey("L1toL2")).nCachingClients
|
||||||
|
lazy val nUncachedTilePorts = p(TLKey("L1toL2")).nCachelessClients - 1
|
||||||
lazy val htifW = p(HtifKey).width
|
lazy val htifW = p(HtifKey).width
|
||||||
lazy val csrAddrBits = 12
|
lazy val csrAddrBits = 12
|
||||||
lazy val nMemChannels = p(NMemoryChannels)
|
lazy val nMemChannels = p(NMemoryChannels)
|
||||||
@ -120,8 +122,8 @@ class MultiChannelTop(implicit val p: Parameters) extends Module with HasTopLeve
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect the uncore to the tile memory ports, HostIO and MemIO
|
// Connect the uncore to the tile memory ports, HostIO and MemIO
|
||||||
uncore.io.tiles_cached <> tileList.map(_.io.cached)
|
uncore.io.tiles_cached <> tileList.map(_.io.cached).flatten
|
||||||
uncore.io.tiles_uncached <> tileList.map(_.io.uncached)
|
uncore.io.tiles_uncached <> tileList.map(_.io.uncached).flatten
|
||||||
io.host <> uncore.io.host
|
io.host <> uncore.io.host
|
||||||
io.mem <> uncore.io.mem
|
io.mem <> uncore.io.mem
|
||||||
io.mmio <> uncore.io.mmio
|
io.mmio <> uncore.io.mmio
|
||||||
@ -133,12 +135,13 @@ class MultiChannelTop(implicit val p: Parameters) extends Module with HasTopLeve
|
|||||||
* Usually this is clocked and/or place-and-routed separately from the Tiles.
|
* Usually this is clocked and/or place-and-routed separately from the Tiles.
|
||||||
* Contains the Host-Target InterFace module (HTIF).
|
* Contains the Host-Target InterFace module (HTIF).
|
||||||
*/
|
*/
|
||||||
class Uncore(implicit val p: Parameters) extends Module with HasTopLevelParameters {
|
class Uncore(implicit val p: Parameters) extends Module
|
||||||
|
with HasTopLevelParameters {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val host = new HostIO(htifW)
|
val host = new HostIO(htifW)
|
||||||
val mem = Vec(new NastiIO, nMemChannels)
|
val mem = Vec(new NastiIO, nMemChannels)
|
||||||
val tiles_cached = Vec(new ClientTileLinkIO, nTiles).flip
|
val tiles_cached = Vec(nCachedTilePorts, new ClientTileLinkIO).flip
|
||||||
val tiles_uncached = Vec(new ClientUncachedTileLinkIO, nTiles).flip
|
val tiles_uncached = Vec(nUncachedTilePorts, new ClientUncachedTileLinkIO).flip
|
||||||
val htif = Vec(new HtifIO, nTiles).flip
|
val htif = Vec(new HtifIO, nTiles).flip
|
||||||
val mem_backup_ctrl = new MemBackupCtrlIO
|
val mem_backup_ctrl = new MemBackupCtrlIO
|
||||||
val mmio = new NastiIO
|
val mmio = new NastiIO
|
||||||
@ -191,8 +194,8 @@ class Uncore(implicit val p: Parameters) extends Module with HasTopLevelParamete
|
|||||||
*/
|
*/
|
||||||
class OuterMemorySystem(implicit val p: Parameters) extends Module with HasTopLevelParameters {
|
class OuterMemorySystem(implicit val p: Parameters) extends Module with HasTopLevelParameters {
|
||||||
val io = new Bundle {
|
val io = new Bundle {
|
||||||
val tiles_cached = Vec(new ClientTileLinkIO, nTiles).flip
|
val tiles_cached = Vec(nCachedTilePorts, new ClientTileLinkIO).flip
|
||||||
val tiles_uncached = Vec(new ClientUncachedTileLinkIO, nTiles).flip
|
val tiles_uncached = Vec(nUncachedTilePorts, new ClientUncachedTileLinkIO).flip
|
||||||
val htif_uncached = (new ClientUncachedTileLinkIO).flip
|
val htif_uncached = (new ClientUncachedTileLinkIO).flip
|
||||||
val incoherent = Vec(Bool(), nTiles).asInput
|
val incoherent = Vec(Bool(), nTiles).asInput
|
||||||
val mem = Vec(new NastiIO, nMemChannels)
|
val mem = Vec(new NastiIO, nMemChannels)
|
||||||
|
2
uncore
2
uncore
@ -1 +1 @@
|
|||||||
Subproject commit 75b9b77c2e5f3971b9213904c329520b10f67694
|
Subproject commit ef7427eea2cc22bc66076f1b04be4b2b314f9e0c
|
2
zscale
2
zscale
@ -1 +1 @@
|
|||||||
Subproject commit 599fc0644351a28759f351c4be7068e5cbb7b092
|
Subproject commit d6cc2dc512f93be328578e79798ee13510eb4c72
|
Loading…
Reference in New Issue
Block a user