汽车功能安全--TC3xx LBIST触发时机讨论

目录

1. LBIST架构

2. LBIST寄存器配置

3. LBIST触发时机


LBIST,全称Logic Built-in Self Test。

在TC3xx中,LBIST是一种硬件功能安全机制,目的是为了探测MCU内部逻辑电路的潜伏故障(latent faults)。

从使用者角度来看,只需要知道TC3xx的LBIST,它是基于对MCU进行量产测试的DFT(Design Fot Test)结构。这些测试逻辑是在芯片设计过程中被引入,流片后在ATE(自动测试仪)设备上通过对芯片进行测试,挑出有制造缺陷的芯片并淘汰掉,保证芯片的良率。

因此首先我们来熟悉熟悉LBIST架构。

1. LBIST架构

TC3xx LBIST结构如下图所示:

它主要由PRPG(Pseudo-Random Pattern Generator)、Scan Chains、MISR(Multiple-Input Signature Register)、LBIST Controller组成。

LBIST执行时,首先PRPG使用LFSR(Linear Feedback Shift Register )生成伪随机测试向量,送入到扫描链进行测试,然后compactor将得到结果通过异或门进行压缩,产生最终MISR签名,送入到LBIST Controller的相关寄存器中,以便应用软件比较。

基本原理看起来比较简单,但是我们知道,给用户端呈现得越简单,实际芯片设计过程就越复杂,所以接下来我们看看,LBIST模块相关寄存器有多简单(毕竟我也不懂DFT)。

2. LBIST寄存器配置

LBIST Controller相关寄存器总计只有4个,分别是LBISTCTRL0\1\2\3

  • LBISTCTRL0

该寄存器主要用于设置LBIST Pattern个数、触发LBIST、表征LBIST测试状态、复位LBIST Controller等,是用户端主要关心的寄存器。

  • LBISTCTRL1

该寄存器比较常用的是位域BODY,用于决定LBSIT执行时GPIO对外状态,一般建议配置为弱上拉 

  • LBISTCTRL2

该寄存器用于配置扫描链最大长度

  • LBISTCTRL3

该寄存器存放MISR的签名值,可由软件读出,进行比对。

在最开始接触的时候,大家估计对寄存器中每个位域该如何配置非常困惑,毕竟pattern长什么样、个数应该怎么配置、签名的目标值是多少,对于使用者来说都是模糊的。

因此,英飞凌在每款芯片的具体UserManaul里都给出了推荐配置,例如TC37x AA LBIST配置推荐如下:

需要注意的是LBISTCTRL3是一个RH类型寄存器, 这里给的签名是给软件去做对比用的。

3. LBIST触发时机

LBIST的触发时间选择比较关键,因为根据文档描述,LBIST执行结束后会执行一个reset,

因此,一般多用在启动时进行一次LBIST测试, 英飞凌提供了两种选择:

  • 通过UCB.BMHD.BMI的LSENAx位域,在BootRom阶段由SSW触发;

  • 在应用启动阶段由软件进行触发

LBIST始终会触发Warm Reset,并且签名值的比较只能由用户软件处理,因此在设计LBIST触发时,我们应该先搞懂其运行逻辑,具体如下:

上图中,灰色部分为英飞凌的SSW软件,不可更改,只能通过UCB配置影响启动逻辑;绿色部分为应用软件部分,由用户实现。

  • 系统从冷复位起来后,首先进入到SSW,该软件依次判断是否是Cold Reset、BMI.LBIST是否使能,如使能则触发LBIST,完成后进行warm reset,SSW会判断是否完成了LBIST,如果完成则跳转至用户代码(注意,SSW逻辑复杂,这里仅讨论LBIST相关);
  • 用户启动后,去判断LBIST是否完成,如果LBIST已经完成了,就判断签名值是否匹配,不匹配则判断LBIST重试次数是否达到阈值,如没有则继续Trigger LBIST;

个人认为,英飞凌提出了使用UCB触发和软件自动触发的原因应该是最开始认为用户可以自定义去配置LBIST Pattern,但是我们发现,我们根本就看不懂这些寄存器说明,所以还是老老实实使用推荐配置。

既如此,那么上述逻辑就可以更进一步优化,使用时固定配置UCB.BMI.LBENAx打开,这样在SSW里就可以触发LBIST,那么Reset类型就为Warm Reset。因此在用户代码逻辑里,我们只要判断只要不是cold reset,我们就去比较签名值,这样就能节省启动时间。如下图:

当然,软件的设计是各种各样的,还可以直接读取复位状态寄存器RSTSTAT.LBTERM,如置位了就可以直接比较签名值,无论怎么样最终目的还是为了既能有效执行LBIST,又能加快启动时间。

最后,我们来考虑,上述代码应该在哪里执行?汽车ECU典型的用户代码分为Bootloader、App;个人理解既然LBIST是关系到MCU的内部逻辑电路,那么最好就是最早处理,因为一旦LBIST不成功,意味着代码就难以继续运行,故在Bootloader里做能及早发现问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S 1.31 新功能: 跨核分发CPU

​在Kubernetes的最新版本1.31中,一个超酷的新功能,叫做CPUManager的静态策略,里面有个选项叫做distribute-cpus-across-cores。虽然这个功能现在还在测试阶段,也就是alpha版,而且默认是藏起来的,但它的目的…

腾讯提出一种新的针对风格化角色和逼真服装动画的生成3D运动转移方法,生成效果逼真!

来自腾讯XR视觉实验室的研究团队提出了一种创新的3D运动转移方法,专门针对风格化角色和逼真服装动画的生成。该方法能够将源动作准确地映射到目标角色上,同时考虑了角色身体的刚性变形和服装的局部物理动态变形。 与现有技术相比,这技术不仅…

