开发环境搭建:Vivado HLS/Vitis HLS安装、许可证配置、环境变量设置、第一个HLS工程创建

说实话,很多初学者一上来就急着写代码,结果卡在环境搭建上大半天。我见过太多人花了两天装工具,最后发现是许可证没配好。这一章,咱们就把这事一次性搞定。

1. 工具版本选择——别盲目追新

Vivado HLS 和 Vitis HLS 其实是一脉相承的东西。Vivado HLS 是 2019.2 之前的叫法,从 2020.1 开始,Xilinx 把它整合进了 Vitis 统一平台。我个人习惯用 Vitis HLS 2021.1 或 2022.2,这两个版本比较稳定。

注意: 别一上来就装最新版。2023.2 我试过,有些第三方 IP 的兼容性还有坑。做项目,稳定比新功能重要。

选版本时,你想想看:你的开发板是什么芯片?如果是 Zynq-7000 系列,Vivado HLS 2018.3 其实就够用。如果是 Versal 或 Kintex UltraScale+,那得用 Vitis HLS 2021.1 以上。

芯片系列 推荐工具版本 备注
Zynq-7000 / Artix-7 Vivado HLS 2018.3 ~ 2019.2 老项目兼容性好
Kintex-7 / Virtex-7 Vivado HLS 2019.2 最后一个纯HLS版本
Zynq UltraScale+ / Kintex UltraScale Vitis HLS 2020.2 ~ 2021.2 推荐2021.1
Versal / AI Engine Vitis HLS 2022.2+ 需要配套Vitis统一平台

2. 安装流程——三步走

安装其实不复杂,但有几个细节容易翻车。我按步骤拆开讲。

2.1 下载安装包

去 Xilinx 官网下载。注意:需要注册账号,而且下载速度很慢。我建议用 Xilinx Unified Installer,它会把 Vivado、Vitis、HLS 打包在一起。你只需要勾选 Vitis 组件,HLS 会自动包含。

小技巧: 下载时选 "Web Install" 模式,它会先下一个小启动器,然后边装边下。这样万一断网了,续传也方便。

2.2 安装路径

安装路径不要有中文,不要有空格。我习惯装到 C:\Xilinx\Vitis_HLS\2021.1 这种结构。Linux 下建议装到 /opt/Xilinx/ 目录。

嗯,这里要注意:磁盘空间至少留 50GB。Vitis HLS 完整安装大概 30GB,加上后续的 IP 库和例程,50GB 是底线。

2.3 许可证配置——最容易出问题的一步

许可证分两种:Node-Locked(节点锁定)和 Floating(浮动)。个人学习用 Node-Locked 就够了。

我曾经帮一个同事排查问题,他装完工具死活跑不了综合。折腾了两小时,最后发现许可证文件路径配错了。他复制了 .lic 文件,但环境变量指向了另一个空目录。

配置步骤很简单:

  1. 打开 Xilinx License Manager
  2. 选择 "Load License"
  3. 浏览到你的 .lic 文件
  4. 点 "Activate"

或者手动设置环境变量:

# Windows 下
set XILINXD_LICENSE_FILE=C:\Xilinx\license.lic

# Linux 下
export XILINXD_LICENSE_FILE=/opt/Xilinx/license.lic
验证许可证是否生效: 打开命令行,输入 vitis_hls -l,如果能看到 "License checked out successfully",那就对了。

3. 环境变量设置——让系统找到工具

安装完工具,系统还不知道它在哪。你需要把工具路径加到 PATH 里。

Windows 用户:

set PATH=C:\Xilinx\Vitis_HLS\2021.1\bin;%PATH%
set PATH=C:\Xilinx\Vivado\2021.1\bin;%PATH%

Linux 用户:

export PATH=/opt/Xilinx/Vitis_HLS/2021.1/bin:$PATH
export PATH=/opt/Xilinx/Vivado/2021.1/bin:$PATH

我个人习惯把这些写到 .bashrc 或 .profile 里,这样每次打开终端就不用重新设了。

