在整个设计周期中,必须验证逻辑层次分布与目标 AMD 器件系列和器件速度等级的时钟频率目标是否相符。虽然限制含大量逻辑层次的路径的数量并不总是会导致时序收敛困难,但您可通过 Vivado 综合重定时选项对设计中最长的路径进行最优化,以便改进时序 QoR。
全局使用重定时选项通常会导致运行时间密度提高从而对功耗产生负面影响。因此,AMD 建议您在综合完成后或者使用最优化布局来识别在哪些具体层级中的含大量逻辑层次的路径上存在违例。如果最长路径的扇入或扇出中的路径所含逻辑层次较少,并且此类路径局限在中小型层级模块中,那么您可使用 BLOCK_SYNTH.RETIMING 块级综合策略。
下图显示了含 5 个 LUT 并受 600 MHz 时钟约束的关键路径。REG2 目标触发器用于驱动含单个 LUT 的时序路径,此 LUT 位于较 REG2 高 1 层的层级中。
除了使用 Vivado IDE 中的Schematic(板级原理图)窗口外,report_design_analysis
-logic_level_distribution
命令同样可用于复查特定路径的逻辑层次分布。此命令支持您判断为改进时序 QoR 而需要再平衡的路径数量。
您可使用 Vivado 综合中提供的 retiming_forward
和 retiming_backward
属性来控制特定寄存器或路径上的最优化。使用这些属性会对一组特定路径(而不是顶层模块或子模块)应用重定时最优化,从而减少面积开销。您可在 RTL 或 XDC 文件中应用这些属性。如需获取更多信息,包括使用情况和限制相关信息,请参阅
Vivado Design Suite 用户指南:综合(UG901)。
下图显示了 inst1/inst2 层级内 58 条具有 5 个逻辑层次并受 600 MHz 时钟约束的路径以及 32 条仅含 1 个逻辑层次的路径。
Vivado综合可通过将低逻辑层次路径内的寄存器迁移到高逻辑层次路径中来对逻辑层次进行再平衡。在此示例中,您可向综合 XDC 文件添加以下约束,以便在 inst1/inst2 层级上执行重定时:
set_property BLOCK_SYNTH.RETIMING 1 [get_cells inst1/inst2]
使用相同全局设置和经过更新的 XDC 文件重新运行综合后,可在 inst1/inst2 时序路径上运行定时时序分析,或者重新运行 report_design_analysis
命令以便验证是否最长的路径所含逻辑层次较少,如下图所示。关键路径当前为 (向后重定时),而从 REG2 到 REG4 的路径具有 3 个逻辑层次。