典型时序路径报告可显示源时钟路径和目标时钟路径从时钟根到时序单元时钟管脚的延迟详情。如下所述,源时钟和目标时钟采用不同延迟来进行分析,即使在其公共电路上也是如此。
图 1. 公共时钟树部分
此公共部分的延迟差异在偏差计算中引入了额外的消极因素。为避免不现实的裕量计算,通过称为时钟消极因素移除 (CPR) 值的延迟来对此消极因素予以补偿。
Clock Pessimism Removal (CPR) = common clock circuitry (max delay - min delay)
根据所执行的分析类型,对偏差加上或减去 CPR:
- 最大延迟分析(建立/恢复)
CPR 与目标时钟路径延迟相加。
- 最小延迟分析(保持/移除)
目标时钟路径延迟减去 CPR。
Vivado Design Suite 时序按如下所示方式报告每条时序路径的时钟偏差(在此例中执行保持时间分析):
- DCD - 目标时钟延迟
- SCD - 源时钟延迟
- CPR - 时钟消极因素移除
Clock Path Skew: 0.301ns (DCD - SCD - CPR) Destination Clock Delay (DCD): 2.581ns Source Clock Delay (SCD): 2.133ns Clock Pessimism Removal (CPR): 0.147ns
大多数情况下,CPR 准确性在布线前后会发生改变。以所含源时钟和目标时钟为相同时钟的时序路径为例,起点和端点时钟管脚由相同时钟缓冲器驱动。
布线前,公共点为时钟信号线驱动,即时钟缓冲器输出管脚。CPR 仅补偿从时钟根到时钟缓冲器输出管脚的消极因素。
布线后,公共点为器件架构中源和目标时钟路径共享的最后一项布线资源。此公共点不显示在网表中,因此,无法通过从时序报告中减去公共时钟电路延迟差值来直接检索对应 CPR。时序引擎根据不直接向用户公开的器件信息来计算此 CPR 值。