热度 16| |
合格的设计人员知道要避免clock path 上的毛刺,但99% 却讲不清究竟为什么。 Clock path 上的毛刺对同步数字电路是致命的。 这和 flip flops 的一个隐蔽 timing 要求有关 -- min pulse width,最小时钟脉冲宽度。
下面是 .lib 某个 D flip flop 时钟 min_pulse_width 要求的例子。 时钟上升沿 280ps,时钟脉冲宽度不小于 0.65918ns,否则这个 D flip flop 就不能保证正常翻转。 后仿里 D flip flop 的输出变 X。 0.66ns 不是个小数字。 毛刺宽度可以轻易小于这个级别。
新工艺的 .lib 通常都有 min pulse width。 很多老工艺 .lib 没有这个数据,但不是说老工艺对时钟毛刺免疫。 有兴趣的朋友不妨跑一组 Spectre sim, 一目了然。
为啥时钟毛刺 min pulse width 违例会毁了这个电路? 同步数字电路通常有反馈。 简单的计数器就是一个有反馈的同步数字电路。 状态机也是。 带反馈的电路中有一个 flip flop 不能正常翻转,整个电路就乱了。
时钟上的毛刺通常是设计不周造成的,尤其是时钟切换电路设计的缺陷。 有空再聊这个话题。
0417多音字: 那怎么去修这个错误,在icc2里修还是pt,用那条命令修比较好
jake: 时钟上的问题应该在设计中解决,靠工具修很难。 在 Innovus 或 ICC 里手动调节可能可以在某个 corner 解决,但无法保证所以 corner 都可以过。
在设计上保证不 ...
0417多音字: 那mpw出现的原因除了CKbuff和noise,就很有可能是前端设计的问题?
jake: 补充一下,文章里讲的是clock path 上的毛刺。 Datapath 上的毛刺不是问题。 STA 会保障 datapath毛刺不出现在时钟 active edge 前后的 setup window, hold wind ...
年轻的韭菜: 你好,那实际仿真中datapath上的毛刺,还是要清除掉的是吧。
jake: Datapath 上的毛刺STA工具会自动考虑。 如果毛刺在setup, hold区间外,那就不是问题。 如果在setup, hold区间内,那就是setup, hold violation,STA工具会报错。 ...