当前位置: 首页 > backend >正文

汽车功能安全--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寄存器看没有什么差别呀:

神奇,属实神奇。 

差不多就到这,拜拜。

http://www.xdnf.cn/news/5990.html

相关文章:

  • 分子动力学模拟揭示点突变对 hCFTR NBD1结构域热稳定性的影响
  • 关于vue 本地代理
  • 基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)
  • 日常学习开发记录-rate评价组件
  • AI工具分享篇 | recraft.ai + figma 复刻技术路线图
  • Node.js事件循环中的FIFO原则
  • Docker入门教程:常用命令与基础概念
  • ‌C# 集成 FastDFS 完整指南‌
  • Django 中时区的理解
  • 科学养生,开启健康生活
  • 对抗帕金森:在疾病阴影下,如何重掌生活主动权?
  • PyTorch中的nn.Embedding应用详解
  • 电脑声音小怎么调大 查看声音调整方法
  • 【MD】LangChain 基础
  • SAP汽配解决方案:无锡哲讯科技助力企业数字化转型
  • 第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房
  • EXCEL下拉菜单与交替上色设置
  • Qt事件循环机制
  • HTTP协议解析:Session/Cookie机制与HTTPS加密体系的技术演进(二)
  • 【大模型】DeepResearcher:通用智能体通过强化学习探索优化
  • 接口(API)开发核心知识点
  • DELL R770 服务器,更换RAID卡教程!
  • 注释之CR
  • InitVerse节点部署教程
  • flutter编译时 设置jdk版本
  • 电子电器架构 --- 区域计算架构(Zonal Compute)备战下一代电子电气架构
  • 什么是SparkONYarn模式
  • 《量子语言模型研究综述》核心解读
  • Windows下安装mysql8.0
  • ridecore流水线解读