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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 29707|回复: 26

[原创] 数字IC时钟树综合(clock tree synthesis)专家必备

[复制链接]
发表于 2019-9-24 23:12:22 | 显示全部楼层 |阅读模式

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

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

x


时钟的定义
时钟是同步工作系统的同步节拍。它是用来指挥保障SOC中各种功能模块,比如CPU,GPU,DRAM控制器,GPIO等的正常工作。那么何为同步工作系统或者同步电路?概括起来就是不同源一定异步,同源可以不是同步(同源大部分是同步)。

时钟源
无论你是从事数字IC前端或者是从事IC后端工作,你都需要搞清楚,芯片中的时钟是如何获取以及如何供应给各个功能模块。
  • 外部直接输入时钟信号


这种情况比较少见。由于SOC系统中不同功能模块工作的频率不一样,因此从外部直接拉时钟信号进芯片,不具备可行性。对于某些特别简单的ASIC芯片,可能有机会用到这种方案。

  • 外部晶振+内部时钟发生器


这种方案是从外部晶振引入IO,与内部时钟发生器产生一个24MHz时钟信号,然后供给各种功能模块。

  • 外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器得到各种频率的时钟


这种时钟获取方式是目前SOC芯片设计实现中普遍采用的时钟产生方案。这个方案的整体思路是先从晶振,时钟发生器产生一个24MHz,再经过PLL产生倍频时钟(高频时钟),最后再经过分频电路产生各种频点的时钟供给各个功能模块。说到这里,吾爱IC社区小编留一个思考题给大家。为何不直接从外部晶振产生高频时钟,供给SOC使用呢?

SOC系统中时钟系统结构
无论是多大规模的SOC芯片,其时钟系统结构都与下图所示类似。在低功耗设计实现中,还需要考虑采用clock gating技术,即通过ICG来控制时钟信号是否传输到对应功能模块。图中的DIV为分频器,它可以是整数分频器,也可以是小数分频器。


如果碰到PLL倍频出来的时钟频率经过整数分频器后无法获得某个模块的工作频率,则需要采用小数分频器。小数分频器的前端设计相比整数分频要复杂点,但是从数字IC后端实现的角度看,没有什么大区别(数字IC设计面试经常会问到小数分频器的实现方法)。

SOC时钟结构图

SOC时钟结构图
  • PLL数量

从本案例时钟结构图中,得知该SOC芯片采用了四个PLL,分别是APLL,MPLL,EPLL和VPLL。由于PLL的面积还比较大,我们在芯片中当然是使用的越少越好,毕竟面积就是白花花的银子。那么,为了节省芯片成本,在时钟结构规划阶段就需要先对整个芯片中的各大功能模块的时钟频率需求进行统计,设计分频器,最后计算出PLL的数量。
  • PLL位置

在数字后端实现中,PLL的摆放位置直接决定了时钟树的长度---clock tree latency。PLL位置的摆放需要先理解各路时钟的复用关系,PLL倍频后的时钟都要供给哪些功能模块以及这些功能模块的位置等。我们都知道衡量时钟树质量的两大指标是clock tree latency 和clock skew。如果PLL位置不合理,很有可能会把整个芯片的时钟树拖得很长。


如果时钟树长度太长,有哪些弊端呢?这个问题的答案,小编已经在公众号(ic-backend)和知识星球上分享过很多次了,如果你还不是很懂,可以再翻翻以前的文章或者知识星球问答。
  • 时钟树约束文件编写

很多数字IC后端工程师都觉得做时钟树综合只要设置好参数,就可以让工具自己build clock tree。如果你是这么认为的,有两种可能性。一种是你们的时钟设计很简单,可能就一两个时钟。另外一种是你们的设计timing要求很松,你们压根就没关心过时钟的长度。

