Tessent scan ATPG (1)scan chain基本原理
manufacturing defact 制造缺陷
- hard tie to power or ground,就是我们经常说的 stuck-at 0 /1
- short,bridge between twe connection。连接之间的短路或桥接,表现为某条路径输入输出关系不对应。
- capacitive or resistive pad。表现为某个单元引脚的信号翻转时间存在 slow-to-rise /down(0-1翻转很慢或者1-0翻转很慢)的情况在,或者所在的path delay比期望的要大;
测试的类型
scan test,扫描测试
scan test with compression 带压缩的扫描测试
BIST,内建自测试
-memory test 存储器的内建自测试
-logic test 逻辑的内建自测试
Founctional test(包含一些analog 的IP 或者混合信号的IP会用到)
芯片是如何测试的
control & observe
控制和观测 :
控制:是指我们能否有意识的去测试(给激励)target site
观测: 我们能否观测到 测试激励的影响;
这是 做manufacture test的最基本的指导原则
fault models
fault model提供了一种找defect的机械方法,针对不同的电路结构,都会有各种defect的fault model ,通过生成测试pattern 测试确定是否存在这些defect;
例如测试下图单元的故障模型 stuck-at 0:
test pattern
test pattern 主要完成两件事情:
- fault activation (fault 使能)我们所说的 control 对测试site 的前置电路进行配置,使得到达测试点的信号是 fault model 可用的信号。
2。 fault propagation (fault 传播)我们所说的 observe,要考虑下级电路能否将 fualt 传递下去
ATPG auto test pattern generation
test cube:一个test cube 是指 与我们要测试的一个target site相关连的电路一个电路区域。
如上图所示, 基本的ATPG flow 分以下几步:
- 从fault model 库中抽取一部fault 大约只占总体fault的1%-5% ,作为target fault 去生成pattern,
- 拿着pattern 去做simulation ,
- 确定那些fault 点测到了 哪些没有测到 此时的fault 集合为全集 如果 target fault 被detect了 这个pattern 就会被保留 如果其他的fault 被偶然detect了 那么这些fault也会被标记为detected
scan test
结构上就是 scan chain 的形式;
需要将 founctional 的DFF 替换为 scan-used 的SFF 其主要的区别就是 在寄存器的D端 会有选通,选通普通输入和测试输入》
overview
- testsetup; scan mode 控制
- load/unload 就是scan chain 的shift 的过程。scan enable拉高 对扫描链上的寄存器进行赋值。
- capture, scan enable 拉低后 对逻辑的运算值值进行capture。此时的运算值 是对shift到寄存器中的特定值进行的运算。 这里并非只有 capture clock 也包括PI(force primary inputs)PO(measure primary outputs)
- repeat load/unload 就是将capture后的值 shift 出来,和我们期望的值进行比较。
这里就出现了一个问题:
就是我们shift 进去的值 被PI capture之后的值 覆盖掉了 那我的shift 又有什么意义??
ATPG 工具: fast scan 和 testKompress
ATPG测试结果诊断工具: Diagnosis
tessent shell 的模式
tessent -shell 打开tessent工具
默认启动后的模式为setup
mode 是和特定工具相关连的 以哦个mode 对应着一种或者几种 工具 功能的集合
tessent 的mode 主要分:
- setup 定义当前的contest 导入设计信息等
- analysis 执行设计分析 pattern生成 PDL retartget 重定向 和 simulation
- insertion 执行设计的edit 和 introspection 编辑和反省;
tessent context
设置 context (环境)指定你想要tessent shell 执行的功能
使用set_context *patterns -sacn
PDL retarget是啥?
setup
add_test_logic
设计中如果包含一些 不可控的时钟电路:
比如存在分频器 或者 倍频器电路存在
你可以使用 set_test_logic -set on -reset on -clock on
告诉工具你想要把测试逻辑添加在什么地方。使电路能够顺利通过DRC;
你也可以使用 add_cell_model 去指定 你使用哪个库里的什么单元去完成test logic 的创建。
set_test_logic_configration
add_non-scan_instance -instance 定义不需要做scan-chain‘的block。
将我们的TAP controller 从插扫描链的集合中剔除。
Design rule check
主要是 验证 电路中是否存在不可控的时序单元,scan chain 能否trace通 等
使用命令 check_drc_rules;
检查的设计规则主要分以下几个大类:
G rule: general rules 检查一般的扫描链定义的错误;
T rule: trace rules ,使用test procedure文件去trace scan chain
S rule:Scan ability rule,确保tessent 工具能够安全的将时序单元替换为扫描链单元 下面常见的规则又有:
- S1 确定当所有的时钟关闭的时候 时序单元可以保持稳定和不活跃
- S2 确保 当其他时钟关闭的时候 defined clock 可以capture到逻辑中的值。
scan /testlogic 的insertion
现在区别保存的格式 分两种flow
- TSDB flow 顾名思义就是将插好的test logic netlist及其他信息保存在tsdb中,他是tessent工具专用的数据库格式。
insert_test_logic -write_in_tsdb on -design_identifier
#设计的标签
- 为了在不同的工具中进行stream 的交换,legacy flow
insert_test_logic
write_design -output
write_atpg_setup
ANALYSE report一些东西
#报告tessent 为你增加的端口 逻辑等
report_test_logic
#报告scan chain 的长度 起点终点 所属group等
#报告 scan mode 的类型; 里面有一个叫unwapped 啥意思?
report_scan_chain
leading edge和 trailing egde scan cell
默认情况下 工具会把所有时钟域的单元串在一起。包含不同的clock domain 和clock egde
为了把他们分开 串chain使用命令
add_scan_mode -single_clock_domian_chains on \
-singel_clock_egde_chains on
leading(领导的) & trailing(拖尾的 蔓延的 被拖动的) egdes 的时钟可以被综合到一条scan chain中,但会首先将所有的 trailing egde clock的单元串起来。
one chain two clocks
有一种情况:当一条scan chain同时被两个 clock domain驱动时,两个时钟之间的clock skew会造成是时序上的问题。
如下图,就是clock skew 造成的hold time的问题。
默认 tessent scan工具会在两个clock domain之间加一个look_up latch 去消除 skew 的问题
add_scan_mode -singel_clock_domain_chain off
所插latch 与前一级寄存器触发延相反
balance scan chain
做balance 的作用就是 平衡每条chain的长度
add_scan_mode -chain_length 400
/-chain_count 50
hierarchical scan insertion HSI
层次化的scan insertion 对于大型工程的任务分摊是有意义的,Tessent Scan 2016。4之后的版本都提供 HSI,其最重要的特征就是 能够通过tcd文件导入 sub-chain 的信息,对于使用一些已经有scan-chain 的IP 就无需再重新画chain。
wrapper chain 是啥?
将scan chain的信息保存在tcd文件中 ATPG用
scan chain family
同一个family中的单元 才能串到一个chain中;
create_scan_chain_family family_clk1 -include_elements \
[get_scan-element -filter“clock_domain == clk1”]create_scan_chain_family family_clk23 -include_elements \
[get_scan_element -filter "clock_domain == clk2 || clock_domain ==clk3"]
multi_mode scan chain
multi_mode 指的是 不同条数 长度的mode 的scan chain;
EDT bypass scan insertion的时候会用到
什么是EDT ??
HSI 的时候也会用到, HSI 中可能会有 wrapped core 存在;???? 就就会分 internal 和external mode
example : 2 scan mode
如创建EDT mode multi bypass mode 和 singel chain bypass mode
add_scan_mdoe edt_mode -edt_instance disply_tessent_rtl_edt_c1_inst
#制定了EDT的model
add_scan_mode multi_mode -chain_count 4
add_scan_mode singel_mode -chain_count 1#两种不同配置的EDT mode 主要是 chain length 和 chain count 的一个区别 egde 和domain 默认为off
add_scan_mode mode1 -chain_length 200 -single_clock_domian_chains off -single_clock_edge_chains off
add_scan_mode mode2 -chain_count 40
mode 定义后的analyse
analyze _scan_chain
#分析每个mode 的情况 包括 chain的长度 条数等
report_scan_chain 可以报告的更加详细
delete_scan_mode mode2
add_scan_mode mode2 -chain_count 30 #对mode 进行修改
#再次进行分析
analyze_scan_chains
insert_test_logic #执行scan 的stitching
tessent scan pro
除了继承了所有tessen scan 的特性以外
还有 VersaPoint Test Points
X-bounding
OCC logic creation
Design Editing and introspection
什么是 test_point
帮助我们提高设计的testability (可测性)分为 observe test point和control test point,以及both
observe test point ,解决一个多输入AND 输出端口的可测性问题, 如下图,无论输入为何,输出恒为1, 也就是说 与门前的stuck_at 0 /1的问题是不可测的。
control test point , 比如需要经过很多flops 才能够控制到的 一个输入。
什么是 VersaPoint test point
能够减少pattern 的count
提高测试的coverage,将一些untestability的点,也测试到。
主要的方法就是插入额外的赋值的电路。
两种flow 去插test point
pre scan test point insertion flow
post scan test point insertion flow
只有tessen scan pro 和logicBIST 是支持的
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!