MBIST(Memory Built-In Self-Test)控制器是现代SoC设计中不可或缺的模块,它通过在芯片内部集成自测试逻辑,实现对存储器的自动化测试。Arm PMC-100作为一款可编程MBIST控制器,其架构设计充分考虑了灵活性和可配置性,能够适应不同类型的存储器测试需求。
PMC-100的核心功能模块包括:
状态机控制单元:负责管理控制器的执行状态,包括Initial、Run和Suspended三种状态。状态转换由特定事件触发,如Start_r、Suspend等。
寄存器组:提供对控制器行为的精细控制,包括:
微码执行单元:支持最多32条指令的程序存储,通过循环操作实现复杂的测试模式。
MBIST接口:遵循MBISTOL协议,包括MBISTOLREQ、MBISTOLACK等信号,用于与存储器阵列交互。
PMC-100的状态机是其核心控制逻辑,三种状态之间的转换关系如下:
Initial状态:控制器上电或复位后的初始状态,MBISTOLREQ信号为低电平。
Run状态:测试程序执行状态,MBISTOLREQ信号为高电平。在此状态下,控制器会执行MBIST入口序列并开始运行测试程序。
Suspended状态:程序执行暂停状态,MBISTOLREQ信号为低电平。通常用于等待特定条件满足后继续测试。
状态转换由以下事件触发:
注意:状态转换时需要特别注意MBIST接口协议的时序要求,特别是在Abort事件发生时,必须确保MBISTOLREQ和MBISTOLACK信号的正确配合,避免协议违规。
PMC100_CTRL是控制MBIST操作的核心寄存器,主要字段包括:
PEEN (Program Execution Enable):
PES (Program Execution Suspend):
STATE:
BAMEN (Bank Address Mode Enable):
c复制// 典型初始化序列示例
PMC100_CTRL.PEEN = 0; // 确保执行禁用
PMC100_CTRL.PES = 0; // 确保不处于暂停状态
// 配置其他寄存器...
PMC100_CTRL.PEEN = 1; // 启动测试
PMC100_MCR配置被测存储器的属性,关键字段包括:
RCW (Row Counter Width):
CCW (Column Counter Width):
RCOW/RCOR (RAM Cycles per Operation):
PD/PDP (Pipeline Depth):
实际应用案例:测试一个具有16行、8列的SRAM时,应设置RCW=4(2^4=16),CCW=3(2^3=8)。如果每次访问需要2个周期,则设置RCOW=RCOR=1。
PMC-100采用灵活的地址生成机制,主要寄存器包括:
PMC100_CADDR:
PMC100_RADDR:
PMC100_LOWADDR/PMC100_HIGHADDR:
地址生成逻辑根据BAMEN位的不同有两种模式:
模式1:BAMEN=0
code复制MBIST地址 = {RADDR.RA, CADDR.CA}
模式2:BAMEN=1
code复制MBIST地址 = {CADDR.CA[CCW-1:1], RADDR.RA, CADDR.CA[0]} // BAM=0
或
MBIST地址 = {RADDR.RA, CADDR.CA[CCW-1:1], CADDR.CA[0]} // BAM=1
PMC-100的程序执行遵循以下典型流程:
初始化阶段:
启动测试:
执行阶段:
终止条件:
PMC-100的指令存储在32个程序寄存器中,每条指令包含以下主要字段:
典型指令类型包括:
assembly复制// 典型测试程序示例
0: WRITE PSEL=00 DATA=0x5555 UA=1 // 写入模式1
1: WRITE PSEL=00 DATA=0xAAAA UA=1 // 写入模式2
2: READ PSEL=00 UA=1 // 回读验证
3: LOOP-LAST LPSR=0 // 循环执行
PMC-100支持灵活的循环控制,主要通过以下机制实现:
LOOP-Last指令:
循环控制寄存器:
循环终止条件:
调试技巧:在复杂循环结构中,可以在关键位置插入暂停条件(设置TCSEN/TCEEN),便于单步调试和状态检查。
基于PMC-100的可编程特性,可以实现多种存储器测试算法:
assembly复制// March元素1: ↑(w0)
0: WRITE DATA=0x0000 UA=1
1: LOOP-LAST LPSR=0
// March元素2: ↑(r0,w1,r1)
2: READ DATA=0x0000 UA=1
3: WRITE DATA=0xFFFF UA=1
4: READ DATA=0xFFFF UA=1
5: LOOP-LAST LPSR=2
// March元素3: ↓(r1,w0,r0)
6: READ DATA=0xFFFF UA=1
7: WRITE DATA=0x0000 UA=1
8: READ DATA=0x0000 UA=1
9: LOOP-LAST LPSR=6
assembly复制// 写入checkerboard模式
0: WRITE DATA=0x5555 UA=1
1: LOOP-LAST LPSR=0
// 验证并写入反模式
2: READ DATA=0x5555 UA=1
3: WRITE DATA=0xAAAA UA=1
4: LOOP-LAST LPSR=2
// 验证反模式
5: READ DATA=0xAAAA UA=1
6: LOOP-LAST LPSR=5
对于具有ECC保护的存储器,PMC-100可以通过PSEL字段测试不同的保护逻辑路径:
正常数据路径测试:
ECC生成逻辑测试:
错误检测逻辑测试:
校正逻辑测试:
关键点:测试ECC保护存储器时,需要正确设置PMC100_AR寄存器的ARD/ARG/ARE/ARC字段,以选择适当的保护逻辑单元。
并行测试:
流水线优化:
故障诊断:
自动化脚本:
状态机卡死:
地址生成错误:
数据比较失败:
协议违规:
寄存器快照:
单步执行:
追踪缓冲区:
信号捕获:
循环展开:
地址顺序优化:
并行操作:
压缩测试模式:
在实际项目中,我们曾遇到一个典型案例:某SoC芯片的MBIST测试时间超出预期。通过分析发现,主要瓶颈在于过多的循环控制指令。优化方案包括: