赛灵思 Vitis HLS 工具可将 C 语言或 C++ 语言函数综合到 RTL 代码中,用于在可编程逻辑内进行加速。Vitis HLS 与 Vitis 核开发套件和应用加速设计流程紧密集成。
使用高层次综合 (HLS) 设计方法论的优势包括但不限于:
- 在 C 语言层次开发和确认算法,以便根据硬件实现详细信息在抽象层进行设计。
- 使用 C 语言仿真来确认设计并以比传统 RTL 设计更快的速度进行迭代。
- 使用最优化编译指示来创建高性能实现,从而控制 C 语言综合进程。
- 根据 C 语言源代码和编译指示创建多个设计解决方案,以探索设计空间并找到最优解。
- 以不同平台和硬件器件为目标,快速重新编译 C 语言源代码。
HLS 包含以下阶段:
- 调度可根据下列条件判定每个时钟周期内发生的运算:
- 运算的依赖关系何时已得到满足或者变为可用。
- 时钟周期长度或时钟频率。
- 运算完成所需时间(由目标器件来定义)。
- 可用资源分配。
- 整合任意用户指定的最优化指令。
提示: 时钟周期越长,或者如果目标器件越快,单个时钟周期内可完成的运算数量就越多,并且所有运算可能能够在一个时钟周期内完成。但如果时钟周期较短,或者目标器件较慢,那么 HLS 会将运算自动调度到多个时钟周期内。部分运算可能需要作为多周期资源来实现。 - 绑定会分配硬件资源用于实现调度的每项运算,并将运算符(例如,加法、乘法和移位)映射到特定 RTL 实现。例如,
mult
运算可在 RTL 内作为组合乘法器或流水打拍乘法器来实现。 - 控制逻辑抽取可创建有限状态机 (FSM),根据定义的调度按顺序执行 RTL 设计中的运算。