描述
配置前端编译的默认行为。
语法
config_compile [OPTIONS]
选项
-
-enable_auto_rewind[=true|false]
- 设为 TRUE 时,使用流水打拍循环的备用 HLS 实现,此实现支持自动循环回绕。接受的值为 TRUE 或 FALSE。默认值为 TRUE。
-
-ignore_long_run_time[=true|false]
- 不报告“long runtime”(运行时过长)警告。接受的值为 TRUE 或 FALSE。默认值为 FALSE。
-
-name_max_length <value>
- 指定函数名称的最大长度。如果名称长度超过阈值,则名称的最后一部分将被截位,并按需添加数字以使名称唯一。默认值为 256。
-
-no_signed_zeros[=true|false]
- 忽略浮点 0 值的符号类型,以便编译器对浮点运算执行主动最优化。接受的值为 TRUE 或 FALSE。默认值为 FALSE。重要: 使用该选项可能改变任意浮点运算的结果,导致 C/RTL 协同仿真不匹配。请确保测试激励文件容许差异,并检查差异的裕度,而不是精确值。
-
-pipeline_flush_in_task <always | never | ii1>
- 指定默认情况下,在
hls::tasks
中将刷新流水线 (flp
) 以降低 C/RTL 协同仿真中出现死锁的概率。该选项适用于以默认选项ii1
达成 II=1 的流水线。但您也可以通过应用always
启用在hls::tasks
或数据流中刷新流水线来指定该选项,或者也可以使用never
来完全禁用该选项。如需了解更多信息,请参阅 刷新流水线和流水线类型。 -
-pipeline_loops <threshold>
-
指定对循环和嵌套循环进行自动流水打拍的下限。对于单个未嵌套循环,如果该循环的循环次数大于指定阈值,那么该循环将采用流水打拍。默认值为 64,这会导致 Vitis HLS 对循环次数高于 64 的循环进行自动流水打拍。例如,如果循环次数为 65,那么该循环将按默认阈值进行流水打拍,但循环次数为 64 的循环则不执行流水打拍。
对于嵌套循环,将从最内层循环开始,对这些循环成对进行求值。如果内层循环次数超过指定阈值,那么会将其标记为流水打拍,并继续对成对循环中的父循环执行分析。如果父循环的循环次数超出指定阈值,那么也会将其标记为流水打拍,而内层循环(先前已标记为流水打拍)会展开到父循环内。如果还有其他循环,则会继续向上执行分析。
但其他最优化操作会影响此分析,并且可能阻碍您要执行的流水打拍行为。例如,您可能需要使用
loop_flatten off
防止平铺并促进循环流水打拍。 -
-pipeline_style <stp | flp | frp>
- 指定 Vitis HLS 基于以上指定的
-pipeline_loops
阈值,用于 PIPELINE 编译指示或指令的流水线的默认类型,或者用于循环流水打拍的默认类型。如需了解有关流水线样式的更多信息,请参阅 刷新流水线和流水线类型。重要: 这是提示,而非硬性约束。工具会检查设计启用流水打拍的条件。部分循环可能不遵循特定样式,如果需要,工具会还原为默认样式 (stp)。-
flp
- 可刷新流水线架构:当输入数据不可用时刷新,随后停滞并等待新数据。
-
frp
- 自由运行的可刷新流水线。即使输入数据不可用也可运行。如果由于流水线控制信号扇出减少而导致需要更好的时序,或者如果需要提升性能以免死锁,则可使用此类型。但此流水线样式可能功耗更大,因为即使没有数据也会对流水线寄存器进行计时。
-
stp
- 停止流水线。仅当输入数据可用时才运行,否则停滞。无需可刷新的流水线(例如,不存在因停滞引发的性能或死锁问题)时,这是默认风格。
-
-
-pragma_strict_mode[=true|false]
- 为位置错误或使用错误的编译指示启用错误消息。
-
-pre_tcl <arg>
- 指定在启动
csynth_design
命令前运行的 Tcl 脚本。 -
-unsafe_math_optimizations[=true|false]
- 忽略浮点 0 值的符号类型并启用关联的浮点运算,以便编译器对浮点运算执行主动最优化。接受的值为 TRUE 或 FALSE。默认值为 FALSE。注释: 使用该选项可能改变任意浮点运算的结果,导致 C/RTL 协同仿真不匹配。请确保测试激励文件容许差异,并检查差异的裕度,而不是精确值。
示例
对所含循环次数高于 30 的最内层循环进行流水打拍,或者如果最内层循环的循环次数小于或等于 30,则对其父循环进行流水打拍:
config_compile -pipeline_loops 30
忽略浮点 0 值的符号类型:
config_compile -no_signed_zeros
忽略浮点 0 值的符号类型并启用关联的浮点运算:
config_compile -unsafe_math_optimizations