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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18886|回复: 19

[求助] clock gating cell的hold time violation问题

[复制链接]
发表于 2011-11-28 21:17:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

clock gating cell

clock gating cell


timing report

timing report




做完P&R以后,抽取完寄生参数,放到PT中做STA,发现clock gating cell中的main gate(and gate)的A,B两个
端口报hold time violation,A口是CLK和EN信号经过一个latch,B口是CLK信号,但是是经过CTS以后的clk,网络
名为CLK_cts_3(请见附图1)。但是A口的信号比B口的信号早到,于是 PT报了hold time violation,请问这种问题
是应该在ICC中加约束把violation修掉,还是有其他的处理呢?先谢过各位各位大侠了~~


================================= PT给出的具体的Timing Report =============================

Startpoint: Controller/clk_gate_i_reg/latch

               (negative level-sensitive latchclocked by clk_4_div)

Endpoint: Controller/clk_gate_i_reg/main_gate

               (rising clock gating-checkend-point clocked by clk_4_div)

Path Group: **clock_gating_default**

Path Type: min

Point                                                                     Incr                Path

------------------------------------------------------------------------------

clock clk_4_div (fall edge)                                        140.00           140.00

  clock network delay (ideal)                                        2.84             142.84

Controller/clk_gate_i_reg/latch/GN (lanlq1)                 0.00             142.84f

Controller/clk_gate_i_reg/latch/Q (lanlq1)                   0.18             143.02 r

Controller/clk_gate_i_reg/main_gate/A (an02d4)         0.00             143.02 r

data arrival time                                                                         143.02

clock clk_4_div (fall edge)                                        140.00           140.00

  clock network delay (ideal)                                        3.09             143.09

Controller/clk_gate_i_reg/main_gate/B (an02d4)                            143.09f

clock gating hold time                                               0.00            143.09

data required time                                                                       143.09

------------------------------------------------------------------------------

data required time                                                                       143.09

data arrival time                                                                          -143.02

------------------------------------------------------------------------------

  slack(VIOLATED)                                                                                                                                      -0.07

发表于 2011-11-29 08:49:22 | 显示全部楼层
没错,这个是典型的 离散icg (discrete) 类型, hold violation是真的

以pt结果为主吧, 再修下就好了, 加buffer
 楼主| 发表于 2011-11-29 09:56:45 | 显示全部楼层
回复 2# icfbicfb


   谢谢ICFB大
还想问清楚一点,就是这个在ICC里面怎么具体修呢?是针对报HOLD VIOLATION的几条路径逐条加BUFF, 还是用其他的方法?我在CTS后使用
clock_opt -fix_hold_all_clocks
修过大部分路径了,有可能是其中修CLK_cts_3这条路径加BUFF太多增加了太多DELAY,我现在的修hold的时候加的uncertainty是1ns, 我改小到0.5ns但是不起作用,请教具体该怎么修呢?
发表于 2011-11-29 10:01:22 | 显示全部楼层
本帖最后由 nicholas08 于 2011-11-29 10:02 编辑

在CLK这条path上加buffer.
我是觉得如果你的clock不多,也不复杂的话, clk skew有250ps,已经有点偏大了.
发表于 2011-11-29 13:52:31 | 显示全部楼层
如果用ICG的话,根本就没有这个问题了。因为前面的latch已经保证了main_gate的时序
发表于 2011-11-29 19:00:20 | 显示全部楼层
少量的hold violation,把所有endpoint 找到,直接insert_buffer就行了,很快的

你不能指望icc能把所有的hold clean 掉, 总会有顾此失彼的时候,
发表于 2011-11-29 20:26:07 | 显示全部楼层
也是啊,你设了 set_propagated_clock  么

从数值看不像是 ideal的,
 楼主| 发表于 2011-11-29 23:38:01 | 显示全部楼层
回复 5# 陈涛


   请教陈大,foundry提供的库里面其实是有专门的clock gating cell,但是在DC综合里面我用以下的脚本:================================================================
set_clock_gating_style -sequential_cell latch -positive_edge_logic {and} -negative_edge_logic {or}
insert_clock_gating
propagate_constraints -gate_clock

================================================================
来做门控时钟的综合约束,所以估计才生成了离散的门控时钟单元,那在DC里面怎么样设置才能使得DC综合时针对
上升沿和下降沿的时钟能够自动调用foundry库里提供的门控时钟呢?
 楼主| 发表于 2011-11-29 23:43:42 | 显示全部楼层
回复 8# icfbicfb


   icfb大,我在PT里面设置了set_propagated_clock [all_clocks],但是在这之后又定义了几个create_generated_clock,不知道是不是propagated这个属性没有设置到后面定义的clock上去呢?
发表于 2011-11-30 08:48:30 | 显示全部楼层
当然是先定义所有clock,然后再 set_propagated_clock 啊,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-27 15:30 , Processed in 0.045368 second(s), 8 queries , Gzip On, Redis On.

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