2. 开发环境搭建:Vivado安装与配置、Vitis HLS安装、仿真工具ModelSim/Questasim、版本管理Git基础
说实话,很多同学学卷积加速,上来就撸代码。结果呢?环境没配好,跑个仿真报一堆错,半天时间全浪费在装软件上了。我当年刚入行时也吃过这个亏——记得有一次装Vivado,因为磁盘空间不够,折腾了两天才发现是C盘满了。嗯,这节课咱们就把这些坑提前填上。
2.1 Vivado安装与配置
Vivado是Xilinx家的主力工具。做FPGA加速,你绕不开它。我个人习惯用Vivado 2020.2以后的版本,对HLS和AI引擎支持更好。
安装前的准备
- 磁盘空间:至少留出100GB。别问我怎么知道的——我装Vivado 2021.1时,光安装包就占了45GB。
- 操作系统:Windows 10 64位或Ubuntu 18.04/20.04。我个人更推荐Linux,跑大型综合时稳定很多。
- 内存:16GB起步,32GB更舒服。你想想看,综合一个中等规模的卷积核,内存不够直接卡死。
安装步骤
- 去Xilinx官网下载Vivado HLx安装包。选“Vivado HL WebPACK”或“Vivado HL Design Edition”都行。
- 运行安装程序。注意:一定要勾选“Vitis Application Development”。我刚开始就漏了这步,结果后面还得重装。
- 选择器件支持。做卷积加速的话,至少勾选“Kintex-7”、“Artix-7”和“Zynq-7000”。
- 安装路径不要有中文和空格。我曾经因为路径带了个“(1)”,结果综合报错查了半天。
环境变量配置
安装完后,建议把Vivado加到系统PATH里。Linux下在.bashrc里加一行:
source /tools/Xilinx/Vivado/2021.1/settings64.sh
Windows下在系统环境变量里添加C:\Xilinx\Vivado\2021.1\bin。配好后打开终端输入vivado,能启动就说明成了。
2.2 Vitis HLS安装
Vitis HLS是咱们做卷积加速的核心工具。说白了,它能把C/C++代码转成RTL。我刚开始用HLS时总觉得不靠谱——软件生成的硬件能好用吗?后来发现,只要约束写对,效果比手写Verilog还好。
安装方式
Vitis HLS现在集成在Vivado安装包里了。你装Vivado时勾选“Vitis”组件就行。单独装的话,去Xilinx官网下载“Vitis Unified Software Platform”。
验证安装
装好后,打开终端输入:
vitis_hls -version
能看到版本号就对了。我习惯用vitis_hls -p打开图形界面,写C代码时方便调试。
project/src/ — 存放C/C++源文件tb/ — 存放测试平台script/ — 存放Tcl脚本report/ — 综合报告
2.3 仿真工具:ModelSim / QuestaSim
仿真这一步,很多人觉得可有可无。我告诉你,千万别省。我在项目中遇到过好几次,综合前仿真全过,上板就挂。为什么?仿真没覆盖边界情况。
ModelSim vs QuestaSim
| 特性 | ModelSim | QuestaSim |
|---|---|---|
| 适用场景 | 中小规模设计 | 大规模、复杂验证 |
| 性能 | 中等 | 快(多核优化) |
| 支持语言 | Verilog/VHDL/SystemVerilog | 全部 + UVM |
| 价格 | 免费版够用 | 商业授权 |
做卷积加速的话,ModelSim免费版就够用了。但如果你要跑UVM验证环境,得上QuestaSim。
与Vivado集成
Vivado默认自带仿真器(xsim)。但我个人习惯用ModelSim,因为波形查看更顺手。配置方法:
- 打开Vivado,点击 Tools → Settings → Tool Settings → 3rd Party Simulators
- 在“ModelSim Simulator”里填上安装路径
- 仿真时选“ModelSim”作为目标仿真器
2.4 Git版本管理基础
做卷积加速,代码迭代特别快。今天改个卷积核大小,明天调个流水线深度。没有版本管理,改错了想回退?那只能哭了。我见过一个同事,用“final_v2_真的不改了.sv”这种文件名,结果最后自己都分不清哪个是最终版。
Git基本操作
你只需要掌握这几个命令,就能应付90%的场景:
# 初始化仓库
git init
# 添加文件到暂存区
git add conv_accel.cpp
# 提交到本地仓库
git commit -m "初始版本:3x3卷积核实现"
# 查看修改历史
git log --oneline
# 回退到上一个版本
git reset --hard HEAD~1
分支管理
做卷积加速时,我建议这样分分支:
main— 稳定版本,上板验证通过的代码dev— 开发分支,日常修改feature/winograd— 新算法实验分支
举个例子,你想尝试Winograd卷积加速,就在dev上开个新分支:
git checkout -b feature/winograd
实验完了,合并回dev。如果效果不好,直接删掉分支,不影响主线。
git status看看改了哪些文件。这样万一综合报错,能快速定位是不是代码改坏了。
.gitignore配置
Vivado和HLS会生成一堆临时文件。这些不用提交到Git。我常用的.gitignore模板:
# Vivado
*.jou
*.log
*.str
*.xpr
*.rpt
.vivado/
# Vitis HLS
.hls/
.csim/
.csynth/
.csim.log
# 仿真
*.vcd
*.wlf
*.vstf
# 编译中间文件
*.o
*.obj
*.exe
2.5 知识体系总览
下面这张图,把咱们这章的核心逻辑串起来了。你保存下来,以后配环境时对照着看:
好了,环境搭好了,下一章咱们就开始写第一个卷积加速的HLS代码。记住:环境配得稳,后面少踩坑。