pragma HLS expression_balance - 2023.2 简体中文

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

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

描述

有时,C/C++ 代码是以一连串运算来编写的,故而会在 RTL 中生成一长串运算链。如果时钟周期较短,这就可能增加设计中的时延。默认情况下,Vitis HLS 工具会使用结合律和交换律来重新组织运算。通过重新组织可以创建平衡的树结构以缩短运算链,从而以增加硬件为代价来缩短设计时延。

表达式平衡会重新排列运算符以构造平衡的树结构并降低时延。

  • 对于整数运算,默认情况下表达式平衡处于开启状态,但可将其禁用。
  • 对于浮点运算,默认情况下表达式平衡处于关闭状态,但可将其启用。

EXPRESSION_BALANCE 编译指示允许在指定作用域内禁用或明确启用此表达式平衡。

语法

将 C 语言源代码中的编译指示置于所需位置的边界内。

#pragma HLS expression_balance off

其中:

off
在此位置关闭表达式平衡。
指定 #pragma HLS expression_balance 即可在指定作用域内启用表达式平衡。添加 off 则会将其禁用。

示例 1

my_Func 函数内禁用表达式平衡。

void my_func(char inval, char incr) {  
  #pragma HLS expression_balance off

示例 2

此示例会在 my_Func 函数内显式启用表达式平衡。

void my_func(char inval, char incr) {  
  #pragma HLS expression_balance