如何找到有关火箭芯片的手册?

时间:2019-06-07 12:42:01

标签: riscv chisel rocket-chip

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

2 个答案:

答案 0 :(得分:1)

与Rocket-Chip合作需要您非常了解以下内容:

  1. 外交-火箭芯片如何实现外交框架,该框架用于在电路制造过程中协商参数并将其传播通过芯片。看看亨利·库克(Henry Cook)的博士学位。在U.C.的论文伯克利(Berkeley)可以提供有关此方面的背景信息,或者最好是会议讨论for instance

  2. TileLink -特别是火箭芯片使用凿子来实现TileLink规范的方式

  3. Scala中的功能编程-Rocket-Chip代码库广泛使用了Scala语言功能,例如案例类,模式匹配,高阶函数,部分函数,​​匿名函数,特征混入等等。因此,您将看到诸如用map函数定义的重要变量,使用隐式参数与案例语句进行模式匹配,甚至在代码编写时都无法找到甚至确定的事情。

  4. 凿子-专门用于制造电路组件的数据类型和构造函数。凿子是容易的部分。

我不知道任何手册,但是以下一些内容可以帮助您了解体系结构:

  • 绘制对象层次结构的图片-对象层次结构可以深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)。几乎没有任何注释,因此您需要查看如何使用每个类,对象和特征。按住Ctrl键并单击以跟随超类(在其上显示extends RocketSubsystemModuleImp),并绘制出类层次结构。这将有助于您对行为的根源有一个全面的了解。
  • 使用IntelliJ的结构面板-可以帮助您牢记最相关的对象,类及其变量,至少对于打开的给定文件而言。
  • 查找用法-再次在IntelliJ中,在类上按Ctrl + hover以查看显示“显示用于BlahBlahBlah的显示”的悬停窗口。 Ctrl +单击该,然后浏览到使用它的不同位置。
  • 使用grep并查找-如果遇到不熟悉的模式或构造,请在整个代码库中搜索该模式以了解其用法。
  • 破坏它,然后修复它-如果您使用的是IntelliJ,请在import语句后删除._,然后将其替换为要导入的确切类。要查找这些类,您可以将整个行注释掉,然后查看中断(如在其下方显示一条红色的波浪线)。然后替换该行,并按住Ctrl键并单击断开的类或构造函数,以使每个类或构造函数都遵循在代码中实现的位置。阅读源代码以确定参数及其工作方式。
// import freechips.rocketchip.tilelink._ 
// change to:
import freechips.rocketchip.tilelink.{TLToAXI4, TLToAHB}
  • 调试-我要说调试,所以您可以看到对象在运行时是如何在一起的,但是由于电路经过精心设计,我还不了解如何获取这些信息。 Makefile,脚本和sbt,而不仅仅是通过sbt。
  • 编写测试-使用scalatest框架或凿子测试规范来询问有关事物构建方式的离散问题。这将帮助您确定各个变量,对象或配置的属性,但是您首先需要具有大量的结构知识,然后期望您针对应测试的每个值应为。这首先需要很多。

答案 1 :(得分:0)

我建议您看看chisel3。火箭芯片RISCV内核是用此编写的。我在下面添加了一些链接,以帮助您入门: Chisel_HomepageChisel_GithubChisel_Tutorial

还有一个RISCV mini,这是一个三级riscv,用于学习目的。下面提供的信息尚不确定该如何更新。

当您熟悉FPGA上的一些示例项目时,Microsemi(Microchip公司)也会提供一些RISC-V内核和一个生态系统供您参考。我也将在下面链接MiV生态系统。3_Stage_RISCV_miniMIV_ECOSYSTEM。 希望这可以帮助, 恰兰