(五)非常经典的setup和hold分析及违例修正方法

目录

一  关于Setup & Hold详细介绍

二 Setup & Hold违例解决方法


一  关于Setup & Hold详细介绍

图1为例,分析建立时间及保持时间。发送数据的触发器称为Launch flip-flop,接收/捕获数据的触发器称为Capture flip-flop。两触发器时钟端信号为同一时钟。

如图3所示,launch_path为:

CLKM→BUF(launch)→UFF0/CK→UFF0/Q→Comb_logic→UFF1/D;

capture path为:

CLKM→BUF(capture)→UFF1/CK;

                                 图1 二个触发器(flip-flop)组成的简单电路

(1.1)Setup Time

两触发器间的数据传输通常在一个时钟周期内完成。

数据到达UFF1/D所需时间Arrival time为:

Ta = T_launch + T_ck2q + T_dp

满足setup要求时所允许的最长时间Required time为:

Tr = T_capture + T_clk - T_setup

因此setup time要求可表示为:Tr - Ta = T_margin >= 0。

根据图2,setup time要求还可表示为:

T_launch + T_ck2q + T_dp + T_margin + T_setup = T_capture + T_clk

其中:

T_launch:CLKM到UFF0时钟端CK的延时

T_ck2q:UFF0的CK->Q的传输时间

T_dp:组合逻辑延时

T_margin:设计裕量

T_setup:UFF1的setup时间要求

T_capture:CLKM到UFF1时钟端CK的延时

T_clk: 时钟周期

由此可见,setup检查发生在不同时钟边沿,与时钟频率有关。

(1.2)Hold Time

数据到达UFF1/D所需时间Arrival time为:

Ta = T_launch + T_ck2q + T_dp

满足hold要求时所允许的最短时间Required time为:

Tr = T_capture + T_hold

因此hold time要求可表示为:Ta - Tr = T_margin >= 0。

根据图4,hold time要求还可表示为:

T_launch + T_ck2q + T_dp = T_capture + T_hold + T_margin

其中:

T_launch:CLKM到UFF0时钟端CK的延时

T_ck2q:UFF0的CK->Q的传输时间

T_dp:组合逻辑延时

T_hold:UFF1的hold时间要求

T_margin:设计裕量

T_capture:CLKM到UFF1时钟端的延时

T_clk: 时钟周期

由此可见,hold检查发生在同一时钟边沿,与时钟频率无关。

                                            图2 setup & hold时序分析详解图

(1.3)总结

setup time是针对Capture edge来说,待传输数据不能来太晚;hold time是针对Capture edge来说,新数据不能来太早,以确保待传输数据保持一段时间。总结为一句话:当前待传输的数据,相对于Capture edge来说,必须早来(setup time)晚走(hold time)。

二 Setup & Hold违例解决方法

(2.1)Setup需满足以下条件:

T_launch + T_ck2q + T_dp + T_setup <= T_capture + T_clk

记Clock Skew: T_skew = T_capture- T_launch,即:

T_ck2q + T_dp + T_setup <= T_skew + T_clk

因此,setup violation修复方法包括:

① T_clk:增加T_clk,也就是降频

② T_dp:优化组合逻辑延时,具体包括:

     a. 增加一个中间触发器来切割Timing Path,分割组合逻辑延时(流水线结构)

     b. 对于有较大负载的节点可以考虑插buffer、逻辑复制的方法来优化扇出,减少关键路径上的负载(插Buffer,逻辑复制)

     c. 小Cell换成大Cell,更换更大驱动的Cell,增强驱动能力

     d. 更换SVT/LVT的Cell

③ T_skew:采用positive skew(T_skew >0),但是要注意可能引入的hold问题,以及前后级的margin问题

④ T_ck2q:更换更快的时序逻辑单元,如HVT->LVT

(2.2)Hold需满足以下条件:

T_launch + T_ck2q + T_dp >= T_capture + T_hold

记Clock Skew: T_skew = T_capture- T_launch,即:

T_ck2q + T_dp >= T_skew + T_hold

因此,hold violation修复方法包括:

① T_dp:增加组合路径延时,通过插buffer、插delay cell、更换驱动、更换阈值的方法(组合逻辑深度的增加会增加芯片的面积、布线资源、功耗,可能产生在慢速工艺库条件下建立时间违例)

② T_skew:减小skew,甚至采用negative skew,但需做好时钟树的balance。

③ 插入低电平有效的锁存器(Lock-up Latch):高电平期间,锁存器输出保持不变,相当于人为将数据推迟了半个时钟周期,以保证满足hold时间要求。



作者:飞奔的大虎
链接:https://www.jianshu.com/p/d81fd25d8f87
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值