同样是synthesis(综合) HLS和Vivado里面是有什么区别
也不看看HLS的全称,高层次综合,HLS (High-Level Synthesis)
1. Vitis HLS 综合:设计师画蓝图
- 这是什么? 高层次综合 (High-Level Synthesis)。
- 输入:您的 C/C++/OpenCL 代码。这就像是您对设计师提出的需求:“我想要一个三室两厅、带阳台、现代风格的房子。”
- 输出:RTL 代码 (Verilog 或 VHDL)。这是设计师根据您的需求,画出的一套非常详细的建筑施工蓝图。蓝图会明确指出哪里是承重墙,哪里是普通墙,水管和电路怎么走,房间的布局和尺寸等等。
- 目标:HLS 的目标是将一个算法或行为(C++代码),自动转换成一个具体的硬件微架构(RTL代码)。它会决定:
- 使用什么样的状态机来控制流程。
- 数据如何在寄存器之间流动(创建流水线 Pipeline)。
- 如何与外部进行通信(创建 AXI 接口)。
- 如何访问内存。
在这个阶段,我们只是得到了一个非常详细的、通用的硬件“蓝图”,但它还没有变成实体。
2. Vivado 综合:施工队盖房子
- 这是什么? 逻辑综合 (Logic Synthesis)。
- 输入:HLS 生成的 RTL 代码 (建筑蓝图)。
- 输出:一个门级网表 (Netlist)。这相当于施工队拿着蓝图,清点出需要用到的具体建筑材料清单:“我们需要 157 个 A 型触发器、273 个 B 型查找表、0 个 DSP 模块… 并且要把它们这样连接起来。”
- 目标:Vivado 综合的目标是将这份通用的“蓝图”(RTL代码),用您选定的某款具体 FPGA 芯片(例如
xczu7ev-ffvc1156-2-e
)中实际拥有的、物理存在的逻辑资源(如 LUT、FF、BRAM、DSP)来实现。- 映射 (Mapping):它会把蓝图中的“墙”(逻辑运算
a+b
)翻译成用“红砖”(LUTs)来砌。 - 优化 (Optimization):施工队会想办法优化,比如用更少的砖(面积优化)或者让电流跑得更快(时序优化),来确保房子盖得又快又好,满足您在 Vivado 中设定的时钟频率等性能指标。
- 映射 (Mapping):它会把蓝图中的“墙”(逻辑运算
总结:两者的核心区别
特性 | Vitis HLS 综合 | Vivado 逻辑综合 |
---|---|---|
抽象级别 | 从 算法 到 架构 | 从 架构 到 物理逻辑门 |
工作内容 | 将 C++ 的行为翻译成电路蓝图 (RTL) | 将电路蓝图 (RTL) 翻译成具体的 FPGA 逻辑单元 (LUT, FF) |
好比是 | 设计师(规划功能和结构) | 施工队(使用具体材料建造) |
所以,您必须先经过 HLS 综合,再进行 Vivado 综合。HLS 负责把您的“想法”变成“图纸”,而 Vivado 负责把“图纸”变成您 FPGA 上实实在在运行的电路。这个流程缺一不可。