首页/文章/ 详情

STA | 10. Noise或Glitch,附CCB解析及实战经验

1年前浏览388

 

CCSN Library


PT-SI在进行噪声分析前,首先需要确认Library中具备噪声模型。CCSN噪声模型建模是基于CCB(Channel Connected Block)。数字逻辑单元可以认为由一级或多级CCB组成,其中反相器,与非门,或非门只包含一级CCB;与门则包含两级CCB;而寄存器则包含多级CCB。下面就简单区分一下三种情况下噪声建模的区别:


单级CCB逻辑单元


对于单级CCB逻辑单元,例如反相器,噪声建模基于时序狐(Arc Based)。噪声的传输可以基于Timing Arc,模型转换框图如下:



反相器的噪声模型在.lib中大致如下:












pin (Z) {...timing ()  {related_pin: A;...ccsn_first_stage() { /*First stage CCB*/...}}...}


两级CCB逻辑单元


对于两级CCB逻辑单元,例如与门,噪声建模也是基于时序狐(Arc Based)。分为input stage (ccsn_first_stage)和output stage (ccsn_last_stage),噪声的传输亦可以基于Timing Arc,模型转换框图如下:



与门的噪声模型在.lib中大致如下:
















pin (Z) {  ...  timing ()  {    related_pin: A;    ...    ccsn_first_stage() { /*Input to Internal Node*/      ...    }    ccsn_last_stage() { /*Internal Node to Output*/     ...      }  } ...}


多级CCB逻辑单元


对于多级CCB逻辑单元,例如寄存器,噪声建模是基于Pin的 (Pin Based),对于所有inputs都抽取ccsn_first_stage模型,对于outputs抽取ccsn_last_stage模型。如果这种逻辑单元中存在某些input-output的路径只有两级CCB,也可以通过Arc Based方式建模。模型转换框图如下:



寄存器的噪声模型在.lib中大致如下:






























pin (CDN) {  ...  }pin (CP) {  ...  ccsn_first_stage() {    ...  }}pin (D) {  ...  ccsn_first_stage() {   ... }  }pin (Q) {  ...  timing ()  {    related_pin: CDN;    ...    ccsn_first_stage() { /*Input to Internal Node*/      ...    }    ccsn_last_stage() { /*Internal Node to Output*/     ...      }  } ...}


需要注意的,对于Arc Based和Pin Based两种方式,.lib中噪声相关的属性存储的对象是不同的,Arc Based噪声属性是存在对于的Arc中,而Pin Based噪声属性则是与Pin关联的,具体的区别可以参看下面的命令:






#Arc Based Attributesget_attribute [get_lib_timing_arc -of [get_lib_cell */INV1X]] has_ccs_noise_above_high
#Pin Based Attributesget_attribute [get_lib_pins -of [get_lib_cell */INV1X]] has_ccs_noise_above_high



 

噪声分析实战


为了进行Noise或者Glitch分析,需要对一个串扰造成的Bump建模,它有宽度和高度,还有面积等属性概念(如下图所示),在分析噪声时可以分别针对height, area, area_percent进行分析,命令如下:







#默认值是heightreport_noise -slack_type height#area=1/2* height * widthreport_noise -slack_type area#area_percent = (constrainted height - actual height) / constrainted heightreport_noise -slack_type area_percent




PT-SI在进行update_noise计算时,首先会采用较为悲观的方式快速计算一个类似于下图中DC noise margin的阈值,如果计算出的Bump Height远低于该值,那么就可以断定没有noise不会传播,没有危害。如果计算出的Bump Height接近这个阈值,那么工具就会启动更精细的类似SPICE的门级仿真,取得更精确的结果。通过这种方式,即节省了时间,又保证了精度。


下图中的曲线可以看做是Noise Immunity Curve(NIC),在曲线左下角的Glitch都是无害的,而右上角的Glitch都是必须修复掉的。PT-SI在进行Noise门级仿真时会实时地计算出各个点的NIC,通过PT的GUI界面也可以调出这类图片。



最后,简单聊一聊万一出现的noise违例,我们怎么去修复呢?


这个需要结合受害(victim)和攻击(aggressor) Net相关路径的时序,周围Net和Cell的密集程度等情况来具体分析,大致上有以下方法:


(1)增加受害Net的驱动单元驱动能力


(2)减少受害Net的负载单元驱动能力


(3)增加受害Net和攻击Net的间距


(4)降低攻击Net的驱动单元驱动能力


(5)通过加Buffer将受害Net打断 (工具一般是通过这种方式来修复)


(6)将受害或者攻击Net的驱动单元或者负载单元挪开一定距离,并重新ECO绕线


来源:白话IC
理论科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-09-07
最近编辑:1年前
白山头
签名征集中
获赞 11粉丝 3文章 176课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