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

二、时钟源
无论你是从事数字IC前端或者是从事IC后端工作,你都需要搞清楚,芯片中的时钟是如何获取以及如何供应给各个功能模块。
1、外部直接输入时钟信号
这种情况比较少见。由于SOC系统中不同功能模块工作的频率不一样,因此从外部直接拉时钟信号进芯片,不具备可行性。对于某些特别简单的asic芯片,可能有机会用到这种方案。
2、外部晶振+内部时钟发生器
这种方案是从外部晶振引入IO,与内部时钟发生器产生一个24MHz时钟信号,然后供给各种功能模块。
3、外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器得到各种频率的时钟
这种时钟获取方式是目前SOC芯片设计实现中普遍采用的时钟产生方案。这个方案的整体思路是先从晶振,时钟发生器产生一个24MHz,再经过PLL产生倍频时钟(高频时钟),最后再经过分频电路产生各种频点的时钟供给各个功能模块。说到这里,吾爱IC社区小编留一个思考题给大家。为何不直接从外部晶振产生高频时钟,供给SOC使用呢?
三、SOC系统中时钟系统结构
无论是多大规模的SOC芯片,其时钟系统结构都与下图所示类似。在低功耗设计实现中,还需要考虑采用clock gating技术,即通过ICG来控制时钟信号是否传输到对应功能模块。图中的DIV为分频器,它可以是整数分频器,也可以是小数分频器。
如果碰到PLL倍频出来的时钟频率经过整数分频器后无法获得某个模块的工作频率,则需要采用小数分频器。小数分频器的前端设计相比整数分频要复杂点,但是从数字IC后端实现的角度看,没有什么大区别(数字IC设计面试经常会问到小数分频器的实现方法)
从本案例时钟结构图中,得知该SOC芯片采用了四个PLL,分别是APLL,MPLL,EPLL和VPLL。由于PLL的面积还比较大,我们在芯片中当然是使用的越少越好,毕竟面积就是白花花的银子。那么,为了节省芯片成本,在时钟结构规划阶段就需要先对整个芯片中的各大功能模块的时钟频率需求进行统计,设计分频器,最后计算出PLL的数量。 PLL位置
在数字后端实现中,PLL的摆放位置直接决定了时钟树的长度—clock tree latency。PLL位置的摆放需要先理解各路时钟的复用关系,PLL倍频后的时钟都要供给哪些功能模块以及这些功能模块的位置等。我们都知道衡量时钟树质量的两大指标是clock tree latency 和clock skew。如果PLL位置不合理,很有可能会把整个芯片的时钟树拖得很长。
如果时钟树长度太长,有哪些弊端呢?这个问题的答案,小编已经在公众号(ic-backend)和知识星球上分享过很多次了,如果你还不是很懂,可以再翻翻以前的文章或者知识星球问答。 一网打尽时钟树综合Clock Skew
很多数字IC后端工程师都觉得做时钟树综合只要设置好参数,就可以让工具自己build clock tree。如果你是这么认为的,有两种可能性。一种是你们的时钟设计很简单,可能就一两个时钟。另外一种是你们的设计timing要求很松,你们压根就没关心过时钟的长度。 合理的时钟结构能够加速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时钟系统结构以及时钟树综合约束编写的相关内容就分享到这里。如果你对文章内容有任何疑问,欢迎前往小编的知识星球,进行提问。更多关于时钟树综合的干货(主要内容会分享到知识星球上),后续会不断更新,敬请期待!

本人转载地址:
http://bbs.eetop.cn/thread-868017-1-1.html?_dsign=7b38d5cc

