Tessent scan&ATPG(9) simulation mismatch(debug向量仿真问题)

了解在向量仿真时出现mismatch的原因;
了解parallel和serial pattern的特点
识别shift和capture的issue
识别仿真设置和建模的问题对仿真结果的影响

什么是Simulation mismatch

ATPG 工具在生成pattern的时候 使用的是没有时序信息的模型;
使用testbench对向量进行仿真的目的是验证ATPG的期望值是否和仿真器的仿真值相同;
这种mismatch必须在pattern用于测试之前解决掉;

模型抽取

并不是来自top level的所有功能模型都是需要的;
ATPG目的的模型抽取,会使得测试向量的生成变得容易.
ATPG模型和仿真模型的区别如下:
在这里插入图片描述

仿真模型除了有inverter的功能描述之外,还存在时序信息;

ATPG clock frames definition

XXX-[X] 最后一位为capture到的稳定值或者 unload 的值;如果设置了multi-cycle path 或者做了ATPG的constrains [X]为期望值不一定是这个单元capture的值.
在这里插入图片描述

tessent shell生成verilog testbench

工具能够生成两种类型的verilog testbenches;

  1. parallel
write_pattern <pattern_filename> -verilog -parallel
  1. serial
write_pattern <pattern_filename> -verilog -serial

使用parameter file控制和报告参数能帮助debug mismatches

write_pattern <filename> -Parameter_file <filename> / -Parameter_list
#这些参数可以:
#创建指定的debug waveform
#修改 parallel testbench的delay
#在parallel testbench中应用串行shift
#记录mismatch的信息等
parallel和serial testbench的区别

parallel:
强制所有的scan flops从scan input pin 并行输入;
所以仅有单个并行shift cycle
可以大大减少仿真时间和debug的难度;
仅能发现 capture cycle的mismatch
在这里插入图片描述

serial:
数据是有扫描链的scan input端串行输入到 scan cell之中(和实际的测试条件一致);
shift cycle 的长度取决于最长的扫描链,且 EDT逻辑的load cycle 也会延长仿真时间.
只有被观测的扫描输出引脚可以被报告;
仿真时间也会很长,特别是在做后仿的时候;
能发现存在于 shift cycle和capture cycle的问题;
在这里插入图片描述
在这里插入图片描述

所以为了发现和debug simulation mismatches;建议首先进行parallel testbench的仿真 detect parallel shift的问题和capture的问题;
其次使用 parallel with N shift 去detect serial shift和parallel shift的问题 以及capture的问题;
再次使用 bypass EDT的serial testbench去detect serial shift的问题以及capture的问题;使用EDT 的serial testbench去附加detect EDT裸机的问题;

verilog testbench文件包含

在这里插入图片描述

parameter:SIM_VECTYPE_SIGNAL

这个参数会向waveform中添加一些关于test pattern的信息;如 pattern number 和cycle number等
在这里插入图片描述

判断mismatch 发生的位置

跑testbench ,simulation mismatch会像如下报告:
在这里插入图片描述

#设置pattern的类型
set_context pattern -scan 
#读取扁平设计
read_flat_model <flattened design>
#读取pattern数据
read_patterns <ascii/bin>
#加parameter,将pattern的ID
set_get_report pattern <failing pattern> -external
#报告
report_scan_cells <chain name> <name number> -display hierarchical_schematic

Trace back(追溯)

定位是哪个pattern 哪个register,可以使用Tessent visualizer和波形去追溯;
确定造成问题的原因: 60%的问题是由timing不满足造成,35%由CCD/NCP 和internal pins造成(内部时钟,不正确的时钟,内部pin不正确的value定义),2%由DRC(C6,T24,D1,K)造成,2%由工具不正确的setting造成;1%由初始化设计方案有关;

timing

时序上的问题分下面几个方面:

  1. clock skew; serial pattern仿真中存在多个失败的shift cycle就很有可能是clock skew的原因;flop的输出位X态且报告setup/hold的违例;数据变化且flop capture到新的数据这种情况都可以考虑是否为clock skew的原因;
  2. Zero delay; 反标没标好,或者约束不完整,导致一些逻辑行为立刻发生,比如clock skew 就不该为0延迟;前后两级flop的时钟是不能同时toggle的;
  3. parallel shift cycle(时序违例) parallel force太靠近clock pulse 导致setup的违例,parallel release 太靠近clock pulse导致hold违例;parallel release 太靠近下一个 clock pulse导致setup的违例;
  4. 小故障, 时钟 set/reset存在问题;具体啥问题不清楚;
  5. false 和multi-cycle path;
CCD/NCP & internal pins

CCD(clock control definition)
NCP(named clock procedure)
问题分以下几个方面:

  1. clock pulses(在 sim中有clock pulse 在ATPG的时候没有 反之亦然,或者clock pulse在不正确的cycle);
  2. reference clock;(reference clock没有pulse,reference clock在不正确的时间pulse);
  3. CCD/NCP(在CCD和NCP中错误的条件描述);
  4. 追溯问题到了黑盒的内部引脚;

pattern Masking

对于一些mismatch, 逻辑中确有这种情况,或者ATPG存在overtest的情况; 知道原因不可解决,可以通过添加Pattern Mask的方法进行解决;

#通过 re-simulation的放置创建mask pattern;
#那些需要约束为观测X 或者OX的可以通过re-simulation的方式解决;
set_system_mode analysis
read_patterns pat_ascii.gz
add_cell_constraints chain1 7 OX
add_flaults -all
simulate_patterns -source external -store_patterns all
report_statistics
write_patterns <>

Auto simulation

在这里插入图片描述
在这里插入图片描述

  • 13
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺脆兵兵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值