
汽车SoC的测试、可靠性和功能安全趋势
本文包含了业界专业人士和大学研究人员的三项贡献。这些贡献描述了汽车产品的不同趋势,包括生产测试和运行时的可靠性策略。本次讨论的主题涉及关键因素,从上市前的最终测试优化到使用寿命期间的现场可靠性。
简介
如今,汽车SoC的主要趋势是极端复杂和在安全关键环境中的大规模应用。这种主导因素的结合产生了非常高的质量要求,并触发了了实现超可靠的汽车电子产品的关键目标。
为了确保功能安全,必须减少由于短暂或永久事件造成的潜在有害行为偏差。一个反复出现的情况涉及到神经网络的可靠性以及它们如何自我减轻电路错误行为的影响。第二节研究了深层神经网络对永久性故障的内在稳健性。稳定地达到人造芯片的预期性能,是主要趋势的另一个结果。这并不容易保证,因为纳米技术受到工艺变化的影响。第三节说明了如何使用机器学习应用来预测晶圆与晶圆之间的性能变化。
第四部分总结了本文的主题,探讨了测试设备,可以围绕汽车测试器的情况。一个有前途的解决方案允许将系统级测试和刻录步骤合并为一个单一的步骤,通过使微控制器控制被测设备的可测试性设计功能,而不是建立功能合作。
图像分割神经网络的自我减轻特性
采用基于人工智能(AI)的算法在汽车领域正获得越来越多的关注,特别是在自动驾驶汽车方面。事实上,由于其在图像识别等任务中接近人类的计算能力,深度神经网络(DNNs)被认为是许多应用中具有吸引力的解决方案,在安全关键领域也是如此。然而,为了在人类环境中安全地部署它们,评估和确保它们的功能安全和可靠性是至关重要的,例如符合ISO 26262汽车安全标准。
为了处理复杂的驾驶环境,自动驾驶车辆采用了深度学习算法,这些算法已经学会了如何应对局势,如何根据输入的刺激做出反应,如何识别行人或交通标志。在过去的几十年里,研究界在评估DNN模型和基于DNN的系统的可靠性方面投入了大量的精力。特别是,了解它们随机硬件故障的漏洞已经变得极为重要。然而,最近提出的神经网络具有新的结构细节,如批量规范化或跳过连接,这就需要加深对旧神经网络的可靠性研究。这项工作的主要意图是研究用于图像分割任务的神经网络的可靠性:通过故障注入活动,突出了其漏洞和优势。实验结果表明,整流线性单元(ReLU)激活功能的存在使各层关键故障的比例减半。这意味着这个激活函数不仅对其非线性的计算作用很重要(ReLU支持精确的上下文转换,删除它将大大降低模型的性能),而且对容错角度也很重要。有鉴于此,对用于分类任务的神经网络的进一步可靠性评估研究结果显示,证实了ReLU激活函数的自我减轻特性。最后,对跳过连接的容错性进行了研究:事实上,它们为故障引入了双重路径,这可能关系到神经网络的弹性。
A.用于图像分割的深度神经网络
图像分割神经网络被用来将图像分割成不同的部分(或类别)。它们可以被区分为两大类,这取决于它们被特意训练来分割的片段数量。如果只有两个可能的区段需要分割,指的是语义分割,否则,当必须确定多个区域时,指的是实例分割。用于这项任务的DNN将一幅图像作为输入,并将一个分割掩码作为输出返回,其中输入的每个像素都被分配到一个给定的分段。U-Net是在生物医学图像分割领域开发的一个语义分割DNN。它的特点是编码器-解码器结构,它由四个连续的编码器模块、一个障碍和四个连续的解码器模块组成。编码器,每个都包含两个卷积层和一个最大集合,从输入图像中提取潜在的表征。
这些信息然后被解码器使用,每个解码器由一个转置卷积和两个卷积层组成,作为建立分割掩码的起点。值得注意的是,解码器通过与编码器的直接连接接收输入图像的高级信息,称为跳过连接。
B.实验分析
对DNN的可靠性评估是通过软件故障注入活动进行的。在单一故障假设下,在静态参数中注入永久故障,即权重,并将故障结果与黄金故障结果进行比较。为了衡量注入的卡顿故障的影响,语义图像分割的一个常见评价指标是交叉点均值超过联合(m-IoU)。对于一个单独的类,IoU被定义为该类的地面真实区域和同一类的分割掩码区域之间的交集,超过两者的并集。对于一个分割任务,m-IoU被定义为所有可能类别的平均IoU。将受故障影响的运行的m-IoU与相等的黄金运行的相同指标相比较,我们可以衡量故障的影响。因此,我们可以根据故障与黄金运行之间的m-IoU的变化(以百分比表示)对故障进行分类。一个故障可以是:
•屏蔽:没有观察到故障DNN和黄金DNN之间的区别
•观察:黄金网络和故障DNN的m-IoU是不同的。
如果m-IoU的变化小于5%,观察到的故障可以进一步分类为接受(Accept );如果m-IoU的差异在5%和10%之间,则为警告(Warning);如果变化超过10%,则为严重(Critical)。评估中的分割神经网络是U-Net,一个用于生物医学图像分割的27层卷积神经网络。更详细地说,我们使用了PyTorch免费提供的预训练版本。静态参数在内部表示为32位单精度浮点数字,共占7,757,153个权重。详尽地评估所有可能的卡顿故障将超出时间和计算的可能性。为了处理这种复杂性,通常要进行统计性的故障注入。最初,我们按照文献[3]中提出的方法设定故障注入的数量,误差率为1%,置信度为99.80%:共进行了23,870次故障注入,相当于0.004%的可能卡住的故障。然而,在某些层中注入的故障数量非常少,这是能够得出有意义的结论的一个限制因素。因此,我们进行了进一步的故障注入活动,在每一层注入相同数量的故障(不包括最大集合的故障),总共注入了168,935个卡顿故障。
一个类似的程序被用来对进行图像分类的DNN进行可靠性评估。对三个不同的CNN图像分类进行了分析:LeNet、AlexNet和Darknet19。LeNet模型对来自MNIST数据集的图像进行分类,而AlexNet和Darknet19来自ImageNet数据集。
LeNet、AlexNet和Darknet19分别包括约3M、62M和20M的参数,以32位浮点表示。与U-Net的情况一样,运行详尽的故障模拟是不可行的。因此,通过考虑99%的置信度和1%的误差范围,对每一层进行了统计性故障注入。
C.实验结果
在U-Net上注入永久性故障的结果显示,89.87%的故障被归类为屏蔽,10.13%被归类为观察,其中6.18%被归类为接受,0.05%为警告,3.90%为关键。更详细地说,99.21%的关键故障是由于影响U-Net权重的第30位(即32位浮点数据表示法中指数部分的最重要位)的卡住-1秒。这与文献[4]相吻合。在表一中,我们报告了按层划分的U-Net实验结果(在每个层中注入了相同数量的故障)。上述每个类别都给出了m-IoU的百分比。可以得出的第一个观察结果与每层的不同弹性有关:第一层和最后一层似乎不如中间层坚固。如前所述,U- Net具有编码器-解码器的结构:从0到7的层属于编码器;从8到10层都是DNN的潜在信息;从11到22层构成解码器模块。随着我们对中间层的深入,屏蔽故障的百分比也在增加。
图 1:第一种情况
图 2:第二种情况
图 3:第三种情况
第二个重要的观察是指 "关键故障 "类:在L0、L10、L13、L16和L19层,关键故障的百分比最高。
它们表现出的关键故障平均是其它层的两倍。对这些情况的调查使我们对ReLU激活函数(公式1)的作用有了有趣的考虑,该函数在神经元计算后应用,几乎是在每个卷积层之后。
f (x) = max(0, x)(1)
然而,特别是在现代DNN架构中,有一些特定的层应用反卷积或转置卷积,用于执行上采样。在许多情况下,他们在去卷积化操作之后没有应用ReLU激活函数。它们对于解码储存在障碍部分的潜在信息特别有用;因此是U-Net中解码器部分的一部分。在该U-Net架构中,L10、L13、L16和L19层是上采样层。由于其去卷积操作后缺乏ReLU,不能防止负权重上的卡住故障传播到输出,导致关键故障率增加事实上,负值被从ReLU(公式1)中切走,因此也在负权值上出错,导致神经元的输出端出现负值。图1、图2和图3总结并阐明了观察到的情况。在上述关键故障源的驱动下,图1、图2和图3所示的三张图绘制了最关键的故障的影响:影响权重第30位的卡顿-1秒。
第一种情况包括U-Net上采样层,其中去卷积操作不经过ReLU激活函数,也不经过其他类型。如图1所示,影响第30位负权值或正权值的卡住-1秒作为关键故障传播到输出。在这个图中,说明了上采样层L10的情况。同样的推理也适用于其他的U-Net上采样层。相反,图2显示了ReLU的自我减轻效果。在输出端采用这种激活函数的层中,(重要的是)在使用ReLU的层之前,所有影响第30位负权重的卡住-1秒的情况都被屏蔽了(它们被从计算中切去)。图示的权重分布与L8层有关,但在U-Net中类似特征的层也有同样的趋势。
值得注意的是最后一个场景(图3)。很明显,目标层具有ReLU激活功能。人们可以认为所有负权重的故障都被掩盖了。然而,权重分布显示,负权重上的卡住-1秒也作为关键故障传播到输出(负X轴上的橙色条)。原因很简单:前一层没有ReLU。这意味着目标层也会收到负的输入,这些输入乘以负的权重(在我们的例子中是错误的)就变成了正的(错误的)数值,并被传播到输出。图3中的数值指的是L17层,一般来说,对应于所有U-Net层的上采样层。如表I所示,所有这些层(L11、L14、L17)和L20的临界故障的m-IoU%高于平均水平(但低于上采样层)。这第三种情况也适用于L0,即输入围绕平均值进行标准化,因此既可以是负数也可以是正数。
图4:ReLU激活函数对DNN分类器中关键故障的推进的影响。
对于分类DNNs,我们观察到类似的结果:第30位是最关键的,对Darknet19和AlexNet的精度降低高达70%和25%。值得一提的是,ReLU在这些DNN中的作用也很重要:影响正向权重的故障比影响负向参数的故障产生更多的错误分类结果。这可以用ReLU(公式1)来解释,它阻止了神经元中任何负的操作结果,但允许正值的传播。图4显示了不同神经网络的权重的临界故障产生的错误分类结果的百分比。 显然,包含ReLU激活函数的CNN(图4a,图4b)对影响正权重的故障产生了很高的错误预测率,而对引起大的负参数的故障则有弹性。在这两种情况下,97%以上的不正确分类结果都是由影响正权重的故障产生的。相比之下,Darknet19神经网络补充了一个不同的激活函数,名为Leaky ReLU,其中负参数被衰减而不是被设置为零。结果表明,该激活函数使Darknet19在正负参数值较大时,整个权重值范围内容易出现故障,导致分类结果错误(见图4c)。
图 5:U-Net 跳过连接和故障传播。
为了研究硬件故障如何在具有跳过连接的DNN中传播,进行了进一步的弹性分析。我们生成了四个不同的故障列表,每个跳过连接都有一个。对于每个故障列表,进行了三次不同的FI活动:在相应的编码器中注入(一次一个故障),并通过原始网络传播。然后,我们只通过跳过连接注入相同的故障(水平传播,图5),最后只在网络的深层部分(垂直传播,图5)。在表二中,我们可以观察到,对于较深层的编码器来说,三种情况下关键故障的数量趋于一致。只有在第一个编码器中,我们可以观察到临界断层的边缘变化:原始情景为3.16%,水平情景为2.98%,垂直情景为3.26%。由于没有实质性的差异,以说跳过的连接不会放大临界故障,相反,它们可能会稍微减轻临界故障的影响。
D.结论和未来工作
在这项工作中,报告了对执行分割和分类任务的DNN的可靠性评估的主要结果。在U-Net上的实验结果表明,ReLU激活函数将以为神经网络的关键故障的传播减少了一半。这种自我减轻效果在用于图像分类的CNN中也得到了验证(即LeNet、AlexNet和Darknet19)。最后,对U-Net跳过连接的实验表明,故障的影响不会因为双连接的存在而被放大。
一个机器学习框架来捕捉微控制器性能预测中的晶圆间工艺变化
在安全关键型应用中,如汽车或航空电子设备,微控制器(MCs)必须进行测试,以满足严格的质量限制和最大工作频率(Fmax)方面的性能。文献中的一些工作已经证明,片上环形振荡器(速度监测器或SMON)的测量可以与集成电路的性能相关。SMONs已被用于机器学习(ML)模型中,作为Fmax预测的特征,用于生产过程中的性能筛选和速度分档。然而,由于晶圆之间的变化或工业制造工艺的变化引起的数据分布的转变,经过训练的ML模型会随着时间的推移变得非常不准确。以前的研究已经证明了如何利用回归,从使用角晶圆的SMON数据中预测MC性能。这项工作的目的是展示如何扩展这种方法以应对晶圆间的工艺变化。我们利用了一个新奇的检测程序,该程序只基于SMON对单个骰子的测量所得出的晶圆级信息。测试工程师可以用这种方法来评估新的生产批次,并了解是否要重新训练模型以达到更好的泛化性。
A.集成电路制造中的工艺差异
CMOS的制造过程不断受到工艺变化的影响。一般来说,这种变化可以是局部的(即片内)或全局的(即片间)。局部工艺变化对每个模具内部都有影响。它不是这项工作的重点。全局工艺变化可能发生在芯片与芯片之间、晶圆与晶圆之间以及批次与批次之间[7]。在这项工作中,我们专注于晶圆到晶圆,也被称为晶圆间的工艺变化。设计角分析是一种表示工艺变化的标准方法。角部分析代表了不同工艺、电压和温度(PVT)条件下的设备行为。特别是对于设备的性能,必须考虑最坏情况下的设计角。除了潜在的噪声之外,电压和温度是确定的数值,并将被设定为最关键的数值。然而,工艺变化有更多的参数需要考虑,而这是在角晶圆的帮助下完成的。生产角晶圆是为了观察工艺参数空间的角。这些晶片模拟这些过程的变化,以了解参数的变化及其对性能的影响。角片区分了nMOS和pMOS晶体管的工艺参数转移。nMOS晶体管各自的pMOS晶体管可以设计成快速(F)、典型(T)或缓慢(S)。晶体管设计的每一种排列组合都是在一个批次的角晶圆中应用。有了这些工艺参数的可变性,设备可以被人为地改变,大量的组合可以被用来覆盖尽可能多的工艺转变。
图 6:26 个角段晶圆的 2D PCA 表示。每个彩色斑点都是一个晶圆
整个制造群体的工艺参数通常被建模为正态分布。延迟和性能也被假定为正态分布。观察这种分布的左尾或右尾器件的器件性能是具有挑战性的,因为这些尾部器件很少在生产流程中——特别是当它们偏离平均值的几个sigma时。角晶圆恰恰具有这种理想的特性:它们与典型器件有显著的不同。可以利用制造的角晶圆收集大量的数据,并通过分布的慢尾和快尾来描述其特征。因此,用于性能筛选的初始训练集包含模仿整个制造分布的各种角晶圆。
然而,由于角晶圆是在工程阶段制造的,以了解和改进产品升级的工艺转变,它们的特性可能与生产中的特性有本质的不同,因此对最终模型的准确性是有害的。
在图6中,可以看到来自我们分析所使用的26个角晶圆的器件的二维表示。这是用PCA表示法创建的,能够提取数据集中SMONs的2个主成分。
B.机器学习背景
1)数据集转移:数据集转移是预测性建模中的一个常见问题,当输入和输出的联合分布在训练和测试阶段不同时就会发生。从实验设计中存在偏差的意义上讲,这个问题可能是数据稀疏性或训练和测试集构建方式的结果,这是由于训练时测试条件的不可再现性,或由于随着时间的推移问题的内在性质发生了变化。训练集和测试集之间的i.i.d(独立和相同分布)数据的假设在现实世界的应用中往往不成立,这可能导致机器学习模型对部分数据来说是次优的。数据集转移发生在监督学习范式或半监督学习中,往往涉及我们所面临的任务的标签。数据集转移表现为不同的形式:
•协变量转移
•先验概率转移
•概念转移
内部协变量转移(协变量转移的一个子类型)协变量转移发生在只有训练集和测试集之间的输入分布发生变化时。这通常是由于潜在变量的状态变化,可能是时间上的,也可能是空间上的,面对非平稳环境。命名(x)输入特征的分布,协变量移位式为:
D(x)train ̸= D(x)test(2)
当测试集和训练集之间的因变量分布(即标签或类别分布,D(y))不同时,就会发生先验概率转移:
D(x|y)train = D(x|y)test, D(y)train ̸= D(y)test(3)
一个直观的思考方式可能是考虑一个不平衡的数据集。概念转移是指模型试图预测的目标变量的统计属性以不可预见的方式随时间变化。这就造成了问题,因为随着时间的推移,预测的准确性会越来越低。概念转移被定义为:
D(x)train = D(x)test, D(y|x)train ̸= D(y|x)test(4)
内部协变量转移是与深度神经网络的部署具体相关的问题。这种情况的发生是由于从一个给定的隐藏层的输出的激活分布的变化造成的。由于这被用作后续层的输入,网络层可能会受到协变量转移的影响,这可能会阻碍深度神经网络的训练。造成数据集转移的最常见原因是样本选择的偏差和非平稳环境。在交叉验证分割方案中,样本选择的偏差也可能在不知不觉中发生。
当训练和测试集的环境由于时间或空间的变化而不同时,就会出现非静态环境。在传统的机器学习问题中,我们假设输入数据的分布不随时间变化。但如果在测试/操作阶段,输入数据的分布随着时间的推移而变化,由于非稳态性的存在,就会发生协变量偏移。这就要求开发一种计算效率高的方法,并且必须能够检测到数据流基础分布中的转变点。在线或实时分类可能被视为存在数据集移位的问题,并且存在文献中提出的几种方法来处理这些问题,例如在离线模式下对新接收的数据完全重新训练分类器,或在在线模式下对分类器(逐个样本)进行重新训练。主动学习方法可以帮助解决这些问题,目的是找到一个最佳的训练集,能够在新的未见过的数据上很好地进行概括。此外,还可以应用新颖性检测技术对数据源分布进行建模。
2)新颖性检测:新颖性检测的目的是对训练过程中与已知数据不同的数据进行分类。这可以被看作是 "单类分类 "问题,其目标是建立一个能够描述 "正常 "训练数据的模型,并识别在某些方面不同的数据。
在我们的案例中,"新颖性 "可以被看作是晶圆间的变化:如果没有特别的措施,仅用角晶圆中包含的信息建立的模型不能总是应用于预测生产阶段的器件的最大工作频率,因为由于数据集的转移,它将无法概括。新颖性检测技术使我们能够在模型遇到新数据时立即对其进行监测,估计预测的准确性。
新颖性检测是通过测量晶圆中的局部离群因子(LOF)进行的。LOF算法测量一个给定样本相对于其相邻的密度的局部偏差。它是 "局部的",即异常得分取决于物体相对于周围邻居的隔离程度,表明数据集中每个点的异常程度,而不是依赖二进制分类问题。局部离群因子基于“局部密度”,局部性由点的k近邻给出。通过比较一个样本与其邻近样本的局部密度,可以识别出密度比邻近样本低得多的样本。在我们的案例中,异常得分LOF(wn)被计算为新晶圆wn中所有样本的异常得分LOF(xi wn)的平均值。LOF模型在插入训练集的晶圆上训练,而在来自生产的新晶圆上测试。离群值具有较高的LOF值(大于1),因此具有最高LOF的晶圆被标记为新颖/离群值。LOF模型的特征仅是SMONs值。由于这种方法不需要标签(即Fmax)来标记一个点为离群点,它可以被认定为一种无监督的方法。
图7:提议的性能筛选流程。
C.提议的方法
最初的Fmax预测模型是在工程阶段用角晶圆进行训练。所有角晶圆都进行了特征分析,并最终确定了回归模型。由于制造工艺的变化,在生产增加和大批量生产期间,一些参数会被调整或转移。因此,训练模型的初始数据可能与生产中的数据有相当大的不同,这种新颖性必须被识别出来,并最终被用来给训练过程提供反馈。新颖性检测可用于此目的,以检查新晶圆是否与训练时的晶圆有统计学上的差异。
一旦确定了问题,挑战就是如何在模型中实现高泛化能力。一个机会是重新训练模型,加入新探测到的晶圆,或使用不同的方法。主动学习就是其中之一:它可以用来最小化新晶圆的数量来表征。这一点至关重要,原因有二:新数据的标记过程很耗时,更糟糕的是,停止生产和访问生产性设备的成本很高,只有在严格必要的情况下才应该这样做。因此,在可行的情况下,只能对生产中的少量晶圆进行标记。[6]讨论了主动学习技术的使用,而在本工作中,我们感兴趣的是新奇检测阶段,以识别来自生产线的不可预测晶圆。
除了生产过程中的新颖性检测方面,初始训练集可以得到验证和改进。对于一个新产品,角晶圆被用于初始模型的建立。然后,进行新颖性检测,选择新颖的晶圆。现在,主动学习可以根据晶片添加到模型中的信息量以及它们对回归模型的影响来对晶片进行排序。如果检测到生产中的转变,这个等级可能被用来重新训练模型。图7以图形方式描述了上述流程。
D.实验评估
我们的数据集由大约2400个标记的设备组成,这些设备来自26个角晶圆。每个器件都是一个最先进的汽车微控制器。对于每个晶圆,器件的数量从46到204不等,平均为139个。对于每个设备,收集了27个SMON的测量数据,这些数据被我们的算法作为 "特征 "使用。第二组数据用于新颖性检测,由125个生产晶圆的44476个样品组成。
图8:使用LOF新颖性检测和主动学习对新生产晶圆进行质量评估。
我们在生产晶圆的数据集上测试了新颖性检测机制。我们使用用所有26个角晶圆训练的LOF模型作为基线--然而,同样的实验可以使用主动学习方法的k步骤来重复;我们把这个模型称为T0。
数据集的新颖性可以被计算为由于LOF值高于阈值τ而不能使用模型的设备数量。因此,阈值必须根据所需的准确度来设定,它影响到重新训练的总次数。报告了五个数值,即1.05、1.1、1.25、1.5和1.75。
使用这些阈值的检测趋势如图8所示,从T0开始,从生产中添加新的晶圆。τ = 1.05的数据报告为一个极端情况:我们观察到,即使在用于训练的角晶圆设备中,也有大约3.8%的新颖性。在评估生产设备的LOF时,我们观察到即使在τ=1.50的情况下,也有很高比例的新颖性,而只有8%的设备高于τ=1.75。通过在新颖性检测模型的训练集中增加一个新的晶片,所有的晶片都低于阈值τ=1.75,只有不到4%的晶片保持在1.5以上。随着3个新晶圆的加入,在τ=1.25的情况下,没有新颖的记录;在8个晶圆的情况下,阈值可以降低到τ=1.10;最后,在τ=1.05加入15个新晶圆的极端情况下,仍然可以观察到10%的新颖性。
这样的分析可以在生产过程中进行,以监测工艺变化带来的新颖性检测:测试工程师可以评估新的生产批次,并了解是否为Fmax模型增加泛化功能以应对新的工艺变化;或者,他们可以放宽新颖性检测阈值,在Fmax模型中失去一些准确性,从而调整性能筛选阈值,如[5]中讨论的那样。在用新数据对Fmax模型进行评估后,他们可以用T1(即使用新模型中的晶圆)和新的生产批次重复同样的分析。
E.结论和未来工作
我们提出了一项基于主动学习和新颖性检测的创新工作,用于微控制器性能筛选。我们证明了在生产过程中引入的工艺变化可以用无监督的新颖性检测算法来识别,只需使用速度监测器在晶圆分类期间的读数即可。新颖性检测方法有助于测试工程师在生产过程中发现偏移点,支持对机器学习模型是否进行再训练的决定。
实验表明,LOF模型是一种合适的新颖性检测方法,可以很容易地应用于来自生产线的新晶圆。异常检测可以进一步改进。同时,模型的准确性也可以得到提高,以便在生产过程中实现更好的产量。主动学习技术创建一个优化的训练集在[6]中讨论过,但转移学习技术也可以用来重用在角晶圆训练的模型所获得的知识,并在新晶圆上进行调整。这可能来自一个额外的离群点检测步骤,该步骤考虑到了在Fmax采集阶段可能发生的测量误差。未来的工作可以通过引入新的新颖性检测算法在这个领域进行。
系统级测试和面向老化的测试设备
在过去的几十年里,电子设备的重要性和用途与日俱增。今天,我们几乎在每一个日常设备中都有微控制器,从简单的家用电器到高端的、最新潮流的汽车。这些嵌入式设备的复杂性以前所未有的方式增长,这要归功于那些组件的小型化可能性、微控制器内部更多核心的出现,以及最后但并非最不重要的,一些特殊的设计计划,以在最小的空间中实现最佳性能。
电子设备的大量存在,只有通过大规模生产才能实现,这使我们有必要找到一种新的合适的方式来测试这些设备。测试设备是一个关键的、必不可少的方式,以保证一个产品将按照设想的那样工作,但不仅仅是这样。当一个设备被测试时,它也会降低早期失效。这是通过突出显示出现一些缺陷的设备并摒弃它们来实现的。识别这些有问题的设备,可以减少前面提到的复杂系统的错误、不可操作性或故障的发生。
当一个测试程序生效时,首要的是在正在进行的测试程序的执行中投入的时间。由于现代电子设备越来越复杂,内部元件和外围设备的数量也在增加。因此,推动有效结果所需的时间随着现代设备的复杂性而增加。
为了实现这些目标,测试程序必须以熟练的方式进行,因为识别故障可能非常困难。但是,通过适当的方法、工具和设计,结果将是一个成功的测试设备。
其中最重要和应用最广泛的测试技术之一就是所谓的“老化测试”。要使用老化技术,测试设备的主要要求是设计为可测试性,这意味着设备内部的触发器必须是mux-scan类型。通过这种方式,可以在扫描链(即设备的所有触发器链)中插入一个特定的模式(关于插入和模式的更多细节见下一节)。之后,组成扫描链的所有触发器被强制到一个预定的值。系统状态将演变为下一个状态。这一过程可以在压力条件下进行,如电压高于或低于额定电压,温度高于或低于工作温度等。
之后,触发器内的值被提取出来,并与 "黄金模式 "相匹配,该模式代表了系统进化后的预期状态。
一种创新的测试技术,今天越来越广泛,是 "系统级测试"。这种特殊的技术被用来测试尽可能接近操作条件的设备,验证系统的正确行为,并识别可能的缺陷。这可以通过测试整个设备或部分设备来实现。最常见的程序之一是利用一个操作系统,尽可能地模拟真实的压力条件,如果设备能通过测试阶段,那该工作流程应该进行。
在进行测试时,在不同的生产阶段使用多种测试技术是一个很好的普遍做法。这样做是为了尽快识别有缺陷的部件,避免在昂贵的制造工艺上花费资源。
在这几页中,我们将展示所提出的架构(第IV-A节)、实验结果(第IV-B节),最后(第IV-C节)连同本文的结论将是我们在这个主题上的未来工作。
A.SLT和BI ATE的拟议架构
在这一节中,将了解到用于实现测试器的测试功能的背景知识(这将在第四节B中讨论)。
为了更好地理解测试人员如何工作,有必要从不同类型的测试技术开始。有大量的方法可以用来进行测试。我们的选择又落到了老化上,这种技术,正如之前提到的,与模式和扫描链一起工作。在处理这些争论之前,最好先解释一下什么是“可测试性设计”,老化属于哪一类。可测试性设计是指电路的设计,作为定义,是为了方便测试阶段,并允许在测试阶段更准时地控制系统的组件。为了达到这一结果,一种可能的方法是修改电路的触发器,使其只由标准触发器与mux扫描触发器组成。触发器的所谓扫描链允许人们把顺序电路当作组合电路来处理。通常,当一个设备被设计为可测试性时,它也有一些专用的端口,可以用来保证更容易访问用于测试的引脚。广泛使用的最常见的标准之一是JTAG(联合测试行动小组),它的名字来自于同名联盟。通过使用TAP(测试接入端口)控制器内部实现的FSM(有限状态机)逻辑,可以将被测设备(也称为DUT)设置为测试模式。这些概念现在已经是技术水平,关于这些标准的更多相关信息可以在[12]中找到。
将DUT设置为测试模式的程序被称为 "测试模式进入"。这是一个依赖于设备的机制,必须在DUT内部的特定寄存器中设置特定的值。这样做是为了正确配置DUT。
在 "测试模式进入 "之后,如果一切按计划进行,DUT已经进入了 "测试模式",从这一刻起,可以通过在扫描链内移动一个模式来强制触发器,
图9:真实扫描链上的特写。请注意第二个触发器的 Q 输出上存在的 NOT 端口
以备老化测试,模拟DUT的电路或通过SLT测试程序刺激一个部件。模式可以被描述为系统在某一特定时间的状态。事实上,在移位过程之后,系统将有所有的触发器设置在由模式决定的状态中。
在这一点上,通过应用捕捉节拍,可以使系统像一个个时钟冲程一样演化。该电路将作为一个顺序装置工作。根据要进行的测试和 "黄金模式"(可描述为特定数量的时钟冲程后的期望输出),通过另一个移位程序提取触发器的值。
一个图案在扫描链内的移动方式可以是多种的,是否可以使用GPIO(通用输入/输出)或SPI(串行外设接口)协议。移入(通常称为扫描测试的插入移位部分)是老化测试中最需要时间的部分。因此,为了优化测试过程,一个好的做法是尽可能快地移动数据(上述限制是由于与设备相关的扫描链的最大移动速度引起的)。
必须执行的最后一步是检查从扫描链中提取的输出是否与预期的模式兼容。必须在扫描链内移动的模式和预期的模式通常由设备生产商提供,作为电路模拟的结果,或者在某些情况下作为一些伪随机生成过程的结果。每次产生模式时,最基本的是要考虑到扫描链,与人们想象的不同,它不仅是一串相同的触发器。扫描链可能包含一些输出为Q的触发器,也可能包含其他输出为QN的触发器。此外,扫描链不仅由触发器组成,我们还可以在里面找到一些非逻辑端口。这些逻辑端口存在于每个具有Q输出的触发器的下游,以使每个触发器的输入相一致(图9)。必须根据扫描链的设计,通过修改模式来考虑这些因素。不幸的是,这个过程也与设备有关,可以通过使用一些离线解析工具来完成。它将根据NOT端口在扫描链中的位置要求修改模式。
此外,正确性的验证是整个测试过程中的一个瓶颈。因此,尽快处理它是至关重要的。有几种方法可以加速验证阶段:与其检查一个单一的触发器值和预期的值,不如制作一个签名,用来比较获得的签名和所需的签名,或者使用例如FPGA(现场可编程门阵列)或一些专用硬件来实现比较。
图10:老化测试的流程图
图11:测试器和DUT的拟议结构
如果使用专用硬件是无法实现的,那么一个很好的替代方案应该是使用并行编程,以尽可能地减少执行比较任务所需的时间。
另一个需要记住的突出因素是模式的可用性。通常情况下,嵌入式测试设备没有太多的内存来存储这些模式。这个问题导致执行多种测试程序的可能性很低,注入专门设计的模式,或者,甚至只依靠伪随机模式的生成,这可能会使测试集中在DUT的关键部分。在这个拟议的架构中采用的解决方案,计划使用SD(安全数字)卡来存储这些模式,通过使用这些存储外围设备上的大量内存。这不仅可以存储测试人员独立操作所需的所有模式,而且最终还可以存储错误的日志文件报告,可以通过使用临时工具进行离线分析。 通过这种方式,对设备进行测试,但在检测到缺陷的情况下,发现的错误会被列入更详细的调查。
前面描述的任务,代表了使用所提出的方法的一个常见的老化测试程序,在图10中表示。所建议的测试器结构(如图11所示)是这样处理的:
•PS(处理系统,也称为CPU):实现测试仪的逻辑,FPGA的IP核(半导体知识产权核)接口,存储器接口,处理与SD卡的读写操作。
它的一个主要职责是处理测试模式的进入,使DUT进入测试模式。此外,比较是由这个组件处理的,但在需要加速的情况下可以移到FPGA内部。
•FPGA:实现测试过程中每个功能所需的每个IP核,特别是通过FPGA,测试人员将与DUT发送和接收数据。
•SD卡:外部存储器,用于存储测试阶段的模式和结果。在CPU的辅助下,这些图案从SD卡中读取并暂时储存在RAM中。在这里,每一个老化测试周期(见图10的第二行),都会从SD卡中提取两个不同的图案,并放置在内存中(RAM内红色和蓝色部分,图11)。这些图案代表了每个周期在扫描链内要转移的图案,以及先前插入的图案的预期结果。
B.实验结果
在本节中,通过一些关于测试器的实施的实验数据(表 三),了解到本研究的真正原因。
为了实现基于可编程架构的测试器,即本文的研究案例,使用了Xilinx Zynq UltraScale+
MPSoC ZCU104评估套件,DUT使用了意法半导体公司生产的芯片SPC58x。SPC58x被安装在一个子板内,该子板被放置在主板上方。主板为SPC58x芯片提供电源,而子板则提供JTAG端口,用于将芯片置于 "测试模式",并转换模式以进行扫描测试。工作装置可以在图4中看到,特别是在左边,DUT与SPC58x芯片的LFBGA 292外壳,在右边,Xilinx Zynq UltraScale+ MPSoC ZCU104代表测试器遵照IV-A节中讨论的背景,赛灵思Zynq UltraScale+ MPSoC ZCU104实现了之前描述的大部分功能。它的职责首先是向DUT的测试模式入口发送所需的数据,这是通过使用PL(可编程逻辑,也称为FPGA)中实现的AXI GPIO完成的。进入测试模式的逻辑,因为它与设备有关,所以直接在软件中实现,其方式是遵循TAP控制器的FSM。之后,测试仪提供了一个CLI(命令行界面),通过使用它,测试仪可以使用串行通信与主机进行通信。
图12:操作设置
通过CLI,可以向测试仪发送命令,以配置测试仪固件中的各种命令和烧毁测试方法的执行。当老化测试命令被发送到测试器时,软件开始从板载的SD卡中读取先前由外部程序解析的文件。这些文件包含了必须被送入扫描链的模式和预期的输出。由于扫描链作为一个队列工作,每次插入一个新的值时,都会从扫描链的末端提取一个值。移入和移出使用SPI协议进行,速度约为6.25MHz,这是由于扫描链移位速度的一个上限。为了避免不必要的时间浪费,对于扫描链中的每一个注射,扫描链的当前值被提取出来并与预期值进行比较。此外,该测试器给用户提供了将结果保存到SD卡中的可能性,可以获得反馈,并记录错误,可以通过使用适当的工具进行离线研究。刚才提到的那些工具是必要的,因为要完全利用SD卡的内存,图案是以二进制格式编码的,并保存在二进制文件中。这些工具将对测试人员使用的模式进行编码,或对测试人员收到的模式进行解码,向用户提供可读的文件。
C.结论和未来工作
本文介绍了一种使用用户定义的硬件设计、FPGA和软件固件共同实现测试程序的方法,以加快所谓的测试阶段。特别是通过使用FPGA,该设计具有很强的可扩展性,并可根据需要轻松定制,同时保持最佳性能。
我们未来的目标是扩展先前描述的测试仪的测试能力。这一扩展预计将增加老化延迟测试,这将使测试仪能够检测到越来越多的缺陷器件。此外,我们打算开始在一个改进的压力条件下测试SPC58x芯片,通过使用一个有电压调节器的控制板来调节电源张力。
文章转载自公众号:智能汽车开发者平台
