DFT SCAN

测试类型

Functional测试

验证电路的功能

Simulation、verification of design logic

模拟、数字、数模混合测试

可以是板级、子系统、系统级进行测试

结构化测试

主要目标是对生产制造过程中的故障进行测试

包括

DC Scan

AC Scan

Logic BIST

BSD

Fault Models

Stuck at fault

如果测试sa-0/1故障,需要将其置于相反的值(1/0)

观察(Observe)这个点的value值,并且与期望的值进行比较来判断是否有故障

对于下面的例子,只需要3 vectors就可以覆盖6个faults。

一些fault是等价的。

Transition fault

Transition faults模型是用于测试是否有大的delay这种故障。

常出现的有:slow to rise和slow to fall故障类型

测试这种故障,需要产生一个翻转,然后在期望的是将窗口内捕获是否能够有期望值。

Path delay

IDDQ

Open

Timing aware

Bridge fault

       Two models exist:

       Layout aware test based on physical attibutes

       Statistical model testing each gate terminal multiple times (multiple detection model)

Testability

Controllability

       能够通过primary inputs控制(control)电路的内部状态的能力。

Observability

       能够通过primary outputs观察(observe)内部电路状态的能力。

挑战:

       集成电路规模的复杂度的提高

       DFT能够使用的IO资源有限

通过scan chain提高testability

       普通的寄存器替换成scan 寄存器

       连接scan寄存器组成scan chain

       增加一些scan IO

高测试性电路

       测试时电路可以置于已知状态

       PIs是可控的

       Pos是可观测与可测量

Scan cell类型

Mux scan cell类型:

       应用在大部分的设计中

       通过MUX选择输入的数据

              在normal mode/capture mode下走D pin

              在shift mode下走Scan_in(SI)

              Scan_enable(SE)用于选择不同的mode

       增加了传输延时

       增加了5-15%面积

LSSD Scan cell类型

       又是会在高速design中应用

       常用的mode:

              Normal mode:使用系统CLK capture数据D

              Test mode:使用non-overlapping clock(ENSA ENSB)通过latch来shift SI

                                   Scan output是SO

Scan chain

Function/normal mode/capture mode下:SE=0,选中D pin

Shift mode下:SE=1,选中SI,scan cell连成串行的链,通过scan chain移入/移出数据

在scan测试时主要的3个阶段:

       Setup

       Load/unload

       Lunch/capture

DC测试是用于测试stuck-at故障

AC测试是用于测试transition故障

ATPG

       Automatic Test Pattern Generation的简称,自动化的产生测试向量

       Test pattern,有时称为Test vector,是一系列的0和1值

芯片生产测试

       Automatic Test Equipment(ATE)是芯片测试仪器

       ATE可以存储pattern并将其通过primary input加载到芯片中

       ATE可以检测芯片输出,判断是否有生产制造故障

Scan flow

       准备综合后的gate level的netlist

       Scan insertion来串联scan chian

       运行ATPG来产生用于ATE基台的test pattern

Design requirements→RTL Coding→RTL Design→Synthesis→Gate Level Netlist→Scan Insertion→Scan Inserted Netlist→ATPG→test pattern→ATE

基于Tessent扫描插入流程

Introduction to Tessent Scan

Tessent Scan可以识别并插入一系列测试电路:包括不同的scan架构和test point,工具支持如下的structrues:

Scan——Too将通过DRC检查的sequential elements转化成scan cells并串chain

Wrapper chains——Tool识别input/output pin按照一定的rule插入相关的wrapper chain。

Test point——Tool根据user定义或者基于分析插入用于提高test coverage或者降低pattern插入的control/observe的test points。

TCD(for sub-chains):如果有已经存在的scan模块,可以通过tcd文件做相关描述,并将其作为输入文件,该模块的scan chain部分作为整体串入chain。

Test Procedure File:该文件描述scan电路的行为,对于存在scan的电路或者需要初始化的时候会用到。

调用Tessent scan

当tessent scan已经安装并可以使用时,使用tessent -shell调用进入shell mode,并指定context为“dft -scan”

Tool调用后首先进入setup mode,就可准备加载design或者相关config,定义电路以及相关scan data。

Scan insertion flow

如果综合的netlist只有普通的寄存器,scan过程可以进行scan cell的替换。

也可以使用命令强制替换:set_cell_mapping -new_model SDFF -model DFF -model DFF -module ABC

定义scan clock

比如design中存在两个scan clock,“clk1”和“clk2”,关断状态(off-states)为0可以使用如下方式定义:

       add_clocks 0 clk1 clk2

如果有相同的off-state,可以在同一命令定义多个clock,必须在进行DRC检查之前定义完clock,不然会导致DRC检查fail或者导致寄存器无法上chain。

如果不清楚当前design中的clock,使用命令analyze_control_signals去识别以及定义所有clock,如果有其它控制信号(set/reset/scan_en)的话,也会被定义上。

