硅后验证Post-SiliconValidation的机遇,挑战,及最新进展1. 机遇
⾃数字系统设计诞⽣以来,在设计复杂性不断提⾼的情况下,确保正确的操作⼀直是研究和开发的重点。⼏⼗年来,这些努⼒在数字系统的设计验证和制造测试的理论和实践⽅⾯取得了显著进展。未来极其复杂系统的硅验证是⼀个新兴的研究领域,具有重⼤创新的激动⼈⼼的机会。
硅后验证 包括在实际应⽤环境中操作⼀个或多个制造的芯⽚,以验证在指定的操作条件下的正确⾏为。⽬标是确保没有bug逃到现场。 根据⼏份⾏业报告,硅后验证变得⾮常困难,⽽且⾮常昂贵,因为现有的技术⽆法应对未来系统的绝对复杂性。硅后验证包括四个主要步骤:
1. 通过运⾏从随机指令序列到终端⽤户应⽤程序(如操作系统、游戏和科学应⽤程序)的测试程序来检测问题 ,直到系统发⽣故障(如系统
崩溃、分段故障或异常)。
2. 将问题定位 到系统故障的⼀个⼩区域。例如,⼀个复杂的微处理器上的程序崩溃可能本地化为某个应⽤程序⼯作负载下的指令调度程
序产⽣的错误。暴露bug的刺激因素(例如,来⾃某个应⽤程序的特定10⾏代码)也很重要。
3. 确定问题的根本原因 。例如,⼀个bug可能是由于电源噪声减慢了某些电路路径,导致某些设计块的输出错误,只针对特定的输⼊序
列。
4. 修复或绕过这个问题 ,通过修补,电路编辑,或作为最后的⼿段,使⽤新的蒙版重新旋转。
硅后验证与硅前设计验证和⽣产(或⽣产)测试有显著重叠。传统上,⼤多数硬件设计错误都是在之前的硅验证期间检测出来的,制造缺陷是通过制造测试来定位的。虽然⽣产测试和之前的硅验证仍然是必不可少的,但硅后验证正变得⾮常重要,因为有⼏个独特的⽅⾯(表1):
1. 我们不能仅仅依靠硅之前的设计验证来检测所有的设计缺陷。模拟⽐实际硅慢⼏个数量级。形式验证在某些情况下是⾮常有⽤的,如
单个算术单元或协议的验证,它⾯临着全芯⽚级验证的可伸缩性挑战。因此,硅前设计验证中逃避的缺陷经常在硅后验证中被检测到。
2. 在先进技术中,设计和系统电⽓状态之间的⼏个相互作⽤变得越来越重要,例如信号完整性(串扰和电源噪声)、热效应和⼯艺变化。这
种交互可能导致错误的⾏为,通常被称为电⽓错误。在硅前设计验证过程中,对所有这些物理效应的精确建模通常是⾮常困难的。
3. 与制造缺陷不同,硅后缺陷可能是由设计和物理效果之间微妙的相互作⽤(所谓的电⽓缺陷)或设计错误(所谓的逻辑缺陷)引起的。为这
些错误创建准确⽽有效的错误模型可能是⾮常困难的。
4. 当今制造测试技术成功的⼀个主要原因是测试指标的存在,如单⼀卡点覆盖率、过渡故障覆盖率和 N-检测覆盖率,以及使⽤实际芯⽚
的这些指标有效性的实验演⽰。这样的度量使⾃动测试模式⽣成和故障模拟成为可能。对于硅前设计验证,这些指标远没有标准化。
语法度量(例如,代码覆盖率),和语义度量(例如,覆盖断⾔⽬标),构成了验证签名过程的⼀个组成部分。为建⽴硅后验证的覆盖率度量提供了新的机会。
5. 与⽣产测试不同,⽣产测试的主要⽬标是检测缺陷,硅后验证涉及到定位、根源引起并修复缺陷。Bug定位通常是硅后验证⼯作和成
本的主要因素。虽然缺陷诊断技术可能在⼀定程度上适⽤于缺陷定位,但⼤多数缺陷诊断技术依赖于可测试性扫描设计(DFT),它使顺序电路在测试模式下被视为组合电路。这样的机会可能在硅验证后的bug定位中不可⽤。 此外,不像针对⽣产良率改进的缺陷诊断,⼀个或多个缺陷的存在可能会阻⽌对由其他缺陷引起的错误的检测。这种错误也被称为阻塞错误,因为它们可能会减慢设计/验证周期。
表1 硅前验证、⽣产测试和硅后验证的定性⽐较
硅前验证⽣产测试硅后验证
优异的可控性和可观察性,因为任何信号都可以被访问  能控性和可观性主要通过扫描DFT实现
内部信号访问受限,可控性和可观察性不
⾜。当由错误引起的失败是可重复的时候,
扫描DFT在某些情况下是有⽤的。
复杂的物理效应难以建模存在⼏种缺陷模型说明信号完整性,过程变化,⾮决定论
复杂的物理效应难以建模存在⼏种缺陷模型说明信号完整性,过程变化,⾮决定论
全芯⽚设计仿真很慢,形式验证只能选择性
地适⽤validation框架
通常⾮常快(每个芯⽚⼏秒到⼏分钟)  硅的速度⽐模拟快⼏个数量级
存在⼀些度量标准(例如,代码覆盖率、断⾔覆盖率、突变覆盖率)  ⼴泛使⽤的测试度量(例如,逻辑,过
渡,N-检测覆盖率)
后硅验证的覆盖率度量:开放的研究问题
修复Bug便宜修复Bug不是主要⽬标修复Bug可能昂贵
尽管其独特的挑战,硅后验证研究可以从制造测试和设计验证的成功中得到启发,如下所述。
⽣产与测试
⽣产测试的主要成功例⼦包括:
1. 结构测试的概念和扫描设计的可测试性在今天⼏乎所有集成电路中使⽤。
2. 快速采⽤测试压缩技术,例如Illinois scan、重播种技术和X-Compact ,指出了系统和结构化⽅法在克服复杂系统制造测试挑战⽅⾯
的成功。
3. 各种类型的⾃我测试技术,包括针对微处理器的通⽤设计 (和其他⼏个) 的内置⾃测试(BIST) (伪随机和⼏个增强),以及基于本地模式
测试软件的⾃我测试。
4. ⽀持⾃动测试模式⽣成(ATPG)、故障模拟和覆盖率估计(如前⾯所讨论的)的各种各样的测试度量(和证明它们有效性的测试实验)。
设计验证
20世纪70年代以来,正式验证和半正式验证的⼏个基本思想已经从理论概念发展到⼯业实践。 在本⽂的上下⽂中,可以说最重要的思想是形式规范——断⾔。时间逻辑和类似的基于⾃动化的规范语⾔已经进⼊了标准化的⼯业应⽤。断⾔是硅后验证的核⼼,因为它们提供了⼀种精确的⽅法来指定可能受到硅后错误不利影响的应⽤程序需求和系统功能。
基于布尔推理的算法验证技术,如布尔满⾜性(SAT)和⼆元决策图(BDDs) ,也是后硅验证的核⼼。也许正式硬件验证的最⼤⼯业成功之⼀是组合等价检查。此外,基于SAT的算法和电路简化的最新进展极⼤地扩⼤了顺序等价检查,ABC系统就证明了这⼀点。除了等价检查之外,模型检查,即决定⼀个系统是否满⾜通常在时间逻辑中指定的属性,现在是所有⼯业形式验证⼯具的关键组成部分。形式技术常常与传统的随机模拟⽅法相结合。最后,定理证明⽅法在今天也是标准的⼯业实践,特别是在微处理器的设计和验证。⽆论是使⽤定理证明还是模型检验,形式验证向前发展的主要驱动⼒之⼀将是可满⾜模理论(SMT)求解器。
从上⾯的讨论中可以清楚地看到,基础研究在采⽤结构化⽅法进⾏制造测试和设计验证⽅⾯取得了重⼤进展。随着硅后验证的复杂性不断增加,我们希望新的想法出现,将硅后验证从⼏个有经验的⼯程师实践的技术艺术,转变为⼀个由结构化⽅法和设计⾃动化实现的具有坚实基础的学科。这些新技术将对与硅后验证相关的其他领域产⽣深远的影响。例如包括可靠的系统设计,嵌⼊式系统,软件测试和验证。
2. 挑战
硅后验证有许多挑战。我们在这⾥不打算做⼀个全⾯的解释,只强调⼀些重要的。
1. 故障再现 :这⼀步涉及将硬件返回到⽆错误状态,并重新执⾏导致故障的刺激(包括指令序列、中
断和操作条件)来再现相同的故障。
不幸的是,许多Bug很难重现。异步I/O流和多个时钟域的存在加剧了bug复制的难度。使失败重现的技术通常会⼲扰系统操作,并且很可能不会将bug暴露出来。
2. 系统级仿真 :为了获得“黄⾦响应”,即整个系统(如处理器和主板上的所有外围设备)的每个时钟周期的正确信号值,必须运⾏昂贵
的系统级仿真。运⾏系统级模拟可能⽐实际硅慢7-8个数量级。此外,需要昂贵的外部逻辑分析仪来记录所有通过外部引脚进⼊和退出系统的信号值。由于上述因素,⼀个功能性错误通常需要数⼩时到数天的定位,⽽电⽓错误则需要数天到数周的本地化和更昂贵的设备。
3. 覆盖率度量 :正如前⾯提到的,虽然覆盖率度量在⽣产测试中已经确⽴,但是在硅前设计验证中,它们是不那么标准的。有⼏种⽅法
可以⽤于测量之前的硅验证覆盖率,包括代码覆盖率(例如,RTL描述中的语句、分⽀、路径覆盖率)、FSM覆盖率(例如,转换或状态覆盖率)、断⾔覆盖率和基于突变的覆盖率(例如,检查在验证期间是否捕获了注⼊的bug)。由于可控性和可观察性有限,量化硅后验证测试的覆盖率⾮常具有挑战性(因此,更改设计或监控断⾔失败更加困难)。
4. 硅后验证的测试模式 :在硅后验证期间改进实时可观察性的⼏种最新技术,例如,使⽤断⾔检查器和优化的嵌⼊式逻辑分析仪,使硅
前验证测试台上的监视器可以在硅后验证期间重⽤。在晶⽚上⽣成后的晶⽚验证测试可以潜在地重⽤⽤于晶⽚前验证(结构化和可扩展的,但很慢)的测试台的可控性,在晶⽚后验证(快速的,但特别的,劳动强度)期间。请注意,这种⽚上⽣成的硅后验证测试与⽤于制造测试的逻辑BIST之间有关键的区别。这是因为⼤多数逻辑BIST技术依赖于扫描DFT和⽬标制造测试指标。
3. 研究进展
在本节中,我们简要概述了硅后验证领域的最新成果。这项调查绝⾮详尽⽆遗。我们的⽬标只是突出⼀些结果,可能为这⼀领域的进⼀步⼯作提供基础。我们从与错误本地化相关的挑战开始,因为这通常是硅后验证中最昂贵的步骤。
处理器核⼼的硅后bug定位
⼀种名为IFRA(指令⾜迹记录和分析)的新技术,已经被证明在克服与处理器的硅后验证过程中⼀个⾮常昂贵的步骤相关的主要挑战⽅⾯是⾮常有效的,这个步骤是确定⼀个错误的位置和指令序列,该序列暴露了系统故障(如崩溃)中的错误。
图1展⽰了IFRA的概述。 特殊的⽚上记录器,在设计过程中插⼊处理器,收集指令⾜迹——关于指令流的特殊信息,以及当指令通过处理器的各种微架构块时指令做了什么。 在硅后系统验证设置中,记录是在处理器的正常操作期间并发进⾏的。 ⼀旦检测到系统故障,记录的信息将被扫描出来并离线分析,以便进⾏错误定位。 特殊的基于⾃⼀致性的程序分析技术,以及在硅后验证期间执⾏的应⽤程序的测试程序⼆进制,⽤于此⽬的。
与传统技术相⽐,使⽤IFRA进⾏硅后缺陷定位的主要好处是:1. 它不需要完整的系统级别的错误复制,并且,2. 它不需要完整的系统级模拟。 因此,它可以克服限制传统硅后验证⽅法可伸缩性的主要障碍。 在⼀个复杂的Alpha 21264-like超标量处理器上的仿真结果表明,IFRA在定位电⼦bug⽅⾯是有效的,在1%的芯⽚级区域影响下准确率为96%。
图1 使⽤IFRA的后硅缺陷定位流程
图2 从对英特尔Nehalem微架构建模的⼯业模拟器获得的BLoG辅助IFRA结果
⼀个新的Bug定位图BLoG框架使得IFRA能够在减少⼯程时间和较少专家知识的情况下系统地应⽤到新的处理器微架构中。 从⼀个⼯业微架构模拟器建模的最先进的复杂商业微架构(英特尔Nehalem, 英特尔Core™i7和Core™i5处理器家族的基础)证明了IFRA在复杂微架构中定位电⽓bug的有效性,准确率达90%。
提⾼硅后验证的可观察性
前⾯讨论的IFRA⽅法利⽤处理器的结构化架构来执⾏错误定位,⽽不需要系统级模拟或故障再现。 为了在⼀般设计中发布硅缺陷定位,调试基础设施必须以有效的⽅式收集实时响应数据,以有效地再现
故障和分析根本原因。在⼀次硅后验证运⾏期间可以收集的数据量最终受到⽚上跟踪缓冲区的容量的限制。 数据压缩技术可以增加20-30%的数据量,可能收集在⼀个单⼀的硅后验证运⾏。此外,特殊的状态恢复(或数据扩展或可见性增强)技术可以进⼀步提⾼硅后验证⼯程师可获得的信息量。
这些技术⽬前适⽤于逻辑错误,理解如何扩展这些⽅法来处理电⼦错误是⼀个关键的开放挑战。 另⼀种增强可观察性的技术是使⽤具有可编程优先级的多个跟踪缓冲区。提供了⼀个视频解码器的案例研究,演⽰了与静态跟踪缓冲区分配相⽐,动态共享(即在硅后验证期间)跟踪缓冲区如何能使获取的数据量增加⼀倍。
错误定位的形式化⽅法
断⾔可以在本地化硅后缺陷中发挥重要作⽤,特别是当我们从处理器核⼼转向通⽤设计时。⼀种明显的⽅法是在模块接⼝上编写断⾔,然后合成⽚上监视器来检查这些断⾔是否被满⾜或违反。在发⽣故障时,可以使⽤此输出。然后,失败断⾔可以帮助将失败本地化到模块边界。不过,这种⽅法的挑战在于⾸先获取相关的断⾔。最近的⼯作展⽰了如何以可扩展的⽅式⾃动挖掘形式化断⾔的模拟跟踪,并可以有效地将错误(由bug引起的)定位到模块边界。如图3所⽰,总体思想是到由正确的系统跟踪(例如,记录的前硅)⽽不是错误跟踪所满⾜的断⾔。然后,这些区分性的断⾔会根据⼀些指标进⾏排名,⽐如⾸次失败的时间。 然后假设错误的位置是具有最⾼级别区分断⾔的模块。
图3 ⽤于故障诊断的断⾔挖掘
以下来⾃的代表性结果显⽰了这种基于断⾔的错误定位⽅法的前景。对于具有超过20,000个信号的实验MIPS核⼼,该⽅法正确地将逻辑中的单位和多位翻转定位到278个模块中的单个故障模块。虽然这项⼯作只是第⼀步,但它可以⾮常有效,特别是当与可重构的⽚上基础设施相结合时,例如,⽤于特定于应⽤程序的错误监视器(可能是软件控制的)。
形式化⽅法对于系统重放也很有⽤。 具体来说,为模型检查开发的算法在根源步骤中也很有⽤。例如,在根源步骤期间的⼀个挑战是从失败状态反向重建错误跟踪。这个问题类似于在模型检查中执⾏向后可达性分析的问题,在这个问题中,我们从⼀个错误状态开始,寻从某个有效初始状态开始并以该错误状态结束的跟踪。最近在退格技术中探索了这种类⽐。本质上,Backspace⽅法包括记录崩
溃状态,计算其预期的前⾝状态(基于RTL),将该状态设置为断点,然后重复此过程,以便向后重建错误跟踪。这种⽅法已经显⽰出了前景,可以为两个开源处理器核⼼⽣成诊断跟踪:Motorola 68HC05和Intel 8051。在这两种情况下,Backspace系统可以从崩溃状态反向重建数百个周期的错误跟踪。
检测问题
对于错误检测,必须回答以下两个问题:
(i)应该给电路施加什么样的输⼊刺激?
(ii)如何检测是否发⽣了故障?
虽然第⼀个问题在很⼤程度上仍然是开放的,但在线硬件断⾔检查在回答第⼆个问题⽅⾯显⽰出了希望。近年来,有⼈提出了对系统内硬件验证和调试的断⾔。其基本思想是重⽤在前硅阶段在软件环境中编写的断⾔,将它们映射到硬件上,并让它们在后台运⾏,以在运⾏时检测错误。然⽽,出现了两个挑战。第⼀个与信号局部性有关。前硅断⾔可以引⽤实际硅中不在空间附近的信号。因此,如果必须使⽤预硅断⾔进⾏监视,则必须将断⾔适当地分解为局部断⾔。第⼆个挑战是尽量减少区域投资。要放置在硬件中的断⾔的数量,以及为了在不同的硬件块之间进⾏有效共享⽽可能放置的位置,都是有待解决的问题。⼀个同样重要的问题是确定紧凑的输⼊序列,这可以改进使⽤硬件断⾔检查器的错误检测和覆盖率。
根源识别
⼀旦⼀个bug从系统故障本地化到⼀个设计块,就会⼴泛地使⽤扫描链来寻根本原因。系统状态在预先编程的时钟周期被扫描出来,并与连续时钟周期的黄⾦签名进⾏⽐较,以识别故障触发器和故障周期。随后,利⽤逻辑锥分析对错误信号进⾏识别。虽然这种⽅法可以从现有的故障诊断技术中获益,但问题的连续性(与基于扫描的制造测试不同)造成了⼀些复杂性。⼀个关键的挑战是,系统状态不⼀定是确定的,也就是说,可能不可能通过模拟来确定所有状态位的期望逻辑值。这是由于存在多个未知逻辑值(X)的来源。例⼦包括多个时钟域,未初始化的嵌⼊式内存块或混合信号块。X也被认为使制造测试复杂化。 ⼀种被称为锁存发散分析的技术可以⽤来“过滤”硅后验证期间的状态偏差。从这些“过滤”状态获得的信息可以随后使⽤逻辑锥分析的改进的回溯程序进⾏处理。
在调试速度路径时,通常会收集多个时钟频率下的响应,其中时钟信号只对某些逻辑锥或选定路径有选择地拉伸/收缩。这可以通过在设计中插⼊特殊的时钟调谐元素来实现。在这种情况下,通过⾃动插⼊和配置时钟调优元素来加速speedpath调试,以及分析故障跟踪是⼀个挑战。
错误修正
在bug被本地化、分析和根源之后,可以尝试在设计本⾝修补这个问题⽽不需要重新调整。对于微处理器来说,实现这⼀⽬标的⼀种⽅法是通过微码补丁或特殊设计技术,如现场可修复控制逻辑(FRCL)⽅
法。触发错误的状态序列在检测和定位阶段被记录,随后⽤于现场补丁。状态匹配电路被⽤来监控触发bug的已知状态。当匹配器报告匹配时,处理器管道被刷新,指令以低性能的串⾏模式(即,⼀次只有⼀条指令在管道中)继续执⾏。绕过bug后,微处理器恢复正常的⾼性能模式执⾏(即在流⽔线中同时执⾏多条指令)。假设⼤多数错误是由指令之间复杂的交互引起的,⽽串⾏低性能的串⾏执⾏模式通常是没有错误的。
另⼀种⽅法称为 FogClear,可通过⼯程变更指令(ECO)路由和备⽤电池插⼊实现硅后⾦属修复。显⽰,通过在布局中70%的未使⽤区域预先放置备⽤细胞,FogClear可以修复70%的注⼊功能错误。
Error-Resilient系统设计
主流的硅后验证活动专注于在产品交付之前检测、本地化和修复硅后缺陷,最终⽬标可能是设计出对设计错误具有弹性的健壮系统。在此背景下,存在⼤量关于健壮系统设计和容错计算技术的⽂献。为了使这种弹性技术具有成本效益,必须进⾏预硅分析,以识别系统中最脆弱的组件。出于两个原因,形式化⽅法为实现这⼀⽬的提供了⼀种很有前途的⽅法。⾸先,正式的断⾔可以精确地捕获设计中始终必须保持的“关键”应⽤程序级需求。其次,形式化验证技术可以在错误⾏为空间和输⼊空间上执⾏穷尽性搜索。在这种情况下,验证引导的误差恢复(VGER)⽅法演⽰了如何使⽤正式规范和模型检查来对瞬态误差进⾏此类分析。VGER可以精确地指出那些最容易受到软错误影响的组件(如闩锁或门),因为
这些组件中的软错误将导致系统/应⽤程序级需求严重失败。这样的分析对诊断很有⽤——可以精确地指出最有可能发⽣硅后错误的区域。 它对于合成低功耗的鲁棒设计也⾮常有⽤:在SpaceWire协议的实现实验中,VGER⽅法显⽰出如何以传统容错技术五分之⼀的功耗合成鲁棒设计。
4. 总结

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。