jake的个人空间 https://blog.eetop.cn/1592 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

为啥时钟毛刺会毁了整个设计 -- min pulse width

热度 15已有 8095 次阅读| 2021-1-16 01:45 |系统分类:芯片设计

合格的设计人员知道要避免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 不是个小数字。 毛刺宽度可以轻易小于这个级别。

image.png

新工艺的 .lib 通常都有 min pulse width 很多老工艺 .lib 没有这个数据,但不是说老工艺对时钟毛刺免疫。 有兴趣的朋友不妨跑一组 Spectre sim, 一目了然。

为啥时钟毛刺 min pulse width 违例会毁了这个电路? 同步数字电路通常有反馈。 简单的计数器就是一个有反馈的同步数字电路。 状态机也是。 带反馈的电路中有一个 flip flop 不能正常翻转,整个电路就乱了。

时钟上的毛刺通常是设计不周造成的,尤其是时钟切换电路设计的缺陷。 有空再聊这个话题。

1

点赞

刚表态过的朋友 (1 人)

发表评论 评论 (12 个评论)

回复 jake 2021-1-31 23:18
补充一下,文章里讲的是clock path 上的毛刺。 Datapath 上的毛刺不是问题。 STA 会保障 datapath毛刺不出现在时钟 active edge 前后的 setup window, hold window,保障 flip flop 不会锁存错误数据。
回复 0417多音字 2021-2-4 17:20
那怎么去修这个错误,在icc2里修还是pt,用那条命令修比较好
回复 0417多音字 2021-2-4 17:20
@jake
回复 jake 2021-2-4 23:17
0417多音字: 那怎么去修这个错误,在icc2里修还是pt,用那条命令修比较好
时钟上的问题应该在设计中解决,靠工具修很难。 在 Innovus 或 ICC 里手动调节可能可以在某个 corner 解决,但无法保证所以 corner 都可以过。
在设计上保证不出现问题,才是终极解决方案。
一般 Min pulse width 也是在设计中就考虑到。 工具通常只能修 setup, hold, MPW 在最后才报告。 GHz 级的高速设计中往往会在 critical path 上 instantiate 例化一些寄存器,就是在设计中已经考虑了 MPW。
回复 0417多音字 2021-2-5 14:21
jake: 时钟上的问题应该在设计中解决,靠工具修很难。 在 Innovus 或 ICC 里手动调节可能可以在某个 corner 解决,但无法保证所以 corner 都可以过。
在设计上保证不 ...
那mpw出现的原因除了CKbuff和noise,就很有可能是前端设计的问题?
回复 jake 2021-2-5 14:42
0417多音字: 那mpw出现的原因除了CKbuff和noise,就很有可能是前端设计的问题?
CLK buffer noise 应该不是主要原因。 SI glitch 是可以修的。 clk buffer 的非对称性造成占空比变化,在高速电路里容易导致 mpw violation。
还有就是综合工具选的 flip flop 不好,setup, hold 没问题,但 mpw 要求过大,接近高速时钟 50%。 综合工具不查 MPW 。
回复 jiru000000 2021-2-9 17:39
很简单,稳定的状态才能保证电路正常工作,就像模拟为啥需要稳定的静态工作点,不稳定容易翻车
回复 年轻的韭菜 2021-4-22 10:11
jake: 补充一下,文章里讲的是clock path 上的毛刺。 Datapath 上的毛刺不是问题。 STA 会保障 datapath毛刺不出现在时钟 active edge 前后的 setup window, hold wind ...
你好,那实际仿真中datapath上的毛刺,还是要清除掉的是吧。
回复 jake 2021-4-23 22:05
年轻的韭菜: 你好,那实际仿真中datapath上的毛刺,还是要清除掉的是吧。
Datapath 上的毛刺STA工具会自动考虑。 如果毛刺在setup, hold区间外,那就不是问题。 如果在setup, hold区间内,那就是setup, hold violation,STA工具会报错。
Datapath 上的毛刺在RTL仿真中说看不到的。 在反标后仿(back annotated gate level simulation)中可以看到。如果有违例,simulator会报错。 
您这个问题其实引申到的非常重要的经验法则:
1. 组合逻辑的输出都有有毛刺的可能。
2. 尽量避免模拟工程师做的时钟电路。 模拟工程师常在clock path用组合逻辑,经常挖各种坑,可能会毁了整个芯片。
抱歉,这几天忙,回复晚了。
回复 年轻的韭菜 2021-4-25 09:40
jake: Datapath 上的毛刺STA工具会自动考虑。 如果毛刺在setup, hold区间外,那就不是问题。 如果在setup, hold区间内,那就是setup, hold violation,STA工具会报错。 ...
多谢指点!
回复 转折点 2021-5-13 14:56
您好,博主,时钟毛刺是因为小于了触发器cp端口最小时钟脉宽限制,而造成触发器内部数据不能正常保存,所以时钟上不能有毛刺,这样理解对吗
回复 jake 2021-5-13 20:57
转折点: 您好,博主,时钟毛刺是因为小于了触发器cp端口最小时钟脉宽限制,而造成触发器内部数据不能正常保存,所以时钟上不能有毛刺,这样理解对吗 ...
完全正确

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 226

    粉丝
  • 89

    好友
  • 285

    获赞
  • 273

    评论
  • 2302

    访问数
关闭

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

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

GMT+8, 2024-4-24 19:44 , Processed in 0.024019 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部