大语言模型在HLS代码生成中的评估框架Bench4HLS
1. 项目概述
在硬件设计领域,高级综合(High-Level Synthesis, HLS)技术通过将高级编程语言(如C/C++)自动转换为寄存器传输级(RTL)代码,显著提升了开发效率。然而,要获得最优的功耗、性能和面积(Power, Performance, Area, PPA)结果,仍然需要深厚的专业知识和大量手动优化。近年来,大语言模型(Large Language Models, LLMs)在代码生成方面展现出强大能力,但其在HLS中的应用评估仍缺乏系统化的方法论。
Bench4HLS正是为解决这一问题而设计的端到端评估框架。它提供了170个经过人工验证的测试案例,覆盖从简单内核到复杂加速器的各种规模设计,支持自动化评估LLM生成的HLS代码在编译成功率、功能正确性、合成可行性以及PPA指标等方面的表现。
2. 核心设计思路
2.1 框架架构设计
Bench4HLS采用模块化设计,主要包含四个核心组件:
数据集构建模块:精心筛选和验证170个HLS设计案例,每个案例包含:
- 自然语言描述的设计规范
- 可合成的HLS实现代码
- 对应的测试平台
LLM集成接口:提供标准化的API,支持接入不同LLM进行HLS代码生成。框架已测试GPT-5、QwenCoder和Llama等主流模型。
自动化验证流水线:包含三个阶段的质量门控:
- 语法检查(编译通过性)
- 功能验证(仿真正确性)
- 硬件可行性(RTL生成能力)
PPA分析引擎:通过可插拔架构支持多种HLS工具链(如Xilinx Vitis HLS和Catapult HLS)的功耗、性能和面积评估。
2.2 关键技术创新点
Bench4HLS相较于现有解决方案的突破主要体现在:
全面的评估维度:不仅检查代码的语法和功能正确性,还深入分析生成的硬件设计质量(PPA指标)。
设计空间探索(DSE)集成:通过YAML配置文件定义探索空间,自动尝试不同的编译指示(如流水线、数据流、循环展开等),寻找Pareto最优解。
多级验证机制:在预合成C仿真、HLS协同仿真和后实现网表验证等多个阶段进行严格的功能验证,确保只有时序干净、功能正确的设计才会被评分。
3. 实现细节解析
3.1 数据集构建过程
数据集构建经历了三个关键步骤:
参考设计收集:从多个权威来源获取原始设计,包括:
- VerilogEval等Verilog基准测试
- Vitis-HLS入门示例
- CHStone、HLS4ML等专业HLS代码库
- 教科书参考实现
格式转换与指令生成:
- 使用GPT-5将Verilog设计转换为HLS-C++实现
- 人工验证转换结果的正确性
- 为每个设计生成自然语言描述的设计规范
测试平台开发:
- 创建自检测试平台(self-checking testbench)
- 确保测试平台能检测设计错误但自身不引入错误
- 人工验证所有测试案例的功能覆盖率
3.2 自动化评估流水线
评估流程通过算法1(见论文)实现全自动化,关键步骤包括:
编译阶段:使用Vitis HLS检查代码语法正确性,记录编译失败案例。
仿真验证:对通过编译的设计运行C仿真,比较输出与黄金参考。
综合评估:
- 生成RTL代码
- 执行布局布线
- 提取PPA指标(延迟、资源利用率、功耗)
DSE执行:根据YAML配置尝试不同优化组合,记录各配置下的PPA结果。
3.3 PPA分析实现
PPA分析通过以下方式实现客观评估:
资源利用率计算:
def calculate_utilization(generated, reference): return (generated - reference) / reference * 100正百分比表示生成的设计比参考设计使用了更多资源。
延迟评估:比较生成设计与参考设计的时钟周期数。
功耗分析:通过Vivado工具提取后布局布线的动态和静态功耗。
4. 评估方法与结果
4.1 实验设置
评估采用四款主流LLM:
- Qwen2.5-Coder (14B和32B)
- LlaMA 3.3 70B
- GPT-5
所有HLS流程使用Vitis HLS 2024.1,目标器件为Xilinx Artix-7 xc7a200tffv1156-1 FPGA。
4.2 主要评估指标
Pass@K:在top-K生成结果中至少有一个通过测试的概率,K∈{1,5,10}
PPA改进率:与人工优化参考设计相比的差异百分比
DSE有效性:通过设计空间探索获得的PPA提升比例
4.3 关键发现
从表II和图2-4可以看出:
模型性能对比:
- GPT-5表现最佳,Pass@10达到:
- 编译成功率:97.65%
- 仿真通过率:72.35%
- 综合成功率:71.76%
- 模型规模影响显著:Qwen从14B升级到32B后,各项指标提升约30%
- GPT-5表现最佳,Pass@10达到:
PPA结果:
- 对于简单设计(前100个测试案例),LLM生成结果接近参考设计
- 复杂设计(150+)中,LLM表现明显下降,PPA指标劣化显著
- GPT-5在约40%的案例中通过DSE获得>20%的PPA提升
规模扩展性:
- 较小模型(如Qwen2.5-14B)难以处理大型设计(120+)
- 模型容量与设计复杂度之间存在明显相关性
5. 应用指导与最佳实践
5.1 框架使用建议
模型选择:
- 优先考虑大于70B参数量的模型
- 闭源模型(如GPT-5)通常优于开源替代品
提示工程:
prompt = """你是一位HLS C++开发专家。请基于以下规范生成可综合的优化代码: 1. 只输出可综合的C++代码(不要额外解释) 2. 包含必要头文件(如ap_int.h) 3. 顶层函数签名必须与规范完全一致 4. 插入合适的HLS编译指示"""评估策略:
- 对于关键设计,建议设置Pass@10以获得更高成功率
- 始终进行DSE以发掘潜在优化空间
5.2 常见问题排查
编译失败:
- 检查是否包含所有必要头文件
- 验证HLS编译指示语法是否正确
仿真不匹配:
- 确认测试平台与设计规范的一致性
- 检查边界条件和异常处理
PPA不理想:
- 尝试不同的流水线策略(II值调整)
- 优化内存访问模式(数组分区/重组)
6. 扩展应用与未来方向
Bench4HLS不仅是一个评估工具,还可用于:
- LLM微调:基于评估结果针对性改进模型
- HLS教学:展示不同优化策略的效果
- 设计自动化:集成到CI/CD流程中实现质量管控
实际使用中发现,将DSE与LLM生成结合能获得最佳结果。例如,在图像处理加速器设计中,通过3轮迭代优化使功耗降低了28%。这提示我们,完全依赖LLM单次生成可能不如结合自动化探索的策略有效。
