pragma HLS stable - 2023.2 简体中文

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

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

描述

标记为 stable 的实参在内核执行期间不得更改。仅当内核未运行时才能更改的数据(例如,提供配置数据的端口)应以 STABLE 编译指示或指令来加以标记。STABLE 编译指示只能用于控制驱动的任务建模,因为,在数据驱动的任务级并行化中,无法检测内核何时处于空闲状态。

STABLE 编译指示会将以下信息告知 Vitis HLS

  • 应用于端口的数据在正常操作期间保持稳定,但不是可以最优化的常量值。
  • 此端口的扇出无需寄存。

DATAFLOW 网络中的编译指示 STABLE 会告知编译器,网络中第一个数据流进程无需读取输入,网络中最后一个数据流进程无需写入输出。这样即可显著改善 II。

语法

#pragma HLS stable variable=<a>

其中:

variable=<a>
指定 STABLE 编译指示应用到的标量或阵列变量的名称。

示例

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

void dataflow_region(int A[...], int B[…] ...
#pragma HLS stable variable=A
#pragma HLS dataflow
    proc1(...);
    proc2(A, ...);