docker Desktop报错 error pulling image configuration 处理

问题描述 在 docker 拉数据 出现以下错误 error pulling image configurarion: 这个问题 主要是 可能应该某些原因不能网络无法连上镜像 原因分析: 1。 2024年 5月以后 国内很多IP都 。。。懂的都懂,很多 VPN 也是。。。 懂的都懂&#x…

C++类和对象(5)——运算符重载(以日期类为例)

运算符重载的作用 假设我们此时实现了日期类的运算符重载,我们就可以 实现如图的很多功能,完成日期计算器的底层代码。 运算符重载关键字 运算符重载的关键字是operator。 比如你想重载‘’运算符,那么语法格式就是 返回类型 operator …

算法设计与分析:实验三 回溯法——地图填色问题

实验内容与要求: 问题描述: 我们可以将地图转换为平面图,每个地区变成一个节点,相邻地区用边连接,我们要为这个图形的顶点着色,并且两个顶点通过边连接时必须具有不同的颜色。附件是给出的地图数据&#…

仿华为车机UI--图标从Workspace拖动到Hotseat同时保留图标在原来位置

基于Android13 Launcher3,原生系统如果把图标从Workspace拖动到Hotseat里则Workspace就没有了,需求是执行拖拽动作后,图标同时保留在原位置。 实现效果如下: 实现思路: 1.如果在workspace中拖动,则保留原来“改变图标…

Scratch教学案例-《三顾茅庐》:让编程学习如同故事般引人入胜

三顾茅庐-小虎鲸Scratch资源站 在编程的世界里,我们常常寻找那种既能激发创意,又能提升技能的学习方式。今天,小虎鲸Scratch资源站为您带来了一款独特的教学作品——《三顾茅庐》。这是一部将经典故事与编程教学巧妙结合的Scratch项目&#x…

在docker中安装skywalking + es

ES的版本和官网 es版本: Past Releases of Elastic Stack Software | Elastic es版本logstash版本JDK版本对应关系 支持一览表 | Elastic skywalking的版本说明和官网 Advanced deployment | Apache SkyWalking skywalking和es的对应关系,在网页的…

读书笔记:《深入理解Java虚拟机》(4)

垃圾收集器与内存分配策略 一、对象已死? 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。 引用计数法 给对象中添加一个引用计数器: 每当有一个…

day03-面向对象-内部类泛型常用API

一、内部类 内部类是类中的五大成分之一(成员变量、方法、构造器、代码块、内部类) 如果一个类定义在另一个类的内部,这个类就是内部类。 场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单…

bitmap(位图)的使用

零存零取,整存零取,整存整取, 零存整取 bitmap介绍 位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容, 位上限:2^(9(512)10(1024)10(1024)3(8b1B))2^32b 语句操作: s…

[报错] nvcc -V 找不到

报错: nvcc : 无法将“nvcc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,ObjectNotFound: (nvcc:String) [], CommandNotFoundExceptionFullyQualifiedErrorId : CommandNotFoundException 找不到 nvcc -V,试过…

鸿蒙(API 12 Beta5版)【通过文本生成码图】

基本概念 码图生成能力支持将字符串转换为自定义格式的码图。 场景介绍 码图生成能力支持将字符串转换为自定义格式的码图,包含条形码、二维码生成。 可以将字符串转成联系人码图,手机克隆码图,例如将"HUAWEI"字符串生成码图使…

深度学习系列71:表格检测和识别

1. pdf处理 如果是可编辑的pdf格式,那么可以直接用pdfplumber进行处理: import pdfplumber import pandas as pdwith pdfplumber.open("中新科技:2015年年度报告摘要.PDF") as pdf:page pdf.pages[1] # 第一页的信息text pag…

【开端】基于nginx部署的具有网关的web日志分析

一、绪论 基于nginx部署的具有网关的web日志分析,我们可以分析的日志有nginx的access.log ,网关的日志和应用的日志 二、日志分析 1、nginx日志 参数 说明 示例 $remote_addr 客户端地址 172.17.0.1 $remote_user 客户端用户名称 -- $time_lo…

Datawhale AI夏令营

一、物体检测算法 物体检测算法主要分为两类:One-Stage(一阶段)和Two-Stage(两阶段)模型。 二、One-Stage目标检测算法 定义:One-Stage目标检测算法是一种直接在图像上进行目标检测的方法,无…

数字化转型升级探索(二)

在数字化转型升级的探索中,我们计划通过整合前沿技术如人工智能、物联网和大数据,全面改造传统业务流程,打造智能化、数据驱动的业务架构,实现从数据采集、处理到分析的全链条数字化,以提升决策效率、优化运营管理&…

C++和QT

什么是QT Qt 是一个跨平台的 C图形用户界面应用程序框架。 它为应用程序开发者提供建立艺术级图形界面所需的所有功能。 它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 QT的优点 跨平台,几乎支持所有的平台 接口简单&#x…

pandas操作Excel文件

pandas操作Excel文件 一、前言二、指定读取的工作表与header设置2.1指定工作表2.2header设置 三、读取Excel数据3.1iloc读取数据3.2read_excel读取数据3.3loc读取数据 四、DataFrame数据筛选4.1根据列标签对整列进行筛选4.2使用iloc对区域进行筛选4.3自定义筛选 五、DataFrame类…

【GPT】Coze使用开放平台接口-【6】Dify 也来一遍

前面讲了 coze 的相关用法,这边想着用 Dify 也来一遍,刚开始的时候接触的是 Dify,后面才是 coze。Dify 和 coze 的侧重点不同,我个人是更倾向用 Dify 构建工作流就可以了,coze 还是相对全能。 本节用 Dify 也会创建插…