FPGA知识查漏补缺——为什么setup summary和hold suammay的data path延时不一致

本文转载自:十年老鸟的CSDN博客

注:本文由作者授权转发,如需转载请联系作者本人

前言
这两天,我第一次到xilinx的官方论坛去问问题,因为这几天有一个问题困扰着我,以前怎么注意的地方。以前我关注时序报表一般也就看setup summary,很少关注hold suammay。前两天突然想去看看hold suammay。以为应该和setup summary一样没啥疑问。结果却发现几乎每个节点的时延两个表都不一样!

问题描述
我们看这个时序模型

不管我们去分析setup slack还是hold slack 都是基于共同的路径来的,那理论上来说source clock path、data path、destination clock path 的时延数值在setup summary和hold suammay都应该一模一样才对。

但是,当我找到同一条路径进行分析的时候。却发现几乎每个节点的时延都不一样。

这是setup summary:

这是hold summary:

看上面这些红色框框,两个表每个节点的延时都不一样。所以感觉很莫名其妙,但为了能够找到答案呢,我就用我纯正的chinese English到xilinx官方论坛去发帖询问了。
https://support.xilinx.com/s/question/0D52E000074Nr5GSAS/the-same-path-i...

以下是我提的问题:

the same path in setup summary and hold summary ,why is the data path delay different

here are two pictures,source is the same, destination is the same . the first pic is setup summary ,the second is hold summary.I don't know why the data path delay is different?
and the source clock path is also different ?

欣慰的是,很快有了回复,也解答了我的疑惑。

STA is performed using a timing model called "slow corner" for setup and "fast corner" for hold, so even if path is the same, the path delay is different.
These factors are essential to guarantee operation over the process variation (P), operating voltage range (V), and operating temperature range (T).

slow corner、fast corner、PVT。这些陌生的名词似乎为我打开了一扇不熟悉的窗口

既然上面那位专家已经提点了我这些名词,自然要搜索一番能够搞明白一点

时序模型
1、OCV与PVT

即便是同一种FF,在同一个芯片上不同操作条件下的延时都不尽相同,我们称这种现象为OCV(on-chip variation)。OCV表示的是芯片内部的时序偏差,虽然很细小,但是也必须严格考虑到时序分析中去。

产生OCV的原因主要有PVT(Process / Voltage / Temperature)三个方面,而STA要做的就是针对不同工艺角(Process Corner)下特定的时序模型来分析时序路径,从而保证设计在任何条件下都能满足时序要求,可以正常工作。

通常PVT对芯片性能的影响如下图所示,

不同的PVT条件组成了不同的corner,另外在数字电路设计中还要考虑RC corner的影响,排列组合后就可能有超过十种的corner要分析。但是在FPGA设计中的静态时序分析一般仅考虑Best Case和Worst Case,也称作Fast Process Corner 和Slow Process Corner,分别对应极端的PVT条件。

2、Multi-Corner
Vivado中的STA支持多角时序分析(Multi-Corner Timing Analysis),会对以上两种corner下的时序同时进行分析,然后报告最差的情况。因为每个corner下的延时也会有一定的变化范围,所以时序分析还会考虑每种corner下的最大延时和最小延时。

如果一个设计在Best Case和Worst Case下都能满足时序要求,则可以推算这个设计在其允许的任何操作条件下都能保持正常工作。
这里要提醒大家,不要被corner的名字误导,实际上,同样一条路径可能在Slow Corner中满足时序却在Fast Corner中有时序违例。但是你在Vivado中看到的时序报告只会显示其对两种corner并行分析后选出的最差情况。

有特殊需要的情况下,可以在Vivado中通过config_timing_corners -corner -delay_type 来选择将某种corner应用于setup和/或hold的分析。在Report Timing Summary 和Report Timing的图形化界面也可以通过Timer Setting对corner做调整,具体界面详见稍后描述。

这样最大化考虑OCV的时序分析方法在处理同一条路径的共同时钟路径时也会应用不同的延时数据,从而会得出更为悲观的数据。为了真实反映路径延时情况,这部分延时必须被纠正,这就是CRPR(Clock Reconvergence Pessimism Removal)。

仔细观察时序报告便可以发现在报告路径的Slack之前有一行显示clock pessimism已经被考虑在内,在进行Setup Check时会加上一定的clock pessimism,而Hold Check时则会减去一定的clock pessimism。

下图显示了CRPR的来源以及在Vivado时序报告中的具体体现。

总结
现在我想想好像之前在quartus平台的时序分析的时候看到过类似于slow corner、fast corner的字眼,但之前应该也搜索过这些是什么意思,但完全没有印象。
此次是我带着问题来进行了解,突然感觉理解多了。

Setup分析的时候使用的是Slow Corner模型

Hold分析的时候使用的是Fast Corner模型

这两个模型是两个极端条件下模型。

实际上时序报表上也有一个提示,只是一开始没注意到

报表中已经提到了Slow Process Corner 和Fast Process Corner这两个名词了
所以
Setup报表分析分析的是max at slow process corner。在slow process corner模型下所有节点的时延都是最大的。在这种情况下如果能满足setup时间的话,那么在其他模型就都可以满足
同样的,
Hold报表分析分析的是min at fast process corner。在fast process corner模型下所有节点的时延都是最小的。在这种情况下如果能满足hold时间的话,那么在其他模型就都可以满足。

最新文章

最新文章