2. Quartus HLS开发环境搭建
Quartus HLS 并不是一个独立安装的软件,而是以组件形式集成在 Intel Quartus Prime Pro Edition 中,通过 i++ 编译器把 C/C++ 算法综合成 RTL,再交给 Quartus 完成布局布线。因此环境搭建的核心是四件事:装对版本、配好编译器、拿到可用许可证、跑通第一个工程。本节按这个顺序展开,并给出可直接照做的配置样例。
一、版本与组件选择
Quartus HLS 只随 Quartus Prime Pro Edition 提供,Standard Edition 不含 HLS 组件。选择版本时要注意两点:一是器件支持,HLS 生成的 RTL 需要目标器件在 Pro 版支持列表中,例如 Agilex、Stratix 10、Arria 10 系列;二是版本一致性,HLS 编译器版本必须与 Quartus 主程序版本严格对应,混用不同版本的 i++ 与 Quartus 会导致 IP 或综合脚本不兼容。
安装时在组件选择界面勾选以下内容:Quartus Prime Pro(主程序)、Intel HLS Compiler(即 i++)、对应器件系列的支持包,以及 ModelSim-Intel FPGA Edition(用于 HLS 的 C/RTL 协同仿真)。若磁盘空间紧张,可只装目标器件系列,但 HLS 编译器与器件包缺一不可。
二、HLS 编译器配置
安装完成后,HLS 编译器位于 <安装目录>/hls/bin 下,Windows 上为 i++,Linux 上为 i++ 脚本。要让命令行直接调用,需要把该目录加入 PATH,并设置 HLS_ROOT 环境变量。以 Linux 为例,在 ~/.bashrc 中追加:
export HLS_ROOT=/opt/intelFPGA_pro/23.4/hls
export PATH=$HLS_ROOT/bin:$PATH
export QUARTUS_ROOTDIR=/opt/intelFPGA_pro/23.4/quartus
Windows 下可在系统环境变量中新增 HLS_ROOT,并把 %HLS_ROOT%\bin 加入 Path。配置完成后执行 i++ --version,若返回编译器版本号与 Quartus 版本一致,说明路径正确。若提示找不到命令,优先检查 PATH 是否生效(重开终端),再检查安装目录是否被安全软件拦截。
i++ 能编译 C 代码,但在生成 RTL 或后续 Quartus 综合时会报器件不支持。三、许可证设置
Quartus Prime Pro 需要有效许可证才能综合。许可证有两种来源:一是 Intel 官方提供的 30 天试用许可证,二是正式授权文件。设置方式是通过 LM_LICENSE_FILE 或 QUARTUS_LICENSE_FILE 环境变量指向许可证文件,或在 Quartus 的 Tools → License Setup 中指定路径。
许可证文件中的 FEATURE 行必须包含 HLS 相关特性,否则即使 Quartus 能启动,HLS 综合也会失败。判断许可证是否生效,可在 Quartus 中打开 Tools → License Setup,查看 “License file” 与 “Licensed features” 列表;若 HLS 特性显示为 Not licensed,需要更换许可证或申请试用。常见错误是许可证绑定的网卡 MAC 与当前机器不符,此时 Quartus 会提示 license 无效,需重新生成绑定当前 MAC 的许可证。
四、第一个 HLS 工程:从 C 到 RTL
下面用一个向量加法示例走通完整流程。新建目录 hls_add,创建 add.cpp:
#include <HLS/hls.h>
component int add(int a, int b) {
return a + b;
}
其中 component 是 HLS 关键字,表示该函数将被综合成硬件组件。编译命令为:
i++ -march=Arria10 add.cpp -o add.prj
-march 指定目标器件架构,必须与已安装器件包一致;-o 指定输出工程名。执行后会在当前目录生成 add.prj 目录,其中包含 Verilog/VHDL 源码、组件报告和 Quartus IP 文件。若编译报错,常见原因是 HLS/hls.h 找不到(HLS_ROOT 未设置)或 -march 器件未安装。
编译成功后,用 i++ -march=Arria10 add.cpp -ghdl 可生成用于 ModelSim 的仿真脚本,运行 C 与 RTL 协同仿真,验证功能一致。最后在 Quartus 中新建工程,把 HLS 生成的 .ip 或 RTL 文件加入工程,分配引脚并执行全编译,即可得到可下载的 .sof 文件。
五、常见问题与判断依据
环境搭建阶段最容易卡在三处。第一,i++ 命令不可用,通常是 PATH 未生效或 HLS 组件未安装,用 which i++(Linux)或 where i++(Windows)确认。第二,编译时报 “march not supported”,说明 -march 指定的器件系列没有安装对应器件包,需回到安装器补装。第三,Quartus 综合时报许可证错误,需在 License Setup 中确认 HLS 特性已授权,并核对许可证绑定的 MAC 地址。
判断环境是否真正可用,最直接的标准是:i++ --version 能输出版本号,i++ -march=<目标器件> add.cpp -o add.prj 能生成 add.prj 目录且无报错,Quartus 能打开该工程并完成全编译。三者都通过,说明从 C 代码到 FPGA 比特流的链路已经打通,可以进入后续的算法加速与性能优化环节。