【问题标题】:Different resource utilization shows in vivado hls and vivadovivado hls和vivado中资源利用率表现不同
【发布时间】:2023-02-03 09:55:14
【问题描述】:

我在vivado HLS中实现了这个循环计算。

For (i = 0; i < 59; i++){
#pragma HLS unroll
    tmp = C[i];
    For (j = 0; j < 3; j++){
#pragma HLS unroll
         tmp = tmp + A[j][i] * B[j];
     }
     C[i] = tmp;
}

DSP48E 利用率结果为 189。

我导出这个模块并在 vivado 中运行综合。

DSP48 利用率结果为 39。

我想知道为什么结果大不相同?

【问题讨论】:

  • 好的。我可以尽力帮助你。请提供您选择的 FPGA 硬件,同时请提供 Vivado HLS 和 Vivado 版本。
  • 如果可能的话,请分享整个代码。也许我可以运行并查看问题到底出在哪里。

标签: c fpga vivado vivado-hls


【解决方案1】:

请记住,Vivado HLS(高层次综合)将始终提供估计.它永远不会提供精确的资源利用率,因为 Vivado HLS 中的编译器不执行 place and route。而 Vivado 综合为您提供了实际的资源利用率。

然而,话虽如此,你提到的 DSP48 差异的数量,这是一个相当大的差异,应该不是发生。以下是我的答案列表,供您解决此问题:

  • 您应该考虑的首要事情是确保您使用的是最新版本。好的,如果不是最新的,至少请确保 Vivado HLS 和 Vivado 版本相同。如果您使用不同的版本,HLS 估计和 Vivado 综合结果之间有时会存在差异。

  • 确保您选择了相同的底层 FPGA 硬件。

  • 您应该在启用 Vivado 综合的情况下运行 Vivado HLS 流程的导出步骤。这将在 Vivado Synthesis(而非 HLS Synthesis)中综合 Vivado HLS IP,然后返回实际使用的资源。请参考guide中的第108页。您可以具体阅读不同的综合选项。

  • Vivado 综合工具确实做了一些物理优化。例如,请检查 Vivado 中的 opt_design 优化。

【讨论】:

    【解决方案2】:
    • Synthesis 拥有详细的知识和策略来优化资源的使用。

    • 综合将“逻辑修整”下游未使用的总线部分。建议研究综合结果并确保输出总线温度是您期望的宽度。

    • 使用打开综合设计的 Vivado RTL 查看器 (F4) 浏览网表。

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多