【问题标题】:How can I find some manuals about rocket-chip?我怎样才能找到一些关于火箭芯片的手册?
【发布时间】:2019-06-07 12:42:01
【问题描述】:

我正在学习火箭芯片的代码。但是由于关系复杂,我发现它的代码很难阅读。所以我需要一些 maunal 来帮助我。不幸的是,似乎很少有关于它的手册。那么谁能给我提供有助于阅读火箭芯片代码的手册?

【问题讨论】:

  • 欢迎来到 Stack Overflow,很遗憾,我们无法回答需要建议的问题。因为那太宽泛了,而且基于观点。希望你能理解。

标签: riscv chisel rocket-chip


【解决方案1】:

使用 Rocket-Chip 需要您非常了解以下内容:

  1. 外交 -- Rocket-Chip 如何实现外交框架,该框架用于在电路细化期间协商参数并通过芯片传播它们。看看亨利库克的博士学位。加州大学的论文伯克利的上下文,或者更好的会议演讲for instance

  2. TileLink -- 特别是 Rocket-Chip 使用 Chisel 实现 TileLink 规范的方式

  3. Scala 中的函数式编程 -- Rocket-Chip 代码库广泛使用 Scala 语言特性,例如案例类、模式匹配、高阶函数、偏函数、匿名函数,特征混合,等等。因此,您会看到诸如使用 map 函数定义的重要变量、与 case 语句进行模式匹配、使用隐式参数等您无法找到甚至在编写代码时无法确定的内容。

  4. Chisel -- 特别是用于制作电路元件的数据类型和构造函数。凿子是最简单的部分。

我不知道任何类型的手册,但这里有一些东西可以帮助您理解架构:

  • 绘制对象层次结构的图片 -- 对象层次结构可以有 10 到 12 层深,并且有超过一千个相关的类和对象需要了解(就在 Rocket-Chip 的 src/main/scala 文件夹中, grep -rn "class" | wc -l 返回 1126,grep -rn "object" | wc -l 返回 533,grep -rn "trait" | wc -l 返回 196)。几乎没有任何 cmets,因此您需要了解每个类、对象和特征是如何使用的。 Ctrl+单击跟随超类(上面写着extends RocketSubsystemModuleImp),并画出类层次结构。这将帮助您全面了解行为的来源。
  • 使用 IntelliJ 的结构面板——这可以帮助您记住最相关的对象、类及其变量,至少对于您打开的给定文件是这样。
  • 查找用法 -- 再次在 IntelliJ 中,Ctrl+悬停在类上以查看显示“show uses for BlahBlahBlah”的悬停窗口。 Ctrl+单击它,然后浏览到使用它的不同位置。
  • 使用 grep 并查找 -- 如果您遇到不熟悉的模式或结构,请在整个代码库中搜索该模式以了解其使用方式。
  • 打破它,然后修复它 -- 如果您使用的是 IntelliJ,请删除导入语句后的 ._,并将其替换为正在导入的确切类。要查找这些类,您可以将整行注释掉,然后查看中断的内容(例如在其下方出现红色波浪线的内容)。然后替换该行,并按住 Ctrl 键并单击损坏的类或构造函数,以跟随每一个到它在代码中实现的位置。阅读源代码以确定参数及其工作原理。
// import freechips.rocketchip.tilelink._ 
// change to:
import freechips.rocketchip.tilelink.{TLToAXI4, TLToAHB}
  • 调试 -- 我会说调试,所以你可以看到对象在运行时是如何组合在一起的,但我还不知道如何获取这些信息,因为电路通过 Makefile、脚本进行详细说明, 和 sbt,而不是仅仅通过 sbt。
  • 编写测试 -- 使用 scalatest 框架或 chisel 测试规范来询问有关事物如何构建的离散问题。这将帮助您确定单个变量、对象或配置的属性,但您首先需要具备大量的结构知识,然后期望您测试的每个值应该是什么.这首先需要很多上述内容。

【讨论】:

    【解决方案2】:

    我建议你看看 chisel3。 Rocket-Chip RISCV 内核就是用这个写的。我在下面添加了几个链接来帮助您入门: Chisel_Homepage,Chisel_Github,Chisel_Tutorial.

    还有一个 RISCV mini,它是一个三阶段的 riscv,用于学习目的。在下面可用,但不确定它是最新的。

    当您对 FPGA 感到满意时,可能还值得在 ​​FPGA 上查看一些示例项目,Microchip 公司 Microsemi 拥有一系列 RISC-V 内核和与之配套的生态系统。我也会在下面链接 MiV 生态系统。3_Stage_RISCV_mini,MIV_ECOSYSTEM。 希望这可以帮助, 夏兰

    【讨论】:

    • 谢谢。我学习了chiselriscv-mini。但是阅读rocket-chip的代码比较困难。所以我要求一些建议。我会去阅读MIV_ECOSYSTEM。谢谢。
    猜你喜欢
    • 2011-10-27
    • 2013-09-05
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多