罗风 · 2020年12月28日

葵花宝典:DFT 问答第一篇

Part I

Q: Boundary Scan是什么?应用场景是什么?实现的方法是什么?挑战是什么?

A: Boundary Scan就是边界扫描,是由Joint Test action Group起草的规范,最初是为了解决板级芯片之间的互联测试的问题,实现方法就是在芯片内部的每个I/O上面加上一个Boundary Scan cell 用于控制和观测每个I/O的状态,然后把每个I/O的bscell串连起来交由TAP控制器控制。TAP控制器按照 IEEE1149.1 规范通过5个I/O 串行与外界通讯。虽然Boundary Scan是为了解决板级芯片互联的测试而设计的,但是也可以用来进行芯片自身 I/O 的测试,比如 VIH/VIL, VOH/VOL,  highz, I/O漏电等等的测试,IEEE1149.1 规范比较实用于纯数字电路的I/O测试,后来为了解决一些高速差分接口的测试,增加了IEEE1149.6 规范,通过在原有协议的基础上增加了两条指令pulse 和transition 来测试差分信号。关于Boundary Scan的部分,三家EDA公司的DFT tool的manual都有详细的介绍,关于1149.6 AC jtag的部分,大部分的串行接口IP都会支持,可以找相关部分参考研究。关于 AC jtag部分,由于在芯片设计和板级设计上都有一些特殊考虑,挑战会较大一些。

由于TAP 只需要5个I/O(或者4个I/O)与外界通讯,并且协议比较简单,所以TAP 除了用来做boundary Scan的控制之外,还大量用来做SoC内部电路的测试控制以及追踪调试。随着SoC规模、复杂度的增加以及 time-to-market 要求的提高,基于IEEE1149 规范,后来又提出了 P1500 以及 IEEE1687 规范用来解决 embedded IP的测试控制。相比于其他串行接口,TAP 接口操作简单,是对 ATE 机台最为友好的接口。

对于这一块,参考学习的资料也很多,最直接有效的方法就是直接翻看成熟IP的Code,举个例子,不论是哪家的 DDR PHY,USB PHY里面都有JTAG用于测试以及调试的逻辑,打开代码看一下就明白咋回事了。

Q: MBIST是什么?应用场景是什么?实现的方法是什么?挑战是什么?

A: MBIST是memory build-in self test,就是对芯片中嵌入式的 memory 进行自测试。芯片中嵌入式的 memory 被深深埋到芯片的逻辑当中,根本没有办法直接通过外部加激励来进行测试,必须在芯片中设计一部分电路自动对嵌入式的 memory 进行自测试。现在SoC设计,嵌入式的 memory 所占面积比例非常高,通常一款SoC, 75%~80% 的面积都是embedded memory,并且embedded memory的density很高,在生产当中很容易产生defect,并且工艺不同,产生defect的density容限也不同,必须把所有有defect的芯片通过测试筛选出来,这样MBIST几乎是每款芯片都要做的,对于一些memory占比高的芯片,不仅要做MBIST还要做Repair。

MBIST的实现方法很多,有很多成熟的flow可供采用,此处不去比较各个flow的优缺点。关键是根据自己芯片的特点定制适合自己的flow。Flow的定制也受限于各种因素,比如memory Vendor, tool vendor的选取, 芯片对 timing, area, power, reliability的要求,后端routing的限制等。Flow定制的好,可也节省人力、缩短schedule,节省芯片面积。Flow定制的糙一点,也不是不能做,就是费时、费力,芯片面积大点、测试时间多点,芯片的cost高一些。

Q: MBIST RTL flow跟netlistflow各有什么优劣?更推荐哪种flow?为什么?

A: 没有什么优劣,只是适合不适合自己。对于design service 公司,推荐 netlist flow,因为design service 一般都看不到code,而且和客户之间的delivery 都事前切割的很清楚,和前面反复的也比较少,netlist flow 也简单,做起来比较容易一些。

对于 design house 公司,推荐RTL flow,可以提早把mbist做进去,验证、综合都可以和设计一起做,效果好一些。RTL flow复杂性会大一些。主要体现在rtl coding style, design database的管理,sdc 的处理等上面。

Q: MBIST时,Memory partition要考虑哪些因素?推荐的做法是什么?

A: 主要考虑memory type, clock domain, physical location, power consumption等,做mbist的时候最好带着def做。

Q: LBIST是什么?应用场景是什么?实现的方法是什么?挑战是什么?

A: LBIST 是logic build in self test. 就是对逻辑进行内建自测试,不同于ATPG, LBIST的测试激励是由on-chip的电路自己产生,对功能逻辑进行扫描测试。不依赖于ATE机台,直接在板上进行测试,甚至芯片部署到产品中以后也可以进行in-system 的测试。LBIST的开发难度大、开发周期长,对芯片面积也有很大的开销,一般都是对可靠性要求比较高的芯片才做LBIST,像消费类的产品鲜有做lbist的。由于LBIST on chip产生的激励是伪随机的,coverage一般不高,并且对芯片中的X-source敏感,芯片中的X-source会直接crash LBIST,所以进行lbist设计,清理芯片中的x-source是很大一部分工作量。

