【发布时间】:2019-06-07 12:42:01
【问题描述】:
我正在学习火箭芯片的代码。但是由于关系复杂,我发现它的代码很难阅读。所以我需要一些 maunal 来帮助我。不幸的是,似乎很少有关于它的手册。那么谁能给我提供有助于阅读火箭芯片代码的手册?
【问题讨论】:
-
欢迎来到 Stack Overflow,很遗憾,我们无法回答需要建议的问题。因为那太宽泛了,而且基于观点。希望你能理解。
标签: riscv chisel rocket-chip
我正在学习火箭芯片的代码。但是由于关系复杂,我发现它的代码很难阅读。所以我需要一些 maunal 来帮助我。不幸的是,似乎很少有关于它的手册。那么谁能给我提供有助于阅读火箭芯片代码的手册?
【问题讨论】:
标签: riscv chisel rocket-chip
使用 Rocket-Chip 需要您非常了解以下内容:
外交 -- Rocket-Chip 如何实现外交框架,该框架用于在电路细化期间协商参数并通过芯片传播它们。看看亨利库克的博士学位。加州大学的论文伯克利的上下文,或者更好的会议演讲for instance。
TileLink -- 特别是 Rocket-Chip 使用 Chisel 实现 TileLink 规范的方式
Scala 中的函数式编程 -- Rocket-Chip 代码库广泛使用 Scala 语言特性,例如案例类、模式匹配、高阶函数、偏函数、匿名函数,特征混合,等等。因此,您会看到诸如使用 map 函数定义的重要变量、与 case 语句进行模式匹配、使用隐式参数等您无法找到甚至在编写代码时无法确定的内容。
Chisel -- 特别是用于制作电路元件的数据类型和构造函数。凿子是最简单的部分。
我不知道任何类型的手册,但这里有一些东西可以帮助您理解架构:
grep -rn "class" | wc -l 返回 1126,grep -rn "object" | wc -l 返回 533,grep -rn "trait" | wc -l 返回 196)。几乎没有任何 cmets,因此您需要了解每个类、对象和特征是如何使用的。 Ctrl+单击跟随超类(上面写着extends RocketSubsystemModuleImp),并画出类层次结构。这将帮助您全面了解行为的来源。// import freechips.rocketchip.tilelink._
// change to:
import freechips.rocketchip.tilelink.{TLToAXI4, TLToAHB}
【讨论】:
我建议你看看 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。 希望这可以帮助, 夏兰
【讨论】:
chisel 和riscv-mini。但是阅读rocket-chip的代码比较困难。所以我要求一些建议。我会去阅读MIV_ECOSYSTEM。谢谢。