Riscv 我怎样才能找到一些关于火箭芯片的手册?

Riscv 我怎样才能找到一些关于火箭芯片的手册?,riscv,chisel,rocket-chip,Riscv,Chisel,Rocket Chip,我正在学习火箭芯片的代码。但是由于复杂的关系,我发现很难阅读它的代码。所以我需要一些毛纳尔帮我。不幸的是,关于它的手册似乎很少。那么,有谁能给我提供一些有助于阅读火箭芯片代码的手册吗?我建议你看看凿子3。火箭芯片RISCV核心就是用这个写的。我在下面添加了几个链接,让您开始学习: 还有一个RISCV迷你版,这是一个三阶段的RISCV,用于学习目的。可在下面找到,但不确定这是如何更新的 当你对FPGA感到满意时,也值得一看它的一些示例项目,Microsemi,一家微芯片公司,有一系列RISC-V

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

我建议你看看凿子3。火箭芯片RISCV核心就是用这个写的。我在下面添加了几个链接,让您开始学习:

还有一个RISCV迷你版,这是一个三阶段的RISCV,用于学习目的。可在下面找到,但不确定这是如何更新的

当你对FPGA感到满意时,也值得一看它的一些示例项目,Microsemi,一家微芯片公司,有一系列RISC-V核和一个生态系统可供选择。我也将链接下面的MiV生态系统。,。 希望这有帮助,
Ciaran

使用火箭芯片需要您非常好地理解以下内容:

  • 外交——火箭芯片如何实现外交框架,该框架用于在电路细化过程中协商参数,并通过芯片传播参数。看看亨利·库克的博士学位。在加州大学伯克利分校发表论文,了解这方面的背景,或者更好的是会议会谈

  • TileLink——特别是火箭芯片使用凿子实现TileLink规范的方式

  • Scala中的函数式编程——火箭芯片代码库广泛使用Scala语言的功能,如案例类、模式匹配、高阶函数、部分函数、匿名函数、特征混合等。因此,您将看到使用映射函数定义的重要变量、与case语句匹配的模式、使用隐式参数等在代码编写时无法找到甚至无法确定的内容

  • 凿子——特别是用于制作电路元件的数据类型和构造函数。凿子是最容易的部分

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

    • 绘制对象层次结构的图片——对象层次结构可以有10到12层深,有上千个相关的类和对象需要了解(就在火箭芯片的src/main/scala文件夹中,
      grep-rn“class”| wc-l
      返回1126,
      grep-rn“object”| wc-l
      返回533,而
      grep-rn“trait”| wc-l
      返回196)。几乎没有任何注释,所以您需要了解每个类、对象和特性是如何使用的。按住Ctrl键并单击以跟随超类(其中显示的是
      扩展RocketSubsystemModuleImp
      ),并绘制类层次结构。这将帮助你建立一个行为来源的大局观
    • 使用IntelliJ的结构面板——这可以帮助您记住最相关的对象、类及其变量,至少对于您打开的给定文件是如此
    • 查找用法——同样在IntelliJ中,按住Ctrl键并将鼠标悬停在类上,以查看显示“ShowUses for BlahBlahBlah”的悬停窗口。按住Ctrl键并单击该按钮,然后浏览到使用它的不同位置
    • 使用grep并查找——如果您遇到一个不熟悉的模式或结构,请在整个代码库中搜索该模式,查看其使用方式
    • 先断开它,然后修复它——如果您使用的是IntelliJ,请删除import语句后的.uu,并将其替换为正在导入的确切类。要找到这些类,可以注释掉整行内容,然后查看哪些内容被打断(比如在下面有一条红色的曲线)。然后替换该行,并按住Ctrl键的同时单击已断开的类或构造函数,以跟踪每个类或构造函数在代码中的实现位置。阅读源代码以确定参数及其工作方式
    //导入freechips.rocketchip.tilelink.\u
    //改为:
    导入免费芯片。火箭芯片。tilelink。{TLToAXI4,TLToAHB}
    
    • Debug——我会说Debug,这样你就可以看到对象在运行时是如何结合在一起的,但我还不知道如何获取这些信息,因为电路是通过makefile、脚本和sbt来实现的,而不仅仅是通过sbt
    • 编写测试——使用scalatest框架或凿子测试规范来询问关于如何构建的离散问题。这将帮助您确定单个变量、对象或配置的属性,但您首先需要有大量的结构知识,然后需要了解测试所针对的每个值应该是什么。这首先需要做很多以上的工作
    欢迎来到Stack Overflow,不幸的是,我们无法回答需要建议的问题。因为这太广泛了,而且是基于观点的。希望你能理解。谢谢。我已经学习了
    scave
    riscv mini
    。但是读取
    火箭芯片的代码要困难得多。所以我要求一些建议。我要去读《米弗生态系统》
    。谢谢