【芯片设计- RTL 数字逻辑设计入门 番外篇 8 -- MBIST 详细介绍】


请阅读【嵌入式开发学习必备专栏 】


文章目录

    • MBIST
      • MBIST 背景
      • MBIST的主要特点和优势
      • MBIST的工作原理
      • 举例

MBIST

MBIST(Memory Built-In Self-Test)是一种在系统级芯片(SoC)中内置的内建自测试,用于检测和验证片上存储器(如RAM,ROM等)的完整性和功能。

何谓内建自测试
内建”的含义是指针对存储器的测试向量由内建的存储器测试逻辑自动产生,而非外部测试机台(ATE:Auto-Test-Equipment)生成。Mbist测试中,只需要借助机台通过JTAG接口传输测试的指令,就可以从TDO接口获取测试结果
在这里插入图片描述

MBIST允许在不需要外部测试设备的情况下,对内存单元进行测试,这可以在生产阶段校验内存,也可以在设备运行期间定期进行健康检查。

关于 TAP 的部分见:ARM Coresight 系列专栏

MBIST 背景

Memory在芯片中占据很大面积,对芯片良率有重要影响,为了避免memory低良对芯片的影响,通常添加冗余或备用的存储单元行和列,及时将测试中的故障进行修复和替换,修复过程包括行修复、列修复或两者的组合。
在这里插入图片描述

MBIST的主要特点和优势

  • 自动化测试:MBIST逻辑自动地产生测试模式和信号,不需要外部测试设备。
  • 可编程:MBIST通常可以被配置为执行不同类型的测试模式,以检测各种可能的内存错误,如地址解码错误、细胞损坏和存取时间错误。
  • 低成本:由于不需要额外的测试设备,MBIST降低了测试成本。
  • 在现场测试:MBIST可以在SoC正常工作时(在线)或者在系统启动时执行,提供了运行时测试的能力。

MBIST的工作原理

MBIST测试通常由一个或多个下列步骤组成:

  1. 初始化:MBIST控制器初始化内存和测试模式。
  2. 写测试:向内存写入特定的数据模式(如全0,全1,棋盘格等)。
  3. 读测试:读回内存数据并与预期值比较,确定是否有错误。
  4. 报告:测试完成后,MBIST逻辑生成测试报告,包括是否有错误和错误的位置。

测试模式可能非常多样,包括基本的数据模式测试,如行交替(行stripe)、列交替(列stripe)、行列交替(checkerboard)等,也包括更复杂的算法,如伪随机数序列测试或者马太效应(March)测试等。

举例

假设你设计了一个SoC,其中包含一个片上SRAM存储器。为了保证这个存储器在生产后和运行期间均能可靠工作,你在设计中集成了MBIST逻辑。MBIST逻辑被设计成在系统启动时自动运行,以确保SRAM存储器没有缺陷。如果MBIST检测到错误,它将通过相应的接口报告给系统控制器,控制器可以采取行动,比如标记该存储器为不可用,启动冗余逻辑,或通知操作系统错误的存在。

在系统启动时,MBIST控制器自动执行一系列预定义的测试模式,包括写入和读取特定的数据模式到SRAM的每个单元。这些测试模式会检测常见的故障类型,如固定值故障(stuck-at faults),地址解码故障,以及耦合故障(coupling faults)。测试后,MBIST生成的报告可以用来进一步分析,或在系统的自检步骤中作为基础信息。

MBIST是SoC设计中一种十分重要的可靠性和质量保证工具,特别是对于需要高可用性和安全性的应用,如汽车电子、航空航天和医疗设备等。通过集成MBIST,设计者可以显著提高内存的测试覆盖率,降低生产测试的复杂性和成本,并提供系统运行期间的额外安全保障。

推荐阅读:
https://zhuanlan.zhihu.com/p/350861157

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos下静态链接:/usr/bin/ld: cannot find -l某某某

问题:/usr/bin/ld: cannot find -l某某某 前言解法相关文章 前言 我是在静态链接的时候碰到了/usr/bin/ld: cannot find -lstdc的问题,这里来记录一下我是如何解决的。 如果你是动态链接的时候出了问题,可以直接看我给出的倒数第二篇文章&a…

C#,贝尔数(Bell Number)的计算方法与源程序

