罗风 · 2021年03月30日

论STA | 跟CRPR/CPPR 相关的一切(下)

上篇写在一个多月之前,《论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 的分析,驴会单辟章节详述,此处只做简单叙述。

WeChat Image_20210330095404.png

来来来,驴要开车了,请扶好坐稳。耦合电容好比传播介质,做得好的设计好比隔音好的房子,隔壁啪得声音再大,也传不过来,因为耦合电容小到几乎没有,做得差的设计就是没隔音的破房子,恨不得隔壁的悄悄话都能在这边绕梁三日。带SI 的STA 分析,有两个基本对象:Victim 跟 Aggressor, 太难记,对应成『受』跟『攻』就好记多了。『受』就是当前分析的这条net, 每个『受』的周围都可能有一个或多个『攻』。当『攻』跟『受』同向翻转时,会加快『受』的跳变,当『攻』跟『受』异向翻转时,会减缓『受』的跳变。

在当前STA 方法学中,对由cross talk 引起的delta delay 的计算方式是:先分别计算『攻』和『受』的timing window ,选取有overlap 的『攻』来计算对『受』的影响,如果『攻』的力度太小也会被过滤掉,只有强大到一定的『攻』才会被计算在内。

  • 对于setup: 会假设launch clock and data path 上所有『受』的『攻』都跟『受』异向翻转,都会减缓『受』的跳变,使整条timing path delay 变长;同时也假设capture clock path 上所有『受』的『攻』都跟『受』同向翻转,都会加快『受』的跳变,使整条timing path delay 变短。
  • 对于hold: 会假设launch clock and data path 上所有『受』的『攻』都跟『受』同向翻转,都会加快『受』的跳变,使整条timing path delay 变短;同时也假设capture clock path 上所有『受』的『攻』都跟『受』异向翻转,都会减缓『受』的跳变,使整条timing path delay 变长。

在这种情况下,common path 上由cross talk 引起的delta delay 如何处理?

  • 对于setup, 通常launch clock 跟capture clock 都不是同沿clock, 而在实际电路中,不能保证非同沿clock 对应的timing window 一致,所以就不能保证『受』在非同沿clock 遇到相同的『攻』,在这种情况下,common path 上由cross talk 引起的delta delay 是不能够用CPPR 减掉的。< 特别声明:在一些特别的设计里,有同沿的setup check 对于同沿的setup check 由cross talk 引起的delta delay 是能够用CPPR 减掉的. >
  • 对于hold, 通常launch clock 跟capture clock 都是同沿clock, 同沿clock 对应的timing window 一致,所以『受』在同沿clock 总能遇到相同的『攻』,在这种情况下,common path 上由cross talk 引起的delta delay 是能够用CPPR 减掉的。

clock Reconvergence 的CPPR

所谓clock reconvergence 就是分开又相聚的clock path, 看图说话,在下图CLK1 在C1 点分了叉在CP2 点又相聚,又分叉在CP3 点再相聚。对于这样的clock path 在计算CPPR 时,不同工具都有相应变量控制,在Tempus 跟Innovus 中由如下变量控制:

\_timing\_cppr\_skip\_clock\_reconvergence \_

WeChat Image_20210330095431.jpg

该变量默认值是false, 工具在计算CPPR 的时候,CP4之前的path 都会被当做common path 处理;当该变量被设成true, 工具在计算CPPR 的时候,CP1 之前的path 才会被当做common path 处理。

CPPR 的report

不同工具的report 命令大同小异,在Tempus 跟Innovus 中命令为report\_cppr:

WeChat Image_20210330095451.jpg

如果读过《论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 相关的变量。

WeChat Image_20210330095559.jpg

Innovus 中CPPR 的设置

WeChat Image_20210330095607.jpg

作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/G-wQwuCokluUKBIsk4Ne0g
作者微信公众号
捕获.PNG

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
11235
内容数
1222
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息