2、BIST基本原理:测试模式生成、响应分析、BIST控制器架构
好,咱们今天聊聊BIST的核心原理。说白了,就是让芯片自己给自己做体检。不用外部ATE(自动测试设备),芯片内部自己产生测试向量,自己分析结果。我在做第一个BIST项目时,心里也犯嘀咕:这玩意儿真能靠谱吗?后来发现,只要架构搭对了,它比外部测试还稳。
2.1 测试模式生成——怎么给芯片出题?
测试模式生成,就是给芯片出考题。芯片内部有成千上万个节点,你得想办法让它们都活动起来,才能发现有没有焊死或者断开的毛病。
常用的方法有两种:
- 伪随机模式生成(PRPG):用线性反馈移位寄存器(LFSR)产生伪随机序列。我习惯用LFSR,因为它面积小、速度快。你想想看,一个32位的LFSR,能产生2^32-1个不重复的测试向量,基本够用了。
- 确定性模式生成:针对特定故障点,生成精确的测试向量。这种方法覆盖率更高,但需要额外存储空间。
我个人建议,大部分场景用PRPG就够了。除非你遇到那种特别刁钻的故障,比如某个节点需要特定的时序条件才能暴露,这时候再上确定性模式。
核心要点:测试模式生成的关键是平衡覆盖率和硬件开销。PRPG适合通用测试,确定性模式适合定点打击。
2.2 响应分析——怎么判卷?
测试向量打进去了,芯片会输出一串响应。怎么判断这串响应是对是错?你不能把几百万个响应都存下来,那太费面积了。
这里就要用到多输入签名寄存器(MISR)。它能把一串很长的响应,压缩成一个固定长度的“签名”。测试结束后,把这个签名和预期签名比对一下,就知道芯片有没有毛病。
嗯,这里要注意:签名压缩是有可能“撞车”的。就是说,一个有故障的芯片,它的响应压缩后,居然和好芯片的签名一样。这叫混淆(Aliasing)。我在项目中遇到过一回,一个芯片明明有故障,但签名比对通过了。后来排查发现,是MISR的位宽选小了。
避坑指南:我曾经因为MISR位宽选得太小,导致故障被掩盖。建议MISR位宽至少32位,混淆概率可以降到2^-32以下,基本可以忽略。
2.3 BIST控制器架构——谁来指挥?
测试模式生成和响应分析都讲完了,谁来协调它们工作?这就是BIST控制器的活儿。
一个典型的BIST控制器架构包含以下几个模块:
| 模块 | 功能 | 我的一点经验 |
|---|---|---|
| 控制器状态机 | 控制BIST的启动、运行、结束 | 状态机别搞太复杂,4-5个状态就够了 |
| PRPG | 生成测试模式 | 多项式选本原多项式,周期最长 |
| MISR | 压缩响应,生成签名 | 位宽至少32,防止混淆 |
| 比较器 | 比对签名,输出Pass/Fail | 别忘了加一个“测试完成”标志 |
控制器的工作流程其实很简单:
- 收到启动信号,BIST开始
- PRPG生成一个测试向量,打入被测电路
- 电路输出响应,MISR压缩
- 重复步骤2-3,直到所有向量打完
- MISR输出最终签名,和预期签名比对
- 输出Pass/Fail,BIST结束
你想想看,整个过程芯片自己就能完成,不需要外部干预。这就是BIST的魅力所在。
小技巧:我习惯在BIST控制器里加一个“测试进度”寄存器。这样在调试时,可以知道测试跑到哪一步卡住了,而不是只知道一个Pass/Fail结果。
2.4 核心逻辑框架图
下面这张图,是我自己总结的BIST核心逻辑框架。你看一眼,基本就能把整个流程串起来。
这张图里,BIST控制器是大脑,PRPG是出题人,MISR是判卷老师,比较器是最终审核。整个流程环环相扣,缺一不可。
2.5 实际项目中的一点感悟
最后聊点实际的。BIST设计最怕什么?最怕你设计完了,仿真全过,但流片回来发现BIST本身就有bug。我吃过这个亏。
所以我现在做BIST,一定会做两件事:
- BIST自检:在正式测试前,先让BIST测自己。比如把PRPG的输出直接连到MISR的输入,看看签名对不对。
- 故障注入:在仿真时,故意在电路里制造几个故障,看看BIST能不能抓出来。抓不出来,说明你的BIST设计有问题。
嗯,今天就先聊到这儿。BIST这东西,说难不难,说简单也不简单。关键是把原理吃透,然后多动手实践。下次咱们聊聊怎么把BIST集成到整个芯片的测试流程里。
本章小结:BIST的核心是让芯片自己测试自己。测试模式生成靠PRPG,响应分析靠MISR,控制器负责协调。记住三个关键词:自生成、自压缩、自比对。