2. 蜂鸟E203处理器核概述

说实话,环境搭建往往是整个项目里最磨人的一步。我见过不少同学,代码写得挺溜,结果卡在工具链安装上,一卡就是一整天。所以这一章,咱们把 Vivado、Verilator 和 RISC-V 交叉编译工具链这三个核心环境一次性搞定。

我的建议是:按顺序来,别跳步。先装 Vivado,再搭 Verilator,最后装交叉编译工具链。这样出了问题,排查起来也方便。

本章核心目标:完成蜂鸟 E203 项目从 RTL 仿真到 FPGA 实现所需的全部开发工具安装与验证。

2.1 Vivado 安装与配置

Vivado 是 Xilinx 的 FPGA 开发套件,咱们要把 E203 的 RTL 代码综合、实现、生成比特流,全靠它。我个人习惯用 Vivado 2019.2 或 2020.1 版本,这两个版本对 E203 项目兼容性最好。

2.1.1 系统要求与版本选择

项目 推荐配置 最低配置
操作系统 Ubuntu 18.04 / 20.04 Ubuntu 16.04
内存 16 GB 以上 8 GB
硬盘空间 100 GB 以上 60 GB
CPU 核心数 8 核以上 4 核

嗯,这里要注意:Vivado 安装包本身就 20 多 GB,解压后占用更大。我曾经在 120 GB 的笔记本上装,装到一半硬盘满了……最后只能重装系统。所以硬盘空间一定要留足。

2.1.2 安装步骤

  1. 下载安装包:从 Xilinx 官网下载 Vivado HLx 版本,选择 WebPACK 或 Design Edition 均可。
  2. 解压并运行安装脚本:
    tar -xzvf Xilinx_Vivado_SDK_2019.2_1106_2127.tar.gz
    cd Xilinx_Vivado_SDK_2019.2_1106_2127
    ./xsetup
  3. 选择安装组件:勾选 Vivado HL Design Edition,以及对应的器件支持(比如 Artix-7、Kintex-7 等)。
  4. 配置 License:安装完成后,打开 Vivado,通过 Help → Manage License 加载你的 License 文件。
  5. 验证安装:在终端输入 vivado,如果能正常启动 GUI,说明安装成功。
小技巧:安装时可以选择只安装需要的器件库,能省下不少空间。比如咱们用 Artix-7 系列,就只勾选 7 Series。

2.1.3 配置环境变量

为了方便在终端调用 Vivado 命令,需要把 Vivado 的 bin 目录加到 PATH 里。编辑 ~/.bashrc,添加以下内容:

export VIVADO_HOME=/tools/Xilinx/Vivado/2019.2
export PATH=$VIVADO_HOME/bin:$PATH

然后执行 source ~/.bashrc 使其生效。验证一下:

vivado -version

如果能看到版本信息,就说明配置好了。

2.2 Verilator 仿真环境搭建

Verilator 是一个高性能的 Verilog/SystemVerilog 仿真器。它把 RTL 代码编译成 C++ 模型,然后通过 C++ 驱动来仿真。说白了,就是比传统的仿真器快很多。E203 的 RTL 仿真验证,我推荐用 Verilator。

2.2.1 安装依赖

在 Ubuntu 上,先安装必要的依赖包:

sudo apt-get update
sudo apt-get install git make autoconf g++ flex bison
sudo apt-get install libfl-dev libgoogle-perftools-dev

我记得第一次装的时候,忘了装 libfl-dev,结果编译 Verilator 时报了一堆 flex 相关的错误。所以这些依赖一个都不能少。

2.2.2 编译安装 Verilator

我建议从源码编译安装,这样能保证版本最新。步骤如下:

git clone https://github.com/verilator/verilator.git
cd verilator
autoconf
./configure
make -j$(nproc)
sudo make install

安装完成后,验证一下:

verilator --version

如果能看到类似 Verilator 4.210 的版本号,就说明安装成功了。

注意:Verilator 对 SystemVerilog 的支持是逐步完善的。E203 项目中用到的语法,Verilator 4.2 以上版本基本都能支持。如果版本太低,可能会遇到语法不支持的错误。

