布线前先修复严重保持时间违例 - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 简体中文

对于存在严重保持时间违例 (> 0.4 ns) 的路径,最好在对设计进行布线前先减少保持时间违例,以便于布线器使用布线绕行来修复其余较轻微的保持时间违例。如果发现保持时间修复导致布线拥塞,那么在布线前减少保持时间违例是很有帮助的。每个 phys_opt_design 保持时间修复选项都使用不同资源,并具有特定目标。根据器件使用率和期望的影响来使用适当的选项至关重要。在运行 phys_opt_design 进行保持时间修复前,重要的是确认设计已包含正确约束的时钟树以便最大程度降低偏差。

在时序元件之间插入下降沿边缘触发寄存器可将时序路径分为 2 个半周期路径,从而显著减少保持违例。您可在 phys_opt_design 实现步骤中使用 -insert_negative_edge_ffs 选项插入下降沿边缘触发寄存器。仅当路径包含触发器驱动,并且时序元件之间最多仅含 1 个 LUT 时,才考虑对此路径执行此项最优化。路径上的建立时序裕量在最优化后必须为正值并且足够大,否则将放弃最优化。

下图显示了在驱动 CMAC 块的触发器后插入的下降沿边缘触发寄存器。执行最优化前,触发器与驱动之间的保持时序裕量为 -0.492 ns。插入下降沿边缘触发寄存器(以蓝色高亮显示)后,建立和保持时序裕量均为正值。

图 1. 通过插入下降沿寄存器修复保持时间违例问题

此外,还可将 LUT1 延迟插入数据路径以减少保持时间违例。要插入 LUT1 延迟,请在 phys_opt_design 实现步骤中使用以下选项之一:

-hold_fix
执行 LUT1 插入,仅考量具有足够的正建立时序裕量的最大 WHS 违例路径。
-aggressive_hold_fix
执行 LUT1 插入,此方式比标准 -hold_fix 选项更激进。-aggressive_hold_fix 最优化会考量是否对大量保持时间违例路径执行 LUT1 插入,可用于以牺牲 LUT 使用率为代价显著减少设计 THS。
注释: phys_opt_design -directive ExploreWithAggressiveHoldFix 指令会将 Explore 指令与 -aggressive_hold_fix 作为单一最优化操作一起运行。

下图显示了在驱动 ILKN 块的触发器之后插入 LUT1 延迟的情况。最优化前,从触发器到 ILKN 的路径是设计中的 WHS 路径,其保持时序裕量为 -0.277 ns。插入 LUT1 延迟(以蓝色高亮显示)之后,保持时序裕量和建立时序裕量均仍为正值。

图 2. 通过插入 LUT1 延迟修复保持时间违例问题