参数化配置
NutShell 支持参数化配置, 目前经过验证的核心配置集有小核、顺序核、乱序核, 运行环境配置集有仿真, FPGA (支持 pynq 和 axu3cg), 相关配置集已经预设在代码中.
其中, 顺序核是本文档主要针对介绍的, 小核以顺序核为基础进行裁剪;而乱序核部分则是王华强同学的毕业设计内容, 现已融入 NutShell 配置框架中.
在 src/main/scala/top/Settings.scala 中给出了目前支持可配置的各个参数, 截取默认的配置如下所示:
object DefaultSettings {
  def apply() = Map(
    "MemMapBase" -> 0x0000000000000000L,
    "MemMapRegionBits" -> 0,
    "MMIOBase" -> 0x0000000040000000L,
    "MMIOSize" -> 0x0000000040000000L,
    "ResetVector" -> 0x80000000L,
    "NrExtIntr" -> 1,
    "HasL2cache" -> true,
    "HasPrefetch" -> true,
    "EnableMultiIssue" -> false,
    "EnableSuperScalarExec" -> false,
    "EnableOutOfOrderExec" -> false,
    "HasDTLB" -> true,
    "HasITLB" -> true,
    "HasDcache" -> true,
    "HasIcache" -> true,
    "MmodeOnly" -> false,
    "IsRV32" -> false,
    "EnableILA" -> true,
    "EnableDebug" -> false,
    "EnableRVC" -> true,
    "EnableCoh" -> true,
    "SDIMem" -> false
  )
}
在工程的 Makefile 中, 你可以设定环境变量 CORE 和  BOARD 指定生成的处理器使用哪一种预设配置集, 默认为顺序核+仿真环境.
配置集测试情况
顺序核:可运行 AM 应用, Linux Kernel, Debian 等
乱序核:可运行 AM 应用, Linux Kernel 等
小核(32位):可运行 AM 应用等