mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。
1. mem bist implementation
1.1 如下图所示为最basic的mbist solution components。虚线部分为最基础内容,任何的mbist solution都必须包含。其他为可选项。而其他的软件算法变成,mem repair,diagnositcs,yield learning要看具体的公司和相应的design自行设计。
1.2 如上图为具体mbist controller功能原理图
TAP:ijtag相关内容,一个标准接口
TMB:Mem bist controller,包含了做mem test的所有的信号的generator,一个TMB可控制多块mem
BAP:bist access port,提供控制信号给到TMB,收集TMB中的GO/DONE信号。通过BAP可以访问到MEM interface
SIB: Segment insertion bit,类似一个开门的钥匙,用于信号shift和uptate,来控制某几个mem的test。增加灵活性。
Mem Interface: 作为mem controller和mem之间的接口,用于数据之间的传递,每一颗mem都会例化相应的mem interface
1.3 如下图所示为TMB和某一块MEM interface原理示意图,详细的操作步骤如下:
- TMB中包含了FSM,由MBIST_EN控制开启,BIST_SETUP进行配置。 FSM控制SIGNAL GEN信号,一个是送入到mem interface中的mux中非func的一端口,另一个是数据送入到COMP和经过RAM的数据进行对比。同时,SIGNAL_GEN会反馈信号控制FSM进行下一步操作。
- test数据送入到interface中,然后经过SRAM输出之后,送回到TMB中的COMP中进行和原始数据比较,如果数据比对正确,则MBIST_GO拉高,否则如果数据对比错误,则MBIST_GO变低。同时在比对初期,COMP会送出CMP_STAT信号。
- 这个FMS控制相应的MEM比对完成,则输出MBIST_DONE信号。
- TMB中的MBIST_GO和MBIST_DONE信号,是可以在仿真过程中进行观测的。从而用于debug。
需要注意的是
在图中可以看到COMP在mem interface中和TMB中都存在,这是因为两者存在都是合理的,只不过都有优缺点。具体的design中到底怎么放置,需要结合设计进行具体分析。
在MEM interface中时候: 虽然增加了gate count ,但是反馈给TMB中的信号只有一位GO信号,减小PR effort
在TMB中的时候: COMP被shared,减少了gate count。COMP的大小取决于控制所有的mem中的最大宽度,且增大PR effort。
1.4 Scannable Mem Interface
如下图所示深蓝色块块,是在mem interface插入的用于做scan 的logic。
我们知道ijtag主要用于design pad口的test,mabist 主要用于mem的test,而scan主要用于func logic的test。为何非要在mem interface 插入scan logic呢?
- 当scan不包含mem时候,此时mem为blackbox,也就是scan mode下的mem bypass 模式:
1)此时需要OBSFF也就是observation flip-flop,因为FUNC ADDR的尽头是一个被认为black box的SRAM,这个数据无法观察到,会导致scan mode时候,FUNC ADDR这一路观察不到最终结果,会降低coverage,因此增加OBSFF。
2)此时BYPASSFF正常工作,把mem bypass掉,给到LV_TM这个mux并传送出去进行观察。 - 当scan 包含mem时候,此时会吃专门的mem 的lib,也就是scan mode下的mem no bypass模式:
1)此时就不需要BYPASS逻辑了,数据正常读入data in,然后正常读出data out,最后经过LV_TM会选择0端口,此时相当于对mem进行了scan test。此时读入的mem lib为特殊专门用于dft的mem lib。
2)这个当然会增加scan 测试时间,但是同时也会提高coverage
2. tessent mbist test flow
2.1 Test FLow
- Mem test is initated when the following are true: MBIST_EN =1 && BIST_SETUP=10,在standby阶段完成。
- Clock cycle before test is indicated by rising edge of MBIST_EN,在standby阶段完成过
- If an error is found during test, MBIS_GO =0 and keep for the remainder of test, or MBIST_GO keep 1 after initialize阶段
- If test completed,MBIST_DONE =1
2.2 Test Results
- DONE =1 & GO =1 : test finished and pass
- DONE =0 & GO =1 : test not complete but no errors until now, can be caused by using a slower clock than specified
- DONE =1 & GO =0 : test finished but at least one mem test failed
- DONE =0 & GO =0 : test not complete and at least one mem test failed