硅后验证Post-Silicon Validation的机遇,挑战,及最新进展

1. 机遇

 

       自数字系统设计诞生以来,在设计复杂性不断提高的情况下,确保正确的操作一直是研究和开发的重点。几十年来,这些努力在数字系统的设计验证和制造测试的理论和实践方面取得了显著进展。未来极其复杂系统的硅验证是一个新兴的研究领域,具有重大创新的激动人心的机会。

       硅后验证 包括在实际应用环境中操作一个或多个制造的芯片,以验证在指定的操作条件下的正确行为。目标是确保没有bug逃到现场。 根据几份行业报告,硅后验证变得非常困难,而且非常昂贵,因为现有的技术无法应对未来系统的绝对复杂性。硅后验证包括四个主要步骤:

  1. 通过运行从随机指令序列到终端用户应用程序(如操作系统、游戏和科学应用程序)的测试程序来检测问题 ,直到系统发生故障(如系统崩溃、分段故障或异常)。

  2. 问题定位 到系统故障的一个小区域。例如,一个复杂的微处理器上的程序崩溃可能本地化为某个应用程序工作负载下的指令调度程序产生的错误。暴露bug的刺激因素(例如,来自某个应用程序的特定10行代码)也很重要。

  3. 确定问题的根本原因 。例如,一个bug可能是由于电源噪声减慢了某些电路路径,导致某些设计块的输出错误,只针对特定的输入序列。

  4. 修复或绕过这个问题 ,通过修补,电路编辑,或作为最后的手段,使用新的蒙版重新旋转。

       硅后验证与硅前设计验证和生产(或生产)测试有显著重叠。传统上,大多数硬件设计错误都是在之前的硅验证期间检测出来的,制造缺陷是通过制造测试来定位的。虽然生产测试和之前的硅验证仍然是必不可少的,但硅后验证正变得非常重要,因为有几个独特的方面(表1):

  1. 我们不能仅仅依靠硅之前的设计验证来检测所有的设计缺陷。模拟比实际硅慢几个数量级。形式验证在某些情况下是非常有用的,如单个算术单元或协议的验证,它面临着全芯片级验证的可伸缩性挑战。因此,硅前设计验证中逃避的缺陷经常在硅后验证中被检测到。

  2. 在先进技术中,设计和系统电气状态之间的几个相互作用变得越来越重要,例如信号完整性(串扰和电源噪声)、热效应和工艺变化。这种交互可能导致错误的行为,通常被称为电气错误。在硅前设计验证过程中,对所有这些物理效应的精确建模通常是非常困难的。

  3. 与制造缺陷不同,硅后缺陷可能是由设计和物理效果之间微妙的相互作用(所谓的电气缺陷)或设计错误(所谓的逻辑缺陷)引起的。为这些错误创建准确而有效的错误模型可能是非常困难的。

  4. 当今制造测试技术成功的一个主要原因是测试指标的存在,如单一卡点覆盖率、过渡故障覆盖率和 N-检测覆盖率,以及使用实际芯片的这些指标有效性的实验演示。这样的度量使自动测试模式生成和故障模拟成为可能。对于硅前设计验证,这些指标远没有标准化。语法度量(例如,代码覆盖率),和语义度量(例如,覆盖断言目标),构成了验证签名过程的一个组成部分。为建立硅后验证的覆盖率度量提供了新的机会。

  5. 与生产测试不同,生产测试的主要目标是检测缺陷,硅后验证涉及到定位、根源引起并修复缺陷。Bug定位通常是硅后验证工作和成本的主要因素。虽然缺陷诊断技术可能在一定程度上适用于缺陷定位,但大多数缺陷诊断技术依赖于可测试性扫描设计(DFT),它使顺序电路在测试模式下被视为组合电路。这样的机会可能在硅验证后的bug定位中不可用。 此外,不像针对生产良率改进的缺陷诊断,一个或多个缺陷的存在可能会阻止对由其他缺陷引起的错误的检测。这种错误也被称为阻塞错误,因为它们可能会减慢设计/验证周期。

表1 硅前验证、生产测试和硅后验证的定性比较

硅前验证

生产测试

硅后验证

优异的可控性和可观察性,因为任何信号都可以被访问  

能控性和可观性主要通过扫描DFT实现  

内部信号访问受限,可控性和可观察性不足。当由错误引起的失败是可重复的时候,扫描DFT在某些情况下是有用的。  

复杂的物理效应难以建模

存在几种缺陷模型

说明信号完整性,过程变化,非决定论  

全芯片设计仿真很慢,形式验证只能选择性地适用  

通常非常快(每个芯片几秒到几分钟)  

硅的速度比模拟快几个数量级  

存在一些度量标准(例如,代码覆盖率、断言覆盖率、突变覆盖率)  

广泛使用的测试度量(例如,逻辑,过渡,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. 总结

       硅后验证是一个新兴的研究课题,具有几个突出的挑战,可以为令人兴奋的研究贡献创造机会。 用于硅后验证的系统技术,以及用于量化各种硅后验证方法的有效性的覆盖指标,可以将这一领域从一门需要相当技能和经验的艺术,转变为一门通过结构化方法和设计自动化实现的具有强大基础的学科。


本文翻译自:https://people.eecs.berkeley.edu/~sseshia/pubdir/postSi-dac10.pdf

免责:由于时间原因,会有一些名词翻译不够准确,请多多谅解,之后会进行改正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值