直接映射到 SRL 资源中 - 2023.2 简体中文

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

许多 C 语言算法都会在阵列间按顺序移动数据。此类算法会在阵列开始处添加新的值、在阵列中移动现有数据,并删除最早的数据值。此操作在硬件中是通过移位寄存器来实现的。

这种将移位寄存器从 C 语言实现到硬件中的最常用的方式会将阵列完全分区为各元素,并支持 RTL 中元素间的数据依赖关系暗示需使用移位寄存器。

逻辑综合通常会将 RTL 移位寄存器实现到 AMD SRL 资源中,这样即可有效实现移位寄存器。问题在于有时逻辑综合不使用 SRL 组件来实现 RTL 移位寄存器:

  • 在移位寄存器中间访问数据时,逻辑综合无法直接推断 SRL。
  • 有时,即使 SRL 处于理想状态,逻辑综合也可能因其他因素而在触发器中实现移位寄存器。(逻辑综合同样是一个复杂的过程)。

Vitis HLS 可提供了 1 个 C++ 类 (ap_shift_reg) 用于确保 C 语言代码中定义的移位寄存器始终使用 SRL 资源来实现。ap_shift_reg 类采用 2 种方法来执行 SRL 组件支持的各种读写访问。