2. 开发环境搭建:Vivado安装与配置、蜂鸟E203源码获取、仿真环境搭建与验证
说实话,很多同学学RISC-V卡住,不是因为架构难懂,而是环境没搭好。我见过太多人花了两周装工具链,最后连个Hello World都没跑起来。这一章,咱们就把地基打牢。
我会带你走完三个步骤:装Vivado、拿源码、跑仿真。每一步我都会告诉你哪些坑可以绕过去。
2.1 Vivado安装与配置
Vivado是Xilinx家的FPGA开发套件。蜂鸟E203官方推荐用2018.3或2019.1版本。我个人习惯用2019.1,因为它的IP核兼容性更好一些。
2.1.1 安装步骤
- 下载安装包:从Xilinx官网下载Vivado HLx 2019.1 WebPACK或Design Edition。WebPACK免费,够用。
- 运行安装程序:双击xsetup.exe,选择“Vivado HL Design Edition”。
- 选择组件:勾选以下内容:
- Vivado HL System Edition
- Xilinx SDK(用于软件调试)
- 对应器件库(至少选Artix-7,因为E203常用在Artix-7开发板上)
- 安装License:申请免费WebPACK License,或者用你们公司的Node-Locked License。
2.1.2 环境变量配置
装完Vivado后,需要把工具链加到系统PATH里。这样你才能在命令行里直接调用vivado、xsct等命令。
# Windows用户(在系统环境变量中添加)
C:\Xilinx\Vivado\2019.1\bin
C:\Xilinx\SDK\2019.1\bin
# Linux用户(在.bashrc中添加)
export PATH=/tools/Xilinx/Vivado/2019.1/bin:$PATH
export PATH=/tools/Xilinx/SDK/2019.1/bin:$PATH
验证是否成功:打开终端,输入 vivado -version。如果能看到版本号,说明环境变量生效了。
2.2 蜂鸟E203源码获取
蜂鸟E203是芯来科技(Nuclei)开源的一款RISC-V处理器核。它的源码托管在GitHub上。你想想看,一个完整的RISC-V核,代码量其实不大,核心RTL也就几千行。
2.2.1 克隆源码
git clone https://github.com/SI-RISCV/e200_opensource.git
cd e200_opensource
克隆完成后,目录结构是这样的:
| 目录/文件 | 说明 |
|---|---|
| rtl/ | RTL源码(核心处理器、总线、外设) |
| fpga/ | FPGA工程文件(约束、IP核配置) |
| sim/ | 仿真环境(testbench、脚本) |
| software/ | 裸机程序示例(启动代码、驱动) |
| docs/ | 文档(架构手册、用户指南) |
2.2.2 源码版本选择
E203有两个主要分支:master和dev。master是稳定版,dev是开发版。我建议初学者用master分支,因为它的文档和仿真脚本更匹配。
git checkout master
2.3 仿真环境搭建与验证
仿真环境是调试的基石。说白了,你改一行代码,能不能跑通,先看仿真。我刚开始做RISC-V移植时,就是靠仿真把流水线问题一个个揪出来的。
2.3.1 仿真工具选择
E203官方支持两种仿真器:
- Vivado Simulator (xsim):Vivado自带,免费,够用。
- Verilator:开源,速度快,但需要额外安装。
咱们课程里用xsim,因为装Vivado时就有了,省事。
2.3.2 运行第一个仿真
E203的仿真脚本在sim/目录下。咱们先跑一个简单的Hello World程序。
cd sim
make clean
make run_test TEST=hello_world
这个命令会做三件事:
- 编译RTL源码和testbench
- 加载hello_world的二进制文件到指令存储器
- 启动仿真,运行到程序结束
如果一切正常,你会看到终端打印出:
Hello World from E203!
Simulation PASSED
2.3.3 仿真波形查看
光看打印信息不够。咱们得看波形,才能理解处理器内部发生了什么。
make run_test TEST=hello_world WAVE=1
加上WAVE=1参数后,仿真结束会自动打开Vivado波形窗口。你可以添加以下信号来观察:
e203_core_top.clk:时钟e203_core_top.rst_n:复位e203_core_top.pc_rdata:程序计数器e203_core_top.inst_rdata:指令数据
嗯,这里要注意:波形文件默认保存在sim/目录下,文件名是dump.vcd。你可以用任何支持VCD格式的工具打开它。
2.3.4 仿真环境验证清单
为了确保环境没问题,我建议你跑完下面三个测试:
| 测试名称 | 测试内容 | 预期结果 |
|---|---|---|
| hello_world | 打印字符串 | 终端输出Hello World |
| dhrystone | 性能基准测试 | 输出DMIPS/MHz数值 |
| coremark | 嵌入式基准测试 | 输出CoreMark/MHz数值 |
这三个测试都通过,说明你的仿真环境是完整的。我在项目中遇到过有人跳过这一步,结果后面综合时发现RTL有语法错误,回头再查仿真,浪费了两天时间。
2.4 本章知识体系
下面这张图总结了开发环境搭建的核心流程。你可以把它贴在工位旁边,每次搭新环境时对照着来。
2.5 常见问题与解决
最后,我整理了几个新手最容易碰到的问题。你如果遇到了,直接对照着查就行。
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| vivado命令找不到 | 环境变量未配置 | 检查PATH中是否包含Vivado bin目录 |
| 仿真报错“module not found” | RTL文件路径未包含 | 检查Makefile中的RTL_DIR设置 |
| 波形文件为空 | 未添加波形记录语句 | 在testbench中加入$dumpvars |
| License报错 | License文件未加载 | 运行vivado -lic_admin手动加载 |
好了,环境搭完了。你现在应该能跑通一个仿真,看到波形,并且知道每个目录是干什么用的。后面咱们就要开始动手改代码了——先从流水线分析开始。