欢迎光临
我们一直在努力

如何有效提升测试覆盖率(DFT)

1、背景

        现在DFT owner通常会选择常规的tessent flow去完成test design的插入和scan chain stitch过程,再基于由此产生的post-scan netlist去完成stuck atpg和speed atpg pattern generation。

        通常,test coverage(测试覆盖率)会作为DFT ATPG工作的一个重要验收指标。如果发现test coverage总是稍稍低于预期,就需要想办法去提高测试覆盖率,好处在于:

        (1)覆盖率低 —-> 芯片中很多缺陷测不出来 —-> 坏的芯片会流到客户手中,会降低可信度和满意度;

        (2)覆盖率高 —-> 坏片越早被筛掉,量产成本反而越低;

        (3)覆盖率高 —-> 良率越准 —-> 提高客户的使用体验;

        (4)对于需要满足车规(AEC-Q)标准的芯片,覆盖率不达标,甚至连流片/量产资格都难以获得;

        在本文中,将介绍在rtl阶段手动插入test point,以此来提高test coverage的方法。

2、分析coverage loss的典型情况

        既然要提前手动的插入test point,那么DFT owner需要对工具在rtl阶段插入的相关测试逻辑有一定的预判,从而能更好的判断design中的覆盖率损失点。覆盖率损失点一般存在以下几个地方:

        (1)ICG:与clock的控制相关,ICG的关断由function enable控制,TE 端存在覆盖率损失;

        (2)reset:与时序单元的复位行为相关,全局的scan DFF可能一直处于不复位的状态,DFF的复位端存在覆盖率损失;

        (3)power:与低功耗模块的开关控制相关,全局的isolation cell均处于不隔离状态,isolation cell的控制端存在覆盖率损失;

        (4)blackbox:analog模块的输出参与了时钟或者复位的控制,会导致仿真错误;在将输出信号静态控制之后,仿真可以pass,但控制点仍然存在覆盖率损失;

        接下来要具体介绍以上coverage缺陷点,以及如何提高coverage。

2.1 针对于ICG的coverage提升

2.1.1 ICG的coverage loss解读

        首先介绍一下design中的所有ICG的来源,只有知道了准确的来源,才能完成更好的控制。

        (1)original function ICG

                a. 当最开始拿到前端release给DFT的function代码时,会发现design中已经存在一部分例化好的ICG单元,这些ICG的E pin来自于function logic,而TE pin处于TIE-0状态;

                b. 为了保证clock相关的drc pass,ICG的TE端通常会被test mode信号控制为constant-1;

                c. 这些ICG的TE端和E端均会存在覆盖率损失;

        (2)test ICG

                a. 当DFT owner完成基于tessent的two  pass flow时,会发现design中已经存在一部分与测试逻辑控制相关的ICG单元,这些ICG的E/TE pin均来自于test logic;

                b. 这些test ICG的控制行为不能被改变,否则会导致测试功能异常;

                c. 因此这些ICG的覆盖率损失是必然的;

                d. test ICG的数量是有限的,覆盖率损失可以忽略不计;

        (3)synthesized function ICG

                a. 当DFT的filelist完成综合后,function logic中的always代码会被综合成DFF+ICG的结构,此时这些ICG单元的E pin来自于function logic,而TE pin处于TIE-0状态;

                b. 在scan insertion过程中,工具会发现ICG的当前控制逻辑不能保证在scan shift阶段一直处于导通状态;

                c. 工具将符合上述情况的ICG的TE端改成由scan enable信号控制;

                d. 这些ICG的TE端会存在覆盖率损失;

        针对synthesized function ICG,有下面的现象需要说明:

                在rtl阶段,function logic中的always代码中所描述的时钟肯定处于导通状态,其中的寄存器也一定能找到clock source;那为什么综合之后,相同寄存器对应的ICG的状态反而不可控了。是不是rtl阶段的flow有问题还是tool存在bug?

                这里直接说结论:rtl阶段的insertion操作没有问题,tool也没有bug。原因如下:

                a. 在rtl阶段,工具在做DRC之前,会有一个将所有待测逻辑综合的过程;

                b. 整个综合过程,工具会将代码翻译成RTLC model;

                c. always块中的gating信号,在RTLC model中,被指向了CE pin;

                d. always块中的时钟信号,在RTLC model中,被指向了CP pin;

                e. 为了确保该RTLC model的时钟可控性,只需要保证model/CP能够找到clock source,而与model/CE没有关系;

                f. 综合过程中使用的std cell不包含CE这样的pin,于是DC工具会使用普通DFF+ICG的组合形式,ICG的E pin接always块中的gating信号;

                g. 于是在scan flow中才会发现,一些ICG处于不可控状态;

        上述现象对应的截图如下:

2.1.2 定义ICG控制信号

        DFT owner需要在mbist flow中预先定义如下的ICG控制相关信号:

        —->register_static_dft_signal_names testcg_tdr

        —->register_static_dft_signal_names testcg_sel

        —->add_dft_signal                   testcg_tdr    -create_with_tdr

        —->add_dft_signal                   testcg_sel    -create_with_tdr

        其中:声明testcg_tdr和testcg_sel为static的dft signal,且来自于ijtag tdr的控制。

2.1.3 定义test scan logic

        DFT owner需要在occedt flow的drc pass后,在post_insertion的wrapper中定义test scan logic和连接关系:

        —->create_instance dft_scan_cell           -of_module [get_modules DFQD1BWP7T30P140ULVT   -in_library work]         —->create_instance dft_scan_en_gating -of_module [get_modules OR2D0BWP7T30P140ULVT   -in_library work]         —->create_instance dft_scan_en_mux    -of_module [get_modules MUX2D0BWP7T30P140ULVT -in_library work]

        —->create_connection *_mbist_tessent_sib_sti_inst/tessent_persistent_cell_ltest_clock_mux/Z         dft_scan_cell/CP

        —->create_connection dft_scan_cell/D                                                                           

赞(0)
未经允许不得转载:171主机测评 » 如何有效提升测试覆盖率(DFT)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址