0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时钟树:芯片的大动脉

sanyue7758 来源:小蔡读书 2023-07-15 09:28 次阅读

我觉得称时钟树为芯片的大动脉一点也不夸张,因为所有flipflop 翻转都要受到它的控制。而时钟树的设计到实现是一个很复杂的过程,从流程上说,它牵扯到使用的工具,流程,flow等。从人的角度讲,它需要设计,综合,dft ,pr, sta 工程师的通力合作。从知识上讲它需要一定的芯片架构设计知识,一定的综合,STA 知识,一定的dft知识,包括一定的pr 长clock tree的知识。我这里结合我的个人有限知识,结合实践经历以及理解对这些问题做多方面的阐述,难免有缺漏,也是为了抛砖引玉,欢迎同仁讨论。集思广益。

本文所涉及的工具综合DC, 时序分析PT, 物理实现工具innovus.

大家需要什么样的clocktree呢?

设计:我要更少的PLL, (更多的PLL 带来配值的麻烦,能用各种分频产生的频率。尽量用分频电路产生,能不多加PLL就不要多加。)我要没有毛刺,PLL jitter抖动更小(设计上没有毛刺需要电路结构上的改变 如glitch free mux , PLL jitter需要电路上更给力的interwetten与威廉的赔率体系 单元。)。我要更低的功耗 (设计通过powerpro 添加更多的ICG 上去,ICG的效率提上去。尽量不要有组合逻辑clock gating检查。)

DFT: 我要配值更少的PLL (尽量相同频率的逻辑用一个PLL 去拉通,更多的PLL 需要更多的tdr 配值增加面积还带来不确定性)。我要更少的occ (相同频率的fanout 尽量垫一个occ, 更少的occ ,更少的面积,处理起来也更简便)

SYN&PR :我要更精准的SDC ( 更精准的SDC 去除更多的假path, 在PR SI 分析上也能过滤掉不该分析的部分,还能指导clocktree的生长 )。我要更好的useful skew (需要flow,分析,try run和调整,来达到不平的clock tree 与setup hold 之间微妙的平衡)。我要更长的common path ,更短的clock tree (长的common path 更短的clocktree, 可能需要设计clock tree结构调整, sdc 的调整,ccopt spec 调整, place 调整等等)。

我要PLL 的REF CLOCK 走更短的距离 (PLL ref clock 需要高的时钟质量。提前有好的规划,不要插多余的cell到ref clock 路径上,pr floorplan 的迭代 控制PLL 与ref clock 的距离, 综合过程不要给这种net上加东西。)。我要更小的SI (pr clock tree 布线上更好的布线层规划,良好的shielding )。我要tree更好的平衡 (该balance的地方balance,不该balance的地方不要相互拖拽,需要良好的ccopt_spec, sdc ,以及setting配合。)

等等,还有很多,所有的需求都需要相互trade off 来达到一个平衡。

我以图片举例来挑其中一些问题针对的谈谈。

能不要多点长tree平衡,尽量不要多点长tree,除非迫不得已。如图从物理实现角度说 绿色是一个block ,A 和B 两个clock 从port进来需要相互balance。这种结构block的PR工程师好不容易把A 和B 调的tree平衡。但是到了顶层,顶层pr工程师还需要保证红色的到A &B两个hier pin的tree路线是平衡的。对时序收敛是不友好的。

56cd44cc-224f-11ee-962d-dac502259ad0.jpg

设计牵扯到从block穿clock出来到顶层的结构那么红色的这路去顶层的clock路径不要带多余的逻辑,如果有多余的逻辑分配到A 那部分去, 因为绿色的地方dft要加occ, 而occ一般是不级联的。

56df708e-224f-11ee-962d-dac502259ad0.jpg

设计中驱动两个hinst如果是同频的能用一个occ (红色) 就尽量不要用两个(绿色)。造成面积浪费不说,且如果A和B再有timing talk 会导致非 common path 变长。

56f21bc6-224f-11ee-962d-dac502259ad0.jpg

