静态时序分析(static timing analysis)
静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation)。但STA只会去分析合适的时序,而不去管逻辑操作的正确性。
其实每一个设计的目的都相同,使用Design Compiler和IC Compile来得到最快的速度,最小的面积和最少的耗能。根据设计者提供的约束,这些工具会在面积,速度和耗能上做出权衡。
更深层的来看,STA一直都寻找一个问题的答案 : 在所有条件下,当时钟沿到达时,数据会正确地在每个同步device的输入端正确显示吗?
这问题可以用下图来表示:

如图中所示,虚线表示了时序路径。两者使用了同一个时钟驱动,理想情况下FF1的数据变化之后在下个时钟沿能够准确到达FF2。
两者的时序图如下:

在FF1的时钟沿到来时,会把FF1的D端的数据送入flip-flop。在经过一个clock-to-Q的延时之后,数据会送入FF1的Q端。此过程叫做时序路径的launch event。
信号经过了两个FF之间的组合逻辑之后,到达了组合逻辑的输出,也就是FF2的输入端(FF2.D),这个叫做arrival time。
然而数据并不是在时钟沿到达FF2的同时到达,而是要比时钟沿早到那么一点点。早到的这个时间叫做required time,不同的device的required time不一样。
数据装载到FF2的时间点叫做capture event。
device的required time和数据到达的时间(arrival time)两者之差则叫做slack。图中所示,数据比时钟早到很多,则slack为正。如果数据刚好在required time时间点到达,则slack为0,若是数据晚到的话则是负了。
例如required time是launch event之后的1.8ns,而arrival time是launch event之后的1.6ns,则slack = 1.8-1.6=0.2ns。
以上所述的时序check又叫做 setup check,用来检测数据能否在时钟沿到来之前能够快速到达。
还有一种时序check叫做 hold check,用来检测时钟沿到达之后,数据是否能够维持一定的时间的有效状态。
下图描述了一个hold check的例子:

如图所示,FF1 FF2之间的组合逻辑很短,只有一个NAND门,与此同时在两个FF的时钟却有很长的delay。
时序图如下所示:

FF1的内容和前例一样,在launch edge时候,FF1.D的内容载入到FF1,经过clock-to-Q延时之后到达FF1.Q。 经过一个很短的组合逻辑之后(NAND gate),数据到达了FF2.D端。此情况下setup check 很容易满足,因为数据很早就到达了FF2.D。
然而来看FF2, FF2应该在CLK信号的第二个上升沿来抓取数据,然而数据并没有在capture edge之后保持足够的时间来满足hold check,数据在延时后的CLKB的上升沿之前产生了变化,传输的数据并不是我们想要的数据。
解决此问题的方法也很简单,增加组合逻辑的延时或者减少时钟的延时。
默认情况下,综合工具会自动修复setup violation,因为setup的修复会更困难。 使用 set_fix_hold命令的话会在compile阶段中修复hold violation。
两种时序检测会考虑不同的条件。例如对于setup check来说,它会考虑组合逻辑中最长最慢的路径,还有最早的arrival time路径。而对于hold check来说,它会检测最短最快的组合逻辑路径和最晚的arrival time。
下图描述了一个路径选择的例子:

如上图,setup check会检测更长的3个门,而hold会检测更短的2个门。
而路径的种类则如下图:

