新ちゃん 发表于 2020-8-18 23:03:25

rocket-chip项目的具体内容

本帖最后由 新ちゃん 于 2020-8-20 22:36 编辑

3、rocket-chip项目的具体内容
3.1 rocket-chip的项目框架
rocket-chip项目的下载网址:rocket-chip因为rocket-chip项目一直有人维护,会一直更新,所以我立一个时间点,下面的项目框架说明是在这个时间点附近更新的,我下次更新会修改上面的时间点,我的修改时间不定。而且每次修改只会修改一级目录和二级目录的内容,更详细的更新内容请自行上github查看。至于scala的源代码说明,看后面的情况吧,有时间我是会写的。此外,rocket-chip项目的内容太多了,有部分我也还没有完全弄得,如果哪里写错了请您邮件我,谢谢。CSDN的表格真的…

一级二级说明
bootrom-硬件启动的代码,一般存在于rom中。
-bootrom.Sbootrom的汇编代码。
-linker.ldlink文件,用于规定代码存放的位置。
-Makefilemake文件,此文件会完成三个步骤:1.利用bootrom.S和linker.ld将汇编转为elf文件;2.利用elf文件生成bin文件;3.利用bin文件生成img文件。
chisel3-chisel3软件,是一种硬件构建语言,用于生成各种配置的rocket-chip。chisel3是在scala的基础上发展的,后面可能会单独开一篇对chisel3进行介绍。此软件需要安装java & sbt。
emulator #-利用Verilator完成编译和仿真,是基于C/C++的仿真。
firrtl-是chisel3到RTL的中间产物,用于最终生成Verilog/C代码。可以将chisel3生成的*.fir文件转换为*.v。
hardfloat-硬件浮点单元,用于融合乘法 - 加法运算,整数和浮点之间的转换数字和不同精度的浮点转换之间的转换。
macros/src/main/scala宏命令,暂时还不知道这目录的作用。
project-通过sbt完成scala编译和构建。
-build.properties声明sbt的版本。
-plugins.sbt声明sbt依赖库的路径与版本。
regression-rocket-chip项目的回归测试脚本。从verilog代码生成,到riscv-tools工具的编译,再到vcs仿真&emulator仿真,然后到JTAG simulation。有点复杂,不建议一开始就用这个脚本。因为上面描述的内容都可以分步完成的。
riscv-tools #-RISC-V交叉编译工具。
-riscv-fesvr一个“前端”服务器,用于服务主机 - 目标接口(HTIF)上的主机和目标处理器之间的呼叫(它还提供虚拟化控制台和磁盘设备)。若要使用riscv-isa-sim,必须安装riscv-fesvr。
-riscv-gnu-toolchain #RISC-V交叉编译工具。
-riscv-isa-sim一个简单的ISA模拟器。
-riscv-opcodes所有RISC-V操作码的枚举,这些操作码都能利用riscv-isa-sim运行,可以自行添加。
-riscv-openocd一款片上编码和调试的工具。
-riscv-pk一个代理内核,用于服务代码构建的系统调用和链接RISC-V Newlib的端口。
-riscv-tests #装配测试和基准测试的文件。
-build-rv32ima.sh编译脚本。编译riscv-fesvr、riscv-isa-sim、riscv-pk、riscv-gnu-toolchain和riscv-openocd工具。riscv-isa-sim指令只支持32位ima指令。riscv-gnu-toolchain交叉编译工具链也只支持32位ima指令。同时用riscv-gnu-toolchain生成的32位工具编译riscv-pk。
-build-spike-only.sh编译脚本。编译riscv-fesvr和riscv-isa-sim工具。用于RISC-V的指令仿真。
-build-spike-pk.sh编译脚本。编译riscv-fesvr、riscv-isa-sim和riscv-pk工具。需要用的64位工具编译riscv-pk。
-build.common各种build脚本的通用代码,用于检测环境变量,GCC版本,打印信息,建立目录和记录编译历史。
-build.sh编译脚本。编译riscv-fesvr、riscv-isa-sim、riscv-pk、riscv-gnu-toolchain、riscv-openocd和riscv-tests工具。我基本只使用这个编译脚本,当然我编译的是32位工具。
-regression.sh编译脚本,完成一次回归测试。
scripts-用于分析仿真结果和操作源文件的脚本,生成mem/rom的通用脚本。
src/main #-rocket-chip的scala源代码。内容太多暂时不打算一个个模块进行解释。
torture-该模块用于生成和执行受约束的随机指令流,可用于对设计的核心部分和非核心部分进行压力测试,这个目录我没有用过。
vsim #-利用VCS完成编译和仿真,同时生成verilog代码。
LICENSE.Berkeley-伯克利的LICENSE,这些还是很重要的,大家注意了。
LICENSE.SiFive-SiFive的LICENSE。
LICENSE.jtag-chisel-jtag的LICENSE。
Makefrag-脚本的一些通用配置,环境变量设置,java运行选项,项目选项,相关路径等。
README.md-rocket-chip项目的相关教程。
README_TRAVIS.md-Travis Notes for Administrators。
build.sbt-rocket-chip项目使用到了sbt,此文件为sbt的一些配置。
sbt-launch.jar-sbt-launch的java软件包。

注意:打“#”号的是我经常主动用到的目录。
rocket-chip项目编译步骤:
1、 先安装虚拟机&ubuntu系统。虚拟机下载地址:http://download3.vmware.com/software/wkst/file/VMware-workstation-full-14.1.2-8497320.exe
ubuntu下载地址:http://mirrors.zju.edu.cn/ubuntu-releases/
我安装的VMware是14.1.2版本,而ubuntu是32位的14.04.5。
2、 然后下载rocket-chip的项目。$ git clone https://github.com/ucb-bar/rocket-chip.git
$ cd rocket-chip
$ git submodule update --init
运行这几步只是会将rocket-chip项目中的一级目录和二级目录下载,有部分目录还需要更详细的步骤进行内容下载。
3、 接着设置环境变量:$ export RISCV=/path/to/riscv/toolchain/installation
这个是必须的,所有工具编译都依赖于环境变量,上面的命令需要根据各自的配置来完成的。
4、 最后是进入各个目录进行不同目录的编译或仿真。
进入riscv-tools目录可以编译交叉工具链和各使用工具。
进入emulator / vsim可以生成RTL代码,然后根据RTL代码完成仿真。
进入regression / torture可以进行更复杂的操作。
建议先编译riscv-tools目录,然后再编译其他目录。此外,生成RTL是不受riscv-tools的工具影响的,你可以进入emulator / vsim,然后利用
make verilog CONFIG=DefaultFPGAConfig
来生成RTL代码,RTL代码的生成与chisel3、firrtl、hardfloat和project等目录相关,与java和sbt工具相关,在emulator / vsim目录中使用RTL完成仿真操作才会与riscv-tools的工具相关。
5、各目录的编译。各目录的编译步骤会在分章节中进行说明。
跳转路径:https://blog.csdn.net/a_weiming/article/details/84594781

本篇完,感谢关注:RISC-V单片机中文网

页: [1]
查看完整版本: rocket-chip项目的具体内容