/* */

ATPG原理及实现——5.ATPG

Basic-Scan(优先使用)

速度极快,覆盖范围广,可进行全扫描

Fast-Sequential(如果有需要使用)

全扫描设计的覆盖范围更大;

适用于memory周围的阴影逻辑、有限的no--scan

Full-Sequential(最后使用)

强大的引擎支持更复杂的设计

 

run_atpg -auto自动执行最好的结果

一、Basic-Scan VS. Fast-Sequential

Basic-Scan

全扫描,单捕获时钟脉冲

Fast-Sequential

数量有限的no-scan(非扫描触发器,latches,bus keepers,RAMs),可能有多个捕获时钟脉冲

 

 

 

 

 

 

二、降低AU fault,提高测试覆盖率

1、在basic scan后启动fast sequential

如果在Basic-Scan ATPG之后仍然存在AU故障,那么可启用fast sequential ATPG:

set_patterns  -histogram_summary

set_atpg  -capture_cycles  <d>     d设置为2-10之间的整数

run_atpg -auto

capture_cycles常用设置:

最优的runtime——set_atpg -capture_cycles 3
最优的覆盖率——set_atpg -capture_cycles 10
RAMs最小的设置—— set atpg -capture cycles 4

显示每个捕获深度的pattern数量以及multi-load pattern的数量

set_patterns  -histogram_summary

 

 

 

2、启动full dequential

set_atpg  -full_seq_atpg <other_opts>

run_atpg  -auto

run_atpg  -auto full_sequential_only

 

三、降低ND fault

ATPG尝试检测故障次数的限制,提高此限制可能会减少ND fault的数量——以较长的运行时间和较高的pattern计数为代价

在basic-scan和fast-sequential中,限制次数:

set_atpg  -abort <N>(默认为10)

在full-sequential中,ATPG主要控制-full_seq_time,它指定每个故障花费的最长时间(以秒为单位):

set_atpg  -full_seq_time <N>(默认为10)

 

  • 推荐逐渐增加abort limit

   run_atpg -auto
   set_atpg -abort 100
   run _atpg -auto
   set_atpg -abort 1000
   run_atpg -auto

四、Debug 较低的测试覆盖率

层次化报告测试覆盖率

便于定位哪个模块有问题

 

 

 

report_summaries——看哪类fault较多

report pi_constraints——查看约束是否合理,主要解决AU问题

 

 

 

report_clocks -verbose

lnvestigate DRC rule violations

report_faults

 

 

analyze_faults

 

 

 

 

提高测试覆盖率的方法:

  • 无需更改设计

   增加abort limit——减少ND
   启用快速顺序和全顺序ATPG——减少AU
   创建TetraMAX memory模型——增加memory shodow logic测试覆盖率
   消除一些Pl约束 (eg.异步reset上的Pl约束导致覆盖率降低)
   使用analyst_faults

  • 更改设计

   修复DRC违规
   add scan to non-scan cell——使用TMAX set_scan_ability进行假设分析
   添加测试点

 

posted @ 2021-01-07 17:53  柚柚汁呀  阅读(6962)  评论(0编辑  收藏  举报
/*
*/