基于TimeQuest Timing Analyzer的时序分析笔记(二)
本文介绍TimeQuest Timing Analyzer工具一般使用及建立时间相关知识实际分析
首先我们应该知道时序分析离不开时钟,那么设计代码所描述的逻辑电路在相关器件上能最高运行在多少频率的时钟?
通过TimeQuest软件进行分析,并给出报告,时序分析一定是基于特定器件(要具体到特定速度等级)
时序分析一定是基于某个逻辑设计在该特定器件上经过布局布线之后的网表(该网表包含设计中每一个逻辑在该器件的什么资源上实现,而且还包括资源在器件内的具体位置,还包括信号从每个节点传输到下一个节点的具体延迟时间),时序分析不是对代码进行分析,而是对真实的门级传输路径进行分析。
1.首先对代码全编译
在编译报告中一般会看到如上图所示时序部分存在问题,此时假设语法其他方面无误。点进去可查看时钟、最高频率相关信息,我们还可以进入Tools>TimeQuest Timing Analyzer进行geng详细的操作及时序报告查看。其中每一项的含义可以自行搜索相关知识学习,在此只介绍本人学习到的一般流程。
2.Tools>TimeQuest Timing Analyzer,页面如下
3.双击Create Timing Netlist生成网表
4.双击Read SDC file生成SDC文件
5.查看时钟
clocks:1GHZ(这个是软件报告的设计中时钟信号的约束频率),这是因为如果用户没有对时钟信号加约束,软件自动对分析的时钟加入约束,并且会按照最大的可能来约束。
6.查看最高频率
7.查看Failing Path
对于Failing Path解释看下图,寄存器到寄存器之间路径有4条,最长的假设为第二条,在时序分析时会针对最长路径分析,如果最长路径时序都满足,其余路径也会正常。
8.找到最差路径,右键report timing,可以看到相关时序违例信息
此时主要我们还没有约束设计时的时钟
9.修改时钟约束暂时为100M,点时钟右键修改时钟周期以及占空比,run
10.再次点击Report Top Failing Path此时若没有错误路径,但是我们想看某条路经时序信息,可以手动报告路径,
11.左侧栏点击report timing,手动添加想要查看的路径,这里以刚才查看的最差路径输入对应端口
12.再次生成后看到如下图正常的时序信息
在waveform中看到我们在分析路径上各项延时:(公式看基于TimeQuest Timing Analyzer的时序分析笔记(一))
数据实际到达时间:Tclk1=2.631 Tco+Tdata=3.041, >5.672
数据需要到达时间: T=10 Tclk2=2.534 uTsu=-0.021 >12.555
Slack=6.883
工具分析为6.878?
解释:首先说明工具分析中与我们一般公式中不同点:
Tco、Tdata在一块分析;
Tsu用 uTsu表示;负的 uTsu合理,至少对于cyclone iv e器件合理
clock pessimism=0.015------时钟悲观度,该值会被算入clock skew=Tclk2-Tclk1+clock pessimism=2.534-2.631+0.015=-0.082与工具分析一致
原因:我们最终目的是分析Slack最小的路径,根据Slack=Tclk+Tskew-Tsu-(Tco+Tdata),若Slack最小,Tclk2需要按照最小情况算,Tclk1需要按照最大情况算,在时钟传输时到达目的和源寄存器时,开头有一段路径是重合的,时钟通过同一路径按照不同速率计算的时间在真实情况下是不存在的,我们在分析的时候过分悲观,导致skew偏小,所以需要补偿回来。
文档(基于TimeQuest Timing Analyzer的时序分析笔记(一))解释如下
Common clock path pessimism removal accounts for the minimum and maximum delay variation associated with common clock paths during static timing analysis by adding the difference between the maximum and minimum delay value of the common clock path to the appropriate slack equation.
通过在适当的slack方程中添加公共时钟路径的最大和最小延迟值之间的差,可以消除静态时钟分析期间与公共时钟路径相关的最小和最大延迟变化,从而消除公共时钟路径的悲观情绪。
Minimum and maximum delay variation can occur when two different delay values are used for the same clock path. For example, in a simple setup analysis, the maximum clock path delay to the source register is used to determine the data arrival time. The minimum clock path delay to the destination register is used to determine the data required time. However, if the clock path to the source register and to the destination register share a common clock path, both the maximum delay and the minimum delay are used to model the common clock path during timing analysis. The use of both the minimum delay and maximum delay results in an overly pessimistic analysis since two different delay values, the maximum and minimum delays, cannot be used to model the same clock path.
当两个不同的延迟值用于同一时钟路径时,可能会出现最小和最大延迟变化。 例如,在简单的设置分析中,使用到源寄存器的最大时钟路径延迟来确定数据到达时间。 到目标寄存器的最小时钟路径延迟用于确定数据所需的时间。 但是,如果到源寄存器和目标寄存器的时钟路径共享一条公共时钟路径,则在时序分析期间,最大延迟和最小延迟都将用于对公共时钟路径进行建模。 两者的使用最小延迟和最大延迟导致过于悲观的分析,因为不能使用两个不同的延迟值(最大和最小延迟)来对同一时钟路径进行建模。
clock uncertainty=-0.02------时钟不确定度,该值算入data require time
By default, the Timing Analyzer creates clocks that are ideal and have perfect edges.To mimic clock-level effects like jitter, you can add uncertainty to those clock edges.The Timing Analyzer automatically calculates appropriate setup and hold uncertainties and applies those uncertainties to all clock transfers in your design, even if you do not include the derive_clock_uncertainty command in your .sdc file. Setup and hold uncertainties are a critical part of constraining your design correctly.
The Timing Analyzer subtracts setup uncertainty from the data required time for each applicable path and adds the hold uncertainty to the data required time for each applicable path. This slightly reduces the setup and hold slack on each path.
默认情况下,时序分析器会创建理想的时钟并具有完美的边沿。为了模拟时钟级别的影响(如抖动),您可以为这些时钟边沿添加不确定度。时序分析器会自动计算适当的设置并保持不确定度并将这些不确定度应用于所有 设计中的时钟传输,即使您没有在您的.sdc文件中包括derive_clock_uncertainty命令。 建立和保持不确定性是正确约束设计的关键部分。
时序分析器从每个适用路径的数据所需时间中减去设置不确定性,并将保持不确定性添加至每个适用路径的数据所需时间中。 这会稍微减少设置并保持每个路径上的余量。
综上所述TimeQuest Timing Analyzer工具中:
Slack=Tclk+Tclk2-Tclk1+clock pessimism-uTsu-(Tco+Tdata)+clockuncertainty
= 10+2.534-2.631+0.015-(-0.021)-3.041-0.02=6.878
与工具分析一致。
说明:在平时时序分析公式中按照正常思路暂且不考虑clock pessimism、clockuncertainty,但是在运用工具分析时会考虑进去。
理论与实际相结合,本篇暂且介绍到这里,后续再学习。如有错误之处请指正。