上回书说到sa0和sa1的测试方法。
这种测试方法是建立在一个前提上的,就是我们可以任意改变输入信号的逻辑值。如果这个输入正好就是整个芯片的输入还好办,直接在芯片外部改变即可。但很多时候我们需要测试芯片内部的各个逻辑单元,它们的输入就会是在芯片内部,不那么好调整了,这可咋办呢?
这个时候人们就想到了芯片中的重要元件——寄存器。如果我们给寄存器存储相应的测试的逻辑值,让这些reg的存储的数据作为我们dft测试的输入,不就可以达到控制输入信号的目的了吗?但这种方法有一定局限性,这样我们的dft测试输入位置必须保证是时序逻辑中寄存器的输出pin才行,接收输出信号就还是用探针就可以,没有太多限制。
这样的输入限制有可能会导致我们无法完全测试出所有combinational cell的问题,但dft工程师还是可以控制输入信号测很多次,来尽可能多的覆盖到能测的cell。dft测试中有一个测试覆盖率的概念,一般都会要求到90%以上。
然而使用reg来作为测试输入又带来了新的问题,那就是我如何给这些reg灌进我想要的值呢?要知道芯片在正常工作时reg之间是会互相影响的,我们很难控制在某一个时刻,很多个reg都正好输出我们想要的某个逻辑值组(一般dft工程师称这种输入逻辑组叫pattern,比如上篇提到的例子里,11、10就是不同的两个pattern),怎么办呢?
为了dft测试,我们要对芯片进行大刀阔斧的改革!我们要把芯片中所有的正常reg全部升级!升级后的reg在可以正常工作的同时,还要支持一种模式,这种模式可以让我们直接控制每个reg寄存的值。
但是我们不可能把每个reg都接一根net到整个芯片的port,那port数量就太多了,根本不现实。如何只用控制一个port就能控制所有reg的值呢?别忘了,我们要控制的是寄存器,是被时钟控制的,时钟每跳变一次,信号往后传输一次,那么人们就想到把所有reg都串起来,后一个reg的输入是前一个reg的输出,我们只需要往第一个reg的输入一个个灌值就行了。
比如三个reg串起来,我们想要一个101的pattern,就在第一个时钟周期给第一个reg灌进去1,三个reg状态是1xx;下个时钟周期灌0,状态变为01x,第三个周期灌1,状态变为101.这就是我们想要的pattern,在这个时刻进行测试即可。
这里的reg的输入输出就是不同于电路的输入输出了,就是别的pin,称为si和so,控制信号se,我们把这个串称为扫描链(scan chain)。
并且芯片工作的时钟很快,dft测试的时候相对就很慢,我们就需要一个专门的慢速时钟用来测试,相应的这个慢速时钟和正常的时钟要经过一个选择器接到reg上。
而后dft工程师就要生成各个pattern了,最终把这一串值一个一个送到ate机台完成测试。呼~写了这么多只讲完了dc mode,但还有ac mode没讲...就是说我们上文提到的测试不涉及电路transition的问题,如果某个cell transition比预期的要慢,也会发生错误,这也得测才行,因此就不能用慢速时钟了,得用常速时钟才行,相应的测试方法更加复杂了。
德国汽车制造经历变革后的行业分析与布局
DMC640MH激光焊锡控制器示教系统
康耐视改造升级传统设备,化繁为简提效率
无线电源研讨会上IDT专家的精彩解析
电烙铁不粘锡的原因及解决方法
DFT的简单介绍(下)
区块链技术能为医疗改革提供什么帮助
基于FPGA的交流电机驱动器的电流控制器1
音圈模组助力大疆发布全新激光雷达
多通道振弦传感器无线采集仪 多类型数字传感器独立发送协议
三星OLED智能手机屏幕占市场总份额57.8%远超京东方和天马
沈辉:威马M7被赋予三种能力
双极性朗道能级水平和单层WSe2中的强选择性载体作用
小米CDR发行申请火速刷新富士康光速IPO
集成基准电压源典型应用电路
包头传奇高防服务器SF一条龙租用
STM32F407 位带配置步骤
产业互联网的着力点在哪?
精益化的生产排产的几大要素
IHS手机ODM产业白皮书出炉(上篇)