一般情况下,中等规模及以上的SOC芯片的时钟树综合,都是需要编写时钟树约束文件。因为时钟太多了之后,工具处理起来比较费劲,特别是当一堆时钟进行mux操作后,工具经常还会把tree做的很长。工具之所以做起来费劲,之所以做不好tree,主要原因还是时钟结构相对复杂,其复杂程度已经超出它的能力范围了。
如果我们能够对时钟结构进行拆分,把时钟结构很清晰地告诉工具,那么它还是能够做的非常漂亮的。当然这个前提是你要理清楚整个芯片的时钟结构。
画时钟结构图和写时钟约束文件都是数字IC后端工程师必备的一项工作技能,当然也是一项非常核心技能。如果这项技能能够很好的掌握,那么整个数字IC后端设计实现,还有比这更难的吗?
当你拿到一个design,你应该要能画出像上图所示的时钟结构图。有了这个图之后,写个时钟约束文件,那是水到渠成的事情。
这里结合本文的案例,简单解析下如何写时钟约束文件。
首先,可以把整个芯片的时钟路径分为三部分。第一部分是晶振—-> PLL,第二部分是PLL—-> CLOCK GEN,第三部分是分频器输出——-> 各个功能模块。
其次,搞清楚CLOCK Gen模块是用来产生各种分频时钟信号的,它本身并不会直接与其他逻辑进行一个交互。因此,该模块内的寄存器都和别人是异步的。如果把CLOCK GEN内部的寄存器和各功能模块的寄存器进行同步,会有什么后果呢?另外各个PLL出来的时钟一定是异步的。
最后,再整理下各个时钟路径的终点和clock exception,比如floating pin,exclude pin,non-stop pin,断开一些不需要穿过mux的时钟等等。


好了,关于数字soc时钟系统结构以及时钟树综合约束编写的相关内容就分享到这里。如果你对文章内容有任何疑问,欢迎前往小编的知识星球,进行提问。更多关于时钟树综合的干货(主要内容会分享到知识星球上),后续会不断更新,敬请期待!


小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入

在这里,目前已经规划并正着手做的事情:
  • ICC/ICC2 lab的编写
  • 基于ARM CPU的后端实现流程
  • 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现
  • 基于ARM 四核CPU  数字后端Hierarchical Flow 实现教程
  • 时钟树结构分析
  • 低功耗设计实现
    定期将项目中碰到的问题以案例的形式做技术分享


吾爱IC社区知识星球星主为公众号”吾爱IC社区”号主,从事数字ic后端设计实现工作近八年,拥有55nm,40nm,28nm,22nm,14nm等先进工艺节点成功流片经验,成功tapeout过三十多颗芯片

这里是一个数字IC设计实现高度垂直细分领域的知识社群,聚集了无数数字ic前端设计,后端实现,模拟layout 工程师们。

在这里大家可以多建立连接,多交流,多拓展人脉圈,甚至可以组织线下活动。在这里你可以就数字ic后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。

最重要的是在这里,能够借助这个知识社群,短期内实现年薪百万的梦想!不管你信不信,反正已经进来的朋友肯定是相信的!相遇是一种缘分,相识更是一种难能可贵的情分!如若有缘你我一定会相遇相识!知识星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有315星球成员,感谢这315童鞋的支持!欢迎各位渴望进步,期望高薪的铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标

吾爱IC社区知识星球

吾爱IC社区知识星球


发表于 2020-2-26 09:55:57 | 显示全部楼层
thankss
发表于 2020-4-12 22:19:43 | 显示全部楼层
thanks
发表于 2020-6-18 15:30:31 | 显示全部楼层
留存
发表于 2020-6-18 19:22:31 | 显示全部楼层
Thanks
发表于 2020-6-29 17:32:03 | 显示全部楼层
收藏收藏
发表于 2020-11-15 20:19:19 | 显示全部楼层
留存
发表于 2020-11-25 14:50:20 | 显示全部楼层
多谢分享
发表于 2020-12-13 01:38:44 来自手机 | 显示全部楼层
多谢
发表于 2020-12-16 17:11:40 来自手机 | 显示全部楼层
感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-21 23:13 , Processed in 0.023016 second(s), 7 queries , Gzip On, Redis On.

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