2.2.3 验证仿真环境

咱们用 E203 项目自带的仿真脚本来验证一下。进入 E203 项目目录,执行:

cd e203_project/sim
make run_test SIM=verilator

如果能看到仿真波形或者终端打印出测试通过的信息,就说明 Verilator 环境搭建成功了。

2.3 交叉编译工具链安装

交叉编译工具链,说白了就是在一台电脑上编译出能在另一台设备上运行的程序。咱们要在 x86 的电脑上编译出能在 RISC-V 处理器上运行的代码,就得靠它。

2.3.1 选择工具链版本

E203 项目推荐使用 RISC-V GNU 工具链。我习惯用 riscv64-unknown-elf-gcc 这个版本,它支持裸机程序编译,正好适合 E203 这种没有操作系统的嵌入式场景。

工具链版本 适用场景 推荐指数
riscv64-unknown-elf-gcc 裸机程序、RTOS ★★★★★
riscv64-linux-gnu-gcc Linux 用户态程序 ★★★☆☆
riscv32-unknown-elf-gcc 32 位 RISC-V 裸机 ★★★★☆

2.3.2 安装预编译工具链

最省事的方法是直接下载预编译好的工具链。从 SiFive 官网或者 GitHub 上找到 riscv64-unknown-elf-toolchain 的预编译包,解压到某个目录:

wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2020.04.0-x86_64-linux-ubuntu14.tar.gz
tar -xzvf riscv64-unknown-elf-gcc-8.3.0-2020.04.0-x86_64-linux-ubuntu14.tar.gz
sudo mv riscv64-unknown-elf-gcc-8.3.0-2020.04.0-x86_64-linux-ubuntu14 /opt/riscv

然后配置环境变量:

export RISCV=/opt/riscv
export PATH=$RISCV/bin:$PATH

验证一下:

riscv64-unknown-elf-gcc --version

如果能看到版本信息,就说明工具链装好了。

小提示:如果你网络条件好,也可以从源码编译工具链。但编译一次要 2-3 小时,我建议直接用预编译版本,省时间。

2.3.3 编译测试程序

写一个简单的 C 程序,测试一下工具链是否正常工作:

// test.c
int main() {
    int a = 1, b = 2;
    int c = a + b;
    return c;
}

编译:

riscv64-unknown-elf-gcc -O2 -march=rv32imc -mabi=ilp32 -o test test.c

然后用 file 命令查看生成的可执行文件:

file test

如果输出中包含 ELF 32-bit LSB executable, UCB RISC-V,就说明编译成功了。

2.4 本章知识体系总览

为了让你对整个环境搭建有个全局认识,我画了一张结构图:

开发环境搭建知识体系 Vivado 安装与配置 Verilator 仿真环境 交叉编译工具链 系统要求检查 安装与 License 安装依赖包 源码编译安装 选择工具链版本 安装与验证 环境验证:运行 E203 仿真测试 确保三个环境都能正常工作

2.5 常见问题与避坑指南

环境搭建过程中,有几个坑我踩过,分享给你:

  • Vivado 安装卡在 0%:我曾经遇到过安装进度条一直不动的情况。后来发现是网络问题,Vivado 安装过程中会下载一些在线组件。解决办法是断网安装,或者用离线安装包。
  • Verilator 编译报错:如果编译 Verilator 时出现 flex: not found 之类的错误,说明依赖没装全。回头检查一下 flex 和 bison 是否安装。
  • 交叉编译工具链版本不匹配:E203 项目默认使用 RV32IMC 指令集。如果你用的工具链默认是 RV64,编译时会报错。记得在编译时加上 -march=rv32imc -mabi=ilp32 参数。
重要提醒:环境搭建完成后,一定要运行 E203 的仿真测试来验证。不要跳过这一步,否则后面发现问题时,你很难判断是环境问题还是代码问题。

好了,环境搭建就到这里。三个工具都装好并验证通过后,咱们就可以正式开始移植工作了。