Chipyard|伯克利开源RISC-V原型平台

把处理器设计跑起来

伯克利IEEE Micro论文的开源SoC框架,从Rocket仿真到Genesys2 FPGA原型。整理固定源码版本、原厂套装BOM、图解步骤和许可边界,并核查台湾师大、TU/e其他团队的实际FPGA实现证据。

alan000

IEEE Micro 2020

参数信息

Genesys2默认目标时钟
50 MHz

复现文档

01|确认复现终点与主机

### 确认复现终点与主机

本页目标是Rocket设计的软件仿真和Genesys2 FPGA原型,不包含ASIC流片。主机采用上游测试的x86 Linux环境;Windows按官方文档可用WSL,但USB转发和Vivado主机环境须另核。默认Rocket展开约需6.5GB内存,整套编译/FPGA实现还需余量;建议准备足够内存和磁盘,6.5GB不是整机最低配置承诺。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 scope.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/04fea719bf4d4e0bb8cbdb4795034f1a.png)

![Chipyard图解 kit.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/ebb0eb215fab482ebf5ead92c9a9cdb6.png)

02|按套装逐件核对

### 按套装逐件核对

开发板、12V 3A电源、USB-A/Micro-B数据线各1件,后三者属于同一410-300套装的组成,不要重复下单。查看板卡型号、USB编程与UART端口、供电极性和开关标识。固定电源接口不靠示意图猜测。本页不使用microSD、网线、外接屏幕或外接DDR。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 kit.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/ebb0eb215fab482ebf5ead92c9a9cdb6.png)

03|先确认Vivado器件许可

### 先确认Vivado器件许可

Genesys2的XC7K325T不受免费Vivado Standard支持;厂商套装提供Enterprise凭证,购买前确认软件可用性及凭证条件。开源Chipyard不意味着所有FPGA工具开源或免费。安装支持该器件的工具和线缆驱动,把Vivado加入PATH;固定版本并保存build信息。本次源码未给一个经本站测试过的Vivado版本,不杜撰。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![flow.png](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/b6658fe944a841a69c2362a7ac830d3a.png)

04|固定仓库与依赖

### 固定仓库与依赖

使用官方GitHub:git clone <https://github.com/ucb-bar/chipyard.git;cd> chipyard;git checkout 371ab92dd09917b6ab05d58bf762b173c52f4224。安装官方Miniforge和git后,按原文运行./[build-setup.sh](http://build-setup.sh) riscv-tools,完成再source ./[env.sh](http://env.sh)。[每次新终端重新加载env.sh](http://每次新终端重新加载env.sh)。安装需网络且可能很久;保存完整日志和git submodule status,不手工全递归拉取所有可选模块。本站仅审查源码,未运行这些构建。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 flow.png,本站依据官方文档新绘](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/b6658fe944a841a69c2362a7ac830d3a.png)

05|先跑默认Rocket仿真

### 先跑默认Rocket仿真

从仓库根进入sims/verilator,运行make,产物是simulator-chipyard.harness-RocketConfig。再运行make run-binary BINARY=$RISCV/riscv64-unknown-elf/share/riscv-tests/isa/rv64ui-p-simple。检查退出状态和输出,不把“编译结束”当成功执行。内存不足导致137时先处理资源问题。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 overview.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/91235bf44e2c4f46b8859424f1e75ce5.png)

![Chipyard图解 flow.png,本站依据官方文档新绘](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/b6658fe944a841a69c2362a7ac830d3a.png)

06|用小程序和波形定位错误

### 用小程序和波形定位错误

根目录tests中make生成示例ELF,再回sims/verilator运行make run-binary BINARY=../../tests/hello.riscv。需要波形时按原文make debug及make run-binary-debug BINARY=../../tests/hello.riscv,用VCD查看器检查。保存实际输出和波形,未运行时不填写预期数字为实测。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 flow.png,本站依据官方文档新绘](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/b6658fe944a841a69c2362a7ac830d3a.png)

07|生成Genesys2位流

### 生成Genesys2位流

根目录fpga运行make `SUB_PROJECT`=genesys2 bitstream。该提交默认RocketGenesys2Config、Genesys2Harness,50MHz目标、1GB外部存储映射;不要混用TinyRocket无DDR配置。生成目录为generated-src/&lt;具体设计&gt;/obj。核对Vivado错误、资源、时序和实际.bit产物,目标频率不等于已通过时序验证。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 overview.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/91235bf44e2c4f46b8859424f1e75ce5.png)

![Chipyard图解 flow.png,本站依据官方文档新绘](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/b6658fe944a841a69c2362a7ac830d3a.png)

08|通过板载JTAG加载

### 通过板载JTAG加载

依据Digilent原板手册连接额定电源及编程USB口,使用Vivado Hardware Manager识别XC7K325T并加载刚生成的.bit。未识别时检查数据线、驱动、供电和目标型号,不能靠更改电压尝试。板卡掉电会丢失易失配置,本页不写Flash固化步骤。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 kit.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/ebb0eb215fab482ebf5ead92c9a9cdb6.png)![uart.png](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/33e3d513991147c3a6ffc3f1a4ae9be8.png)

09|编译并连接UART-TSI

### 编译并连接UART-TSI

在仓库根`generators/testchipip/uart_tsi`目录运行make。保持板卡上电,将USB线接板载UART端口,在Linux确认对应实际/dev/ttyUSBX;串口号不能照抄。按设备管理的最小必要用户权限访问。UART-TSI是程序加载通道,不等同普通shell终端。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 uart.png,本站依据官方文档新绘](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/33e3d513991147c3a6ffc3f1a4ae9be8.png)

10|运行、自检并存档

### 运行、自检并存档

在`uart_tsi`目录按原文使用`./uart_tsi` +tty=/dev/ttyUSBX +selfcheck &lt;实际RISC-V-ELF路径&gt;,例如已编译且与配置兼容的dhrystone.riscv。自检用于二进制加载检查,另核程序完成与正确结果。保存代码提交、子模块版本、Vivado版本、配置名、位流哈希、时序报告、串口日志和板卡照片;之后才改核数/加速器。官方示例任意写地址不是入门必做步骤,本页不要求照抄。

配图为根据官方文档新绘的流程图,不是接线位置图、实物照片或本站测试记录。

[固定版本安装原文](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Chipyard-Basics/Initial-Repo-Setup.rst) · [Genesys2原教程](https://github.com/ucb-bar/chipyard/blob/371ab92dd09917b6ab05d58bf762b173c52f4224/docs/Prototyping/Genesys2.rst) · [原厂板卡手册](https://digilent.com/reference/programmable-logic/genesys-2/reference-manual)

![Chipyard图解 uart.png,本站依据官方文档新绘](https://orecord-files.oss-cn-zhangjiakou.aliyuncs.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/files/image/33e3d513991147c3a6ffc3f1a4ae9be8.png)

![Chipyard图解 scope.png,本站依据官方文档新绘](https://cdn.lunlunapp.com/sbp/projects/4c09e008-f055-4d02-bd51-c77d374156bf/cover/04fea719bf4d4e0bb8cbdb4795034f1a.png)