数字IC时钟树综合 clock tree synthesis相关推荐

  1. 数字IC后端流程——(四)时钟树综合Clock Tree Synthesis

    参考原博地址:https://blog.csdn.net/weixin_46752319/article/details/107387584 ICC时钟树综合 时钟树综合就是指从某个clock的roo ...

  2. 数字后端——时钟树综合

    在数字集成电路设计中,时钟信号是数据传输的基准,它对于同步数字系统的功能.性能和稳定性起决定性作用,所以时钟信号的特性及其分配网络尤被人们关注.时钟信号通常是整个芯片中有最大扇出.通过最长距离.以最高 ...

  3. 时钟树综合CTS技术经验分享(高薪必备)

    时钟树综合CTS技术经验分享(高薪必备!) 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 说到时钟树综合,需要大家紧紧围绕 3W 和 1H 来思考,即 W ...

  4. 时钟树综合(CTS)

    目录 引言 CTS基础 什么是时钟树综合 时钟源 CTS OCV(on-chip variation) 时钟树综合的目标 1. clock latency 尽量短 2. clock skew 尽量小 ...

  5. ICC2 user guide(三)Clock Tree Synthesis

    目录 一 Prerequisites for Clock Tree Synthesis 二 Defining the Clock Trees 1 Deriving the Clock Trees 1. ...

  6. ICC 图文学习——LAB4:CTS 时钟树综合

      时钟树综合的定义:时钟网络从根节点逐渐插入驱动器(buffer.inverter)从而达到其叶节点,按照芯片时钟网络的约束要求产生时钟树的过程.   主要内容: ·完成时钟树的综合CTS(负载平衡 ...

  7. ICC_lab总结——ICC_lab4:时钟树综合

    时钟树综合的理论知识总结在这里:http://www.cnblogs.com/IClearner/p/6580034.html 下面是实践环节:使用ICC进行时钟树综合. 这个实验的目标是: ·设置C ...

  8. 数字IC设计入门(10)初识数字芯片设计后端

    什么是数字IC后端设计? 完整的后端设计由后端半定制和后端全定制两个设计部分组成: 后端全定制设计是指在设计初期最先按照设计需求设计出的物理库单元,物理单元库由标准单元库.IP库及满足特殊需求的定制部 ...

  9. 数字 IC 笔试面试必考点(3)数字 IC 前端设计 + 后端实现

    前言         该资源是博主花了十多天自己整理的,IC 前端设计流程在文中给出,IC 后端设计流程除了在文中给出之外还附加了总共六十页的 PDF 详细流程文档,简直是满满的爱啊,完整展示了 IC ...

  10. 2019年数字IC校招薪酬火爆出炉,你被倒挂了吗_

    2019年数字IC校招薪酬火爆出炉,你被倒挂了吗? 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 传统的金九银十校招旺季已经不能用来描述 IC 行业校招的 ...

最新文章

  1. python元组是数组吗,Python基础(4)——数组元组
  2. c语言第一课程序代码怎么打,【北北的小程序】北のC语言第一课:helloworld
  3. 2018年中国视频监控行业现状及行业发展趋势分析预测【图】
  4. django model对象修改_Django之Model的Meta选项详解
  5. 特斯拉股价,真的“血崩”!
  6. python分片上传_分片上传_分片上传_上传文件_Python_SDK 示例_对象存储 OSS - 阿里云...
  7. always中的敏感变量
  8. matlab的libsvm工具箱(faruto版本)配置问题汇总,用于VS2015+R2017a
  9. 小苹果 html,定时轮播.html
  10. Java锁的升降级及synchoronized优化
  11. 快速稳定下载googledrive文件
  12. 计算机公式最小值,excel最小值函数
  13. 关于lua加密luac的有关问题
  14. 落的多音字组词有哪些
  15. 电脑清灰过后,CPU温度下降,显卡温度却上升了
  16. SQL中数据类型转换
  17. Win7搜索之体验!
  18. 使用BurpSuite实验室练习SQL注入攻击
  19. java8 无限流_Java8-无限流
  20. Python仿真|如何操纵足球比赛的输赢

热门文章

  1. mysql刚装好后的一顿操作
  2. SPSS对应分析-案例:品牌形象定位/市场定位
  3. Objective-C字符串NSString
  4. HBase场景优化之regions过多、region过大
  5. windows操作系统_Windows,Mac还是Linux?我们比较了这些操作系统的优缺点!
  6. Caused by: java.lang.IllegalStateException: 由于StackOverflower错误,无法完成
  7. 如何应用Anomalib在数据集不平衡的情况下检测缺陷?-- 下篇
  8. 前后端分离就必须 SPA 吗?
  9. 计算机专业的大学生该如何提升自己?
  10. 软测—直播教学—真题实战3,selenium自动化测试1