1. Agilex HLS与RTL协同概述

1.1 Agilex FPGA架构特点

Intel Agilex FPGA系列基于10nm SuperFin工艺,在架构上融合了高性能逻辑、AI推理加速与先进封装技术。其核心架构组件包括:

架构组件 关键特性 对HLS/RTL协同的影响
HyperFlex寄存器 每个ALM内嵌额外寄存器,支持细粒度流水线 HLS编译器可自动插入寄存器级,减少时序收敛压力
DSP Block (FP16/INT8) 支持AI张量运算,单块可配置为多种精度 RTL可直接例化DSP原语,HLS通过pragma映射
M20K + eSRAM 片上BRAM容量达~200Mb,eSRAM延迟低至1ns HLS自动推断双端口RAM,RTL可精确控制bank分配
硬核PCIe Gen5 / CXL 支持Cache Coherent协议,带宽达32 GT/s RTL封装AXI接口,HLS通过HLS IP核直接调用
AI Tensor Block 专用矩阵乘法阵列,支持INT8/FP16 HLS通过Intel oneAPI DPC++库调用,RTL可定制数据流
架构要点: Agilex的HyperFlex架构使得HLS综合后的设计更容易达到时序收敛,但RTL级仍需对关键路径(如跨时钟域、高扇出信号)进行手动优化。
Agilex FPGA 架构核心组件与协同设计映射 Agilex FPGA 10nm SuperFin + HyperFlex HyperFlex 寄存器 细粒度流水线 DSP Block FP16/INT8 张量 M20K + eSRAM ~200Mb / 1ns延迟 HLS 自动流水线 #pragma HLS pipeline RTL 原语例化 DSP原语 / AI Tensor RTL Bank分配 双端口RAM精确控制 协同设计要点:HLS负责高吞吐流水线生成,RTL负责关键原语例化与存储bank精确控制

1.2 HLS开发流程简介

Agilex平台上的HLS开发遵循“C/C++ → 综合 → 验证 → 集成”的经典路径,但针对Agilex架构做了深度优化:

  1. 算法建模:使用C/C++/SystemC描述功能行为,支持定点、浮点、自定义精度类型。
  2. HLS综合:Intel HLS Compiler将高层次描述转换为RTL,自动推断流水线、并行度、存储结构。
  3. 接口综合:通过#pragma HLS interface指定AXI4-Stream、AXI4-Lite、FIFO等接口协议。
  4. 协同仿真:HLS生成的RTL与原始C/C++进行交叉验证,确保功能等价。
  5. IP封装:生成RTL IP核,导出为Quartus工程可用的.qsys或.ip文件。
HLS优势: 开发效率提升3~5倍,设计迭代周期从周级缩短到天级。但HLS对时序细节的控制粒度不如RTL,尤其在跨时钟域同步、高速I/O接口方面。
Agilex HLS 开发流程 算法建模 C/C++/SystemC HLS综合 流水线/并行推断 接口综合 AXI4/FIFO/Stream 协同仿真 C vs RTL交叉验证 IP封装 .qsys/.ip导出 HLS流程关键:接口综合阶段需与RTL侧接口协议对齐,避免时序失配 HLS ↔ RTL 协同接口对齐点 AXI4-Stream握手时序 / 跨时钟域同步 / 存储bank地址映射

1.3 RTL设计优势

尽管HLS大幅提升了开发效率,RTL设计在以下场景中仍不可替代:

设计维度 RTL优势 典型应用场景
时序精确控制 可指定每个时钟周期的信号行为,精确到皮秒级 高速I/O接口(DDR5、SerDes)、跨时钟域同步器
资源精细优化 手动控制LUT/FF/DSP/Bram的映射与复用 面积受限设计、低功耗优化、关键路径重定时
原语直接例化 直接调用Agilex硬核原语(AI Tensor、eSRAM、PLL) AI推理加速器、高精度DSP链、时钟管理单元
调试与验证 Signal Tap逻辑分析仪可直接观测内部节点波形 硬件原型验证、时序违例定位、接口协议调试
注意: RTL设计周期长、验证成本高,不适合算法频繁迭代的场景。HLS与RTL协同设计正是为了取长补短——算法部分用HLS快速迭代,接口与关键路径用RTL精确控制。

1.4 协同设计的必要性

在Agilex平台上,HLS与RTL协同设计不是可选项,而是高性能系统级设计的必然选择。核心原因如下:

  • 接口时序对齐需求:HLS生成的AXI4-Stream接口默认使用valid/ready握手,但RTL侧可能要求精确的tkeep/tlast控制或特定延迟周期。两者必须通过接口时序契约对齐。
  • 跨时钟域(CDC)处理:HLS通常假设单时钟域,而实际系统包含多个时钟域(如PCIe 500MHz、DDR4 1200MHz、逻辑核心300MHz)。RTL负责CDC同步器设计,HLS通过#pragma HLS clock声明多时钟域。
  • 存储层次协同:HLS自动推断的BRAM结构可能无法满足RTL侧对bank划分、读写端口、延迟周期的精确要求。需要RTL提供存储接口封装,HLS通过#pragma HLS resource指定存储映射。
  • 性能瓶颈突破:HLS综合后的设计在吞吐率上通常能达到RTL的80%~90%,但关键路径(如AI Tensor计算链、高速数据搬移)仍需RTL手动优化以达到100%性能。
协同设计核心原则: HLS负责“做什么”(算法功能),RTL负责“怎么做”(时序/接口/资源精确控制)。两者通过接口时序对齐契约实现无缝集成。
HLS与RTL协同设计必要性 HLS 设计域 • 算法快速迭代 • 高吞吐流水线 • 自动接口综合 RTL 设计域 • 时序精确控制 • 原语直接例化 • CDC/存储精细管理 协同设计接口 接口时序对齐契约 AXI4-Stream / FIFO / 自定义 为什么必须协同? 1. HLS无法精确控制跨时钟域同步器结构 2. RTL无法快速迭代算法级优化 3. 接口时序失配导致系统级功能错误或性能下降 4. 存储层次不协同造成带宽瓶颈或资源浪费

1.5 协同设计典型工作流

在Agilex项目中,HLS与RTL协同设计通常遵循以下工作流:

阶段 HLS侧活动 RTL侧活动 接口对齐检查点
架构定义 算法级C/C++建模,确定数据流与吞吐需求 定义时钟域、复位策略、存储拓扑 接口协议选择(AXI4-Stream / FIFO / AXI4-Full)
接口设计 使用#pragma HLS interface声明接口时序 编写RTL接口封装模块,定义握手时序参数 valid/ready延迟周期、tkeep/tlast宽度、背压机制
综合与集成 HLS综合生成RTL IP,导出.qsys组件 在Quartus中例化HLS IP,连接RTL逻辑 时序约束(set_max_delay / set_multicycle_path)
验证与调试 HLS协同仿真(C vs RTL) Signal Tap抓取接口波形,验证握手时序 接口波形对齐检查:valid/ready上升沿对齐、数据采样窗口
实践建议: 在架构定义阶段就建立接口时序对齐文档,明确每个接口信号的延迟周期、握手协议、背压容忍度。这份文档是HLS与RTL团队之间的“契约”,后续所有设计决策以此为准。