上篇写在一个多月之前,《论STA | 跟CRPR/CPPR 相关的一切(上)》,芝麻榨油,今天把下篇写完,就老驴认知范围,下篇包含:CPPR 跟cross talk delta delay 的关系;clock Reconvergence 的CPPR; CPPR 的report; CPPR 相关变量;Innovus 中CPPR 的设置。难免疏忽,欢迎补充。
CPPR 跟cross talk delta delay 的关系
因为耦合电容存在,在先进工艺结点,cross talk 几乎不能避免,所以通常STA 分析都要使能SI, 即:在计算timing 时将耦合电容的影响考虑在内。cross talk 是STA 一个巨大的话题,除了对timing 的影响,还有glitch 的分析,驴会单辟章节详述,此处只做简单叙述。
来来来,驴要开车了,请扶好坐稳。耦合电容好比传播介质,做得好的设计好比隔音好的房子,隔壁啪得声音再大,也传不过来,因为耦合电容小到几乎没有,做得差的设计就是没隔音的破房子,恨不得隔壁的悄悄话都能在这边绕梁三日。带SI 的STA 分析,有两个基本对象:Victim 跟 Aggressor, 太难记,对应成『受』跟『攻』就好记多了。『受』就是当前分析的这条net, 每个『受』的周围都可能有一个或多个『攻』。当『攻』跟『受』同向翻转时,会加快『受』的跳变,当『攻』跟『受』异向翻转时,会减缓『受』的跳变。
在当前STA 方法学中,对由cross talk 引起的delta delay 的计算方式是:先分别计算『攻』和『受』的timing window ,选取有overlap 的『攻』来计算对『受』的影响,如果『攻』的力度太小也会被过滤掉,只有强大到一定的『攻』才会被计算在内。
在这种情况下,common path 上由cross talk 引起的delta delay 如何处理?
clock Reconvergence 的CPPR
所谓clock reconvergence 就是分开又相聚的clock path, 看图说话,在下图CLK1 在C1 点分了叉在CP2 点又相聚,又分叉在CP3 点再相聚。对于这样的clock path 在计算CPPR 时,不同工具都有相应变量控制,在Tempus 跟Innovus 中由如下变量控制:
timing_cppr_skip_clock_reconvergence
该变量默认值是false, 工具在计算CPPR 的时候,CP4之前的path 都会被当做common path 处理;当该变量被设成true, 工具在计算CPPR 的时候,CP1 之前的path 才会被当做common path 处理。
CPPR 的report
不同工具的report 命令大同小异,在Tempus 跟Innovus 中命令为report_cppr:
如果读过《论STA | 读懂timing report, 很重要》跟《论STA | report_delay_calculation 及其他重要的命令》,这个report 应该可以读懂,此处就不再展开,如有需求可以番外。在该report 中有一行:Pessimism Threshold Value: 0.020, 这个值在不同工具中也是由变量控制的,为了runtime 可以牺牲掉部分精度,如果记忆正确,目前大部分工具中默认值都是20ps, 通常在timing signoff 的最后阶段为了追求timing 精度(其实是工程师想得到更好看的timing)会将该值设成一个非常小的值比如1ps 或5ps, 在Tempus 跟Innovus 中对应的变量是:timing_cppr_threshold_ps.
CPPR 相关变量
如下是在Tempus 跟Innovus 中跟CPPR 相关的变量。
Innovus 中CPPR 的设置
驴说IC