4. 开发工具链与设计流程

Agilex 系列(含 Agilex 7 FPGA、Agilex 5 SoC FPGA 及集成 AI Tensor Block 的版本)并不是靠单一工具完成开发的器件。它同时包含可编程逻辑、硬核处理器子系统(HPS,ARM Cortex-A 系列)、DSP 阵列与 AI Tensor Block,因此一条完整的设计链路往往横跨“硬件逻辑—高层次综合—AI 推理部署—主机加速”四个层面。理解 Quartus Prime Pro、oneAPI、OpenVINO、DSP Builder 与 HLS 工具各自负责哪一段、彼此之间用什么文件格式交接,是能否把算法真正落到 Agilex 上的关键。

各工具在链路中的定位

Quartus Prime Pro 是整条链路的“收口”工具:所有最终要变成 Agilex 配置位流(.sof/.rbf)的设计,无论来自 RTL、HLS 还是 DSP Builder,都必须进入 Quartus 完成综合、布局布线、时序收敛与引脚/接口约束。它同时提供 Platform Designer(原 Qsys)用于搭建 HPS、PCIe、外部存储器、AXI/AVMM 互联等系统级结构,是 SoC 集成的中枢。

DSP Builder 面向的是“信号处理数据通路”这一层。它以 Simulink 模型为输入,把定点/浮点运算、滤波器、FFT、抽取/内插等结构映射为 Agilex 的 DSP 阵列与逻辑资源,并可直接生成可综合的 HDL 或 IP。对于雷达、无线、音频、图像前端这类以数据流为核心的算法,DSP Builder 能在保持位真(bit-true)仿真的同时给出资源与时序的早期估计。

HLS 工具(如 Intel HLS Compiler / 高层次综合)面向的是“用 C++ 描述算法、自动生成流水线硬件”的场景。它适合控制逻辑较复杂、循环结构规整、需要 II=1 流水的算法,例如矩阵运算、图像滤波、加解密。HLS 输出的是 RTL 或 IP-XACT 形式的 IP,再交给 Quartus 集成。

oneAPI 与 OpenVINO 则处在“软件与 AI 推理”一侧。oneAPI 通过 DPC++/SYCL 让同一份代码面向 CPU、GPU、FPGA 加速卡编译,其中 FPGA 后端会生成 RTL 并调用 Quartus 完成位流构建;OpenVINO 面向推理部署,把训练好的模型(ONNX、TensorFlow、PyTorch 导出)经模型优化器转换为 IR,再通过插件在 Agilex 的 AI Tensor Block、DSP 或 HPS 上执行。二者与 Quartus 的关系是“上层生成、下层实现”。

Agilex 开发工具链协同工作流 算法 / AI 建模层 • Simulink 定点模型(DSP Builder) • C++ 算法(HLS) • DPC++/SYCL 内核(oneAPI) • ONNX / IR 模型(OpenVINO) IP / RTL 生成层 • DSP Builder → 可综合 HDL • HLS → RTL / IP-XACT • oneAPI FPGA 后端 → RTL • OpenVINO 插件 → 加速 IP Quartus Prime Pro • 综合 / 布局布线 / 时序收敛 • Platform Designer 系统集成 • 引脚 / 接口 / SDC 约束 • 生成 .sof / .rbf 位流 Agilex 器件内部结构(集成目标) HPS (ARM) DSP 阵列 AI Tensor Block 可编程逻辑 运行时与部署 OpenVINO Runtime(HPS 上推理调度) oneAPI Runtime(主机 + 加速卡) 性能/资源反馈迭代 交接格式:HDL / IP-XACT / .qip / .sof / .rbf / IR(.xml+.bin) / SYCL 内核 约束:SDC 时序、引脚分配、AXI/AVMM 接口、DDR 带宽与 Tensor Block 数据格式

协同工作流的实际组织方式

把上述工具串起来,通常按“自顶向下分解、自底向上集成”的方式推进。第一步是确定算法中哪些部分放 HPS(软件)、哪些放 DSP/AI Tensor Block(硬件加速)。判据是:规则、密集、可流水化的运算(卷积、矩阵乘、FIR、FFT)适合硬件;分支多、控制复杂、访存随机的部分留在 HPS 用 C/C++ 实现。

第二步是选择生成路径。若算法已在 Simulink 中完成定点建模,用 DSP Builder 直接生成 HDL 与 IP,并保留位真仿真结果作为后续比对的黄金参考。若算法是 C++ 且循环规整,用 HLS 加流水线指令(如 #pragma ii 1)生成 RTL。若是 AI 推理模型,先用 OpenVINO 模型优化器转 IR,再通过 FPGA 插件把子图映射到 Tensor Block 或 DSP。若希望同一份 SYCL 代码兼顾主机与加速卡,则用 oneAPI 的 FPGA 流程生成 RTL。

第三步是把生成的 IP 放进 Platform Designer,与 HPS、DDR、PCIe、DMA 互联,配置地址映射与中断,再在 Quartus 中加 SDC 约束、跑综合与布局布线。第四步是上板验证:用 Signal Tap 观察数据通路握手,用 System Console 读写寄存器,用 OpenVINO/oneAPI 运行时测端到端时延与吞吐。

一个可参考的配置示例

假设要在 Agilex 7 上实现一个 256×256 的 3×3 卷积加速,示例参数如下(属教学假设,非实测):输入 INT8,输出 INT32 累加,目标 200 MHz,单帧 65536 像素。用 HLS 描述行缓冲与 3×3 窗口,设置流水线 II=1,每周期处理 1 个像素;用 DSP Builder 生成乘加阵列映射到 DSP 块;用 Platform Designer 挂 AXI4-Stream 输入、AXI4-Lite 控制寄存器与 DMA;Quartus 中约束输入时钟 200 MHz、DDR 接口时序,并检查 DSP 与 BRAM 占用。上板后用 OpenVINO 或 oneAPI 运行时喂入图像,观察帧率与资源报告是否匹配预期。

工具选择速查:数据流规整、需位真仿真 → DSP Builder;C++ 循环规整、要快速迭代 → HLS;AI 模型部署 → OpenVINO;跨 CPU/GPU/FPGA 统一代码 → oneAPI;所有路径最终都汇入 Quartus Prime Pro 完成实现与位流生成。
常见误区:把 oneAPI 或 OpenVINO 当作“不需要 Quartus”的独立路径。实际上 FPGA 后端仍会调用 Quartus 做综合与布局布线,只是把 RTL 生成与约束部分自动化了;若时序不收敛或接口约束缺失,仍要回到 Quartus 与 Platform Designer 中排查。

理解这条链路的本质,是理解“谁生成、谁实现、谁运行”三层分工:DSP Builder、HLS、oneAPI、OpenVINO 负责把算法变成可综合的硬件描述或可部署的模型;Quartus Prime Pro 与 Platform Designer 负责把描述变成 Agilex 上真实可运行的位流与系统;运行时负责在 HPS 或主机侧调度与验证。三者边界清晰、交接格式明确,协同工作流才能稳定复现。