config_compile - 2023.2 简体中文

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

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

描述

配置前端编译的默认行为。

语法

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 来完全禁用该选项。如需了解更多信息,请参阅 刷新流水线和流水线类型
重要: 同时启用 config_compile -enable_auto_rewind 选项时,刷新流水线 (flp) 与 PIPELINE 编译指示或指令中指定的 rewind 选项兼容。
always
hls::tasks 或数据流中始终使流水线可刷新,忽略 II。
never
从不使流水线变为可刷新,除非其他指令或编译指示明确覆盖此设置。
ii1
hls::tasks 中将可实现 II=1 的流水线设为可刷新。这是默认设置。
-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