分频模块在功能模式下的分频系数频率与dft 模式下的分频系数尽量一致。当功能模式时候toggle fun_reset 就能让div模块配置到需要的系数上。当dft模式下toggle dft cgu reset 也能让div模块配置到相同的系数上。否则需要dft通过tdr或者其它连线来配值自己想要的参数,增加多余逻辑。不过具体情况具体分析。没有通解。

570b85f2-224f-11ee-962d-dac502259ad0.jpg

STA 工程师尽量通过良好的使用 set_clock_group -physically_exclusive -logically_exclusive -asyncronus / set_clock_exclusivity 等命令去过滤掉C 位置不应该A B共存导致的SI 分析。

571beea6-224f-11ee-962d-dac502259ad0.jpg

多种mode sdc 能merge的尽量merge ,不能merge再具体问题具体分析。多个mode sdc会产生更多需要分析的constraint mode 产生更多scenario 耗费更多时间。举个例子类似我遇到的这种结构的clock 就是相对不那么好做的 A B C三个mux会从ip上去选clock。而且A B C之间相互还需要balance, 那么就是2 * 2 * 2 = 8 种可能性。关键是这8种可能性在真实情况下可能只有5种是真实会产生的。

你如果只通过create_clock create_generated_clock set_clock_group set_false_path 方式来做,那么就会产生过约,因为会额外约束多余那3种可能性,如果我通过给mux sel set_case_analysis 来case的话那么就会产生更多的sdc mode, 更多的view.事实上当时这种类似mode有好几十种情况。

57262ac4-224f-11ee-962d-dac502259ad0.jpg

合理的使用set_clock_sense set_sense.应用场景有时会有个A clock 高频clock和B clock 低频clock 经过mux去驱动后面的A INST 与B INST, 真实情况是可能B clock 只会打到A INST 模块进行搬运数据, 比如芯片boot阶段。它不会去B INST 那么一定要用set_sense 去把B clock在B INST 前面停掉,这有利于timing分析也有利于PR 进行长clock tree。默认情况下innovus create ccopt spec 会转换 set_sense /set_clock_sense 为 set_ccopt_property -sink_type igore [get_pin xxx] 这样对于B clock 来说B INST 里面的sink点就不会被balance 。去掉不该balance的 sink点自然tree就会更好。

5732ec8c-224f-11ee-962d-dac502259ad0.jpg

合理利用useful skew ECF/ccd

真实的设计中clock是不可能长的完全平的。那么可以通过useful skew 来达到data clock setup&hold 微妙的平衡。

通过分析DC 的timing报告人为通过set_clock_latency -clock xxx [get_pins xxxx]去调整clock tree 长度,让DC按照不平的clock tree 长度进行优化。进入INNOVUS的时候 INNOVUS create_ccopt_spec 会转换set_clock_latency 命令为

set_ccopt_property -insertion_delay xxx [get_pins xxxx] 来调整clock tree长度,达到更好的平衡。

或者在DC 中开启ccd , 通过write_scripts 写出工具根据组合逻辑和你的设置推出来的tree长度脚本set_clock_latency -offset , 通过脚本转换set_clock_latency -offset 为标准set_clock_latency -clock xxx [get_pins xxx] SDC ,进入INNOVUS 优化。

或者INNOVUS 删除set_clock_latency 开启Cadence 自己的useful skew ECF 来自动进行不平clock tree优化。

至于结果,不好说,不同设计反映不一,推的过多会导致hold难修。当然Synopsys会推荐DC 可以开hold corner 然后来估计hold的影响,让推的不要太凶。

针对这种结构一个M clock驱动两坨逻辑红色和上面黑色。

通常做法是整一个M 整一个GCLK G1 GCLK G2 然后设置clock_group 来解决。

不要尝试直接在G2 位置create一个master clk, 然后设置clock_group

这种会导致G2 前面的source latency 丢失,导致无法分析前面路径的延时SI 等影响,也不能用来signoff

5743a220-224f-11ee-962d-dac502259ad0.jpg

但是这种类型的SDC 用来INNOVUS ccopt 来长clock tree是极好的。尤其是当你不怎么熟悉innovus的ccopt spec ,但是你又很熟悉sdc和clock结构的时候。

innovus默认create的spec就不会balance 红色和蓝色因为你的G2 地方的create的是一个master_clock

