zoukankan      html  css  js  c++  java
  • DFT小讲座之7_测试激励是怎么产生的

     

    DFT是指可测试性设计,是芯片设计的一部分。 其设计出的电路的最终目的是为了使能生产测试功能。在前几次的文章中, 我们给大家分享了DFT设计相关的一些基础知识。同时也给大家分享了最终测试部门的工作概述。

    但是,仅仅设计出测试性的电路能使能测试吗?答案显而易见。 测试过程离不开测试激励的加载。 所谓的测试激励,简单说是指在芯片的输入端所要加载的值。是0还是1?在芯片的输入端所要观测到的电压是H还是L。要想使能测试,必须提供大量的测试激励以供测试机台使用加载到芯片上,从而激活内部设计的测试电路,达到最终测设的目的。

    1.jpg


    最熟悉如何使用内部测试电路的人自然是测试电路的设计者----DFT工程师。 所以,提供测试激励,达到激活使用内部测试电路这一目的的工作自然也就落在的DFT工程师的身上。


    经过一系列的半导体加工生产,在芯片到达测试步骤时,无数的电路以及元器件已经被高度集中在一个平方毫米级别的硅晶上了。 这时的芯片就如同一个黑盒子一样,我们无法再像设计阶段一样,通过仿真观测的芯片内部信号的波动。 测试人员对芯片内部的控制和观测只能依赖于芯片外部管脚。测试工程师负责开发测试程序却没有对复杂的芯片功能有足够的了解,需要DFT工程师提供复杂的测试向量。这一过程我们称之为Test Pattern Generation, a.k.a. TPG.

    2.jpg


    随着芯片规模越来越大,设计越来越复杂。不同类型的电路所需要的测试方法也不尽相同。 然而,除了扫描测试有专门的测试激励生成工具(ATPG)外,其他类的测试无一例外的都需要依赖前端仿真工具,对芯片的测试进行调试和转换。

    3.jpg


    test pattern是指在输入端输入激励并在输入端有一个期望的激励。 不同的测试内容就需要有不同的测试输入激励。 不同的测试输入激励就对应着不同的期望值。 这些不同的测试激励输入以及期望值,依赖于前端的仿真工具。利用仿真工具对芯片管脚加载一定的数值,就可以准确的得到每一时钟周期,芯片输出管脚的响应。将芯片外部管脚的值记录下来就得到了VCD/eVCD。然后再进行形式转换,转换成ATE测试所需要的格式。这种格式因为ATE所支持的系统软件的不同也会随之不同,比如VEC/WGL/STIIL等等。不过无论形式如何变化,这种转换都是将RTL级别的事件触发的波形转化到ATE测试的以时钟周期为基础的激励。 以下简称为E2C【1】转换。

    4.jpg


    TIPS [1] Event base to cycle base,事件触发波形到时钟周期波形转换


    将仿真中记录的CLK, RES, DIN 的激励值以及Q信号的期望值转换成不同测试机台认可的本文文件格式 测试机台拿到转换过的输入文件,需要将其在次转换成实际要加载的电压以及要实际测量的电压。 在经过这一系列转换翻译之后,实际芯片管脚上的输入和输出就会变成以下波形。

    5.png


    经过E2C转换的无论何种形式的test pattern,它的内容本身无非是1/0/H/L/X/Z这种对芯片管脚上的激励值和期望值的记录。但是单凭这些值,ATE测试机台无法得知该如何对芯片施加激励,如何对芯片输出进行采样……在这里测试工程师需要与DFT工程师一道来建立起一套pattern data base,a.k.a. PDB.在这个PDB中,详细描述了芯片管脚上施加的激励的翻译原则。

    6.jpg


    针对输入型号,我们可以定义信号类型。比如:

    R0:在周期结束后信号回归为0。【1】

    NR: 在周期结束后信号值继续保持。


    如下图所示,pattern中的激励值为D。NR信号一直保持不变直到下个激励开始产生作用。 R0信号在周期末回归为0,即使本周期的激励值为D。


    对于输出信号,我们需要定义其采样检测点。 采样点同样分为边沿采样【2】和窗口采样【3】2种。

    Edge Strobe :在周期内的t1时间进行采样比较

    Window Strobe:在周期内t1 到 t2时间内持续采样,并期待同样的D值。

    7.jpg


    基于之前我们所举的E2C的例子,在定义了PDB信息之后,波形的具体性就进一步丰富了起来。 在测试机台对波形进行重现的时候,我们就可以更加精准的定义波形跳动的时间,以及检查时间。

    8.png


    测试机台的存储空间通常很有限。 我们在测试的时候,需要将芯片一次测试所需要的所有测试激励都存到机台上。 当芯片规模越来越大,test pattern的数量就会指数级增长。 存储空间有时候也会成为测试覆盖率的瓶颈。 针对这一现象,我们还可以定义wave set,将互相关联的一些信号定义为同一个同一组wave set。在具体加载激励时直接使用wave set可以极大的减少测试激励文件的大小。

    9.jpg


    TIPS [1] 通常用于时钟信号的定义

            [2] Edge Strobe

            [3] Window Strobe


    在得到了测试激励之后,我们的工作并未结束。 由于在芯片测试阶段我们对芯片内部的可视性几乎为0,调试过程会相对复杂。 利用仿真工具在芯片到达测试步骤之前,我们需要进行测试激励的自测,检查E2C转换的准确性,保证ATE test pattern跟RTL仿真行为的一致性。


    这一行为通常是通过re-simulation完成的。通过模仿ATE测试机台的行为搭建test bench,对test pattern进行pre-silicon仿真,包括RTL级别以及netlist级别。进行re-simulation检测的pattern通常其准确性会大大的提高,极大降低测试使能过程的难度。

    10.jpg


    如今的芯片从设计到生产到测试以及封装测试,是一个庞大的产业,耗资,耗时,耗人力物力巨大。每一个步骤都需要有极其专业的团队协同合作,才能减少后期出错概率,降低检测难度。 即使小到test pattern generation这样一个具体步骤,也是需要一个团队来实现以满足各种各样的芯片测试需求。从一开始的pattern list的制定,到TPG团队与测试团队合作制定PDB,再到test pattern生成和仿真,最终到芯片测试。这其中每一步都有各个团队的通力合作才能实现。


    希望通过本篇的介绍,可以让大家了解到DFT工作时如何落地实施,达到可以被测试步骤检验的阶段的。 也希望大家可以从侧面了解到半导体产业其复杂性。


    路漫漫其修远兮,吾将上下而求索。



     

  • 相关阅读:
    文件IO流
    ArrayList LinkedList vector的区别
    双例集合Map,HashMap常用方法及源码分析
    单例集合List和Set
    集合与数组
    自然排序与定制排序
    String StringBuffer StringBuilder
    String与其他结构的转化
    线程的通信
    死锁,同步锁
  • 原文地址:https://www.cnblogs.com/lidan2019/p/10338853.html
Copyright © 2011-2022 走看看