文章为“参考文档”的总结,不是原创!
1 文档介绍
1.1 文档目的
介绍DFT设计原理和验证方法,重点介绍IP BIST及MBIST两种设计及验证。
1.2 参考文档
1、曲英杰,方卓红编著.超大规模集成电路设计=DESIGN OF VERY LARGE SCALE INTEGRATED CIRCUIT:人民邮电出版社,2015.02
2、罗萍编著.集成电路设计导论 第2版=Introduction of IC design:清华大学出版社,2016.01
3、「沧海一升」的原创文章“可测性设计技术”,原文链接:
4、「沧海一升」的原创文章“SRAM BIST技术学习”,原文链接:
SRAM BIST技术学习_沧海一升的博客-CSDN博客_存储器故障类型
5、袁秋香. 高性能CPU中高速接口IP核的DFT集成设计和验证[D]. 国防科学技术大学.
6、马强. 基于28nmDDR PHY的DFT实现及物理设计[D]. 西安电子科技大学.
7、赵尔宁, 邵高平. 用内建自测试(BIST)方法测试IP核[J]. 微计算机信息, 2005, 21(4):3.
8、谢志远, 杨兴, 胡正伟. 基于BIST的编译码器IP核测试[J]. 国外电子元器件, 2008, 000(001):23-25.
9、“数位逻辑电路之内建式自我测试”,原文链接Digital Logic BIST-IC设计及制造相关资料下载-EEWORLD下载中心
10、“全面了解DFT技术:如何测试一颗芯片”,dft 测试全面介绍-IC设计及制造相关资料下载-EEWORLD下载中心
1.3 术语与缩略语
表格 1 术语与缩略语
缩写 | 全称 | 描述 |
DFT | design for test | 可测性设计 |
VLSI | Very Large Scale Integration | 超大规模集成电路 |
BIST | built-in self-test | 内建自测试电路 |
JTAG | Joint Test Action Group | 联合测试工作组 |
BSD | Boundary scan design | 边界扫描设计 |
BSC | Boundary scan cell | 边界扫描单元 |
- | at speed testing | 全速测试。测试电路建立在待测电路所在的芯片上,使得测试电路可以在电路工作时钟频率下进行测试,这种测试称为全速测试。 |
LFSR | linear feedback shift register | 线性反馈移位寄存器 |
TAP | Test Access Port | 测试存取通道 |
BSR | Boundary Scan Righter | 边界扫描寄存器 |
IR | Instruction Register | 指令寄存器 |
DR | Data Register | 数据寄存器 |
BR | Bypass Register | 旁路寄存器 |
LBIST | logic build in self test | 逻辑内建自测试 |
MBIST | memory build in self test | 存储器内建自测试 |
PLL | Phase Locked Loop | 锁相环,能使受控振荡器的频率和相位均与输入信号保持确定关系的闭环电子电路。 |
DDR | Double Data Rate | 双倍速率,一个内存名称,意思即双倍速率同步动态随机存储器,是内存的其中一种。 |
PCI-Express (PCIe) | Peripheral component interconnect express | 一种高速串行计算机扩展总线标准 |
ATPG | Automatic Test Pattern Generation | 自动测试向量生成 |
ATE | automatic test equipment | 自动测试设备 |
- | Impedance calibration | 阻抗矫正 |
DLL | Delay Locked Loop | 延时锁定回路 |
DIMM | Dual-Inline-Memory-Modules | 双列直插式存储模块 |
RDIMM | Registered DIMM | 最常见的内存模块类型 |
LRDIMM | Load-Reduced DIMM | 低负载DIMM |
DQS | - | 数据选取脉冲 |
2 DFT简介
2.1 DFT背景
随着VLSI电路规模的增大、复杂程度的提高,芯片的引脚相对门数减少,使得电路的可控性和可观测性系数降低,电路测试变得十分复杂和困难,测试生成的费用也呈指数增长,传统的测试方法已难以全面而有效地验证复杂集成电路设计与制造的正确性,从而导致了可测试性设计的方法的出现。
可测试性设计方法的核心思想是在设计一开始就要考虑测试问题,通过适当增加一些专门用于测试的电路,提高电路的可控制性和可观察性,从而降低电路的测试难度和复杂性,提高电路的测试效率,降低测试成本。
2.2 DFT原理
(1)DFT的基本原理:
转变测试思想,将输入信号的枚举与排列的测试方法(即完全测试),转变为对电路内各个节点的测试,即直接对电路硬件组成单元进行测试,降低测试的复杂性。
具体实现方法包括将复杂的逻辑电路分块;采用附加逻辑和电路使测试生成容易,并能覆盖全部的硬件节点;添加自检测模块,使测试具有智能化和自动化。
(2)不足之处:
它对设计本身增加了硬件开销,也会在不同程度上影响系统的性能,因此必须慎重考虑。另外,可测性设计的测试生成通常是针对门级器件的外节点,而不是直接针对晶体管级。
2.3 DFT方法
常用的可测性设计方法包括基于扫描链(scan chain)的测试方法和内建自测试电路(built-in self-test,BIST)。
(1)基于扫描链
基于扫描链的测试方法是通过建立专门扫描链电路为每个寄存器提供可观察性和可控制性,它通过对寄存器的控制将复杂的时序逻辑设计划分为完全隔离的组合逻辑块,从而简化了测试过程。
基于扫描链的测试方法又分为两种:一种是芯片内部寄存器的扫描链,用于测试芯片内部制造缺陷,另一种是芯片I/O端口的扫描链,又称为边界扫描设计(boundary scan design, BSD),用于测试系统电路板级的制造缺陷。
(2)内建自测试电路方法(BIST)
BIST是通过芯片内部专门设计的测试逻辑电路(区别于扫描电路)的运行来检查设计功能正常的电路的制造缺陷,它相当于把一个小型专用的测试仪器集成到芯片内部。BIST方法常用于片内存储器的测试,如数据缓存、FIFO、Cache等。
在实际应用中,BIST和BSD经常与JTAG结合起来使用。JTAG接口提供了一种简单通用的通过有限I/O访问芯片内部信号的方法。
2.3.1 扫描(SC)设计
时序电路的直接测试往往是难以实现的,扫描设计通常能很好的解决之一问题。
扫描设计的主要思想就是把难以进行测试的电路转化为可测的电路。要实现这一目标,需要把电路中原有的一般触发器用可观测可控制的扫描触发器进行代替,这些扫描触发器串接到一起形成扫描链(Scan Chain,SC),那么,在测试模式下,就可以通过扫描链来串行移入移出测试数据,实现对整个电路的控制和观测。单个扫描触发器代替一般触发器的例子如图:
图 1 扫描设计
从图1可以看到,扫描触发器在原始触发器的基础上在数据输入端D 增加了一个多路选择器,用以实现对输入数据的选择,其中Scan_in 是扫描数据输入端口,Scan_enable 是输入选择控制端,Scan_out 复用原始输出端Q。常见的扫描触发器的工作模式有正常工作模式和扫描移位模式两种:
(1) 正常工作模式:Scan_enable 为0 时,此时为正常工作模式,D 输入端选通,Q 作为输出端,数据从D 输入,从Q 输出;
(2) 扫描移位模式:Scan_enable 为1 时,此时为扫描移位模式,Scan_in输入端选通,Scan_out 作为扫描输出,测试数据由Scan_in 输入,由Scan_out 输出。
将扫描触发器单元连接在一起,就构成了扫描设计的基本结构。根据是否所有的寄存器都是扫描单元并已连接到扫描链,可以将扫描设计分为全扫描和部分扫描。
通常为了提高电路的性能,我们往往排除那些不符合可测性设计规则的寄存器,这样设计得到的电路一般介于全扫描和部分扫描之间。
图 2 扫描链
对加入扫描设计后的电路进行测试时,我们首先设置模式选择端sc_en 为1,电路处于扫描移位模式,向扫描输入端口sc_in 打入测试向量,比如101,通过扫描链传至每个扫描寄存器;然后我们设置sc_en 端口为0,电路进入正常工作模式,并行向三个原始输入端口A,B,C 打入激励;从输出端口Q 捕获响应数据,分析响应数据就可以达到测试目的。
2.3.2 边界扫描(BSD)设计
边界扫描技术(BSD)是由联合测试行动小组(Joint Test Action Group,JTAG)提出的一种旨在解决PCB板间测试问题的解决方案,又称为JTAG标准。边界扫描设计大大提高了板级测试效率,简化了测试和诊断过程,是可测性设计中的关键技术。
边界扫描技术与前文所述的扫描设计的不同之处在于:边界扫描技术是在电路的输入输出引脚与内部逻辑电路之间增加边界扫描单元(Boundary Scan Cell,BSC),并将他们连成扫描通路,而后者(扫描设计)是将电路中的原有的普通时序修改复用成具有扫描功能的单元,然后连成通路。
边界扫描设计可以实现三个方面的测试:
(1)芯片级测试,也就是可以对芯片本身进行测试和调试。测试时,使芯片工作在测试模式,通过芯片输入引脚输入测试数据,并观察串行移位的输出响应达到测试目的,必要时也可进行调试;
(2)板级测试,即检测PCB 板和集成电路之间的互连情况。其原理是将PCB板上具有边界扫描功能的芯片中的扫描寄存器连接起来,通过合适的测试向量,可以发现元件是否存在丢失或者摆放错误,以及检测引脚的开路和短路故障。
(3)系统级测试,在板级集成后,可以通过对板上可编程逻辑器件或者Flash的在线编程,实现系统级测试。
图 3 边界扫描示意图
边界扫描设计结构遵循IEEE1149.1 标准设计,一般包括具有4 或5 个引脚的测试存取通道(Test Access Port,TAP),一组边界扫描寄存器(Boundary ScanRighter,BSR),指令寄存器(Instruction Register,IR),可选的数据寄存器(DataRegister,DR),旁路寄存器(Bypass Register,BR)和一个TAP 控制器(TAPController)。
IEEE1149.1 标准规定TAP 必须有4 个标准信号和一个可选信号,它们分别是TCK,TMS,TDI,TDO,TRST:
TCK 是JTAG 的时钟信号,
TDI是测试数据输入信号,
TDO是测试数据输出信号,
TRST 是测试复位信号,低电平有效。(可选)
TMS(Test Mode Select)是测试模式选择信号,由于测试过程中需要通过TAP 控制器产生移位,读数据,写数据等各种状态,所以需要设置一个模式选择信号(TMS)来控制TAP 控制器产生相应的控制信号。
TAP 控制器是一个具有16 种状态的有限状态机,它受模式选择信号TMS 和时钟信号TCK 控制,产生各种控制信号,控制待测电路进入相应状态。
指令寄存器由移位寄存器和锁存器两部分组成,当经过TDI 串行输入指令,指令被送入锁存器,保存当前指令,并通过译码单元识别当前指令。当执行某些指令时,解码所得信号将控制相应的数据寄存器对电路的运行状态进行配置。
数据寄存器包括两种,一种是设备ID 寄存器,用于存放设备的ID 号;另一种是对应于相应指令的边界扫描寄存器,允许设置电路进入某些特定状态,比如MBIST 寄存器。
旁路寄存器用于跳过不需要测试的电路,使TDI 和TDO 直连,使输入输出之间的扫描路径最短化,缩短测试路径,提高测试效率。
边界扫描寄存器是边界扫描中最重要的结构单元,它可以存储从内部电路中捕获的数据,也可以存储从外部电路输入的数据,这些数据可以被串行移到扫描路径上的下一个扫描寄存器,也可以被直接输入到内部电路。
边界扫描技术提供了5个对外接口,可以实现人为可控的向内部电路输入数据,从而设置内部电路的作状态,是很多测试技术的基础。边界扫描技术降低了对测试设备的要求,减少了对测试引脚的占用,但是边界扫描技术的实现需要增加少量测试电路,对芯片的工作速度有一定影响。
2.3.3 内建自测试(BIST)技术
内建自测试(BIST)是一种可测性设计技术,其特点是测试产生与测试应用是通过内建的硬件电路完成的。其基本原理是把测试电路嵌入到待测电路内部,仅需要外部必要的控制信号就能在电路内部产生测试激励并得到测试响应,通过测试响应和期望响应确定电路是否存在故障。
将测试电路移植到待测电路内部,使内建自测试技术具有其它测试技术所不具备的很多优点:简化了测试步骤,不需要大量的测试图形产生,减少了测试时间,减少了输入输出引脚,降低了测试成本。另外,测试电路建立在待测电路所在的芯片上,使得测试电路可以在电路工作时钟频率下进行测试,这种测试称为全速测试(at_speed testing),但是它增加了芯片设计的复杂性。
图 4 BIST结构图
BIST一般由以下4部分组成:
1、测试控制器(Test Controller): 控制测试的进程,保证测试的顺利进行。
2、激励生成器(Test Pattern Generator, TPG):产生测试所需要的激励,在测试控制器的控制下,输入被测电路(DUT)。芯片的测试向量对于测试的完整性具有很大的影响。激励生成器要产生测试需要的激励,常见的测试激励或者是一个存有测试向量的ROM, 或者是线性反馈移位寄存器(LFSR)等。
3、输出响应分析电路(Output Response Analyzer):收集被测电路的输出,分析被测电路的功能是否正确。比较典型的输出响应分析电路是存有预期响应的比较器。被测电路的输出与预期的响应相比较, 即可判断被测电路的对错。
4、输入选通电路(Input Isolation Circuitry):当系统正常工作的情况下,输入选通电路选通系统信号,接到被测电路,当进行测试时,输入选通电路选通BIST电路产生的信号,进行DUT测试。
BIST又分为LBIST(logic build in self-test)和MBIST(memory build in self-test)。LBIST通常用于测试随机逻辑电路,一般采用一个伪随机测试图形生成器来产生输入测试图形,应用于器件内部机制;而采用多输入寄存器(MISR)作为获得输出信号产生器。MBIST只用于存储器测试,典型的MBIST包含测试电路用于加载,读取和比较测试图形。
2.3.4 JTAG简介
2.3.4.1 JTAG引脚介绍
在实际应用中,BIST和BSD经常与JTAG结合起来使用。本小节简单介绍JTAG。
为了解决板级的测试难题,JTAG这个组织最初提出了 IEEE 1149.1 标准,而 IEEE 1149.1-1990 简称为 JTAG 标准。JTAG 包括以下五个引脚:
表格 2 JTAG 引脚定义
引脚名称 | 描述 |
Test Clock Input(TCK) | TCK 为 TAP 操作提供了一个独立的时钟端口,TAP 的所有操作都是基于该时钟的。 |
Test Mode Selection Input(TMS) | TMS 用来控制 TAP 状态机的转换,TMS 信号在 TCK 的上升沿有效。能够在功能模式和测试模式状态间切换。 |
Test Data Input(TDI) | TDI 是数据输入端,所有的输入数据都是通过 TDI 串行输入到特定的寄存器中。在 TCK 的上升沿时采样 TDI 的稳定数据。下降沿时 TDI 变化。 |
Test Data Output(TDO) | TDO 是数据输出端,所有特定的寄存器的输出数据都是通过 TDO 接口串行输出的。 |
Test Reset Input(TRST)(该信号为可选信号) | TRST 可以对 TAP 控制器进行异步复位,低电平有效。 |
2.3.4.2 TAP控制器的状态
JTAG内部有一个状态机,称为TAP控制器。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。
JTAG 是通过一个TAP(Test Access Port)控制器对内部节点进行测试。实际上,通
过 TAP 接口,对特定的数据寄存器进行访问的一般过程如下:
1)通过指令寄存器 IR(Instruction Register)选定一个需要访问的数据寄存器 DR(Data Register);
2)TAP 控制器把特定的 DR 连接到 TDI 和 TDO 之间;
3)由 TCK 和 TMS 驱动,把需要输入的数据从 TDI 中串行输入到 DR 中,同时 DR中的数据通过 TDO 扫出。
图 5 TAP控制器的状态转化图
图 5是 TAP 控制器的状态图。其中有 16 个状态,两条通路,分别是数据通路和指令通路,而且这两边的通路相同。下面分别介绍这 16 个状态的功能。在 TCK 的下降沿沿,TDI,TMS 状态会发生变换,通过 TMS 来确定所进入的是哪个状态。
表格 3 TAP状态描述
状态 | 描述 |
Test-Logic-Reset | 在这个状态下,测试进入复位状态。只要 TMS 为 5 个或 5 个以上连续的 TCK 信号的上升沿保持高电平,就可以从任何状态回到此状态。 |
Run-Test/Idle | 内部测试状态或者空闲状态。 |
Select-DR-Scan | 选择数据寄存器临时状态,根据 TMS 决定后续操作。如果 TMS 信号在下一个 TCK 上升沿处于高电平,TAP 控制器将进入 Select-IR-Scan 状态。 |
Capture-DR | 在这个状态下,可以将系统数据并行载入到当前指令选择的数据寄存器中。 |
Shift-DR | 指令寄存器中的指令对所指定的 DR 进行移位操作。且当前指令是SAMPLE/PRELOAD 指令时,那么 DR 在 TCK 信号的上升沿捕获输入管脚的数据。如果此时不是 SAMPLE/PRELOAD 指令,那么保持它们先前的值,另外 DR 的值被放入连接在TDI 和 TDO 管脚之间的移位寄存器中。 |
Exit1-DR | 这个状态表明当前指令选择的所有 DR 保持它们的状态,不会改变,也是临时状态。Exit2-DR 状态与之相同。 |
Pause-DR | 状态允许 TAP 控制器暂时停止 TDI 的数据串行移位到 TDO 中串行通道的移位操作。处于 Pause-DR 状态时,指令不会被改变。 |
Update-DR | 在正常情况下,DR 的值被锁存在并行输出管脚中。在这个状态下,当前指令不会变化。当处于 Update-DR 状态时,选择的是 DR,那么移位寄存器中的值将在 TCK的下降沿被锁存到 DR 的并行输出管脚中去。 |
Capture-IR | 并行载入指令的各位二进制数。 |
Shift-IR | 移位寄存器连接在 TDI 与 TDO 之间,并对数据进行串行移位操作。 Update-IR:移入指令寄存器的指令被锁存在指令寄存器的并行输出端,这条指令便成了当前指令。 |
其他关于 IR 的状态都与 DR 的状态类似。 |