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

汽车功能安全--TC3xx之PBIST、MONBIST

目录

1.PMS 电源监控速览

2.PBIST

3.MONBIST

4.小结


1.PMS 电源监控速览

英飞凌TC3xx芯片的四种硬件机制,分别是:

  • PMS:PBIST: Power Built-in Self Test.
  • MCU:LBIST: Logic Built-in Self Test.
  • PMS:MONBIST: Monitor Built-in Self Test.
  • VMT:MBIST: Memory Built-in Self Test.

我们已经探讨了LBIST和MBIST两种,接下来我们聊聊比较少接触的PBIST、MONBIST。

在讲这个之前,我们首先回顾下TC3xx电源监控的原理。

TC3xx PMS模块有两级电源监控模式,分别为Primary Monitor(主监控)、Secondary Monitor(次级监控)

其中,主监控用于监控VEXT(外部电源)、 VDDP3、VDD三种电源,;次级监控除了上述提到的VEXT、VDDP3、VDD外,还监控VEVRSB(Standby)、 VDDM、 VDDPD;如下图:

主监控对应的三个电源都有一个最小的阈值 ,如果监控到小于最小的threshold就会触发LVD Reset,此外针对过压、欠压的瞬态探测,会产生alarm给到SMU和HSM,分别用于功能安全和信息安全考虑,如下图红色路径所示:

针对次级监控我们可以看到,它主要是监控过压欠压,产生Alarm给到SMU。如下图绿色部分:

主监控和次级监控使用的参考VREF均来源SHPBG(Secondary Bandgap Reference)中的一个模块。为了功能安全的考虑,和多样性。

2.PBIST

PBIST:Power Built-in Self Test。从字面上看就和电源相关,该测试主要是在MCU冷启动(Cold PORST)释放之前对电源、电压等功能进行自检。

英飞凌TC3xx不同供电输入给不同功能域,如下所示:

因此启动阶段电压检测就尤为重要,根据第一节定义,芯片启动时最终要的参考电压VREF的准确性需要由PLPBG和SHPBG进行相互检测,保证电源部分的冗余性,如下图蓝框部分:

其次,在PBIST状态下、EVR33、EVRC regulator启动之前,VEXT、VEXRSB由次级监控进行检测,一旦发现电压不在范围内,则不会释放CPU。

最后,VEVRSB、VEXT、VDDPR、VDD、VDDPD等过压欠压进行测试,这些参考配置电压值均在EVROVMON、EVRMON2、EVRUVMON、EVRUVMON2寄存器展示;

由于这部分动作是在冷复位释放之前进行,使用者几乎影响不到这块内容,因此我们从SafeTlib里找不到任何关于PBIST的配置。

PS:在写这部分内容时,最初思路是准备描述PMS结构、在演进到电源监测模块,但在写的时候发现没办法用易懂语言描述,故PMS这章内容后面会单独出一篇文章。

3.MONBIST

MONBIST全称Secondary Monitor and Standby Built-in Self Test;顾名思义,这部分功能是为了次级监控的自检,同时也可测试部分standby smu的alarm通路。

通过MONBIST,可以有效增加电源次级监控器(Secondaty monitors)的潜伏故障诊断覆盖率。它主要通过配置Standby SMU模块相关寄存器使能,因此这部分内容我们就可以在SafetyLib中进行实现。

需要注意的内容总结如下:

  • 保证Standby SMU使能,可以参考CMD_STDBY.SMUEN:

  • 设置PMSWCR0.VEXTSTBYEN\VDDSTBYEN为disable,防止MONBIST期间进入Standby;
  • 测试之前需要清除所有测试标记位,参考MONBISTSTAT:

  •  根据推荐配置EVRMONFILT激活过滤器,写入EVRMONCTRL0xa5a5a5激活过压、欠压alarm;

  •  MONBIST期间,Standby的FSP配置需要关闭,防止错误使用了Error Pin。

4.小结

总结下来,英飞凌4种硬件BIST机制,我们需要关心的就是LBIST、MBIST、MONBIST,分别关联模块SCU.LBIST、MTU(MBIST)、SMU Core\Standby(MONBIST),因此搞懂这几个模块的配置关联关系,理清上电启动LBIST、MBIST、MONBIST执行顺序,这样才能做好一颗芯片的功能安全软件。

 


http://www.kler.cn/a/297364.html

相关文章:

  • 线程实现的几种方式
  • uniapp 懒加载、预加载、缓存机制深度解析
  • 在内部解决方案与外包RevOps解决方案提供商之间做出选择
  • 全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架
  • Redis 集群:如何实现数据的高效分片与负载均衡
  • shell脚本【一、 特殊变量/子串/特殊扩展变量/父子shell/内置命令、外置命令】
  • 实现一个简单的线程池:C++实战指南
  • 用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)
  • C++为什么要引入智能指针?
  • 2024最新网络安全自学路线,内容涵盖3-5年技能提升
  • 关于OceanBase MySQL 模式中全局索引 global index 的常见问题
  • IIC通信协议笔记
  • 【Kubernetes】常见面试题汇总(二)
  • 欧拉下搭建第三方软件仓库—docker
  • 前端几种常见框架【第一节】
  • 如何理解有效值电流?电流的均方根值
  • 【LabVIEW学习篇 - 20】:人机界面交互设计04
  • 线程的状态(java)
  • 使用WMI改变显示器亮度
  • 浅谈C# MQTT