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