当然别忘了update_constraint update回来,更别忘了手动call update_io_latency/set_propagate_clock 来propagated clock 否则你长完tree你的clock还是ideal的。

最后强调一点,默认innovus create ccopt spec 是不识别sdc里面的 clock_group , false_path 的,它只根据你的clock 物理连接结构走。 当然有setting可以让create ccopt spec去识别 clock_group 和false_path ,但是只是大家都不这么做而已。具体原因可能是工具不完善吧,也有可能是这样创建的spec 文件太大,或者太多的这种ccopt的设置会导致不期望的结果之类的。

着重注意IP 位置的clock ,有的情况是一个ip是liberty ,internal pin会打数据 D 出来同时这个internalpin又会打clock出来 IP 外面会有flipflop来接数据,这种path由于launch clock 无法调整。导致timing不好收敛。

5751aece-224f-11ee-962d-dac502259ad0.jpg

或者是这种IP 作为liberty internal pin会打clock出来给flipflop launch 然后再用这个internalpin到IP 边界上去check。这种由于capture clock 没法控制同样不好收敛。

575f3d96-224f-11ee-962d-dac502259ad0.jpg

针对这种情况及时syn pr, 联系vendor 与设计, 确认路径的正确。设计能retime flipflop 多次打拍就提前做。方便timing收敛。

PR 尽量和dft以及sdc owner多沟通。了解dft test_clock sdc里面是怎么下的。通常情况test_clock 会通过不同的occ去trigger 几乎所有的flipflop 。一般情况下dft 穿chain是分clock domain 穿的。也就是各个occ是相互不check的。当你的pr sdc为了简便下的比较粗的情况比如一个create 一个test_clock 完事,没有在各个occ上做test_clock的分开处理。那么建议在ccopt spec里面把test_clock skew group 设置成none不要让它去balance。否则它会退拽整个设计的tree。

576e5542-224f-11ee-962d-dac502259ad0.jpg

设计时钟树时候尽量不要让block 的clock 穿两个port到顶层再去trigger 两个flipflop相互拍数据。这样会导致clock branch point 在block内部,导致cppr过小timing不好收敛。

577b6840-224f-11ee-962d-dac502259ad0.jpg

这对这个问题其实还有变形,原理其实都是控制clock tree 的branch point 来控制cppr来优化timing

如图A block 产生clock 到B block 拍数据给C block 左边连接是不是branch point 在A block内部这样cppr 就小。

如果改成右边的结构 branch point 就在B block cppr 就会变大。当然要注意这时候可能capture path就会过长也许对hold不利。所以要做trade off。本质点在于移动clock branck point.

578b6d80-224f-11ee-962d-dac502259ad0.jpg

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    455

    文章

    50760

    浏览量

    423363
  • pll
    pll
    +关注

    关注

    6

    文章

    776

    浏览量

    135145
  • 时序分析
    +关注

    关注

    2

    文章

    127

    浏览量

    22565
  • 时钟树
    +关注

    关注

    0

    文章

    54

    浏览量

    10744

