描述
配置前端编译的默认行为。
语法
config_compile [OPTIONS]
选项
-
-double_acc_bits=N - 浮点类型 double 的累加器精度。默认值为 269。
-
-enable_auto_rewind[=true|false] - 设为 TRUE 时,使用流水打拍循环的备用 HLS 实现,此实现支持自动循环回绕。接受的值为 TRUE 或 FALSE。默认值为 TRUE。
-
-float_acc_bits=M - 浮点类型 float 的累加器精度。默认值为 45。
-
-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 脚本。 -
-performance_budgeter <autodisable|enable> -
启用该选项后,顶层性能编译指示会对整个设计进行全面的性能分析。就像在从 A 点到 B 点的众多布线可能性中选择最有效的布线一样,它在整个设计中考虑多种优化策略,以识别达到性能目标的最佳路径。
“enable”(启用):激活性能预算,对整个设计进行综合性能分析。
“disable”(禁用):停用性能预算,阻止执行任何综合分析。
“auto”(自动):如果检测到性能编译指示,则自动为整个设计启用性能分析;否则保持禁用性能预算。
-
-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