Slide 9
Slide 9 text
Easy create original RISC-V cores with Chisel
VM
Support
class WithNBigCores(n: Int) extends Config((site, here, up) => {
case RocketTilesKey => {
val big = RocketTileParams(
core = RocketCoreParams(mulDiv = Some(MulDivParams(
mulUnroll = 8,
mulEarlyOut = true,
divEarlyOut = true))),
dcache = Some(DCacheParams(
rowBits = site(SystemBusKey).beatBits,
nMSHRs = 0,
blockBytes = site(CacheBlockBytes))),
icache = Some(ICacheParams(
...
}
})
class With1TinyCore extends Config((site, here, up) => {
case XLen => 32
case RocketTilesKey => List(RocketTileParams(
core = RocketCoreParams(
useVM = false,
fpu = None,
mulDiv = Some(MulDivParams(mulUnroll = 8))),
btb = None,
dcache = Some(DCacheParams(
rowBits = site(SystemBusKey).beatBits,
nSets = 256, // 16Kb scratchpad
nWays = 1,
nTLBEntries = 4,
nMSHRs = 0,
blockBytes = site(CacheBlockBytes),
scratch = Some(0x80000000L))),
… blockBytes = site(CacheBlockBytes)))))
})
class TinyConfig extends Config(
new WithNMemoryChannels(0) ++
new WithIncoherentTiles ++
new With1TinyCore ++
new BaseConfig)
Parts of cores can be attached easily by Chisel.
Base Configuration + Extensions – Unused modules.
Main Pipeline
FPU
DIV
I-cache
config
D-cache
config
I/F