第二章:环境搭建——安装Xilinx Vitis、Vivado、PetaLinux,配置FINN Docker环境

好,咱们直接进入正题。环境搭建这事儿,说难不难,说简单也真能折腾你一整天。我当年第一次搭FINN环境的时候,光一个Docker权限问题就卡了三个小时。嗯,咱们今天就把这些坑都填平。

2.1 硬件与操作系统要求

先看看你的机器够不够格。说白了,Xilinx这套工具链就是个资源大户。

组件 最低要求 推荐配置
CPU 4核 8核以上
内存 16 GB 32 GB
硬盘 100 GB 空闲 200 GB SSD
操作系统 Ubuntu 18.04 / 20.04 Ubuntu 20.04 LTS
注意:千万别用Windows直接装。我试过,WSL2勉强能跑,但各种玄学问题会让你怀疑人生。老老实实装双系统或者用Linux物理机。

2.2 安装Vivado与Vitis

我个人习惯先把Vivado和Vitis一起装。为啥?因为Vitis是Vivado的超集,装一个Vitis就全有了。

去Xilinx官网下载 Unified Installer。你想想看,2023.2版本大概20多个G,网速不好的话,建议挂一晚上。

# 下载完成后,给执行权限
chmod +x Xilinx_Unified_2023.2_*.bin

# 运行安装程序
./Xilinx_Unified_2023.2_*.bin

安装时记得勾选:

  • Vivado ML Standard / Enterprise
  • Vitis Core Development
  • 对应板卡的Device Support(比如Zynq-7000、Zynq UltraScale+)
小技巧:安装路径不要有中文和空格。我习惯放在 /tools/Xilinx 下,干净利落。

2.3 安装PetaLinux

PetaLinux是用来生成Linux镜像的。FINN生成的硬件加速器,最终要跑在Linux系统上,所以这步绕不开。

下载PetaLinux Installer,版本要和Vivado对齐。比如你用Vivado 2023.2,PetaLinux也得是2023.2。

# 安装依赖
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc build-essential \
    chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
    iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
    pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

# 安装PetaLinux
chmod +x petalinux-v2023.2-*.run
./petalinux-v2023.2-*.run /tools/Xilinx/petalinux
踩坑提醒:我曾经在Ubuntu 22.04上装PetaLinux 2023.2,结果python版本不兼容,折腾了两天。最后老老实实换回Ubuntu 20.04,一次过。所以,听我一句劝,Ubuntu 20.04最稳。

2.4 配置环境变量

装完工具,得让系统知道它们在哪。每次打开终端都要source一下,挺烦的。我建议直接写进 .bashrc

# 编辑 ~/.bashrc
echo 'source /tools/Xilinx/Vivado/2023.2/settings64.sh' >> ~/.bashrc
echo 'source /tools/Xilinx/Vitis/2023.2/settings64.sh' >> ~/.bashrc
echo 'source /tools/Xilinx/petalinux/settings.sh' >> ~/.bashrc
source ~/.bashrc

验证一下:

vivado -version
vitis -version
petalinux-version

如果都能正常显示版本号,说明环境变量配好了。

2.5 安装Docker与配置FINN镜像

FINN官方推荐用Docker来跑。为啥?因为依赖太多了,Python包、ONNX、PyTorch、Brevitas……手动装一遍,你可能会疯掉。

2.5.1 安装Docker

# 安装Docker
sudo apt-get update
sudo apt-get install -y docker.io

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

# 将当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER
# 然后退出终端重新登录
提示:加完docker组后,记得重新登录或者执行 newgrp docker,否则权限不会立即生效。

2.5.2 拉取FINN Docker镜像

# 拉取官方FINN镜像
docker pull xilinx/finn:latest

# 或者指定版本,更稳定
docker pull xilinx/finn:0.8.1

拉取完成后,启动容器:

# 创建并进入容器
docker run -it --name finn_dev \
    -v /path/to/your/project:/workspace \
    xilinx/finn:0.8.1 /bin/bash

-v 参数是把宿主机的项目目录挂载到容器里。这样你在容器里改代码,宿主机也能看到。

2.6 验证FINN环境

进到容器里,跑个简单的测试:

# 进入容器后
cd /workspace
python3 -c "import finn; print(finn.__version__)"

如果没报错,恭喜你,环境搭好了。

重点:FINN的核心依赖包括:
  • Brevitas(量化感知训练)
  • ONNX(模型中间表示)
  • PyTorch(训练框架)
  • Xilinx Vitis / Vivado(编译与部署)
这些在Docker镜像里都预装好了,省心。

2.7 常见问题与避坑指南

  • Docker拉取太慢? 配置国内镜像源。修改 /etc/docker/daemon.json,加入 {"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]},然后重启Docker。
  • Vivado安装卡在95%? 别慌,那是安装Device Support,确实慢。等就完了,别强行关闭。
  • PetaLinux编译报错? 检查gcc版本。Ubuntu 20.04自带的gcc 9没问题,Ubuntu 22.04的gcc 11可能会有兼容性问题。
  • 容器里找不到显卡? 如果你要用GPU训练量化模型,启动容器时加 --gpus all 参数。

嗯,环境搭建这部分就到这儿。你把这些步骤走一遍,基本不会出大问题。下一章咱们开始讲FINN的量化原理,那才是真正的硬核内容。