Intel® Quartus® Prime Pro Edition用户指南: Timing Analyzer

ID 683243
日期 10/02/2023
Public
文档目录

1.2.10.2. 包含锁存器的时间借用

Intel® Quartus® Prime Timing Analyzer处理对电平敏感的锁存器的方式类似于寄存器。Timing Analyzer将锁存器使能管脚看作一个时钟管脚来处理,同时对时钟关系进行适当修改。

您可以在Timing Analyzer Tasks窗格中运行Reports > Constraint Diagnostics > Check Timing来查看设计中对电平敏感的锁存器的列表。

锁存器时间借用的实现要求您使能Dynamic borrowing模式(update_timing_netlist -dynamic_borrow)。否则,Timing Analyzer对锁存器计算出零时间借用。在Dynamic模式下,Timing Analyzer只是报告电路中实际发生的借用时间(对于在SDC约束中指定的时钟频率),而实际上并没有以任何方式优化借用。

对于锁存器,设置关系与锁存器的开口边沿有关,支持时间借用。保持关系与锁存器的闭合边沿有关。例如,从一个正寄存器到另一个正寄存器的路径有一个时钟周期的默认设置时钟关系。从正寄存器到正的(open-high),对电平敏感的锁存器的路径有一个零时钟周期的默认设置时钟关系,以及任何时间借用值。

Timing Analyzer将往返于一个锁存器的路径视为两个单独的路径。例如,在positive register--> positive latch--> negative register传输中,Timing Analyzer不分析整个register-->register传输,即使您希望锁存器在整个传输过程中都是透明的。Timing Analyzer分别对往返锁存器的路径进行分析并报告。

Timing Analyzer自动计算可用于每个锁存器的最大时间借用量。通常,最大时间借用量大致等于时钟周期的一半。确切的时间借用量基于:

  • 打开和关闭锁存器边沿的时序
  • 物理锁存器实现(锁存器的closing-edge µtSU)
  • 时钟不确定性和其他影响

时间借用从不会超过最大借用值。然而,您可以通过set_max_time_borrow SDC约束指定一个更小的最大借用时间。例如:

#Borrow at most 3ns at all "lat*" latches: 
set_max_time_borrow 3 [get_registers lat*]

通过负借用窗口指定一个时钟会导致负最大可借用时间,这等效于最小脉宽违规。例如,如果半个时钟周期小于锁存器的闭合沿µtSU,则会发生这种情况。如果发生此类违规,则警告表明设计无法通过时序。

注: 无论您使用时间借用与否,都不要依赖于包含锁存器的任何时钟域的时序分析Fmax Summary报告。这种时钟域的Fmax Summary值不包含借用,因此会有很大误差。