避坑: 如果你同时装了多个版本,PATH 的顺序很重要。先声明的版本优先级高。我一般把最常用的版本放在最前面。

4. 第一个HLS工程——从零开始

环境搭好了,咱们来跑个最简单的例子。说白了就是验证一下工具能不能正常工作。

4.1 创建工程

打开命令行,输入:

vitis_hls -i

这会进入交互模式。或者你用 GUI 模式:

vitis_hls -g

在 GUI 里,点 File → New Project。给工程起个名字,比如 hello_hls。选择你的目标芯片型号。如果你不确定,选个通用的 xc7z020 就行,这是 Zynq 7020 的型号。

4.2 写第一个C代码

在工程里新建一个源文件 top.cpp:

#include <ap_int.h>

void add_vectors(int a[4], int b[4], int c[4]) {
    #pragma HLS INTERFACE s_axilite port=return
    #pragma HLS INTERFACE bram port=a
    #pragma HLS INTERFACE bram port=b
    #pragma HLS INTERFACE bram port=c

    for (int i = 0; i < 4; i++) {
        #pragma HLS PIPELINE
        c[i] = a[i] + b[i];
    }
}

这段代码很简单:两个数组相加。但注意那个 #pragma HLS PIPELINE,它告诉工具把循环流水化。你想想看,如果不加这个,综合出来就是一个周期算一个数,效率很低。

4.3 写测试文件

再建一个 test.cpp:

#include <iostream>
#include "top.cpp"

int main() {
    int a[4] = {1, 2, 3, 4};
    int b[4] = {5, 6, 7, 8};
    int c[4] = {0};

    add_vectors(a, b, c);

    for (int i = 0; i < 4; i++) {
        if (c[i] != a[i] + b[i]) {
            std::cout << "Test failed at index " << i << std::endl;
            return 1;
        }
    }
    std::cout << "Test passed!" << std::endl;
    return 0;
}

4.4 运行综合和仿真

在 GUI 里,点 Project → Run C Simulation。如果看到 "Test passed!",说明 C 仿真通过了。

然后点 Solution → Run C Synthesis → Active Solution。等几分钟,你会看到综合报告。

关键指标: 综合报告里看三个东西——Latency(延迟)、II(Initiation Interval,启动间隔)、资源使用量。对于这个例子,Latency 应该是 4 个周期,II 是 1。

5. 知识体系总览

这一章的内容,说白了就是一条线:从下载安装,到配许可证,再到跑通第一个工程。我画了个图帮你理清思路。

HLS开发环境搭建知识体系 工具版本选择 安装流程 许可证配置 环境变量设置 创建第一个HLS工程 C仿真 + 综合验证 核心流程:选版本 → 安装 → 配许可证 → 设环境变量 → 建工程 → 跑通验证 常见问题 许可证找不到 → 检查 XILINXD_LICENSE_FILE 路径 综合报错 → 检查芯片型号是否匹配

6. 避坑指南——我踩过的雷

  • 许可证过期: 我曾经在项目交付前一天发现许可证过期了。后来我学乖了,每次装完工具第一件事就是检查许可证有效期。
  • 路径有中文: 有个学员装在了 "D:\项目\HLS工具" 目录下,结果综合一直报错。改成英文路径就好了。
  • 版本不匹配: 用 Vitis HLS 2022.2 打开 2019.2 的工程,有些 pragma 会报错。建议同一个项目固定一个版本。
  • 磁盘空间不足: 综合过程中会产生大量中间文件。我建议至少留 20GB 空闲空间。
我的习惯: 每次新建工程前,先跑一遍 vitis_hls -l 确认许可证正常。这步花不了 10 秒,但能省下后面排查问题的一小时。

好了,环境搭建这块就这些。你按这个流程走一遍,应该半小时内就能跑通第一个 HLS 工程。记住,工具只是手段,关键是后面怎么用它写出高效的硬件加速代码。

可可精品资料库