如何利用工具提高测试覆盖率
1.对错误进行评估,优先找覆盖率低的大的Block.
2. 判断那些分类到untested种类的错误,是否是用户干预导致的.AU,UC.UO
3.对Fualt进行逐个分析.
使用 report_statistics 命令 查看测试覆盖率以及各fault分类的数量比例.
通过 tessent visualizer 可以可视化的去分析fault分布,以设计结构查看每一个block的测试覆盖率及fault信息.
使用 analyze_fault /p1/fpu1/U2694/A1 -stuck_at 1 -display
分析 U2694单元的A1引脚的 stuck_at 1 的问题. 看它能不能控制为0;
#使用
report_faults -class class_type
report_faults -class UC
#报告完整的 UC类型的fault list
#使用
analyze_fault
#去分析指定的fault没有被detected到;
#执行fault分析,在 Tessent Visualizer中展示fault所在电路结构;
analyze_fault /p1/fpu1/U1234/Y -stuck_at 1
#使用
report_test_stimulus
#展示指定条件下的激励
-set
-write
-read
#当需要将某点控制为某个值时, 与他相关的逻辑是如何配置的.
造成AU类型的原因:
set_gate_report constrain_value
#展示约束值,forbidden值和是否被blocked
#然后
report_gate
#命令就会展示这三种值
CV/FV/B
#constrained value Forbidden Value & blocked no path to propagate fault if '-' is not blocked
#判断 AU 是否是由constrains 造成的;
如图所示, 最右侧与非门被constrained为0; forbidden1; 那么与非门的输出会恒为1; 所以前面的 xnor2 为blocking type 为B, 没有办法观测;
#使用
add_atpg_constraints 1 /pin/path
#指导ATPG工具在特定位置应用一个特定值的pattern;
#如果 ATPG工具没办法设置这个约束, 使用
analyze_restriction
#去报告为什么不能设置约束;
使用ATPG约束会创建一个pattern ,在launch和capture期间约束为一个特定的值;如果工具没有办法设置这个约束值, 使用
analyze_restriction
去报告原因;
前一级的cell constrains会影响到下一级的控制情况;
可以通过添加内部私有输入点的方式去控制某一点的状态;
add_primary_input /top/bypass/U10/A -pseudo_port_name my_bypass
add_input_constraints my_bypass -C0
#使用
set_gate_report parallel_pattern 0
# 去报告 index 为0 的parallel pattern 在电路中每个node 的值;
# XXX 三个值对应 clock的三个frame;
# 工具将时钟pulse 分为凸Pulse和凹pulse
# 这三个frame包括: clock_off post_LE,post_TE
# 对于边沿触发 和电平触发的时序器件,更新值的位置有所不同, 边沿触发的期间在0-1转换时触发,电平触发单元更新于clock = 1时;
#所有的单元都在相同的frame立刻更新;
set_gate_report pattern_index 4 -internal -scan_test
#去报告某一pattern的具体情况