作者:Adam Taylor,Adiuvo Engineering 创始人
在 FPGA 功能验证中,仿真曾是确认设计功能正确性的最终依据。工程师可以在硬件测试前,通过仿真检查设计是否符合预期。但现代 FPGA 系统的复杂度不断提高,模拟几百微秒的运行过程可能消耗大量实际时间,而且对于许多实际应用,往往需要更长的时间来完成完成仿真。
许多 FPGA 设计包含多级 DSP 流水线、多千兆位高速接口、嵌入式处理器甚至混合信号前端。其中一些部分很难通过仿真进行完整验证。随着设计复杂度日益增加,功能验证所需的时间和覆盖范围也成为开发者面对的挑战。
AMD Vitis™ 硬件在环仿真(Vitis HIL)通过在真实硬件上以全速运行设计,同时系统其余部分则由可控的软件模型模拟,负责生成激励并分析结果。开发者可以通过这种方式检查性能问题和时序偏差,并利用近实时执行缩短仿真时间,测试更多场景。得益于开发板自动化控制、基于 Python™ 或 MATLAB® 的验证机制、持续集成流水线,以及成本较低的开发硬件,Vitis HIL 现已能够作为常规验证环节接入现有流程。
对于 FPGA 工程师而言,Vitis HIL 并不取代仿真,而是验证日益复杂的设计的必然步骤。
作为一种直接在器件上运行设计的原型验证方法,Vitis HIL 在软件仿真与完整系统硬件测试之间提供一种验证手段。以 Python 为例,开发者可以保留现有测试平台 (Testbench),将原先在软件中仿真的设计改为在实体评估板上运行。测试平台发送激励信号,硬件执行完整的异构设计,再将结果传回主机分析。
在目标硬件上运行相同的工作负载,通常比软件仿真或 RTL 仿真快得多。因此,开发者可以在更短时间内运行更多测试向量,提高验证效率。
Vitis HIL 也支持运行设计模块或子系统。开发者可以在完整系统硬件测试前,先检查部分的功能正确性,并初步评估其性能表现。
使用 AI 引擎验证 AI 和 DSP 工作负载
随着 DSP 和机器学习(ML)工作负载的不断增加,部分系统行为很难仅通过逻辑建模准确验证。如果器件中集成了能够以芯片级速度运行实际工作负载的硬话计算子系统时,Vitis HIL 就可以进一步扩展验证能力。
一个典型实例是AMD Versal™ AI 引擎架构, 它由 SIMD 向量处理器阵列、本地存储器和流式互连组成。在 Vitis HIL 流程中,通过在此架构上运行 AI 或 DSP 内核,开发人员可以在设计早期检查 AI 引擎与可编程逻辑(PL)的硬件集成情况。开发人员还可以延长硬件运行时间,将实际运行结果与协同仿真结果进行比较。
Versal AI 引擎最多包含 472 个 VLIW SIMD 向量处理器,通过专用硬化计算资源提供数十 TOPS 的算力,支持机器学习推理、波束成形、快速傅里叶变换(FFT)和有限脉冲响应(FIR)滤波器等 AI 与 DSP 工作负载。高速 AXI 流式互连在片上计算单元之间直接传输数据,无需内存往返,使AI引擎能够持续接收全速数据。每个计算单元附近的专用本地存储器用于就近保存操作数,在保持吞吐量的同时降低时延和功耗。此外,由于阵列及其互连均已硬化电路实现,开发者无需再为这些电路进行时序收敛,可直接使用 C++ 编程。
所以,与仅使用可编程逻辑(PL)的方案相比,AI 引擎可以提高单个器件的 DSP 计算能力。由于每个 AI 引擎计算单元都是针对 DSP 运算优化的向量处理器,因此开发者可以通过增加计算单元来扩展性能,而不是在 PL 中组合大量 DSP 模块和控制逻辑, 直接节省了可编程资源将向量化 DSP 内核迁移到 AI 引擎后,还可以释放 PL 中的查找表(LUT)和触发器(Flip-flop) 资源,可以被更高效地用于数据搬移、重排序、控制和系统集成。
因为 AI 引擎针对向量计算加速、流式数据传输以及本地内存访问进行了专门优化。所以与通用可编程逻辑中同等的数字信号处理(DSP)实现方案相比,这种方法还能降低动态功耗;
在明确了计算能力、资源占用和功耗方面的差异后,架构层面的问题变成了系统功能如何在 AI 引擎与 PL 之间划分。
核心思路是滤波器组、离散傅里叶变换(DFT)和其他计算密集型内核等高性能、可向量化的 DSP 功能,更适合使用 AI 引擎。它们可以利用 SIMD 向量架构、本地存储器和流式数据传输,在多个计算单元之间高效扩展。另一方面,诸如输入/输出置换、循环移位以及DMA 数据流处理等涉及数据移动与重排序的功能,则更适合在 PL 中实现。
Vitis 功能仿真用于在硬件测试前验证这种功能划分,自动创建必要的连接,并按需编译 AI 引擎图和 Vitis HLS 内核。该流程提供较高的仿真速度,在闭环环境中运行数百万个测试向量并评估相关指标。
在功能行为通过仿真验证后,就可以使用 Vitis HIL 在真实芯片上验证完整的异构设计。现有 Python 测试平台保持不变,输入数据通过数据流发送到实体 Versal 评估板,处理结果再传回主机(本例使用 AMD Versal AI Core 系列 VCK190 评估套件)。
该方案能够实现高速执行,呈现真实的内存与互连行为,并能及早验证功能正确性。值得一提的是,对于大型异构设计,Vitis HIL 消除了深度软件仿真中长达数小时甚至数天的等待时间。工程师现在只需几分钟即可在硬件上验证相同的工作负载,从而实现快速迭代,更早发现缺陷,并能探索比纯软件仿真环境下更为丰富的测试场景。此外,它既能提供真实的硬件行为,又具备高级 Python 测试环境所带来的高生产力。
因此,Vitis 功能仿真让您能够在硬件测试前,先通过 Python环境 快速检查设计要素, 随后协同仿真可在 RTL 层面验证 AI 引擎与 PL 的交互;在此基础上Vitis HIL 通过在真实芯片上验证完整的异构设计,使验证结果更接近实际运行情况。三方面共同构成面向 AI 引擎系统的完整验证流程。
探索实操项目,学习由Adam Taylor发布的详细分布教程,帮助您完整演练Vitis HIL仿真流程。
文章来源:Xilinx开发者社区