在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2873|回复: 8

[求助] 修hold timing

[复制链接]
发表于 2021-7-13 10:30:46 | 显示全部楼层 |阅读模式
500资产
小白一枚,问下cts后修hold,插buffer就好了,但是插的buffer,不也会造成setup变差么? 以最基本的2个reg的模型为例,reg1的d端输出到reg2的q端,中间插个buffer的话,那reg2的setup也会变差啊?

一直没动,感觉绕进死胡同了,求大佬点拨下

最佳答案

查看完整内容

实际修hold不需要考虑setup margin。 路径上的setup margin小,说明路径上的delay已经比较大。一般这种情况是没有hold violation的,也就不需要插buffer。 路径上的setup margin大,一般插入一个buffer对setup几乎没影响,插buffer就可以比较任性了。 极端情况也是有的 -- 不插buffer有hold violation,插buffer hold violation没了,但多了一个setup violation。通常这种都是非常高速的设计,根据具体情况也是可以修的。 ...
发表于 2021-7-13 10:30:47 | 显示全部楼层
本帖最后由 jake 于 2021-7-14 06:26 编辑


李九阳 发表于 2021-7-12 21:32
嗯。。。
但是我看一般的教程说的都是,前面hold不用管,反正后面插buffer就能解决,好像没有提到说对路 ...


实际修hold不需要考虑setup margin。 路径上的setup margin小,说明路径上的delay已经比较大。一般这种情况是没有hold violation的,也就不需要插buffer。
路径上的setup margin大,一般插入一个buffer对setup几乎没影响,插buffer就可以比较任性了。  

极端情况也是有的 -- 不插buffer有hold violation,插buffer hold violation没了,但多了一个setup violation。通常这种都是非常高速的设计,根据具体情况也是可以修的。

发表于 2021-7-13 11:23:58 | 显示全部楼层
修hold,setup肯定要变差,最终只要满足时序要求就行。比如修hold前你的setup有500ps,修完hold后,setup变为200ps,但是时序要求setup有100ps,那么你的时序还是过的。
发表于 2021-7-13 11:28:35 | 显示全部楼层
本帖最后由 jake 于 2021-7-13 00:04 编辑

出现hold violation是因为路径上的delay小于capture flop的hold time requirement。 同时,路径上的delay小,通常也意味着setup margin远大于capture flop的setup time requirement。 插入buffer,牺牲掉一些setup margin,只要不引起setup violation,就不是问题。

以两个flop的模型为例子,reg1 --> reg2,中间没有其他门,这个场景是最有可能造成hold violation的。
为了简洁,忽略routing/net delay,忽略reg1, reg2 CLK skew。
路径上的delay = reg1 Tclk-to-q
如果 (reg1 Tclk-to-q) <  (reg2 hold requirement), 出现 hold violation。
同时,这个路径的 setup time = Period - (reg1 Tclk-to-q),一般是远大于 (reg2 setup requirement) 的,不会出现 setup violation。

插入buffer, 模型变成了 reg1 --> B --> reg2
路径上的delay = (reg1 Tclk-to-q) + (B Tcell_delay)
如果  (reg1 Tclk-to-q) + (B Tcell_delay) > (reg2 hold requirement),hold violation就消失了。
同时,这个路径的 setup time = Period - (reg1 Tclk-to-q) - (B Tcell_delay),通常仍大于 (reg2 setup requirement),也就不会出现 setup violation。


 楼主| 发表于 2021-7-13 11:32:21 | 显示全部楼层


lzqxiang 发表于 2021-7-13 11:23
修hold,setup肯定要变差,最终只要满足时序要求就行。比如修hold前你的setup有500ps,修完hold后,setup变 ...


嗯。。。
但是我看一般的教程说的都是,前面hold不用管,反正后面插buffer就能解决,好像没有提到说对路径上setup有要求,提都没提。。。
那这样说来,实际上修hold的时候,对前面的setup的margin也有要求,不能太critical ? 还是说因为我们在cts阶段预留的skew的margin,足够修hold用了,所以不用管?

我原来还以为是不是有些特殊的delay  cell 可以做到 不让setup变差呢
发表于 2021-7-14 14:42:04 | 显示全部楼层


李九阳 发表于 2021-7-13 11:32
嗯。。。
但是我看一般的教程说的都是,前面hold不用管,反正后面插buffer就能解决,好像没有提到说对路 ...


只要setup hold不打架都好说,修hold的时候先看看本级的setup margin有多少
 楼主| 发表于 2021-7-15 11:09:44 | 显示全部楼层
谢谢各位大佬
发表于 2021-7-15 12:40:43 | 显示全部楼层
兄弟,我把信元转回给你了。回答问题是希望能有帮助,信元不重要的
 楼主| 发表于 2021-7-15 14:14:14 | 显示全部楼层


jake 发表于 2021-7-15 12:40
兄弟,我把信元转回给你了。回答问题是希望能有帮助,信元不重要的


哈哈,谢谢大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 00:10 , Processed in 0.027118 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表