set_directive_stable - 2021.2 Chinese

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

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

描述

STABLE 编译指示应用于 DATAFLOW 或 PIPELINE 区域的实参,用于指示在 DATAFLOW 区域入口和出口处生成同步时,DATAFLOW 或 PIPELINE 区域的输入或输出可忽略。这意味着该实参的读取进程(即相应的读取访问)无需包含在输入的任务级(即相应的细粒度)流水线的“第一阶段”内,写入进程(即相应的写入访问)亦无需包含在输出的任务级(即相应的细粒度)流水线的最后一阶段内。

此编译指示可在层级内的任意点(标量或阵列)指定,并且自动应用于该点以下的所有 DATAFLOW 或 PIPELINE 区域内。对于输入而言,STABLE 的影响体现在,DATAFLOW 或 PIPELINE 区域可以随时启动另一次迭代,即使尚未读取上一次迭代的值也是如此。对于输出,其隐含的影响体现在即使上一次迭代尚未完成,亦可写入下一次迭代。

语法

set_directive_stable <location> <variable>
  • <location> 是要在其中对指令进行约束的函数名称或循环名称。
  • <variable> 是要约束的阵列的名称。

示例

在以下示例中,不使用 STABLE 指令的情况下,proc1proc2 将同步,以确认其输入的读取操作(包括 A)。使用该指令后,A 将不再被视为需同步的输入。

void dataflow_region(int A[...], int B[…] ...
    proc1(...);
    proc2(A, ...);

此示例对应的指令脚本如下:

set_directive_stable dataflow_region variable=A
set_directive_dataflow dataflow_region