1 TimeQuest时序路径详解01
- 基于TimeQuest软件来查看时序报告和分析时序路径
- 并回顾基于RTL的逻辑时需优化的基本思路
- 在关键路径中插入寄存器来优化时序
如果不对设计中加入约束,软件就会自动分析设计中的时钟,给出默认的约束,然后布局布线。
1.1 时序报告
- 从上到下、从左到右依次介绍图中红色框
-
Clocks Summary:查看时钟报告,看设计中有哪些时钟,以及其属性
-
Fmax Summary:报告时钟最大频率
-
Top Falling Paths:最坏路径
- Setup:Clk9M:这个时钟的最坏路径
-
Report Top Failling Paths:查看关键路径余量
- Slack:建立时间余量
- From Node:起点,源寄存器
- To Node:重点,目的寄存器
- Launch Clock:源寄存器发射数据的时钟 Clk9M
- Latch Clock:目的寄存器接收数据的时钟 Clk9M
- Relationship:Launch Clock edge 和 Latch Clock edge 的时间差 (同时钟则相差一个时钟周期)
- Clock Skew:时钟偏斜(前面章节介绍过)
在图3或图7中有
-
Clock Delay(Data Delay上面的):时钟信号到源寄存器的延迟(Tclk1)max。软件在分析这个值时,会认为时钟从源端口出发按照最慢速度到达目的寄存器时钟端口。实际Tclk1<=该值
-
Clock Delay(Data Delay下面的):时钟信号到源寄存器的延迟(Tclk2)min 。软件在分析这个值时,会认为时钟从源端口出发按照最快速度到达目的寄存器时钟端口。实际Tclk2>=该值
- 此时计算出来的TSkew=(Clock Skew)min=(Tclk2)min - (Tclk1)max值与图1中Clock Skew值不同(也就是我们报告中分析出来的)。这个分析出来的值对于Slack时最糟糕的情况。因为Clock Skew越大,Slack越大。所以分析的是Slack的最小值。
- 但是这就出现了一个矛盾:时钟在传输过程中,到达目的寄存器和源寄存器时,开头有一段路径是重合的。时钟通过同一段路径按照不同的速率计算出的时间在真实情况下是不存在的,我们在分析时钟的时候过度悲观,导致图中Clock Skew值偏小,所以需要把这一段路径过度悲观值补偿回来,这个值就是图中的(Clock Pessimism)。
- 所以有Clock Pessimism + TSkew(=(Clock Skew)min) = 图中上方Clock Skew
-
Clock Uncertainty:时钟不确定,可能提前或延后Clock Uncertainty出现,该值会被算入**data require time(数据需求时间)**中。
-
Data Delay:Clock Delay(Data Delay上面的) + Data Dealy (Tco+Tdata)= Data Arrival(数据实际到达时间)。
-
uTsu:目的寄存器的建立时间。建立时间可能小于零,这是合理的。起码对于Alter Cyclone IV E 这个系列的FPGA的寄存器时序模型是合理的,它是一个等效值
-
所以图中计算数据到达时间的公式为:Tclk1+Tdata + Tco ,与前面几节课中相同。
-
所以图中计算数据需求时间的公式为:Tclk+Tclk2-Tsu+Clock Uncertainty + Clock Pessimism。前几节课中介绍的是Tclk+Tclk2-Tsu。
-
所以图中计算时间余量为:Slack = Tclk+(Tclk2)min -(Tclk1)max + Clock Pessimism + Clock Uncertainty - Tsu - Tco - Tdata。前几节课中为Slack = Tclk + Clock Skew - Tsu - Tco - Tdata(其中Clock Skew =Tclk2 -Tclk1)
-
带入数据图中数据进去算,就可以得到计算出来的Slack值与报告中此条路径的Slack值相同
-
1.2 分析时序路径
- 使用TimeQuest查看具体路径信息
- 选中图1中一条路径,然后右击,点击report Timing ,如图2所示。
- 点击图2中的Report Timing,出现如图3所示界面。
- 但是图3中约束时钟不是我们想要的,可直接从Clocks Summary中修改约束的时钟,然后再分析。修改如图4所示。一旦修改成功后,图4中左侧界面选项都会变味黄色,代表需要重新分析(因为约束已经改变了)。再次双击Report Top Falling Paths重新运行,如果约束满足条件,则会显示没有失效路径。
- 但是如果我们仍然像查看这条路径的时序信息,此时可以手动报告路径。双击Tasks中Custom Reports下的Report Timing。如图5所示,补充后的界面如图6所示。结果显示界面如图7所示。