1. 高层次综合技术概述
高层次综合(High-Level Synthesis, HLS)是一种将算法级描述自动转换为寄存器传输级(RTL)设计的技术。不同于传统RTL设计需要手动编写Verilog或VHDL代码,HLS允许设计者使用C、C++或SystemC等高级语言描述硬件功能,然后通过工具自动生成对应的硬件实现。
这项技术最早可追溯到1980年代学术界的研究,但直到近十年才在工业界获得广泛应用。现代HLS工具如Xilinx Vivado HLS(现为Vitis HLS)、Intel HLS Compiler和Cadence Stratus等,已经能够处理复杂的算法描述,并生成质量接近手工编写的RTL代码。
关键认知:HLS不是"自动魔法"——它不会让非硬件工程师突然变成芯片设计专家。要获得优质结果,仍需深入理解硬件架构和优化技巧。
2. HLS核心工作流程解析
2.1 典型设计流程
一个完整的HLS设计流程包含以下关键步骤:
-
算法开发:使用C/C++编写功能代码,通常需要:
- 明确定义接口(输入/输出)
- 处理数据精度(定点/浮点)
- 考虑并行化机会
-
约束指定:通过pragma或GUI设置:
- 时钟频率目标
- 资源预算(LUT、DSP、BRAM等)
- 接口协议(AXI、FIFO等)
-
综合与优化:工具执行:
- 调度(Operation scheduling)
- 绑定(Resource binding)
- 有限状态机生成
-
结果验证:
- 功能验证(C/RTL协同仿真)
- 性能分析(时序报告、资源利用率)
2.2 关键优化技术
要获得高质量结果,需要掌握以下优化方法:
| 优化维度 | 技术手段 | 典型收益 |
|---|---|---|
| 流水线 | #pragma HLS pipeline |
提升吞吐量2-10倍 |
| 数据流 | #pragma HLS dataflow |
实现任务级并行 |
| 数组分区 | #pragma HLS array_partition |
减少访存瓶颈 |
| 循环展开 | ` |
