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进行假设分析
添加测试点