查看时序报告
1,创建网表
2,Read SDC
3,报告时钟:clock
4,报告时钟最大频率:fmax
5,查看关键路径余量(余量最小的路径)Report Top Failing Paths,若时序满足要求出现下面的画面
如果想查看时序报告,则需要手动去报告
填入你想查看的路径
若时序不满足要求出现下面的画面
Slack建立时间余量
From Node起点,源寄存器
To Node终点,目标寄存器
Launch Clock,源寄存器发射数据的时钟
Latch Clock,目的寄存器接收数据的时钟
Relationship: Launch Clock edge和Latch Clock edge的时间差,如果Launch Clock和Latch Clock 是同一个时钟,这个差值为一个周期,如果Launch Clock和Latch Clock 不是同一个时钟,则不是。
6,选中第一条数据,右键选中Report Timing,得到下面的图
我们结合下面的图进行解释
Tclk1:时钟信号从时钟源端口出发,到达源寄存器时钟端口的时间。
Tco:时钟上升沿到达寄存器时钟端到数据输出到寄存器Q端口的时间。
Tdata:数据从源寄存器Q端出发,到达目的寄存器D端的时间。
Tclk:时钟周期。
Tclk2:时钟信号从时钟源端口出发,到达目的寄存器时钟端口的时间
Tsu:寄存器要求的其数据端口的值必须提前于时钟上升沿达到其时钟端口的时间值。
Tskew:时钟从源端口出发,到达目的寄存器和源寄存器时钟端口的时间差值(Tclk2-Tclk1)
报告中的参数含义
第一个Clock Delay = Tclk1
第二个Clock Delay = Tclk2
Data Delay = Tco + Tdata
uTsu = Tsu
Clock Skew = -0.080
然而计算Tskew = Tclk2 - Tclk1 = 2.501 - 2.596 = -0.095
又从报告中看到
时钟悲观 Clock Pessimism = 0.015
那么-0.095+0.015 = -0.080
所以报告中Clock Skew = Tclk2 - Tclk1 + Clock Pessimism
为什么计算skew时要加上Clock Pessimism,
原因是软件在计算Tclk2的时候,会认为时钟从源端口出发按照最快的速度到达目的寄存器时钟端口,即得到的是最小值;
在计算Tclk1的时候,会认为时钟从源端口出发按照最慢的速度到达目的寄存器时钟端口,即得到的是最大值
但是Tclk1是按最慢的时钟速度,Tclk2是最快的时钟速度,对于Tclk1和Tclk2的公共路径部分显然是不合理的,过分悲观了,这个差值就是时钟悲观的值。
所以我们在计算Skew时加上Clock Pessimism
Clock Uncertainty
是时钟信号存在的抖动,比如10ns的时钟,我们没有办法产生完全精准的10ns时钟,可能产生的时钟是9.98ns或者10.02ns。
该值会被算入data require time
上一节的分析数据到达时间 Data Arrival = Tclk1+Tco+Tdata
报告中 数据到达时间 Data Arrival = Tclk1+Tco+Tdata
上一节分析数据需求时间 Data Require = Tclk+Tclk2-Tsu:
报告中的数据需求时间 Data Require = Tclk+Tclk2-Tsu+TClock Uncertainty + TClock Pessimism
上一节分析Slack=Tclk+Tskew-Tsu-Tco-Tdata
先前分析报告中Tskew=Tclk2-Tclk1+TClock Pessimism
则
Slack=数据需求时间-数据到达时间=Tclk+Tclk2-Tsu-+TClock Uncertainty+TClock Pessimism-Tclk1-Tco-Tdata