①Introduction Of Tessent MemoryBIST 本系列①②③④⑤⑥是对Tessent MBIST工具Student Books的学习笔记 因为从TOP传输Test Data到Core的实现,需要将Core的Scan Channel和TOP-level的PAD进行物理连接,而且这个连接关系一旦确定,不能轻易改变,除非重新规划Scan,耗时耗力呀。(如果只有10几个Blocks,工作量还能接 1 .理解Tessent Memory BIST的目录结构 2.理解基本的Tessent 工具MBIST实现Flow过程 a>产生Mbist Hardware b>高层次的信号 c>模块的通信结构(Interface Logic) 名词解释: TAP:Test Access Port BAP:BIST Access Port SIB:Segment Insertion Bit TMB:Tessent Memory BIST Controller 下图是Tessent的完整的解决方案包,如下:实际对用户显性的是SelfRepair /BaseSoluation/Diagnostics Tessent工具的Mbist 具有以下Feature 功能如下: 1.客户自定义的波形 2.全故障点阵图的debug 3.支持memory 内建的接口 4.层次化的接口和core复用 看下图的硬件示意图,让我们先对MBIST测试有个基本的印象: 当测试控制模块接收到开始测试的指令后,首先会切换Memory的输入输出到测试模式(Memory有自己的Test Mode),同时启动硬件向量生成模块开始产生和给出测试激励,同时计算Memory的输出期待值。Memory接收到测试向量之后,会间隔执行写/读/使能的操作,遍历测试所有地址下每个Bit单元的读/写功能。最后,通过Q端输出的读取值,会与测试控制模块计算的期待值进行比较,是否正确的结果反馈到测试控制模块 熟悉完过程后,看下图两张图,是整个TessentMbist的结构示意图,我们将这些模块分类6种: Tessent MBIST结构基于IEEE 1687标准(TAP 仍基于IEEE 1149.1)构建: 1.TAP Controller的功能是由JTAG五组端口获取外部(一般是ATE 通过PAD 灌进来)给予的测试指令,并转换到IJTAG Scan Chain上然并移位到其后的模块内; 2.SIB可以开启或关闭其下对应的IJTAG扫描链,扫描链的开启意味着该部分Memory进入测试状态; 3.BAP起到SIB下发到MBIST Controller 的接口作用; 4.MBIST Controller 内含对Memory测试控制的状态机逻辑(FSM有限状态机)和生成向量的逻辑; 5.Memory Interface包含了上面所述的选择输入输出的MUX; 6.结果比较电路(Compare Logic),包括ROM的期待值,则可以位于MBIST Controller中(面积更优,时序和拥塞更差)或位于MemoryInterface中(效果反之),比较结果会汇总为测试结果,由IJTAG扫描链,经过TMB、BAP、SIB、TAP移出到TDO端口。 基本上MBIST实现过程,都采用TAP IJTAG协议的通用Port(方便集成),实现过程中,Tessent主要插入两部分电路如下图: Memory BIST controller电路 和Memory Interface逻辑电路, 这里面最重要的是TMB模块,也就是MemoryBist Controller 结构如下(包含FSM,SIGNAL GEN/COMP/Status Reg等等) 可扫描的MemoryInterface Logic电路接口示意图如下:包含我们插入的OBS寄存器和BYPass logic Memory Bist Operating Protocol 测试由一个operating 协议来完成: Memory test 标红的两条线之前是初始化和配置的过程,初始化完成标志如下: 1.MBISTPG_EN =1 High ![]() 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测试Fail; ④GO拉高后,DONE拉高:Memory测试正确通过。 Bottom-up的MBIST Insertion Flow示意图如下: #Block BIST architecture 如下: 每一个Block 里面包含多个的Memory,每一块memory都有一个interface-logic包着,多个Memory 连接到同一个TMB(tessent Memory Bist controller)然后每一个Memory Bist contoller 都通过 BAP 连接到SIB 从而接入IJTAG网络。 这里要注意:挂载到同一个的MBIST Controller下的Memory 可以一般属于同一个CLock Domain,可以同时并行测试。 MBIST 的Flow如下: 1)Load Design Specify Requirements -> load RTL or Netlist and libs 声明实现选项然后,DRC check 2)Create and Process DFT Specification -> Create DFT_Specification and Modify Specification generate and insert network and Mbist hardware 3)Extract ICL -> extract IEEE 1687 network description Instruments connect language 4)Create and Process Pattern Specification 5)Simulation Validation 总结一下,在实际项目中,比如MBIST Contorller 和Memory Interface Logic都是工具自动识别和插入,使用者需要配置的很少,主要有以下: 1.一般需要给Memory配置CLK(定义CLK频率)&连接TAP port到Internal Pin(可选)使Memory 有正常Clock 2.配置JTAG Network里面的TDR(添加Constraints),让Design 能成功的进入到MBIST Mode 但是很多MBIST仿真的问题,都跟没能从RTL 角度思考DFT的CLK结构,从而 导致切换到MBIST Mode CLK不可控;MBIST 的时钟要驱动两部分:1.TAP&JTAG 这部分Logic的CLK(RST)设计 2.Memory 相关这部分的FUNC CLK(RST)结构设计。 总之要让原本FUNC CLK 驱动的module 在MBIST Mode下,拿到FUCN Mode 一样的CLK(RST也类似)。 下面这张图很好解释了,RTL阶段考虑 MBIST的是时钟规划: 但若在代码设计阶段,没有考虑到MBIST Mode测试模式下的时钟路径,很有可能发现在电路切换到MBIST模式之后,由于配置信号出错,或部分功能逻辑不能工作,而导致时钟路径不通,或时钟频率不匹配的问题。(下图就是很好例子,仿真会报Clock Monitor Fail)。这个时候只能改代码,RTL修改的迭代工作,会增加项目整个时间(深有体会呀,尤其是SOC的如果code style 不规范的时候) 关于如何从RTL角度考虑DFT 可以参考下面这位大神写的文章,很好,希望我有一天也可以写出这样文章 日拱一卒,让我们变得更强! |
|
来自: 新用户62592529 > 《芯片》