描述
有时,C/C++ 代码是以一连串运算来编写的,故而会在 RTL 中生成一长串运算链。如果时钟周期较短,这就可能增加设计中的时延。默认情况下,Vitis HLS 工具会使用结合律和交换律来重新组织运算。通过重新组织可以创建平衡的树结构以缩短运算链,从而以增加硬件为代价来缩短设计时延。
表达式平衡会重新排列运算符以构造平衡的树结构并降低时延。
- 对于整数运算,默认情况下表达式平衡处于开启状态,但可将其禁用。
- 对于浮点运算,默认情况下表达式平衡处于关闭状态,但可将其启用。
EXPRESSION_BALANCE 编译指示允许在指定作用域内禁用或明确启用此表达式平衡。
语法
将 C 语言源代码中的编译指示置于所需位置的边界内。
#pragma HLS expression_balance off
其中:
-
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