syn.directive.stable - 2025.2 简体中文 - UG1399

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

Document ID
UG1399
Release Date
2026-01-22
Version
2025.2 简体中文

描述

syn.directive.stable 应用于 DATAFLOW(数据流)区域或 PIPELINE(流水线)区域的实参。该编译指示表明在 DATAFLOW 区域的入口和出口处生成同步时,可忽略该区域的输入或输出。在输入的任务级(相应的细粒度)流水线的“第一阶段”中无需包含对该实参的读取访问。在输出的任务级(相应的细粒度)流水线的最后一个阶段中无需包含写入访问。

可在层级中的任意点(针对标量或阵列)指定该编译指示。该编译指示会自动应用到低于层级中该点的所有 DATAFLOW 区域或 PIPELINE 区域。DATAFLOW 区域或 PIPELINE 区域可以启动另一次迭代,即使尚未读取上一次迭代的值也是如此。对于输出,即使上一次迭代尚未完成,亦可发生下一次迭代写入操作。

语法

syn.directive.stable=<location> <variable>
  • <location> 是用于约束指令的函数名或循环名。
  • <variable> 是要约束的阵列的名称。

示例

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

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

以下对该示例的指令进行了描述。

syn.directive.stable=dataflow_region variable=A
syn.directive.dataflow dataflow_region