2. Versal开发工具链与设计流程

Versal ACAP 把标量处理系统(PS)、可编程逻辑(PL)、AI 引擎(AIE)和 DSP 引擎集成在同一芯片上,因此它的开发流程不再是“先做硬件、再写软件”的简单串联,而是围绕一个可被软件调用的平台展开。理解工具链的分工,比记住每个工具的名字更重要:Vivado 负责把硬件资源组织成一个可启动、可寻址的器件平台;Vitis 统一软件平台负责在这个平台上构建、编译、运行和调试软件;Vitis HLS 把 C/C++ 算法综合成 PL 侧硬件加速器;AI 引擎编译器把面向 AIE 的核函数编译成 AIE 阵列可执行代码。四者通过 XSA(Xilinx Support Archive)和平台元数据衔接,最终形成“硬件平台 + 软件镜像 + 加速器”的系统。

工具链分工与数据流

从输入输出看,Vivado 的输入是器件型号、时钟约束、IP 配置和管脚/接口约束,输出是包含硬件描述与元数据的 XSA;Vitis 的输入是 XSA、主机程序、加速器内核和链接脚本,输出是可下载到器件的 PDI 与可执行文件;Vitis HLS 的输入是 C/C++ 函数、接口协议和时钟目标,输出是 RTL 与 IP;AI 引擎编译器的输入是 AIE 核函数、图描述和 PLIO 连接关系,输出是 AIE 可执行镜像。它们之间的依赖关系可以用下面的数据流图表示。

Versal 工具链数据流与平台衔接 Vivado 器件配置 / 时钟 / IP 生成 XSA 硬件平台 Vitis HLS C/C++ → RTL / IP 接口协议与流水约束 AI 引擎编译器 AIE 核函数 / 图描述 生成 AIE 可执行镜像 Vitis 统一软件平台 主机程序 + 加速器链接 编译 / 运行 / 调试 输出 PDI 与可执行文件 Versal 器件 PS / PL / AIE / DSP 平台启动与软件运行 加速器被主机调用 XSA IP / RTL AIE 镜像 下载 / 运行 平台创建的关键交付物 • XSA:硬件平台描述,含 PS 配置、时钟、地址映射、IP 接口 • 平台元数据:启动方式、可用的加速器接口、AIE 图连接信息 • 软件运行环境:主机程序、内核镜像、链接脚本与设备树 • 软硬件分区结果:哪些函数留在 PS,哪些下到 PL 或 AIE

平台创建:从器件到可编程平台

平台创建是 Versal 流程的枢纽。在 Vivado 中新建工程时,先选器件(例如 XCVC1902),再配置 PS:使能 AXI 接口、DDR 控制器、时钟和复位。若设计中包含 AIE,需要在 IP Integrator 中例化 AI Engine 并连接 PLIO 与 AXI 流接口。完成综合与实现后,导出 XSA。这个 XSA 不是“比特流”那么简单,它携带了地址映射、时钟频率、中断号和 IP 接口信息,Vitis 正是靠这些信息自动生成软件侧的驱动和链接配置。

一个常见的教学示例是:PS 侧运行 Linux 或裸机主机程序,PL 侧放一个由 Vitis HLS 生成的矩阵乘法加速器,AIE 侧放一个卷积核。平台创建时,需要为加速器分配 AXI4-Lite 控制寄存器和 AXI4-Stream 数据接口,并为 AIE 图分配 PLIO 端口。若地址映射写错,主机程序访问加速器时会读到全 0 或触发总线错误,这是平台阶段最典型的排障点。

软硬件分区:把算法放到正确的位置

软硬件分区不是“能加速就加速”,而是根据数据规模、并行度、延迟要求和开发成本做权衡。PS 适合控制流、操作系统、文件与网络;PL 适合高并行、低延迟、位宽可定制的运算;AIE 适合规则的大规模乘加、卷积和矩阵运算。分区时可以先画出数据流:输入从哪里来、经过哪些计算、输出到哪里去。若某段计算在 PS 上耗时占比高且数据可批量传输,就考虑下到 PL 或 AIE;若它依赖大量分支和系统调用,则留在 PS 更合适。

分区结果会直接影响接口设计。例如把矩阵乘法放到 PL,需要决定用 AXI4-Stream 流式传输还是 AXI4 内存映射;流式适合连续数据,内存映射适合随机访问。把卷积放到 AIE,则需要把数据组织成 PLIO 能接受的格式,并考虑 AIE 阵列的级联与广播。分区一旦确定,Vitis 中的链接阶段就会把主机程序、PL 内核和 AIE 图链接成同一个可执行文件。

系统集成与运行验证

系统集成阶段,Vitis 会读取 XSA 和平台元数据,生成设备树、驱动和链接脚本,然后把主机程序、PL 加速器和 AIE 镜像打包。运行验证通常分三步:先确认平台能启动,再确认主机程序能枚举到加速器,最后确认数据通路正确。一个可操作的检查顺序是:用 Vivado 确认 XSA 导出无地址冲突;用 Vitis 确认链接阶段没有未解析的符号;上板后先跑一个最小主机程序,只读写加速器的 ID 寄存器,确认 AXI4-Lite 通路正常;再跑小规模数据,对比 PS 参考结果与加速器结果;最后逐步放大数据量,观察 DMA 或 PLIO 是否出现溢出。

平台创建时,建议把 PS 的 UART、DDR 和时钟配置先固定下来,再添加 PL 和 AIE 逻辑。这样 XSA 的地址映射变化最小,后续软件调试更稳定。
软硬件分区不是一次完成的。若发现 PL 侧时序不收敛或 AIE 侧数据供给不足,应回到分区阶段调整接口宽度、缓冲深度或计算粒度,而不是只在实现阶段反复试。