微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请教一个时序问题

请教一个时序问题

时间:12-12 整理:3721RD 点击:
时钟是给cpu和程序memory的,所以不能有任何毛刺,我们有一个去毛刺的逻辑,切换时钟时会把时钟gate住,当然,用的是clock gating cell。现在后端cts没做好,产生clock enable信号的clk和"clk gating cell" 的clock输入端skew太大,达到2ns+,所以报出很大的clock gating hold violation,后端工程师说hold太大fix不了,要我设multicycle,我觉得设置multicycle后有的时钟沿timing check不到,如果有timing viotion,时钟输出可能出现毛刺,而后端工程师说如果有timing viotion只是时钟少了一个半周期脉冲,不知道大家怎么看clock gating cell有timing viotion时时钟输出。
补充一下:如果这种情况出现只是时钟少了一个半周期脉冲的话,设计上是可以接受的。

如果clock gating 後的clock提供的register非常多,
要修正這個clock gating cell 的hold violation 應該挺困難
建議使用CKMUX來做這個clock gating,控制信號enable使用gating 前
的clock 用negedge 採一下來,這樣切換的時候是在時鐘的負沿。
當然,這樣做對同時使用正負沿的電路仍然有問題

首先非常感谢你能认真看完我那一堆不知道讲清楚没有的问题!并且给出一种解决办法。
探讨下:首先我的gating enable是由gating前的clk输出的,不然如果被gating住的enable就恢复不了吧。
再说说你的这个解决办法:如果clock skew太大时序更难met吧,比如不同corner skew从0.3*period到0.7*period,该如何解决?

那麼先問下,您使用的clock gating cell是類似於GCE cell 麼?
就是一個clock前有一個或門或與們控制clock開關?
如果是的話, gating 出來的clock load很大,要做到上升沿glitch free
的話,clock前的gate cell要留一個非常大的margin,
但是,由於loading太大,很可能比較難達到
如果是僅僅用上升沿的話,如果使用clock negedge 推enable 信號,
那麼切出來的clock在上升沿是沒有glitch的(半個cycle的margin)
當然,後端需要將gating後的clock和gating前的clock做balance

如果latch出现timing violation, 在输出稳定电平之前会有震荡,最后要么稳定到0,要么稳定到1,在没有稳定之前,他的电平在0和1之间,是亚稳态,那就要看后面的与门认为这个是0还是1。
如果认为是0的话,应该不会有毛刺,如果为1的话,那这个1和到与门的clk如果保持正常的相对相位关系(满足setup hold时的相位关系)应该不会有毛刺吧。关键这个相位关系能不能确定?如果不确定确实可能有毛刺出现。

如果这样那就有问题了,因为latch的输出是和clk作and操作。

不好意思,没太明白你的意思,就是库里面的clock gating cell,跟教科书上一样的,latch加与门,没有setup/hold violation时肯定没有任何毛刺的。
gating出来的clock后面要做tree,为什么load会大呢?

正因为长tree了,所以loading大啊~
不过我想你可以把Timing报出来看看,只要在CG cell出的enable信号没有在clk的sampling
window内(-setup Time, + holdTime)变化就没有亚稳态的问题吧~~,如你所说,早晚一个
T是无所谓的。

公司的东东不方便弄出来,听起来还是有问题,后端就是因为报出enable pin timing violation所以才要求我设置multicycle。

你是做design的,你必须清楚你这个clock gating是一次切换之后很久不会变,而且不在乎刚开始的clock edge,还是clock edge被精确的cut,多一个少一个都不行。如果是后者的话,这个violation必须修掉。这种violation也不是说就一定修不掉,只是可能有点麻烦而已,手动多搞搞还是可以的。不过你应该配合后端看看你的constraint会不会有什么问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top