欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 汽车功能安全--TC3xx MBIST设计要点

汽车功能安全--TC3xx MBIST设计要点

2025/5/14 12:09:56 来源:https://blog.csdn.net/djkeyzx/article/details/147930668  浏览:    关键词:汽车功能安全--TC3xx MBIST设计要点

英飞凌针对硬件故障的自测,提供了四种机制:PBIST、LBIST、MONBIST和MBIST。

LBIST和MONBIST我们已经聊过了,今天就快速介绍下MBIST。

MBIST,全程Memory Built-in Self Test,用于检测SRAM数据单元的完整性。

在26262中,SRAM cell出现错误被认为是潜伏故障,而潜伏故障要求至少一个上电周期要完成一次检测,因此MBIST的使用时机就完全取决于使用者,可以是上电检测、也可以是下电检测、甚至可以在程序运行时检测。

虽然时机随心所欲,但是做MBIST的时候还需要考虑两个前置条件:(1)测试前SRAM需要完成初始化,有正确的ECC;(2)SRAM在测试时不允许被访问。

因此,这就引出了今天的话题,如何测试内核相关的memory。

1. 单核和多核

根据芯片手册,TC3xx CPU有如下几类SRAM可供使用:

  • P\DSPR:Program\Data Scratch Pad SRAM,类比ARM内核的TCM;
  • P\DCACHE:Progaram\Data Cache
  • P\DTAG:Cache相关的Tag SRAM

为了提升效率,我们用到的最多肯定就是PSPR、DSPR等,常规用法:PSPR存放性能要求或者是特定场景的函数,DSPR用于堆栈、CSA或者其他自定义等数据存放;但做mbist的时候被测memory又不能被访问,这就要求相关memory的CPU需要停下来。

因此,我们需要分多核和单核情况。

多核相对好解决一点,cpu0最先启动,在它释放其他core时让cpu0去测试其他core的memory,如下:

 其他core去测cpu0时,让cpu0进入ilde即可。代码如下:

单核的情况说起来也简单,就是让CPU在执行测试期间不访问DSPR和PSPR,在英飞凌的MTU设计中,当我们使能了SRAM的SSH后该SRAM就不能访问了,

(代码示例MTU_MEMTEST0.B.CPU0_DMEM_EN = 1;)

这就需要我们在设计链接文件的时候要了解DSPR和PSPR具体包含了啥内容,并且在执行上述代码后就不调用PSPR的函数,也不要使用stack、csa,只用cpu相关寄存器,参考代码如下:

此外,为防止cache访问,P\D Cache在被测试的时候都需要关闭,参考CPU寄存器PMAxx。

2.MTU中PMEM的特殊处理

在手册里,有一点我没有特别想明白,但也是比较关键的地方,就是关于PMEM的特殊处理,原文如下:

要完整测试PMEM,就需要执行两次NDT测试,由寄存器TCCS.TC_TWR_SEL进行管理,如下:

 那代码中处理也比较方便,伪代码如下:

if(E_OK == CheckPmem(SramInstanceID))
{MTU_MCx.ECCS.TC_TWR_SEL = 0;triggerTest(SramInstanceID);MTU_MCx.ECCS.TC_TWR_SEL = 1;triggerTest(SramInstanceID);
}

 但有一点一直没想明白,PMEM包含了PCache和PSPR,DMEM同样也包含了DCache和DSPR,为啥PEME要特殊对待,DSPR就不用呢?

从MTUTEST寄存器看没有什么差别呀:

神奇,属实神奇。 

差不多就到这,拜拜。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词