打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
想成为数字IC时钟树综合(clock tree synthesis)专家,建议好好看看这个!

时钟的定义

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

史上最全的数字IC后端设计实现培训教程(整理版)

2019年数字IC后端校招笔试题目(附数字后端培训视频教程)

时钟源

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

  • 外部直接输入时钟信号

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

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

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

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

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

SOC系统中时钟系统结构

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

浅谈数字IC低功耗设计的若干种低功耗设计方案

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

  • PLL数量

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

  • PLL位置

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

时钟树综合(clock tree synthesis)基础篇

数字后端设计实现之时钟树综合实践篇

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

一网打尽时钟树综合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 pinexclude pinnon-stop pin,断开一些不需要穿过mux的时钟等等。

如何成为时钟树综合专家?原来你也可以!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
生成pll
Altera高速Transceiver
PLL与DLL的区别
时钟同步方法:多片FPGA原型验证系统
除了Clock,还有Reset!
保证MCU低功耗,这五点很重要
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服