DFT:IST和ROM BIST能不能同时跑?特别是在mission mode下

DFT:IST和ROM BIST能不能同时跑?特别是在mission mode下

芯片跑业务的时候,ROM还能做自检吗?

做芯片DFT的兄弟应该都遇到过这个问题:IST和ROM BIST能不能同时跑?特别是在mission mode下,功能逻辑正在吭哧吭哧跑业务,测试逻辑突然插进来要读一遍ROM,这会不会打起来?

先说说IST是什么。它不是产线上ATE那种一次性测试,而是芯片装到板子上、甚至装到车里之后,在生命周期里周期性执行的自我体检。汽车电子里最典型,ISO 26262功能安全要求芯片不能"带病上岗",所以得在运行过程中抽空给自己做CT。Tessent的MissionMode方案就是干这个的,通过DMA或者空闲窗口把测试pattern灌进去,跑完LBIST或者MBIST,报告有没有坏。

那ROM BIST呢?ROM不像RAM可以写个March算法进去再读出来验证,ROM是只读的,BIST只能把全地址扫一遍,读出来的数据和预期的golden signature做比对。这意味着BIST控制器要独占ROM的读端口,从头到尾把每个地址都读一次。

问题就出在这个"独占"上。Mission mode下,CPU或者其他功能模块可能正在从ROM取指令、查表。ROM通常只有一个读端口,功能逻辑和BIST逻辑同时伸手要数据,总线仲裁也解决不了——这俩都不是AXI那种可以插队的访问,BIST要求的是连续、无中断的地址遍历,中间被功能逻辑打断一次,MISR就全乱了。

所以答案是:mission mode下一般不支持对ROM本身跑完整的BIST。不是不想做,是硬件上真做不到。

工程上怎么解决?两个字:错开。

冷启动的时候做POST,这时候功能逻辑还没起来,ROM BIST可以安心跑完。IST则是在mission mode的空闲窗口触发,比如CPU进入低功耗待机、总线没活儿干的时候,通过isolation设置把功能路径切断,让测试逻辑独占资源。Tessent的架构里专门有MissionMode Controller和IJTAG Host来做这个调度,测试逻辑平时是"沉睡"的,功耗几乎为零,只在需要时唤醒。

也有例外。某些安全关键芯片实现了cyclic ROM BIST,在后台以极低优先级做CRC校验,但那是轻量级的"抽查",不是完整的地址遍历,硬件上还要加仲裁和缓存,面积和复杂度都不小。对于一般SoC,没人这么干。

总结一句话:ROM BIST和IST在mission mode下是"有你没我"的关系,必须靠POST和空闲窗口错开执行。做DFT方案的时候,别把ROM BIST排进IST的测试列表里,否则仿真里可能勉强过,silicon上肯定要翻车。