作者:禅与计算机程序设计艺术
1.简介
芯片制造技术一直是重要的工程学科领域。随着集成电路、半导体等领域的飞速发展,制造商不断追求提升产品的性价比,降低成本,这也导致了很多企业都会投入大量的资源用于研发、生产和测试芯片。但芯片测试与可靠性分析一直是芯片安全保证的关键环节,也是系统缺陷解决的必要环节。但对于不同的芯片制造商而言,由于工艺和温度的不同,需要不同的测试方法与工具,使得测试工作复杂程度高、耗时长且费用高昂。因此,如何有效地进行芯片测试与可靠性分析,成为制造商重点关注的一个课题。
针对这个问题,笔者认为我们可以从以下几个方面展开讨论:
⑴ 芯片测试基础知识 ⑵ 测试工作的层次结构 ⑶ 测试工具与方法 ⑷ 可靠性分析的基本方法
在本文中,我将结合这些内容对芯片测试及可靠性分析进行阐述。希望能够帮助读者更好地理解芯片测试的相关知识和技能,并学会有效地分析芯片的故障现象和原因,找到解决问题的方法。
2. 芯片测试基础知识
2.1 芯片测试与可靠性分析概述
2.1.1 什么是芯片测试?
芯片测试(Chip Testing)是指对新进入市场或者已经开始使用的电子器件、微控制器、集成电路板、存储设备等电子元器件,按照规定的测试计划,检测其功能是否符合设计要求,还包括分析测试结果,确认芯片各个部件之间的兼容情况、互连情况等。芯片测试通常包括以下五个阶段:
⑴ 原理验证:测试人员根据规范,通过多种测试方式对芯片的原理及其工作过程进行确认; ⑵ 滤波测试:检测系统的衰减或噪声对芯片的稳定性的影响; ⑶ 烘焙测试:测试人员通过高温高压蒸馏、烧蚀测试、熔融测试等方式,去除浮点数级的电容级的刻蚀以及其他可能出现的裂纹或腐蚀现象,确保产品的可靠性; ⑷ 走线测试:通过测试人员对芯片的走线连接部件的判断,确认各部件之间的相互关系是否正确; ⑸ 可靠性测试:测试人员在所选的测试条件下,对芯片的各种功能模块进行测试,确认其是否正常工作。
2.1.2 为何要进行芯片测试?
任何一种电子元器件都存在着不确定性,测试芯片的目的就是为了发现和定位这些不确定性,避免其带来的损害。比如,可以利用芯片测试来做到如下几点:
- 提升产品的可靠性:芯片测试可以保证产品的稳定性、安全性,确保产品的正常运行,从而提高产品的品质。
- 提高客户的满意度:测试过程的顺利执行,可以获得客户的一致认可,提升产品的知名度和信任度。
- 检测到芯片的缺陷:芯pixcel测试可以捕获产品的潜在缺陷,改进产品的性能,缩短产品的使用寿命。
- 分析与预防系统故障:芯片测试还可以帮助制造商预测、分析并消除系统故障。
2.1.3 如何进行芯片测试?
芯片测试一般分为两类:静态测试和动态测试。静态测试通常包括静压测试和静电测试,主要用来评估物料的外形和规格。动态测试则包括功能测试、压力测试、漏洞测试和热失效测试等,它们的目标是在测试过程中评估和监控电路的功能,尤其是在处理压力、噪音、电磁干扰和可靠性不佳时的功能和效率。
通常,芯片测试包含多个测试阶段,每个阶段均应采用合理的方式,综合考虑技术人员的能力、测试实践经验、测试材料、测试环境、测试条件等因素。测试阶段间需要进行技术管理,才能确保测试任务按计划进行,并取得积极的效果。
2.2 芯片测试的层次结构
2.2.1 静态测试层次结构
静态测试层次结构包括三种类型的测试:逻辑测试、原理测试和测试设计测试。
逻辑测试是对逻辑组合电路的功能性、可靠性和可实现性进行测试,目的是检查电路中的元器件之间是否有冲突、信号是否正常流动、处理速度和资源消耗是否达标。通过逻辑测试,可以确定电路连接图和逻辑结构是否正确、元器件之间的接口是否匹配、驱动电路是否恒定、缓冲电路是否延迟、时钟电路是否稳定运行。
原理测试是对芯片的主要组成成分和结构功能进行测试,目的是检查主要元器件的功耗、带宽、尺寸、封装形式、供电电压范围等是否符合设计要求。通过原理测试,可以检测主要元器件是否具有某些缺陷或限制,如供电电压范围过小、漏电或过流、相位跳变等。
测试设计测试主要检查测试计划的执行情况,检查是否存在遗漏和错误,并向测试人员提供反馈信息。通过测试设计测试,可以确认测试计划的内容和安排是否合理、测试流程是否完整、测试人员的培训教育是否到位。
2.2.2 动态测试层次结构
动态测试层次结构又称为功能测试层次结构(Functional Test Level Structure),它将测试过程划分为多个步骤,每一个步骤都是测试不同方面的功能。典型的功能测试层次结构包括功能测试、压力测试、漏洞测试、热失效测试、温度测试和电源测试等。
功能测试包括功能完整性测试、逻辑功能测试、时序功能测试、动态响应测试和其它相关测试等。功能完整性测试是指对整个芯片的总体功能进行测试,目的是检查芯片是否正常工作,例如,当受到一些外部输入信号时,电路是否能够产生期望的输出信号。
逻辑功能测试是指对芯片内部的逻辑组合电路进行测试,目的是检查电路中的元器件之间是否有冲突、信号是否正常流动、处理速度和资源消耗是否达标。通过逻辑功能测试,可以检测电路连接图和逻辑结构是否正确、元器件之间的接口是否匹配、驱动电路是否恒定、缓冲电路是否延迟、时钟电路是否稳定运行。
时序功能测试是指测试与时序相关的功能,目的是检测电路中的逻辑电路、触发电路、同步电路、时钟电路等是否按照预期运行。通过时序功能测试,可以检测指令传输是否正确、数据读写是否正常、计数信号的响应是否准确、触发电路的触发频率是否准确、电源管理系统的能效控制是否正确。
压力测试是指对电路在不同的工作压力、外部噪声和环境变化下的表现进行测试,目的是发现电路在各种情况下的漏电、过流、潜在错误、控制信号丢失、寄生漏电、尖峰脉冲等效应。
漏洞测试是指将电路组件和连接点短接、焊接、旋转等方式破坏、损坏,测试电路的弱点,目的是找出电路的缺陷。
热失效测试是指利用电热传递特性或其他热能把电路制冷、击穿、焊接、烧毁,测试电路的耐力和易燃性,目的是找出电路的缺陷。
温度测试是指对电路进行高温测试,目的是探测电路内存在温度变化对电路的影响,通过测量温度变化时引起的开关跳闸次数、工作时间和开关时常等参数,来观察电路在温度变化下工作状态和性能的变化。
电源测试是指将电路所需的电源输送给测试电路,测试电路对电源的稳定性和工作频率的响应能力。
2.2.3 测试工作的层次结构
测试工作的层次结构由硬件测试、集成测试、软件测试和测试支撑系统四个部分构成。其中,硬件测试和集成测试共同组成了底层测试。底层测试包括芯片、PCB、接口的测试工作,以及测试机构的仪器设备安装、测试环境设置等工作。集成测试侧重于芯片和系统级别的测试工作,包括PCB测试、线束测试、回路测试、功能测试、性能测试、可靠性测试、可维护性测试、可移植性测试、外观测试和批量测试等方面。
软件测试侧重于设计人员编写的程序和软件在实际使用过程中发现的问题。它包括单元测试、集成测试、系统测试、接口测试、自动化测试、可用性测试、兼容性测试等方面。测试支撑系统侧重于测试支持工具的开发、部署和管理工作,包括测试管理、自动化、数据库、接口测试管理、性能测试管理、测试运行管理、测试报告管理等。
2.3 测试工具与方法
2.3.1 测试工具介绍
由于芯片制造厂商使用的工具、流程、工艺和测试条件的差异,导致芯片测试过程的各个环节都无法完全一致。而且,测试人员必须掌握一种或多种工具才能完成测试工作,因此,工具选择至关重要。常用的芯片测试工具有OVP(Open Verification Platform)、UUT(Under Test Unit)、DFX(Design For Xilinx)等。
OVP(Open Verification Platform)
这是Xilinx提供的一款开源的可重用硬件验证框架,基于Verilog HDL语言,提供了仿真环境、仿真波形分析工具和仿真器支持。它可以快速的生成测试用例、测试方案、用例结果数据,支持多种模式的测试,并且支持分布式仿真和异步测试,适用于FPGA和ASIC等多种芯片。
UUT(Under Test Unit)
UUT是英文United Under Test的缩写,即被测试芯片,是指测试员在测试之前,将待测芯片插入测试架上,准备接受测试的基本步骤。
DFX(Design for Xilinx)
DFX是英文Design for Xilinx的缩写,即为Xilinx的FPGA硬件设计提供指导。它提供由Xilinx公司维护的IP核库、工具、验证方法、文档、参考例程,并收集了Xilinx成员、客户的建议,为用户提供更快、更可靠的设计和验证服务。DFX可以快速的帮助用户创建出可靠的、可重复的测试项目、测试方案、测试用例、用例结果数据。DFX还可以协助用户建立测试流程和平台,提高测试效率,保证项目成功完成。
2.3.2 测试方法介绍
芯片测试方法不仅仅局限于静态测试和动态测试,还有不同的分类、类型和流程。常见的测试方法包括手工测试、软件测试、自动测试和网络测试。
手工测试
手工测试是最原始、最传统的测试方式。它是将测试计划的手工编写、依据的测试方法固定下来,然后按照顺序进行测试。这种测试方式耗时长、成本高,但是灵活性强,适用于测试人员能力有限或者大型项目。
软件测试
软件测试又称为自动化测试、脚本化测试、编程测试,它是指测试人员通过编写代码来实现测试方案,让计算机模拟人的行为来识别、分析、处理数据,并验证测试计划中定义的结果。软件测试的优点是可复用性强、可扩展性强,适用于测试方案复杂、测试任务繁重的场景。
自动测试
自动测试又称为机器测试、自动化测试,它是指测试人员只需要输入一些测试用例的参数,就可以运行测试,从而自动生成、运行测试用例。自动测试有多种类型,如功能测试、性能测试、稳定性测试、兼容性测试、安全性测试等。自动测试的优点是不受环境因素影响,可以自动的发现问题,可避免遗漏和减少测试时间,适用于测试环境要求高、测试场景多样化的场景。
网络测试
网络测试又称为远程测试、网络化测试,它是指测试人员通过网络连接远程服务器进行测试,通过远程调试工具进行调试。通过网络测试,测试人员可以随时随地访问、获取实时测试数据,对测试进行实时监控,随时记录测试结果,在一定程度上可以减轻测试人员的负担。网络测试的优点是对测试场景的适应性强、信息共享性高,适用于测试环境和需求较为复杂的场景。
2.4 可靠性分析的基本方法
2.4.1 常见的可靠性分析方法
芯片测试的可靠性分析(Reliability Analysis)是一个复杂的过程,涉及到不同的测试项目、不同阶段、不同测试方法,以及针对不同的业务需求的定量分析。目前,常见的可靠性分析方法有6种:
⑴ 黑盒测试法(Black Box Testing Method):黑盒测试法是指使用已知的测试工具或方法,测试不依赖于芯片的结构、功能、外观、电气特性等信息。这种测试方法能够对软、硬件的性能、可靠性、安全性等方面进行全面可行的测试,但效率较低,测试成本也相对较高。
⑵ 深度测试法(Deep Testing Method):深度测试法是指通过把系统的不同部件、功能组合起来测试,对嵌入式系统的底层功能进行测试。深度测试能够发现系统设计中的硬编码、固件配置错误、接口兼容性问题、操作系统和驱动的缺陷,以及应用软件和操作环境中存在的各种错误。深度测试的研究可从以下三个方面入手:Ⅰ、应用软件的测试;Ⅱ、仿真环境的搭建;Ⅲ、芯片的功能测试和测试设计。
⑶ 模糊测试法(Greybox Testing Method):模糊测试法是指测试工具或过程与芯片内部的结构和行为无关,仅从测试者视角看待芯片,不关注硬件、软件的细节。这种测试方法通过模拟各种攻击、恶意行为、非正常操作等,来考察芯片的鲁棒性、健壮性、可靠性。模糊测试法不依赖于底层结构和功能,能够发现许多隐蔽的缺陷。
⑷ 白盒测试法(White Box Testing Method):白盒测试法是指测试工具或过程能够查看芯片的所有内部结构、特性,包括电气特性、功能结构、逻辑结构等。这种测试方法能够全面了解到电路内部的完整性、功能、可靠性、安全性等信息,但难以模拟复杂的攻击、恶意行为、非正常操作等。
⑸ 功能测试方法(Functional Testing Method):功能测试方法是指将测试对象系统的功能和性能作为测试对象,根据功能需求、性能指标、测试用例等,制作测试计划,并对功能和性能进行测试。功能测试方法主要关注功能逻辑和性能表现,是最常用的测试方法之一。功能测试方法的特点是测试的客观性和真实性高,但是缺乏针对硬件、软件、接口的详细测试。
⑹ 系统测试方法(System Testing Method):系统测试方法是指将测试对象系统作为整体,依据系统需求、功能特性、测试方案、测试用例等,制作测试计划,并对系统的功能、性能、可靠性等进行测试。系统测试方法涵盖了功能测试、性能测试、可靠性测试、兼容性测试、界面测试、安全性测试、可用性测试等方面,能够比较全面地测试系统的各项性能指标。系统测试方法的特点是能够对系统整体性、可靠性、完整性进行测试,但缺乏针对单个部件、功能的功能测试。
2.4.2 可靠性分析的关键指标
芯片测试的可靠性分析过程中,除了分析测试过程中的不确定性,还需要更高的标准来衡量测试的可靠性。常见的可靠性指标有:
⑴ 失败率:指测试过程中发生错误数量占测试总数的百分比。在测试开始时,失败率不能超过设定的标准值,否则不能说测试是有效的。
⑵ 时延:指处理某一事务的时间。时延越小,测试效果越好。时延可以直接从芯片的功能、结构等方面进行测量。
⑶ 稳定性:指系统持续运行一段时间后保持稳定的能力。稳定性取值范围是0~1,值越大,系统的可靠性越好。
⑷ 覆盖率:指测试范围内所有可测试点所覆盖到的点的比例。覆盖率可以表示测试的充分性和严密性。
⑸ 故障注入率:指测试过程中测试人员对产品或系统插入各种故障的频率。如果故障注入率太高,可能会影响测试结果的准确性。
⑹ 用户满意度:指最终用户对产品的满意度,反映用户对产品的认可度和使用感受。用户满意度取值范围是0~1,值越高,用户的满意度越好。
2.4.3 可靠性分析的运筹平衡
由于芯片测试涉及到很多专业知识、技能、技术、经验等方面,运筹平衡是很重要的。比如,要建立可靠的测试方案、测试策略,就必须充分利用测试人员的专业知识、技能,同时也要考虑到测试环境、测试条件等因素,并进行合理分配。另外,要保持和改善测试过程中相关人员的配合、沟通和协调,以提高测试的顺利性和效率。