· clock path: 此路径从clock input port或者cell pin开始,通过一个或多个buffer或者inverter到达时序device的clock pin来检测数据的setup 和 hold
· Clock-gating path: 此路径从clock-gating element 开始来检测clock-gating的setup和hold
· Asynchrounous path: 从input port 到一个时序element的非同步set或clear pin来检测 recovery 和 removal
· Data-to-data: 使用set_data_check命令来指定的自定义路径。
静态时序分析(static timing analysis)的更多相关文章
- 静态时序分析(static timing analysis) --- 时序路径
时序分析工具会找到且分析设计中的所有路径.每一个路径有一个起点(startpoint)和一个终点(endpoint).起点是设计中数据被时钟沿载入的那个时间点,而终点则是数据通过了组合逻辑被另一个时间 ...
- static timing analysis 基础
此博文依据 特权同学在电子发烧友上的讲座PPT进行整理而成. static timing analysis 静态时序分析基础 过约束:有不必要的约束,或者是约束不能再某一情况下满足.——约束过头了 ...
- FPGA STA(静态时序分析)
1 FPGA设计过程中所遇到的路径有输入到触发器,触发器到触发器,触发器到输出,例如以下图所看到的: 这些路径与输入延时输出延时,建立和保持时序有关. 2. 应用背景 静态时序分析简称STA,它是一种 ...
- FPGA静态时序分析基础
FPGA静态时序分析基础 基本概念 Skew: 时钟偏移 Skew表示时钟到达不同触发器的延时差别,Tskew = 时钟到达2号触发器的时刻 - 时钟到达1号触发器的时刻. Jitter: 时钟抖动 ...
- Django基础,Day7 - 添加静态文件 static files
添加css样式文件 1.首先在app目录下创建static文件夹,如polls/static.django会自动找到放在这里的静态文件. AppDirectoriesFinder which look ...
- TimeQuest 静态时序分析 基本概论
静态时序分析 基本概念 [转载] 1. 背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高 ...
- 静态导入Static import
静态导入Static import 要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类. 使用静态导入可以使被导入类的静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名 ...
- 创建静态库Static Library(Framework库原理相似)
在项目开发的过程中,经常使用静态库文件.例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节. 简介: 库是一些没有ma ...
- div的默认position值是静态的static
div的默认position值是静态的static,如果相对父元素使用Position:absolute的话,需要手动在父元素上添加Position.
随机推荐
- C标准库<string.h>实现
本文地址:http://www.cnblogs.com/archimedes/p/c-library-string.html,转载请注明源地址. 1.背景知识 <string.h>中声明的 ...
- 网易新闻iOS版使用的18个开源组件
转载来自:http://www.jianshu.com/p/8952944f7566 原文最后编辑时间:2015.05.19 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库.组件 1.AFN ...
- 整理了一些常用的jQuery动画事件
部分jQuery常用的动画函数,整理了一下,在做交互式页面的时候挺有用的 .css('a','12px');.css({ a:'12px', b:'#fff'}); .show();.hide() ...
- INFORMATICA 的调优之 INFORMATICA SERVER TUNING
INFORMATICA SERVER的调优我认为主要从两个级别来做,一个是MAPPING级别,一个是SESSION级别. 对于MAPPING级别的调优: 一 对MAPPING数据流向的优化: 1 控 ...
- Android keystore 密码忘记了的找回办法
keystore密码忘记了,准备给自己的应用发布一个新版本,在apk打包时,发现之前的用的keystore密码忘了.如果换一个keystore,则之前已经安装应用的用户就必须手工卸载原应用才能安装,非 ...
- Effective Java 10 Always override toString() method
Advantage Provide meaningful of an object info to client. Disadvantage Constrain the ability of chan ...
- 集线器hub、交换机switch、路由器router 的区别
原文链接:http://blog.csdn.net/thq0201/article/details/7782319 首先说HUB,也就是集线器.它的作用可以简单的理解为将一些机器连接起来组成一个局域网 ...
- 一个自定义 HBase Filter -“通过RowKeys来高性能获取数据”
摘要: 大家在使用HBase和Solr搭建系统中经常遇到的一个问题就是:“我通过SOLR得到了RowKeys后,该怎样去HBase上取数据”.使用现有的Filter性能差劲,网上也没有现成的自定义Fi ...
- openstack-networking-neutron(四)--iptables
Filter表:过滤数据包,默认表. (1)INPUT 链:过滤所有目标地址是本机的数据包(对进入本机数据包的过滤) (2)OUTPUT 链:过滤所有本机产生的数据包(对源地址得数据包的过滤) ( ...
- javascript 特效实现(3)—— 鼠标滑过显示二级菜单效果
1. 关键代码:使用 switch 或 if 判断语句,改变对应的二级菜单显示方式为 block 或 none function selectTabMenu(i){ switch(i){ case 7 ...