1

我已经安装了 riscv 工具链,并使用https://github.com/ucb-bar/rocket-chip的 master 分支中的 rocketchip 生成器源使用默认配置生成了 verilog 源。

我希望了解凿子源,以便我可以尝试对凿子源进行修改,但我不确定我应该如何开始。例如,在 src/main/scala/TestConfigs.scala 文件中 - 第 87 行有以下代码 -

    class WithPrefetches extends Config(
      (pname, site, here) => pname match {
        case "COMPARATOR_PREFETCHES" => true
        case _ => throw new CDEMatchError
      })

我很好奇为什么 COMPARATOR_PREFETCHES 被允许作为一个案例,我试图弄清楚什么是“允许的”以及在哪里可以看到这些“定义”。

朝着正确的方向推动是值得赞赏的。

4

1 回答 1

0

开始的地方是src/main/scala/Configs.scala(TestConfigs.scala 用于生成测试结构,而不是实际的处理器)。有很多例子展示了如何生成不同风格的 Rocket。作为一个具体的例子,假设您想修改默认内核以移除 FPU 并增加 DCache 关联性。你可以写:

class MyBetterCore extends Config (
    topDefinitions = { (pname,site,here) => pname match {
      case UseFPU => false
      case _ => throw new CDEMatchError
    }},
  knobValues = {
    case "L1D_WAYS" => 8
    case _ => throw new CDEMatchError
  }
)

class MyBetterConfig extends Config(new MyBetterCore ++ new BaseConfig)

CONFIG然后你可以通过设置命令行变量来构建和模拟这个核心:

make CONFIG=MyBetterConfig

开箱即用可安全修改的所有参数都位于Configs.scala.

于 2016-08-04T18:51:01.307 回答