常见IC设计/FPGA面试问题之:setup/hold/recovery/removal check时序分析




原文:http://blog.csdn.net/verylogic/article/details/14261989?reload

任何学FPGA的人都跑不掉的一个问题就是进行静态时序分析。静态时序分析的公式,老实说很晦涩,而且总能看到不同的版本,内容又不那么一致,为了彻底解决这个问题,我研究了一天,终于找到了一种很简单的解读办法,可以看透它的本质,而且不需要再记复杂的公式了。

我们的分析从下图开始,下图是常用的静态分析结构图,一开始看不懂公式不要紧,因为我会在后面给以非常简单的解释:


这两个公式是一个非常全面的,准确的关于建立时间和保持时间的公式。其中Tperiod为时钟周期;Tcko为D触发器开始采样瞬间到D触发器采样的数据开始输出的时间;Tlogic为中间的组合逻辑的延时;Tnet为走线的延时;Tsetup为D触发器的建立时间;Tclk_skew为时钟偏移,偏移的原因是因为时钟到达前后两个D触发器的路线不是一样长。

这里我们来做如下转化:

因为对于有意义的时序约束,建立时间余量Tslack,setup和保持时间余量Thold都要大于0才行,所以对于时序约束的要求其实等价于:

Tperiod>Tcko+Tlogic+Tnet+Tsetup-Tclk_skew             (1)

Tcko+Tlogic+Tnet>Thold+Tclk_skew                             (2)

之前说了,这两个公式是最全面的,而实际上,大部分教材没讲这么深,他们对于一些不那么重要的延时没有考虑,所以就导致不同的教材说法不一。这里,为了得到更加简单的理解,我们按照常规,忽略两项Tnet和Tclk_skew。原因在于Tnet通常太小,而Tclk_skew比较不那么初级。简化后如下:

Tperiod>Tcko+Tlogic+Tsetup                                         (3)

Tcko+Tlogic>Thold                                                         (4)

简单多了吧!但是你能看出这两个公式的含义吗?其实(3)式比较好理解,意思是数据从第一个触发器采样时刻传到第二个触发器采样时刻,不能超过一个时钟周期啊!假如数据传输超过一个时钟周期,那么就会导致第二个触发器开始采样的时候,想要的数据还没有传过来呢!那么(4)式又如何理解呢?老实说,一般人一眼看不出来。

我们对于(4)式两边同时加上Tsetup,得到(5):

Tcko+Tlogic+Tsetup>Thold+Tsetup                               (5)

结合(3)式和(5)式,我们得到如下的式子:

Thold+Tsetup  <Tcko+Tlogic+Tsetup<  Tperiod                   (6)

这个式子就是那个可以让我们看出规律的式子。也是可以看出静态时序分析本质的式子。

Tcko+Tlogic+Tsetup是指数据从第一级触发器采样瞬间开始,传输到第二级触发器并被采样的传输延时。我们简称为数据传输延时。下面讲述(6)式两端的含义。

Tcko+Tlogic+Tsetup<  Tperiod :约定数据传输延时不能太大,如果太大(超过一个时钟周期),那么第二级触发器就会在采样的时刻发现数据还没有到来。

Thold+Tsetup  <Tcko+Tlogic+Tsetup:约定数据传输延时不能太小。这就奇怪了,数据传得太慢大家都知道不好,难道传得太快也不行吗?是的,不行!Thold+Tsetup是一个触发器的采样窗口时间,我们知道,D触发器并不是绝对的瞬间采样,它不可能那么理想。在D触发器采样的瞬间,在这瞬间之前Tsetup时间之内,或者这瞬间之后Thold时间之内,如果输入端口发生变化,那么D触发器就会处于亚稳态。所以采样是有窗口的,我们把Thold+Tsetup的时间宽度叫做触发器的采样窗口,在窗口期内,D触发器是脆弱的,对毛刺没有免疫力的。假如数据传输延时特别小,那么就会发现,当第二级触发器开始采样的时候,第一级触发器的窗口期还没有结束!也就是说,如果这个时候输入端数据有变化,那么不仅第一级触发器处于亚稳态,第二级触发器也将处于亚稳态!

综上,我们就可以知道,数据传输延时既不能太大以至于超过一个时钟周期,也不能太小以至于小于触发器采样窗口的宽度。这就是静态时序分析的终极内涵。有了这个,就不需要再记任何公式了。

总结一下就是:
Tsetup,margin = Tperiod-(Tck2q+Tcomb+Tsetup+Twire-Tskew) > 0
Thold,margin = Tck2q+Tcomb-Thold_Twire-Tskew > 0
Tmin = Tck2q+Tcomb+Tsetup+Twire-Tskew
Fmax = 1/Tmin

前面的setup/hold time check是针对数据和时钟之间的关系,而recovery/removal check则是针对异步reset与clock之间的关系。

recovery 是指撤销复位时,rst变到非复位状态的电平必须在clk之前一定时间到来,这样保证在clk采样时,DFF处于非复位状态,类似~rst的setup time。

removal是指复位时,rst在clk到来之后还需要保持多长时间,否则会出现复位不成功,类似rst的hold time

  • 16
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3c root后,想刷回原来的华为包,步骤如下:(注意3点,1选择正确的recovery包,联通移动不通用,2UPDATE。app要放到sd卡上) 1:下载官方更新包,下载地址:http://consumer.huawei.com/cn/support/downloads/index.htm 选择智能手机,然后选择h30-u10(联通2g),h30-t10(移动2g),搜索并下载更新包(大概500M的文件,里边哟个pdf文档和一个dload文件夹) 联通2g:http://download-c.huawei.com/download/downloadCenter?downloadId=19327&version=30802&siteCode=cn 移动2g:http://download-c.huawei.com/download/downloadCenter?downloadId=19329&version=30811&siteCode=cn 移动1g:http://download-c.huawei.com/download/downloadCenter?downloadId=19263&version=30723&siteCode=cn 2.下载的包解压后,把dload文件夹复制到sdcard(最好是自己的内存卡要有800M以上的空间,我自己没有试验放到自带的sdcard是否可用)。具体看下载的包中pdf文档说明 (华为 H30-U10 智能手机版本升级指导书.pdf),一定要注意sd卡的格式要是FAT32,FAT格式貌似也可以。 3:刷入官方recovery包 01.手机链接USB到电脑,(打开手机助手或者豌豆荚,只要能连上就可以了) 02.打开文件下的:华为荣耀3C一键刷入recovery.img工具.bat,并运行 03.连接后,批处理提示:选择 recovery.img包,根据提示选择自己的包(移动版要用移动版本),我选择联通(我的是3c联通2g) 04.等待手机提示打开recovery模式,如果成功,这里就结束,然后选择关机 05.拔下usb数据线,按住音量上下键 +关机键,开机显示画面时,松开关机键进入recovery模式, 4.等3分钟左右。自动完成了!!哈哈成功!!(搞了1上午,终于o了) 如果提示:main ersion check not match :h30-t00 vs h30-u10,说明你选择的recovery.img版本不对,请重新选择移动,或者联通版

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值