原文标题:芯片的动脉CLOCK TREE

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    时钟优化与有用时钟延迟

    时钟优化与有用时钟延迟在 “后端时序修正基本思路” 提到了时序优化的基本步骤。其中,最关键的阶段就是时钟建立。
    发表于 10-26 09:29 4425次阅读
    <b class='flag-5'>时钟</b><b class='flag-5'>树</b>优化与有用<b class='flag-5'>时钟</b>延迟

    裁员裁到“大动脉”?理想汽车召回部分被裁员工

    的员工,其合同将直接延续,目前还不清楚召回规模和各部门比例。 有业者称,理想汽车此次裁员裁到了“大动脉”,测试人员出现了不足的情况,影响了产品的研发测试。   理想汽车此前规模性裁员 今年4月7日,理想汽车宣布新一
    的头像 发表于 06-06 00:19 4957次阅读

    STM32芯片时钟

    下面是一个STM32芯片时钟图1、LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。 2、LSE是低速外部
    发表于 08-12 07:45

    电源纹波噪声测试的相关资料分享

    前言: 任何电子产品的运行,都少不了“电源”这个大动脉,这个大动脉的稳定,强健就是保证产品稳定,可靠,长期运行的关键。 产品电源的测试包括:电压测试,纹波噪声测试,电...
    发表于 11-12 07:31

    时钟网格与时钟设计方法对比研究

    基于片上偏差对芯片性能的影响,分析对比了时钟设计与时钟网格设计,重点分析了时钟网格抗OCV影响的优点,并利用实际电路应用两种方法分别进行设
    发表于 05-07 14:13 36次下载
    <b class='flag-5'>时钟</b>网格与<b class='flag-5'>时钟</b><b class='flag-5'>树</b>设计方法对比研究

    射频识别芯片设计的时钟功耗实战

    芯片设计是每个国家的发展重点之一,而壮大中国芯片设计行业将有利于降低我国对国外芯片的依赖程度。再往期文章中,小编曾对芯片设计的正反向流程、芯片
    的头像 发表于 01-25 17:43 3407次阅读
    射频识别<b class='flag-5'>芯片</b>设计的<b class='flag-5'>时钟</b><b class='flag-5'>树</b>功耗实战

    什么样IP网络才能在“新基建”中,充当好“大动脉”角色?

    但是,历经30年发展的IP网络,在承接电信运营商、园区、数据中心的丰富应用时,稍显力不从心。什么样IP网络,才能在火热的“新基建”中,充当好“大动脉”角色?
    的头像 发表于 05-18 15:15 2027次阅读

    电源纹波的噪声测试解析

    任何电子产品的运行,都少不了“电源”这个大动脉,这个大动脉的稳定,强健就是保证产品稳定,可靠,长期运行的关键。
    的头像 发表于 12-19 10:55 4517次阅读

    美东海岸供油“大动脉”断线,有地区现恐慌囤油

    的一条“大动脉”,该管道为东海岸供应了45%的汽油、柴油、航空燃料,还为军方供油。《纽约时报》评价,袭击事件暴露出美国基础设施的脆弱,是“令人不安的信号”。 专家警告,如果未来几天内不解决这个问题,美国东南部各州将首当其冲,迅速出现大规模
    的头像 发表于 05-14 10:03 1552次阅读

    【硬件篇之电源纹波噪声测试】

    前言: 任何电子产品的运行,都少不了“电源”这个大动脉,这个大动脉的稳定,强健就是保证产品稳定,可靠,长期运行的关键。 产品电源的测试包括:电压测试,纹波噪声测试,电...
    发表于 11-07 11:51 20次下载
    【硬件篇之电源纹波噪声测试】

    STM32时钟

    STM32时钟问题1:为什么需要时钟?答:STM 32的时钟系统类似于人的心脏,需要为芯片提供时钟
    发表于 12-06 09:51 16次下载
    STM32<b class='flag-5'>时钟</b><b class='flag-5'>树</b>

    评价时钟质量的方法

    时钟综合,通常我们也叫做CTS。时钟综合就是建立一个时钟网络,使时钟信号能够传递到各个时序器
    的头像 发表于 09-05 10:11 1902次阅读

    TI芯科技 赋能中国新基建 | 西电东输大动脉畅通的背后——TI芯科技赋能中国新基建之特高压

    TI芯科技 赋能中国新基建 | 西电东输大动脉畅通的背后——TI芯科技赋能中国新基建之特高压
    发表于 10-28 11:59 0次下载
    TI芯科技 赋能中国新基建 | 西电东输<b class='flag-5'>大动脉</b>畅通的背后——TI芯科技赋能中国新基建之特高压

    大家需要什么样的clocktree呢?芯片动脉CLOCK TREE介绍

    我觉得称时钟芯片大动脉一点也不夸张,因为所有flipflop 翻转都要受到它的控制。而时钟
    的头像 发表于 07-21 15:42 2945次阅读
    大家需要什么样的clocktree呢?<b class='flag-5'>芯片</b>的<b class='flag-5'>动脉</b>CLOCK TREE介绍

    时钟是什么?介绍两种时钟树结构

    今天来聊一聊时钟。首先我先讲一下我所理解的时钟是什么,然后介绍两种时钟树结构。
    的头像 发表于 12-06 15:23 1730次阅读