1687 ijtag network
1687 network 通过开关sib 来选通下级TDR,实现多层级管理,更加灵活。
Mbist introduce
MBIST为Memory Build-In-Self Test的简称,称为存储器内建自测试。针对存储器的测试向量不是由外部测试机台(ATE: Auto-Test-Equipment)生成,而是由插入的存储器测试逻辑自动生成,并进行compile。MBIST测试中,只需要从机台通过JTAG标准接口下达测试指令,从TDO接口获取测试结果。
- 存储器在很小的面积内集成了很多存储单元,对ATE的测试成本过高,不适用于从外部灌入针对存储器的测试向量。
- Memory需要测试的单元很多,但分布规整,可利用EDA的算法批量产生测试向量
- 车规芯片的安全性需要芯片在运行时仍保持在线测试(即不依赖测试机台,可集成于板级,芯片内或由软件调用,来随时测试),随时检测排除故障。
因此我们可总结出内建自测试的优势:因为测试向量由内部逻辑生成,相应模块可同被测试的存储器一同工作在内部的高速功能时钟下,而无需由机台慢速时钟移入测试向量,可节省大量的测试时间;另一方面,对比验证也同样交给内部逻辑自行完成,测试机台只需要收集测试结果,也可大幅减少测试时间。代价是内建自测试的逻辑对面积的占用很高,也不具备自由配置或更改测试向量的条件。
Mbist 架构
MBIST测试的框架由测试控制器,硬件向量生成,比较器组成
当测试控制模块接收到开始测试的指令后,首先会切换存储器的输入输出到测试模式,同时启动硬件向量生成模块开始产生和给出测试激励,同时计算存储器的输出期待值。存储器接收到测试向量之后,会间隔执行写/读/使能的操作,遍历测试所有地址下每个bit单元的写/读功能。最后,通过Q端输出的读取值,会与测试控制模块计算的期待值进行比较,是否正确的结果反馈到测试控制模块。
Tessent mbist逻辑结构
TAP: Test Access port
BAP: BIST Access port
SIB: Segment Insertion Bit
TMB: Tessent Memory BIST Controller
Tessent Mbist 结构基于IEEE1687标准(其中的TAP 为IEEE1149.1)。TAP的功能是由JTAG五组端口获取外部的测试指令,并转换到IJTAG扫描链上,并移位到其后的模块内;SIB可以开启或关闭其下对应的IJTAG扫描链,扫描链的开启意味着该部分的Memory进入测试状态;BAP起到SIB下发到MBIST Controller的接口作用;MBIST controller 内含对Memory测试控制的状态机逻辑和向量生成逻辑;Memory interface 包含了选择输入输出的MUX;而结果比较电路,包括ROM的期待值,则可以位于MBIST Controller中(面积优,时许和拥塞差)或位于Memory interface中。
Mbist 如何测试mem
MBIST测试中的关键指示信号有RUN、GO、DONE信号,由MBIST Controller结合状态机和比较器的比较结果来给出。RUN信号指示当前Controller以及下属的Memory进入测试状态(MBIST Mode);GO=1信号指示开始向下属的Memory输入测试向量,测试开始,GO=0指示测试比较器报出Fail;DONE=1信号指示MBIST测试已结束。GO和DONE信号结合起来,可判定出当前Controller下属Memory的测试情况
- GO一直未拉高或DONE一直未拉高:Controller执行有误;
- GO拉高后,DONE尚未拉高:Memory测试执行中,尚未出错;
- GO拉高后在DONE拉高前回落:有Memory测试失败;
- GO拉高后,DONE拉高:Memory测试正确通过。
GO信号根据用户需求不同,可以有以下输出方案:
- 全部测试信号汇总为一个GO信号移出,只指示设计的MBIST测试结果;
- 每个Memory对应一个GO信号移出,可具体指示哪一块Memory有故障;
- 每个Comparator对应一个GO信号移出,可细化到Memory的哪一位输出有故障;
- 若要具体到哪一位BitCell有故障,默认不能实现,需要调用Tessent的Diagnosis Feature。
Mbist 时钟如何规划
如上所示是Tessent MBIST逻辑的时钟和复位信号示意图。复位信号由TRST、TAP、SIB、BAP逐级提供给TMB和Memory Interface,只有在需要的时候,下一级才会由上一级拿到复位信号开始工作。时钟信号方面,TAP、SIB、BAP三者都在IJTAG扫描链上,因此工作在机台的慢速时钟(TCK)之下;TMB、Memory Interface则直接挂在待测试Memory的时钟源(FuncClk)之下,向量的产生和测试过程都是工作在高速时钟下,以节省测试时间和便于对memory进行全速测试。
因此我们可以很清楚地了解到,MBIST逻辑能正常工作,不依赖系统原有的复位,但需要保证Memory的时钟源准确有效。时钟网络中的时钟门控(Clock Gate)、时钟选择(Clock Mux)、时钟分频(Clock Divider)和晶振时钟(PLL),在功能模式下可能是正确有效的;但若未在代码设计时考虑到Memory在测试模式下的时钟路径,很有可能发现在电路切换到MBIST模式下之后,由于信号配置出错,或部分功能逻辑不能工作,而导致时钟路径不通,或时钟频率不匹配全速测试的要求。其结果是前端设计人员不得不返工修改代码,造成项目不必要的迭代。抑或由DFT工程师自行对电路结构进行ECO解决,但如此做的问题是代码难以达到完备标准,ECO修改工作需反复占用DFT工程师的工作时间,在每次项目更新、不同DFT工程师(如客户方)、和新老项目复用时都会造成重复劳动。另外,考虑到低功耗的设计,可能会将func 时钟特别分出一路专门给到mbist使用,这样在测试mem时,就能将func 时钟关掉,只让和mbist 相关的逻辑toggle,达到降低功耗的效果,而且,低功耗的设计还和mbist controller下挂载的mem 数量以及一个step下mem的数量相关,在设计的时候就需要考虑到功耗问题,尽量在合理的范围下使得同时一起能测试的mem数量最大。
另外,虽然MBIST逻辑不依赖系统原有复位,但时钟相关的逻辑,例如我们CPU中的时钟分频电路和SOC平台中的时钟管理模块,仍需要正常工作来提供正确的时钟。因此,时钟相关逻辑需要拿到一个与功能模式相同的复位上升沿信号。而其它无关的逻辑,在MBIST测试中需要保证其复位一直为低,保证无关逻辑在测试期间不会由于信号翻转而产生过高的功耗。如上图SOC平台中的复位处理方法。