提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

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

  • 前言
  • 问题描述
  • 时序模型
  • 总结

前言

这两天,我第一次到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-in-setup-summary-and-hold-summary-why-is-the-data-path-delay-different?language=zh_CN
以下是我提的问题:

the same path in setup summary and hold summary ,why is the data path delay differenthere 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 <Slow|Fast> -delay_type <none|min|max|min_max> 来选择将某种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时间的话,那么在其他模型就都可以满足。

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

  1. 无效字符 java_Java知识查漏补缺

    Java基础知识查漏补缺 单元测试中,Mock对象的存在破坏了面向对象中的封装 mock对象:也成为伪对象,在测试中的利用mock对象来代替真实对象,方便测试的进行. java的封装性:指的是将对象的 ...

  2. JavaScript 基础知识查漏补缺

    JavaScript 基础知识查漏补缺(持续更新) 数据类型 var bool = '4.3' > '11' console.log(bool) // 结果为true,二者都为字符串,字符串之间 ...

  3. 【Oracle】基础知识查漏补缺

    前言 该文章内容不是学习oracle的基础知识,而是在大致了解oracle的基础知识上看我自己还有什么不知道或者不明白的地方,有兴趣的小伙伴可以在网上找找李兴华的oracle培训资料. SQL简介 S ...

  4. C++基本语法知识查漏补缺(一)

    以下是本人时隔一段时间再次复习c++基本语法的笔记.学过的知识时间久了就容易忘记.隔一段时间进行回顾. 一)复制构造函数 1.复制构造函数的参数是本类对象的引用 类名(const 类名& 引用 ...

  5. 这2万字的前端基础知识查漏补缺,请你收藏好

    一,JS基础 1.如何在es5环境下实现let 对于这个问题,我们可以直接查看babel转换前后的结果,看一下在循环中通过let定义的变量是如何解决变量提升的问题 源码 //源码 for(let i= ...

  6. 计算机组成原理知识查漏补缺

    1.符号扩展(T5) 定点数表示的数转换成具有不同位数的某种表示形式.整数的符号扩展在首,小数的符号扩展在尾.其根本目的是:表示的数值保持不变. 对于正数 新表示形式的所有附加位都用0进行填充 对于负 ...

  7. 查漏补缺Python的基础知识查漏补缺(随时改增)

    1.extend() 函数用于将一个或多个对象的内容合并到目标对象. 2.整体取消tab缩进[反方向缩进]:shift+tab键(pycharm) 3. a = [0 for _ in range(2 ...

  8. web前端基础知识查漏补缺,JavaScript面试题,赶紧收藏

    1介绍js的基本数据类型 js一共六种基本数据类型,分别是 undefined null boolean number string ,还有es6新增的symbol 和 es10新增的bigint. ...

  9. 嵌入式C语言基础知识查漏补缺--内存管理函数指针数组

    内存管理: 堆和栈的理解和区别 局部变量 静态局部变量 全局变量 静态全局变量 作用域 在定义变量的{}之内有效 在定义变量的{}之内有效 整个工程,所有文件 当前文件 生命周期 程序运行至变量定义处 ...

最新文章

  1. Tensorflow 变量的共享
  2. [MAC OS] 常用工具
  3. docker-compose部署nginx,挂载外置配置文件及项目
  4. cygwin 编译 android vlc,Cygwin 编译 VLC 问题
  5. springboot发送qq邮件
  6. 【今日CV 计算机视觉论文速览 第125期】Wed, 5 Jun 2019
  7. 未来通信设备的体系构架
  8. “约定优于配置”与Magento改造尝试四之block、helper和model载入
  9. Node Sass does not yet support your current environment解决
  10. Linux Shell编程笔记9 SSH和Screen工具
  11. jupyter生成数据集
  12. flutter 进度条_OkHttp 在 Flutter中的运用场景,Flutter语言连接网络的方法介绍
  13. LeetCode常见报错解释
  14. U盘插入电脑识别不出来,怎么解决?
  15. Android自定义View里面获取宽高及dp和px间的转换
  16. git commit --amend 用法
  17. 我的编程之路上的点滴记录【一】
  18. Java:详解Java中的异常(Error与Exception)
  19. Spring Data Rest学习篇----@Projection
  20. Linux页高速缓存与文件读写

热门文章

  1. linux挂载磁盘(自动挂载\解决重启后挂载磁盘消失的问题)
  2. Linux磁盘挂载和共享
  3. ES5ES6 day16
  4. scrapy_splash动态ip代理和请求头的动态修改
  5. 从ftp下载文件(word)到本地显示文件损坏或错误
  6. 前端之jquery-jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})区别
  7. 生存分析——cox模型及相关参数求解
  8. Ubuntu 命令(随时更新)
  9. 华东地区响应最快的DNS服务排名
  10. [全网最细]接口测试一般怎么测?接口测试的流程和详细步骤