立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 628|回复: 0

[分享] 建立时间(setup time)和保持时间(hold time)详析

[复制链接]
发表于 2024-9-18 16:15 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×


欢迎大家关注“数字IC剑指offer”,分享秋招实用干货

时间真快,今天已经是2020年的立冬了,大家今年定的计划都完成得如何呢?好了,言归正传。前面一期“数字前端”专题推送简要介绍了为什么会有建立时间(setup time)和保持时间(hold time)要求,本期就详细介绍setup和hold的基本概念、详细分析及其违例解决方法。
1、基本概念
静态时序分析中最基本的就是setup和hold时序分析,其检查的是触发器时钟端CK与数据输入端D之间的时序关系。
(1)Setup Time
setup time是指在时钟有效沿(下图为上升沿)之前,数据输入端信号必须保持稳定的最短时间。



图1 触发器的setup要求

(2)Hold time
hold time是指在时钟有效沿(下图为上升沿)之后,数据输入端信号必须保持稳定的最短时间。hold time时序检查确保新数据不会在触发器稳定输出初始数据之前过早到达D端而覆盖其初始数据。



图2 触发器的hold要求

2、Setup & Hold详细分析
以图3为例,分析建立时间及保持时间。发送数据的触发器称为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;



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

(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。
根据图4,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检查发生在不同时钟边沿,与时钟频率有关。
(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检查发生在同一时钟边沿,与时钟频率无关。



图4 setup & hold时序分析

(3)总结
setup time是针对Capture edge来说,待传输数据不能来太晚;hold time是针对Capture edge来说,新数据不能来太早,以确保待传输数据保持一段时间。总结为一句话:当前待传输的数据,相对于Capture edge来说,必须早来(setup time)晚走(hold time)。
3、Setup & Hold违例解决方法
(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)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时间要求。
具体到综合阶段、PR阶段中工程性实用的修复方法将在后续推出。

原文地址:https://zhuanlan.zhihu.com/p/278523793
楼主热帖
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表