1 埃里克坦普尔贝尔 贝尔数是组合数学中的一组整数数列,以埃里克坦普尔贝尔(Eric Temple Bell)命名, 埃里克坦普尔贝尔(生于1883年2月7日,苏格兰阿伯丁郡阿伯丁,于1960年12月21日在美国加利福尼…

Abp 创建一个WPF的项目

开发环境:VS2022、.NET6 1、创建项目:MyWpfApp,这里不再废话了。 2、NuGet添加: 2.1、Volo.Abp.Autofac 2.2、Serilog.Sinks.File 2.3、Serilog.Sinks.Async 2.4、Serilog.Extensions.Logging 2.5、Serilog.Extensions.Hos…

算法沉淀——滑动窗口(leetcode真题剖析)

算法沉淀——滑动窗口 01.长度最小的子数组02.无重复字符的最长子串03.最大连续1的个数 III04.将 x 减到 0 的最小操作数05.水果成篮06.找到字符串中所有字母异位词07.串联所有单词的子串08.最小覆盖子串 滑动窗口算法是一种用于解决数组或列表中子数组或子序列问题的有效技巧。…

【C++版】排序算法详解

目录 直接插入排序 希尔排序 选择排序 冒泡排序 堆排序 快速排序 hoare法 挖坑法 前后指针法 非递归版本 快速排序中的优化 归并排序 递归版本 非递归版本 计数排序 总结 直接插入排序 直接插入排序的思想是:把待排序的记录按其关键码值的大小逐个插入…

【Java程序设计】【C00174】基于SSM在线医院管理系统(论文+PPT)

基于SSM在线医院管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的在线医院管理系统 本系统分为前台系统、后台管理员、后台医生以及后台用户4个功能模块。 前台系统:当游客打开系统的网址后&#xf…

flask基于python的个人理财备忘录记账提醒系统vue

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “备忘记账系统”是基于Mysql数据库,在python程序设计的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,蓬勃发展。同时,随着信息社…

在 Android 中使用 C/C++:初学者综合指南

在 Android 中使用 C/C:初学者综合指南 一、为什么有人在他们的 Android 项目中需要 C/C 支持?二、了解 C 如何集成到 Android 应用程序中三、C和Java程序的编译3.1 Java3.2 Android ART 和 DEX 字节码 四、使用 JNI 包装 C 源代码五、CMake和Android ND…

【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》

文章目录 1 基础关1.1 基础书籍1.2 提高书籍1.3 课程链接1.4 编程实战 2 阅读关2.1 分层过滤2.2 集团作战,信息获取2.3 论文如何泛读 3 动机 方向关3.1 快速发论文3.2 好的研究 4 写作关4.1 论文写作流程4.2 从读者角度出发4.3 每一部分怎么写4.3.1 Abstract摘要4.3…

浅谈一下软件 QA 方法论 和 工具

浅谈一下软件 QA 方法论 和 工具 目录概述需求: 设计思路实现思路分析1.QA方法论2.Java QA工具 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result…

探索Go 语言URL:解析与构建

探索Go 语言URL:解析与构建 在 Go 语言中,解析和处理 URL 是日常开发中常见的任务之一。URL(统一资源定位符)是指定 Web 资源位置的标准方式,它由多个部分组成,包括协议、主机、路径、查询参数等。本文将深…

调试小结:PHY初始化前后Link Status是否能正确反应网线插上、拔下状态

1 说明 为了验证是否需要初始化PHY才能检测到网线插上、拔下,这里我们对比初始化PHY(LAN8720)前后,插拔网线PHY寄存器1的bit2的是否按照预期变化来进行测试。 我们查看的PHY寄存器是1的bit2,定义如下: 2…

spring框架(一)

1、Spring框架:IoC和AOP 服务端三层开发:表现层、业务层、持久层 ssm, springboot, springcloud(微服务,治理组件) Spring框架是一个流行的Java应用程序框架,它提供了许多功能来简化企业级应用程序的开发。其中,控制反…

[每日一题] 01.30

文章目录 数列求和质数口袋奇怪数求和 数列求和 n int(input()) print(sum([i for i in range(1,n 1)]))质数口袋 n int(input()) i 2 sum 0 count 0 while n - i > sum:flag Truefor j in range(2,i): # 判断i是否为素数if i % j 0:flag Falsebreakif flag:sum i…

【LLM多模态】Cogview3、DALL-E3、CogVLM、CogVideo模型

note 文章目录 noteVisualGLM-6B模型图生文:CogVLM-17B模型1. 模型架构2. 模型效果 文生图:CogView3模型DALL-E3模型CogVideo模型网易伏羲-丹青模型Reference VisualGLM-6B模型 VisualGLM 是一个依赖于具体语言模型的多模态模型,而CogVLM则是…

BL808学习日志-3-DPI-RGB屏幕使用-LVGL D0

一、DPI-RGB驱动 BL808的手册上显示是支持RGB565屏幕显示输出的,但是一直没找到网上的使用例程。且官方的SDK显示也是能够使用的,只是缺少了驱动。这一部分驱动在SIPEED的SDK中已经内置了,今天就是简单的点亮一个800*480 RGB565的屏幕。 二、…

如何优化博客的内容和用户体验

在当今数字时代,博客成为了分享知识、展示个人专业能力和吸引读者的重要工具。然而,随着越来越多的博客涌现,如何优化博客的内容和用户体验成为了一个关键的问题。本文将为你提供一些有效的技巧,帮助你优化博客的内容和提升用户体…

开启公网即访问:GpuMall平台的云服务解决方案

在人工智能的黄金时代,数据科学家和AI工程师正面临着一个共同的挑战:如何快速、有效地将开发中的服务部署至公网,以应对日益增长的计算和访问需求。GpuMall智算云平台提供了一个全面的解决方案,让这一切变得简单。本文将深入探讨G…

【C++】C++入门—— 引用

引用 1 前情提要2 概念剖析3 引用特性4 常引用5 使用场景5.1做参数5.2 做返回值 6 传值 传引用的效率比较7 引用与指针的差异Thanks♪(・ω・)ノ谢谢阅读下一篇文章见 1 前情提要 在C语言中,我们往往会遇见复杂的指针(如…

python 写入csv文件 内容乱码

问题 python 写入csv文件 内容乱码 详细问题 笔者核心代码 import csv # 将数据写入 CSV 文件 csv_file_path "soil_data.csv" header ["经度", "纬度", "土壤类型", "pH值"]with open(csv_file_path, mode"w&q…