分享

Tessent MBIST StdBook 学习

 新用户62592529 2024-09-08 发布于四川

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)

名词解释:

       TAPTest Access Port  

       BAPBIST Access Port

       SIBSegment Insertion Bit

       TMBTessent 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 

         2.BIST_SETUP[1:0] = 10
测试开始前的Clock 时钟周期由MBISTPG_EN =1 拉高的时候,开始指示测试Clock开始. Test 完成之后,表征测试状态的Status Register的 Done = 1 ;在测试过程中GO 信号一直拉高。一旦出现问题后 GO 拉低,然后直到测试结束。
  图片

 MBIST测试中的关键指示信号有RUNGODONE信号,由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测试正确通过。

同时GO信号根据用户需求不同,可以有以下输出方案:
  全部测试信号汇总为一个GO信号移出,只指示MBIST测试结果;每个Memory对应一个GO信号移出,可具体指示哪一块Memory有故障;每个Comparator对应一个GO信号移出,可细化到Memory的哪一位输出有故障;若要具体到哪一位BitCell有故障,默认不能实现,需要调用Tessent的Diagnosis Feature
Memory LIB 的格式,包含的内容:
.tcd_memory_lib 跟.lvmemlib 是兼容性的。
.tcd Adds a 'core' wrapper to the .lvmemlib
#Memory lib 里面都包含内容如下:
       1.每一种memory 类型的物理属性和port功能参数
       2.Memory 测试算法
       3.对于每一种memory 类型的Logic to physical mapping 
 Example如下:

图片

图片

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如下:

 1Load 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 可以参考下面这位大神写的文章,很好,希望我有一天也可以写出这样文章图片 !!https://developer.aliyun.com/article/740412?spm=a2c6h.14164896.0.0.45c46d1094vjqz

          日拱一卒,让我们变得更强! 图片图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多