BISR Chain Test and Diagnosis
Tessent Shell MemoryBIST中默认的BISR实现仅测试修复存储器所需的连接(在post-repair期间)。以下章节描述如何对BISR链执行完整测试,包括与BIRA寄存器之间的连接。
在高可靠性系统中,您可能需要在制造测试期间对所有连接进行结构性测试,以最大化在后续现场执行增量修复的概率。此外,BISR链测试还可用于调试BISR与BIRA寄存器之间的数据连接问题,以及与控制信号(如shift enable、reset、clock和chain selection)相关的连接问题。
下图中的红点和红线突出显示了BISR链测试针对的主要故障,而BIRA寄存器的其余故障则通过ATPG扫描测试覆盖。除直接位于移位数据路径上的故障外,其余故障的位置均可轻松识别。
Enabling BISR Chain Tests
在创建 PatternsSpecification 时,若 include_repair_chain_test 属性的默认值设为 on,系统将自动生成 BISR chain tests。该属性可针对 manufacturing patterns 或 signoff patterns 单独设置,如下所示:
simulate_instruments_in_lower_physical_instances 属性默认设置为 off,以减少完成 signoff simulations 所需的时间。在此配置下,仅 BISR registers 被包含在底层物理模块的简化模型中。由于这些模块中缺少 BIRA registers,部分 BISR chain tests 期间这些 BISR registers 会捕获未知值,但这些未知值会被自动屏蔽。因此,BIRA 与 BISR registers 之间的连接仍可在 signoff 阶段通过层次化方式高效验证。
Manufacturing patterns 会应用于完整的设计层级结构,并对所有 BISR/BIRA 连接进行全面测试。
BISR Chain Test Description
如前一节所述,启用 BISR chain tests 后,当执行 create_patterns_specification 时,会在 PatternsSpecification 中创建一个新的 Patterns(BiraBisrChainTest) 封装模块。后续章节将详细说明该新 pattern 所实现的算法。
算法第一部分描述的内容适用于所有存储器,而第二部分仅适用于具有 serial repair interface 的存储器,或属于 shared bus 的存储器。
BISR Chain Common Test Algorithm
以下是适用于所有存储器的 BISR chain test Patterns 封装模块所实现的算法步骤概述。这些步骤可完整测试 BISR shift path、reset 和 shift enable 输入信号,以及 BIRA registers 之间的双向连接。测试内容包括 stuck-at 0/1 故障检测,并通过 checkerboard test pattern 检测与相邻线路的短路问题。
下方列出的每个算法步骤均对应图5-50中的 TestStep 封装模块(该图展示了实现 BISR chain test 的 Patterns 封装模块的前三个 TestSteps):
-
清除 BISR chains
-
扫描输出全0并扫描输入 checkerboard pattern
-
执行 BISR to BIRA 数据传输
-
再次清除 BISR chains
-
扫描输出全0并扫描输入 inverse checkerboard pattern
-
执行 BIRA to BISR 数据传输
-
扫描输出 checkerboard pattern 并扫描输入 inverse checkerboard pattern
-
使用反向数据重复步骤3至7
除步骤3(Tsb_BisrToBira_chckb)外,所有步骤均在 BISR chains 上执行操作(通过 MemoryBisr 封装模块的存在可确认这一点)。
步骤3需要运行包含BIRA寄存器的BIST控制器,以执行BISR到BIRA的数据传输。在本示例的PatternsSpecification中,顶层设计有一个控制器,而底层模块中有两个控制器。由于使用了底层模块的完整模型,步骤3中需指定所有控制器。若采用默认的底层模块简化模型,则仅需指定顶层控制器。此时,由于底层模块输出值未知,算法特定部分的扫描输出值会被自动屏蔽。
为便于BISR到BIRA的传输,硬件提供了一项专用功能:通过在PatternsSpecification的AdvancedOptions封装模块中设置apply_algorithm : null属性,即可触发传输。控制器执行传输后会直接进入Done状态,而无需运行任何存储器测试算法。此操作在hw_default运行模式下执行,仅消耗少量测试周期,因此速度极快。传输可通过功能时钟或TCK实现(前提是功能时钟树支持TCK注入机制)。
Serial Repair and Shared Bus Algorithm Additions
具有串行修复接口(serial repair interfaces)的存储器和共享总线(shared bus)实现中的存储器需要额外步骤来测试多路复用器的选择输入(该多路复用器用于选择内部与外部BISR寄存器),以及内部BISR寄存器每个位的复位输入。关于串行修复接口存储器的多路复用器实现,详见“内置自修复(BISR)”章节并参考图5-2;而共享总线存储器的多路复用器实现则在“存储器集群模块的BIRA与BISR生成”章节中说明并展示于图6-16。以下补充算法步骤是对“BISR链通用测试算法”中所述基础步骤的扩展:
9)清除BISR链
10)从内部BISR寄存器扫描输出0并扫描输入1
11)从内部BISR寄存器扫描输出1并扫描输入1
12)执行BISR到BIRA的传输
13)复位所有BISR寄存器
14)执行BIRA到BISR的传输
15)从内部BISR寄存器扫描输出0。
这些步骤与通用算法中的操作类似,不同之处在于扫描输出(scan-out)操作期间需选择内部BISR寄存器。通过以下方式指定内部BISR寄存器的选择:在步骤10和11的PatternsSpecification中,将BisrChainAccessOptions/select_bisr_registers属性设置为internal;在步骤15中则设置为internal_only。测试设计会向外部和内部BISR寄存器加载不同内容,以验证选择两者的多路复用器是否存在。
在步骤14中,外部BISR寄存器会捕获对应BIRA寄存器的输出,而内部BISR寄存器根据其具体实现可能保持原值或进行移位。此处假设内部BISR寄存器的所有位均具有复位输入,以确保步骤15的输出可预测。但某些存储器仅对内部BISR寄存器的修复使能位(repair enable bit)提供复位功能,此假设不成立时测试无法执行。
部分BISR链可能混合了并行/串行修复接口(parallel/serial repair interfaces)的存储器或共享总线(shared bus)中的存储器。具有并行修复接口的存储器,其BISR寄存器行为与外部BISR寄存器一致。步骤10和11可兼容此情况,因为从内部或外部寄存器扫描输出的值相同;但步骤15中这些值会存在差异。为确保仅比较从内部寄存器扫描输出的值,必须将select_bisr_registers属性设为internal_only。该设置会扫描输出与串行或并行存储器修复接口关联的BISR寄存器,但仅比较与串行修复接口关联的BISR寄存器数据。
BISR Chain Test Limitations
以下是已识别的BISR链测试限制:
• 某些具有串行修复interface的存储器仅对内部BISR寄存器的修复使能位进行复位。这些存储器属于部分复位,因此无法应用“串行修复与共享总线算法补充”章节中描述的额外测试序列。
• 对于没有BIRA对应结构的自定义及流水线BISR寄存器,需修改“BISR链通用测试算法”章节描述的pattern。您可通过以下方式创建自定义及流水线寄存器:使用create_custom_bisr_register命令、在bisr_segment_order_file中使用pipeline关键字,或通过指定BisrElement/Pipeline(before | after)封装层。pattern的修改包括:在算法第7步中,利用"read_value(range) : 0"属性将这些寄存器的期望值改为0,并在BisrChainAccessOptions/BisrRegisterAccessOptions封装层中进行设置。