AU类型的fault占比过高,覆盖率低,Debug步骤

More articles You can follow the official account:”IC练习生”
IC民工不定期更新

AU为ATPG untestable,是ATPG无法测试的faults;
fault点被划入AU类型里的主要原因:

scan cell的数量和chain的数量正常,
在pattern产生开始就报出warning: the number of AU faults has increased by **% since thestart of this ATPG;
随着pattern数量的增加 AU的比例不断增大;
最终 AU faults的占比达到45.13%,其中大部分还是unclassified(无法分类的);
最终的test_coverage 停到了31.43%;
生成了221条pattern, pattern的有效率只有77.34%;

### 使用
report_fualts AU.unclassified
将所有AU类型的faults点报出.

一般会把关注点放在寄存器的 D ,这种fault location 会更容易trace一些;
#使用
set_gate_report +option
#见后面的命令详解
set_gate_report PATtern_index 0
#尝试查看首条pattern 在schematic中门电路的配置情况;
#工具提示
No internal scan test pattern exist
#尝试
set_gate_report PATtern_index 0 -Internal -CHain_test
#工具提示
warning the selected pattern contains no capture cycle so cannot be simulated for report
#现在保存pattern没有capture cycle; 这是什么原因造成的呢??

#(结合最后的故障原因分析,放在最后)
#尝试
set_gate_report Drc_pattern STABLE_Capture
#查看电路状态
#选择AU中unclassified子类中报告出来的fault_points中outstanding_xfer_reg_0_ 寄存器的D端进行追溯;
#之前加-PATtern_index选项 无法正常报告的原因:
#在脚本中:
write_PATtern#之后
#为了获得internal_mode下产生的测试覆盖率更加准确的理解,消除在internal mode下没有侦测到的fault 在external mode下被发现了的情况,可以将external_mode下的fault list读进来与当前fault进行merge;
read_faults -mode ext_multi_transition -fault_type transition -merge
#导致 内部测试向量没有读入
#解决方法: 从头再来 不执行
#或者 再次读入向量;
read_pattern -fault_type transition -mode internal_mode

在ATPG阶段加入set_static_dft_signal 将sync_set_reset_disable信号配置为高;

用来指定report_gate展示的信息以及在schematic上面显示的额外信息,如pattern 在此地的配置情况;

会报告受NCP(named capture procedure)中force 和条件定义影响的的每个门的值;用来debug 指定NPC的问题如不能detect一个fault或者预防总线竞争;

展示指定引脚的clock_cone数据;
来自report_gate 的clock cone 的信息同样可用在 时钟规则违例的错误信息上;
且只能在 create_flat_model之后,才能使用这个选项;引脚必须是一个有效的时钟引脚,否则会提示错误的条件;

展示门的在错误发生点的仿真值以及它pattern的输入

展示门上faults的detection status(侦查状态),

DS – detected by simulation
DI – detected by implication
PU – possible detect untestable
PT – possibale detect testable
AU – atpg untestable
UC – undetected uncontrolled
UO – undetected unobserved
UU – untestable blocked
TI – untestable tied
RE – untestable redundant

这个选项只有当另一个命令指导你使用它的时候才可以用;例如 analyze_bus 命令可能会提示你使用”set_gate_report parallel_pattern 0″;

展示最后仿真流程中特定pattern number 各个门上的值;pattern的孆在整数0-63之间;
当报告一个时序单元的时候,报告中同时会展示一个中括号在每个单元的输出上;对于non_scan elements,这个值为capture之后的值,常常匹配最后一帧的仿真值;对于scan elements 这个值为scan cellunload的值,可能和capture的值不相同;对于multicycle pattern,capture value仅是最后一个cycle的值;
中括号中的值很有用,因为你可以直接看到好的机器仿真的结果,这个结果可能会在capture的最后一个cycle的时候改变;

三个一组展示pattern 对于门电路的配置情况;
当报告一个时序单元的时候,报告中也会展示一个中括号在每个单元的输出引脚上;对于non_scan elements会展示capture的结果; 对于 scan elements, 这个值为scan cell的unload的值;

Original: https://blog.csdn.net/weixin_41464428/article/details/127794276
Author: 旺旺脆兵兵
Title: AU类型的fault占比过高,覆盖率低,Debug步骤

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/652579/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球