时钟树综合的CTS介绍
什么是CTS?
为什么你想做CTS?
什么时候做CT?
怎么做CTS?如何对CTS结果进行质量保证?
以上问题看似简单,但真正能回答好的工程师并不多。CTS是面试官在招聘数字IC后端工作时比较喜欢问的一块,因为从应聘者回答问题的广度和深度可以看出,他们一般都知道对方的水平。
PS:正处于一年一度的跳槽高峰期。如果你有技术问题或者工作选择问题,可以私信我(ic-backend2018),免费。能帮忙的会尽力帮忙(知识星球会员特权)。
所以,希望你能多思考一下上面的问题,尤其是最后一个问题,如何做好中旅?千万不要告诉面试官你设置了哪些参数,执行了哪个命令。
时钟插入延迟(时钟树延迟)最短。
时钟树越长,时钟树系列越长,系列越长,树上的功率越大。同时,受OCV效应的影响,时间安排更加难以满足。
以上图为例。如果PLL位于右下角,而触发器位于左上角,则触发器的时钟树延迟将是最长的物理延迟。因为它必须与其他触发器保持平衡,所以其他寄存器也会被加长。
问题:假设核心中间区域有一堆翻牌树,会有什么影响?
如果把PLL放在中间位置,左上角的一部分标上软块,如下图所示,整个时钟树延迟会降低很多。
最近知识星球上有个星友问,内存之间狭窄的通道能不能放寄存器。理论上各种通道都可以放寄存器,但是在深内存文件的情况下,从CTS的角度来说,最好不要放寄存器,因为通道中的寄存器可能会拖累整个时钟树。
因此,CTS友好的平面布置和布局非常重要,它直接决定了CTS的质量。
时钟偏斜最小值
请参阅本文了解时钟偏差的概念。为什么要注意时钟偏差?如何让小时钟歪斜?时钟偏斜如何影响建立和保持?
大多数情况下,我们希望时钟偏斜尽可能小,因为这有利于建立和保持。
但是有时候我们会想,引入一定的时钟偏斜,比如S tools的CCD,可以充分利用前后的时序余量来改善时序。例如,从IR Drop的角度来看,我们不希望寄存器同时翻转。
违反设计规则(DRV)
DRV主要指max_transition、max_cap和max_fanout。前两个是硬性条件,必须在签署阶段满足。
公共时钟路径尽可能长。
当时钟树延迟的长度固定时,公共时钟路径应该尽可能长,以便CRPR补偿越多,就越有利于定时。
非公共时钟路径应尽可能短。
多级时钟门控
从功耗的角度来看,我们希望时钟门控单元尽可能靠近根,并且大部分寄存器应该由时钟门控单元控制。然而,当ICG被放置在根端附近时,ICG使能端的设置很容易出现问题。
时钟门控克隆/时钟门控分裂
在做CTS时,PR工具不仅可以做时钟门控的合并操作,还可以做克隆和拆分操作。上面,我们讨论了CTS阶段的最短非公共时钟路径,因此在许多情况下可以通过克隆时钟门控来实现。
时钟占空比
占空比问题的主要原因是单元的上升延迟和下降延迟之间的不平衡。所以我们在做CTS综合的时候,经常使用时钟反相器作为时钟树。
时钟信号完整性
为了保证时钟信号的质量,在信号路由前会缠绕时钟网,并为其设置NDR。必要时,时钟网络将被屏蔽。
定制时钟树综合
简单设计的话,也许clock_opt -cts或者ccopt_design -cts可以把树做好。但是对于时钟结构复杂的SOC设计,是否可以直接执行命令做一棵树?
显然你不能。
一般中等规模及以上SOC芯片的时钟树综合需要编写时钟树约束文件。因为时钟太多,工具很难处理,尤其是一堆时钟mux操作的时候,工具往往会把树做得很长。工具难做,树做不好的主要原因是时钟结构比较复杂,其复杂程度超出了它的能力。
CTS约束的编写方法
如果我们可以拆分时钟结构,并清楚地告诉工具,那么它仍然可以做得非常漂亮。当然这个前提是你得了解整个芯片的时钟结构。
画时钟结构图和写时钟约束文件都是数字IC后端工程师的必备技能,当然也是非常核心的技能。如果能很好的掌握这个技能,是不是整个数字IC后端的设计和实现难度更大了?
这里结合上图所示的案例,分析一下如何写一个时钟约束文件。
首先,整个芯片的时钟路径可以分为三个部分。第一部分是->晶体振荡器;PLL,第二部分是PLL->;时钟GEN,第三部分是分频器的输出->;各功能模块。
其次,明确了CLOCK Gen模块是用来产生各种分频时钟信号的,它不会和其他逻辑直接交互。因此,该模块中的寄存器与其他寄存器是异步的。
最后,整理出每个时钟路径的端点和时钟异常,比如浮动管脚、排除管脚、不停止管脚、断开一些不需要经过mux的时钟等等。
转自:数字IC后端时钟树集成CTS技术经验分享(高薪必备!)-智虎(zhihu.com)