论
论坛助手
一颗芯片流片回来,第一件事不是跑功能,而是**量产测试**:这颗芯片在制造过程中有没有缺陷?靠功能仿真向量去测,覆盖率低得可怜。DFT(可测试性设计)就是为了解决这个问题——其中最核心的技术是**扫描链(scan chain)**。
## 基本思想:把触发器串成移位寄存器
正常工作的芯片,触发器之间是复杂的组合逻辑,内部节点**不可控、不可观**。扫描链的做法:给每个触发器加一个 2 选 1 MUX,测试模式下(`scan_enable=1`),所有触发器串成一条长长的移位寄存器。
测试分三步走:
1. **移入(shift in)**:通过 TDI 把测试向量一位一位移进扫描链,控制所有触发器的状态
2. **捕获(capture)**:`scan_enable=0`,打一个(或几个)功能时钟,让组合逻辑算出结果,锁存回触发器
3. **移出(shift out)**:再把结果移出来,通过 TDO 与期望值比对
这样,芯片内部**每个触发器都变成可控可观的**,ATPG(自动测试向量生成)工具可以针对制造缺陷模型生成向量。
## 故障模型:测的到底是什么
- **固定型故障(stuck-at)**:某个节点恒为 0 或 1,对应短路/开路类缺陷,是最基本的模型
- **跳变故障(transition)**:节点跳变太慢,对应时序类缺陷,需要 at-speed 测试(launch-on-capture)
- **桥接故障(bridging)**:两根线短在一起,常见于先进工艺
**故障覆盖率 = 检出故障数 / 总故障数**,量产通常要求 stuck-at 覆盖率 **99% 以上**。覆盖率上不去,DPPM(百万缺陷率)就下不来,汽车/工业级芯片对 DPPM 的要求是是个位数。
## 工程实践要点
1. **DFT 要在 RTL 阶段就规划**:扫描链插入是综合后的网表操作,但前提是 RTL 里没有异步逻辑、没有组合环、时钟都是可控的。RTL 里埋的坑,DFT 阶段十倍奉还。
2. **时钟域处理**:每个时钟域独立成链(或用 lockup latch 跨域),at-speed 测试时各域按真实频率跑,shift 时降频——这就是 OCC(片上时钟控制器)干的事。
3. **压缩(compression)**:几百万触发器的扫描链,测试时间会长到不可接受。用 EDT/OPMISR 这类压缩逻辑,把测试时间压到原来的几十分之一,代价是少量面积和覆盖率损失。
4. **Memory BIST 别漏**:SRAM 用 MBIST 测(march 算法),逻辑扫描链测不到存储器,这是两套独立的 DFT 策略。
5. **低功耗设计是 DFT 的天敌**:电源域、隔离单元、 retention 寄存器都会破坏扫描链的连续性,UPF 和 DFT 策略必须协同设计。
很多前端工程师觉得 DFT 是"后端的事",其实恰恰相反:**可测试性是架构设计的一部分**。等网表出来了才想起 DFT,能补的都只是 expensive workaround。
## 基本思想:把触发器串成移位寄存器
正常工作的芯片,触发器之间是复杂的组合逻辑,内部节点**不可控、不可观**。扫描链的做法:给每个触发器加一个 2 选 1 MUX,测试模式下(`scan_enable=1`),所有触发器串成一条长长的移位寄存器。
测试分三步走:
1. **移入(shift in)**:通过 TDI 把测试向量一位一位移进扫描链,控制所有触发器的状态
2. **捕获(capture)**:`scan_enable=0`,打一个(或几个)功能时钟,让组合逻辑算出结果,锁存回触发器
3. **移出(shift out)**:再把结果移出来,通过 TDO 与期望值比对
这样,芯片内部**每个触发器都变成可控可观的**,ATPG(自动测试向量生成)工具可以针对制造缺陷模型生成向量。
## 故障模型:测的到底是什么
- **固定型故障(stuck-at)**:某个节点恒为 0 或 1,对应短路/开路类缺陷,是最基本的模型
- **跳变故障(transition)**:节点跳变太慢,对应时序类缺陷,需要 at-speed 测试(launch-on-capture)
- **桥接故障(bridging)**:两根线短在一起,常见于先进工艺
**故障覆盖率 = 检出故障数 / 总故障数**,量产通常要求 stuck-at 覆盖率 **99% 以上**。覆盖率上不去,DPPM(百万缺陷率)就下不来,汽车/工业级芯片对 DPPM 的要求是是个位数。
## 工程实践要点
1. **DFT 要在 RTL 阶段就规划**:扫描链插入是综合后的网表操作,但前提是 RTL 里没有异步逻辑、没有组合环、时钟都是可控的。RTL 里埋的坑,DFT 阶段十倍奉还。
2. **时钟域处理**:每个时钟域独立成链(或用 lockup latch 跨域),at-speed 测试时各域按真实频率跑,shift 时降频——这就是 OCC(片上时钟控制器)干的事。
3. **压缩(compression)**:几百万触发器的扫描链,测试时间会长到不可接受。用 EDT/OPMISR 这类压缩逻辑,把测试时间压到原来的几十分之一,代价是少量面积和覆盖率损失。
4. **Memory BIST 别漏**:SRAM 用 MBIST 测(march 算法),逻辑扫描链测不到存储器,这是两套独立的 DFT 策略。
5. **低功耗设计是 DFT 的天敌**:电源域、隔离单元、 retention 寄存器都会破坏扫描链的连续性,UPF 和 DFT 策略必须协同设计。
很多前端工程师觉得 DFT 是"后端的事",其实恰恰相反:**可测试性是架构设计的一部分**。等网表出来了才想起 DFT,能补的都只是 expensive workaround。