Q: Analog 的DFT如何实现?常用的结构有哪些?挑战是什么?

A: Analog的DFT测试一直都是一个难点,现在Analog的测试都还是要依靠designer在电路是添加测试电路,完全依赖于designer实现的。

Part II

Q: 常说的scan chain,stuck-at跟at-speed test各是什么?分别如何实现?挑战是什么?

A: 这些都是属于ATPG测试,stuck-at pattern是用来测试电路中stuck类型的defect,比如open, short, tie high, tielow等。At-speed test主要是用来测试电路中timing相关的defect。ATPG pattern 的产生主要是依赖于EDA工具来实现。设计的挑战来自于对SoC设计的理解,特别是Clock domain的控制,对于CDC path的处理,这些都是design dependent 的,所以DFT工程师要对设计非常了解才行。

Q: 压缩解压缩的概念是什么?为什么引入压缩解压缩?如何定义压缩比?

A: 所谓压缩就是为了节省scan I/O的数量,把scan chain的数目压缩一下再拉到I/O管脚上面去,压缩比没有什么严格的规定,主要看芯片可用I/O和内部scan chain的个数而定,从几十到几百都可以。

Q: ATPG是什么?用于DFT的哪个方面?在电路结构上如何体现?如今业界算法是否大同小异?最流行的算法是什么?

A: ATPG 是autotest pattern generation, 用于利用scan chain 来测试数字电路中的defect,做ATPG先决条件必须是插好scan chain。ATPG算法已经相当成熟,各家的EDA工具大同小异,没有太大差别。以前还搞过模拟退火算法,已经很多年没有跟踪这一块的进展了,对于电路设计者来说,没有必要了解ATPG具体采用了什么算法,完全依赖于EDA工具就可以。

Q: 测试时间跟哪些因素相关?缩短测试时间的办法有哪些?

A: 因素很多。比如:mbist algorithm, mbist 实现方法, scan chain 长度,atpg pattern count,pll lock时间等,还有就是一些高速接口的测试要依赖于系统 setup 的时间。模拟电路的测试时间取决于模拟电路本身。模拟电路的测试时间是大头。

要缩短测试时间就从上面各个环节去偷,尽量避免一些重复的测试。

Q: OCC/OPCG/scan clock mux用途是什么?工作原理是什么?如何实现?

A: 这些都是同一个东西,不同人的不同叫法。就是为了at-speed ATPG测试时在function clock和shift clock之间切换的控制逻辑。不同人设计的电路不一样,它就是一个2选一的clock mux,设计时注意处理一下cdc的path,不要产生glitch就行了。

Q: DFT的标准都有哪些?分别是什么?用于什么?

A: 没有硬的标准,就是一个tradeoff.   做芯片就是tradeoff。根据自己芯片的实际情况做一些tradeoff。时间、性能、成本各个方面的tradeoff。

Q: 除了以上提到的,DFT还有哪些类别?

A: 大类上面基本都覆盖了。能想到的就是一些对可靠性要求非常高的产品,需要做 in-system 的test,这类芯片的DFT设计挑战非常高,不仅需要DFT的知识,还需要有一定的系统方面的知识。这一块国内涉及的人比较少。

Q: 当前DFT的发展趋势是什么?

A: DFT是一个实战性很强的专业,他是为了解决芯片设计、制造的问题而存在的,他不可能独立发展。他要伴随着芯片的发展而发展。假如存在一个理想情况,foundry足够牛,生产的芯片100%是no defect的,在使用过程中也不会引入新的defect,那DFT就没有必要做了,费人费力费面积。所以我们不说发展趋势,说发展需求,由于国内芯片行业发展的非常快,已经开始涉及对芯片可靠性要求非常高的行业,比如工业控制,汽车电子等产品,这些产品对芯片的可靠性要求高,一般需要对芯片做in-system的测试,这要求DFT越来越向system靠拢,要求DFT工程师对sytstem要熟悉。

Q: 16/12、7nm对于dft有什么挑战,或者有什么需要注意的地方吗,从方法学和flow的角度?

A: 从两个方面来说:其一,工艺节点本身发展带来的挑战。主要是指工艺节点的演进引入的新的defect model 需要新的DFT算法来检测。老实说对于这一部分大部分工程师或者公司无能为力,因为需要foundry支持,只有大公司才有可能获得foundry的合作。所以只能依赖于EDA工具来support。其二是由于工艺节点的演进带来的集成度的提高,使得SoC规模越来越大,SoC集成的东西越来越多,同时SoC面临的time-to-market的压力也最大,对于这一部分,工程师能够支配的空间就很大,一个完整、完备、自动化的flow对于提高交付的质量是一个很好的保证。

作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/S3XRs-Phi06lvU9_B6s9EQ
作者微信公众号
微信号二维码.jpg


相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
10973
内容数
1216
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息