部分标量依赖关系较难以解析,且通常需要更改源代码。标量数据依赖关系如下所示:
while (a != b) {
if (a > b) a -= b;
else b -= a;
}
此循环的当前迭代完成 a
和 b
的更新值计算后才能启动下一次迭代,如下图所示。
图 1. 标量依赖关系
如果必须得到上一次循环迭代结果后才能开始当前迭代,则无法进行循环流水打拍。如果 Vitis HLS 无法以指定的启动时间间隔进行流水打拍,那么它会增加启动时间间隔。如果完全无法流水打拍,则它会停止流水打拍并继续输出非流水打拍设计。