根据定义的scan clock来串chain,或者说某个寄存器是否符合上chian的其中一个条件是clcok是否定义的scan clock。

Scan en配置

使用如下命令为scan chain分配scan_enable信号

       set_scan_enable [primary_input | scan_enable_pin_pathname]

输入端口初始化

       使用如下命令指定输入端口初始化:

       set_input_constraints SEL -C1

user-class non-scan/scan

       user可以强制的指定某些instance/model为non-scan/scan。

       比如:

       add_nonscan_instances -instances i_1006

       add_nonscan_instances -all

       add_scan_instances -instances i_1006 i_1007

      

       delete_nonscan_instances

       delete_scan_instances

       report_nonscan_models

       report_scan_elements

       report_scan_models

DRC检查

       确保扫描操作可以正常执行;确保寄存器的可控性

       使用set_system_mode analysis/check_design_rules&report_drc_rules

       出现违例时,工具标记scannability rules(S Rules)

              scan clock violation

              async set/reset violation

scan chain config

       使用set_scan_insertion_options命令控制scan chain相关的配置,使用指定scan chain的最大长度不超过1024,使用如下设置:

              set_scan_insertion_options -chain_length 1024

使用-chain_count指定chain的数量

scan chain family

       scan chain family是一个智能容器,它控制来自特定扫描元素种群的新扫描的分配

       使用create_scan_chain_family命令生成新的chain families。delete_scan_chain_families和get_scan_chain_families相关的命令用于删除和获取chain families。

配置scan mode

工具支持根据用户要求配置任意scan mode,不同的mode包含不同的scan chain/scan family,应用于不同的测试要求。工具也会生出相应的译码电路,使用add_scan_mode命令定义scan mode

       例子:定义edt mode以及相关scan chain配置

       #find edt_instance

       set edt_instance [get_instances -of_icl_instances [get_icl_instances \

              -filter tessent_instrument_type==mentor::edt]]

       # Specify different modes the chains need to be stitched

       # EDT is built-in with Bypass

       add_scan_mode edt_mode \

              -edt_instance $edt_instance

       例子:定义多个mode,不同的mode scan chain配置不一致

              add_scan_mode mode1 -chain_count 100

              add_scan_mode mode2 -chain_count 300

       例子:定义chain families以及scan mode

              tegister_attribute -name is_occ -obj_type scan_element -value_type boolean

              set_attribute_value [get_scan_elements -below_instances *_occ_*] -name is_occ

              create_scan_chain_family occ_chain -include_elements \

                     [get_scan_elements -filter is_occ]

              create_scan_chain_family not_occ -include_elements \

                     [get_scan_elements -filter !is_occ]

              set edt_instance [get_instances -of_icl_instances \

[get_icl_instances -filter tessent_instrument_type==mentor::edt]]

              add_scan_mode edt -include_chain_families {occ_chain not_occ} \

                     -edt_instance $edt_instance

       例子:定义scan chain首chain尾

              add_scan_mode edt \

                     -si_connections edt_inst/to_si[199:0]\

                     -so_connections edt_inst/from_so[199:0]

              add_scan_mode multi_bypass -chain_count 12

使用analy_scan_chains命令识别scan chain

使用命令insert_test_logic完成insertion的工作

       可以通过该命令指定chain的数量:insert_test_logic -scan on -number 6

       插入测试逻辑

report相关信息

       report_scan_cell 显示scan cell信息

       report_scan_chain 显示当前的scan chain信息

       report_scan_elements 显示sequential instances information and testability data

保存结果

writte_design -output_file abc_scan.v

write_aptg_setup abc

Scan考虑因素

时钟域

       工具默认行为:不同时钟域,同一时钟域的不同触发沿,被划分到不同scan chain

       相同时钟域的不同触发沿的寄存器可以串在同一条chain上,下降沿在前,上升沿在后

       不同时钟域的寄存器可以放在同一条chain上

       add_scan_mode/create_scan_chain_family/set_scan_insertion_options等命令有相关option设置。

跨时钟域:插入lock_up latch

扫描链长度均衡性的考量

       测试向量从测试基台移入到测试芯片时,以芯片最长的扫描链长度为准

       为了减少测试时间,在插入扫描链时,尽量保证扫描链长度的均衡性

于物理信息的扫描链连接

       如果不考虑scan cell的物理位置,扫描链的连接可能杂乱无章,容易引起后端的绕线和时序问题

       在scan chain的同时,通过后端传递回来的DEF文件,标定所有寄存器的物理位置,工具则可以就近串链,对后端时序比较友好。

扫描链长度的考量

       扫描链长度和扫描链条数的对应:所有scan单元bit数/扫描链的条数

       从减少测试时间的角度出发,希望增加扫描链的条数以减少扫描链的长度

       从IO资源角度,希望chain的数量越少越好。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值