读取和解释复杂性报告 - 2023.2 简体中文

Vivado Design Suite 用户指南: 设计分析与收敛技巧 (UG906)

Document ID
UG906
Release Date
2023-10-19
Version
2023.2 简体中文

前例所示的“Complexity Characteristics”(复杂性特性)表显示了顶层以下每个层级的 Rent 指数和平均扇出。一般情况下,复查这些指标时需要考量的范围包括:

  • Rent 指数:
    • 介于 0.0 到 0.65 之间:判定复杂性处于较低到正常水平,不会导致任何潜在问题。
    • 介于 0.65 到 0.85 之间:判定复杂性处于较高水平,当实例数量超过 25k 时尤其如此。
    • 高于 0.85:复杂性非常高,如果实例数量同样很高,那么实现期间设计可能失败。
  • 平均扇出:
    • 低于 4:判定为正常。
    • 介于 4 到 5 之间:实现工具可能在布局设计时无法避免拥塞。就 SSI 器件而言,当实例总数大于 100k 时,布局器将难以找到能布局在 1 个 SLR 内或分布到 2 个以上 SLR 的解决方案。
    • 高于 5:实现期间设计可能失败。

对于重要性较高的大型模块,必须解决 Rent 指数过高和/或平均扇出过高的问题。对于较小的模块(尤其是实例总数低于 10k 的情况下),Rent 指数和平均扇出可能较高,但仍可轻松成功完成布局布线。因此,必须始终将“Total Instances”(实例总数)列与 Rent 指数和平均扇出结合在一起进行审查。

复杂性特性有时可能无法预测布线拥塞。诸如目标器件中的 I/O 位置约束、布局规划和宏原语位置等其他因素还会限制布局解空间,从而引起拥塞。完成布局后才能通过拥塞报告对此类约束的影响进行更准确的分析。

在解读“Complexity Characteristics”表时需要考虑的其他事项:

  • 模块中 LUT6 所占比例的增高通常会导致平均扇出增大,从而可能导致 Rent 指数增大。
  • 大量 RAMB 和 DSP 的存在可能导致 Rent 指数增大,因为这些原语都具有大量连接。
  • Rent 指数较高或者平均扇出较高的层级实例有时不会导致问题,因为布局器在平面网表上工作,可将这些实例细分为更便于布局的逻辑组。如果存在明显不同寻常的模块,此报告可提供有关可能存在网表问题的区域的指示信息。
  • 如果分层实例所含 Rent 指数较低,那么与其他因素(例如,布局时有大量数据流流经该模块)相结合就可能导致拥塞。

当某个大型模块的 Rent 指数和/或平均扇出较高并导致拥塞和时序问题时,请考虑执行如下操作:

  • 减少模块的连接。保留层级,防止在综合内执行跨边界优化,这样可减少 LUT6 的使用,从而降低网表密度。
  • 综合时,减少 LUT 输入量。
  • 尝试在综合中禁用 LUT 组合。
  • 在实现期间使用“Congestion Strategy”(拥塞策略)或者使用 SpreadLogic 布局指令,这可能有助于缓解拥塞。如果设计目标为 SSI 器件,请尝试采用多种不同 SSI 布局指令。
  • 在 SLR 层次针对 SSI 器件或者在通用时钟区域层次使用简单的布局规划使拥塞的逻辑组保持独立,或者引导全局布局向类似先前明确的良好布局相似的方向发展。
  • 利用 QoR 建议和智能设计运行来自动解决拥塞问题。