我目前正在使用SDaccel(和Vivado HLS)进行FPGA设计。我的设计有几个子组件,每个子组件的延迟(时钟周期)将取决于运行时的输入数据(因此Vivado HLS分析窗口无法为我提供精确的延迟值)。我如何衡量设计中每个组件的时间,以便弄清楚我的瓶颈在哪里?
我找到了一个pragma指令(编译指示SDS跟踪),但我不知道如何使用它来详细了解系统在执行不同输入时发生的情况。
Vivado_HLS中是否有允许此操作的pragma?如果是这样,我如何使用它们?
由于 w ^
答案 0 :(得分:1)
SDS pragma似乎仅适用于您使用支持Zynq和Zynq MPSOC的SDSoC。
如果您只是使用Vivado HLS,看起来您需要以更加手动的方式合并跟踪和测量代码。
在模拟中,您可以使用波形视图查看每个子组件何时接收数据并生成输出。
为此,我经常在RTL中添加跟踪或计数器逻辑,这样我就可以测量FPGA上的延迟和吞吐量。
我的常见模式是有一个事件FIFO,我将时间戳,事件类型和事件值排入队列。为了使其无阻塞,只有在FIFO中有空间时才会入队。
答案 1 :(得分:0)
除了Jamey的答案中解释的方法之外,Vivado HLS用户指南还描述了一个TRIPCOUNT
pragma,它指定了一个循环应该采用的迭代次数。
此外,在使用C / RTL协同仿真时,报告应包含测量的延迟和吞吐量数字,基于模拟过程中使用的输入样本。