Intel® 高层次综合编译器专业版Pro版: 参考手册

ID 683349
日期 12/04/2023
Public
文档目录

12.2. hls_fpga_reg()函数

某些情况下,明确要求编译器在操作数和函数调用的返回值之间插入寄存器阶段有助于提高组件性能。使用hls_fpga_reg()函数在函数调用的操作数和返回值之间插入至少一个寄存器。

通常,您不需要使用此函数即可从组件获得所需的性能。

要有效使用hls_fpga_reg()函数,您必须了解数据路径的各个部分如何被放置在FPGA器件上,并且您通常将hls_fpga_reg()函数用于如下用途:
  • 断开数据路径中空间上相距较远的部分之间的关键路径,例如大型脉动阵列的处理单元之间的关键路径。
  • 减少由于组件实现中空间相距较远的部分对布局和布线工作造成的压力。
Intel® HLS Compiler并未提供关于应在何处添加hls_fpga_reg()函数调用的反馈。使用Intel Quartus Prime软件来确定应该在何处插入调用以实现组件性能的特定方面。
如果需要详细了解hls_fpga_reg()函数,请查看次教程,具体查看位置如下:
<quartus_installdir>/hls/examples/tutorials/best_practices/fpga_reg
句法
Thls_fpga_reg(T op)

其中,T可是是任意大小的类型

描述

hls_fpga_reg()函数指示 Intel® HLS Compiler在信号路径上插入至少一个硬件流水线寄存器,将操作数分配给返回值。该内置函数作为赋值操作运行,其中将操作数分配给返回值。除了标准赋值操作运行之外,赋值操作没有隐含的语义或功能含义。

使用说明
您可以嵌套hls_fpga_reg()函数调用来增加分配路径上插入寄存器的最少数量。由于每个函数调用都保证插入至少一个寄存器阶段,因此嵌套调用的次数提供了寄存器数量的较低下限。
例如,下面的代码片段告知编译器在分配路径上插入至少两个寄存器。
int out=hls_fpga_reg(hls_fpga_reg(in));
编译器在路径上插入两个或更多个寄存器。