0

I am new to rocket chip generator and still learning. First thing I want to know is how to parameterize l1 d cache. I did some research but it seems the info is not up to date. For example, in src/main/scala/config.scala, there is no d cache parameters defined as mentioned in README. Some people mentioned coreplex/config.scala but I couldnt find it either. Will someone please let me know where are the default parameter defined and how to change them? Also, where is the tinycore, bigcore and other predefined core defined?

1 Answer 1

0

There are multiple configurations that you can choose while compiling Rocket Chip. You can find these configurations in subsystem/Configs.scala file. By default, make command in vsim and emulator directory uses DefaultConfig parameters.

class DefaultConfig extends Config(new WithNBigCores(1) ++ new BaseConfig)

class WithNBigCores(n: Int) extends Config((site, here, up) => {
  case RocketTilesKey => {
    val big = RocketTileParams(
    ...
      dcache = Some(DCacheParams(
        rowBits = site(SystemBusKey).beatBits,
        nMSHRs = 1,
        blockBytes = site(CacheBlockBytes))),
      icache = Some(ICacheParams(
        rowBits = site(SystemBusKey).beatBits,
        blockBytes = site(CacheBlockBytes))))
      List.tabulate(n)(i => big.copy(hartId = i))
  }
})

You can find data cache parameters in rocket/HellaCache.scala. Some important parameters defined are:

nSets: Number of cache sets

nWays: Number of cache ways

rowBits: Cache line size

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.