1

我目前正在使用 SDaccel(和 Vivado HLS)进行 FPGA 设计。我的设计有几个子组件,每个子组件的延迟(时钟周期)将取决于运行时的输入数据(因此 Vivado HLS 分析窗口无法为我提供准确的延迟值)。如何测量设计中每个组件的时序,以便找出瓶颈在哪里?

我找到了一个 pragma 指令(pragma SDS trace),但我不确定如何使用它来详细了解在执行不同输入期间系统中发生的情况。

Vivado_HLS 中是否有允许这样做的编译指示?如果是这样,我该如何使用它们?

谢谢

4

2 回答 2

1

SDS pragma 似乎仅在您使用支持 Zynq 和 Zynq MPSOC 的 SDSoC 时才适用。

如果您只是使用 Vivado HLS,您似乎需要以更手动的方式合并跟踪和测量代码。

在仿真中,您可以使用波形视图查看每个子组件何时接收数据并产生输出。

为此,我经常在我的 RTL 中添加跟踪或计数器逻辑,以便我也可以测量 FPGA 上的延迟和吞吐量。

我有一个常见的模式是有一个事件 FIFO,我将时间戳、事件类型和事件值排入队列。为了使其成为非阻塞,只有在 FIFO 中有空间时才入队。

于 2018-04-04T14:42:59.410 回答
0

除了 Jamey 的回答中解释的方法之外,Vivado HLS 用户指南还描述了一个TRIPCOUNTpragma,用于指定循环应采用的迭代次数。

此外,在使用 C/RTL 协同仿真时,报告应包含基于仿真期间使用的输入样本测得的延迟和吞吐量数字。

于 2018-04-07T18:37:53.417 回答