CN114065677B - 用于集成电路硬件设计的故障注入测试的方法和系统 - Google Patents

用于集成电路硬件设计的故障注入测试的方法和系统 Download PDF

Info

Publication number
CN114065677B
CN114065677B CN202110869888.2A CN202110869888A CN114065677B CN 114065677 B CN114065677 B CN 114065677B CN 202110869888 A CN202110869888 A CN 202110869888A CN 114065677 B CN114065677 B CN 114065677B
Authority
CN
China
Prior art keywords
fault
failed
nodes
node
fault injection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110869888.2A
Other languages
English (en)
Other versions
CN114065677A (zh
Inventor
R·克鲁兹
H·夸兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN114065677A publication Critical patent/CN114065677A/zh
Application granted granted Critical
Publication of CN114065677B publication Critical patent/CN114065677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31704Design for test; Design verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31707Test strategies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/02Reliability analysis or reliability optimisation; Failure analysis, e.g. worst case scenario performance, failure mode and effects analysis [FMEA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

本发明涉及用于集成电路硬件设计的故障注入测试的方法和系统。该方法包括:(a)接收识别所述硬件设计的一个或多个故障节点的原始故障节点列表;(b)接收指示所述原始故障节点列表中的故障节点分组成多个故障节点组的信息,每个故障节点组包括对所述硬件设计的失效模式具有相同影响的故障节点;(c)基于所述故障节点组生成最终故障节点列表;(d)从所述最终故障节点列表选择一组故障注入参数,所述一组故障注入参数识别所述最终故障节点列表中要发生故障的至少一个故障节点;(e)基于所选择的一组故障注入参数,通过使故障注入到所述硬件设计的仿真中,对所述硬件设计执行故障注入测试;(f)确定所述故障注入测试的结果。

Description

用于集成电路硬件设计的故障注入测试的方法和系统
技术领域
本申请涉及用于执行集成电路硬件设计的故障注入测试的方法和系统。
背景技术
生成集成电路(IC)通常包括开发描述集成电路的结构和/或功能的集成电路硬件设计;迭代地测试硬件设计的实例化并基于测试修改设计;以及基于硬件设计来制造集成电路。
通常,硬件设计的实例化中的失效可能由系统故障或随机故障引起。系统故障是以决定性方式发生的故障。这些故障通常由硬件设计本身或硬件制造中的错误引起。通常使用设计成根据设计的规范测试硬件设计的功能的技术来识别系统故障,例如基于仿真的验证和正式特性验证。相比之下,随机故障是在硬件设计的实例化操作期间发生的不可预测故障。随机故障被分类为永久性故障(例如,一旦出现,就不会消失的故障),这也可以被称为硬错误;和瞬态故障(例如,存在短时间的故障),这也可以被称为软错误。硬件设计可以实施一个或多个安全机制,该一个或多个安全机制被配置成检测此类故障,并且如果检测到,将硬件设计的实例化置于安全状态和/或通知实例化过程已发生故障。硬件设计如何处理随机故障通常通过故障注入测试来进行测试。故障注入测试是一种测试技术,其中故障被有意引入被测系统或装置中,以确定系统或装置如何响应此类故障。故障注入测试可用于评估硬件设计对随机故障的稳健性,并且验证安全机制(以及实现那些机制的安全逻辑)是否如预期的工作。
当进行故障注入测试时,期望尽可能接近现实世界的硅来仿真故障发生。然而,在硅或在现场可编程门阵列(FPGA)中进行故障注入测试不仅耗时且昂贵,而且调试和再现也极其困难。因此,故障注入测试通常通过将错误注入到合成的网表中而在门级(例如,经由门级仿真(GLS))执行。
下面描述的实施例仅以举例的方式提供,并且不限制解决集成电路硬件设计的故障注入测试的已知方法和系统的任何或所有缺点的实现方式。
发明内容
提供本发明内容是为了介绍在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文中描述了用于对集成电路硬件设计执行故障注入测试的方法和系统。所述方法包括:(a)接收识别用于所述硬件设计的一个或多个故障节点的原始故障节点列表;(b)接收指示所述原始故障节点列表中的一个或多个故障节点分组成多个故障节点组的信息,每个故障节点组包括对所述硬件设计的失效模式具有相同影响的故障节点;(c)基于所述故障节点组生成最终故障节点列表;(d)基于所述最终故障节点列表选择一组故障注入参数,所述一组故障注入参数识别所述最终故障节点列表中要发生故障的至少一个故障节点;(e)根据所选的一组故障注入参数,通过使故障注入到所述硬件设计的仿真中,对所述硬件设计执行故障注入测试;(f)确定所述故障注入测试的结果;(g)存储所述故障注入测试的结果;以及重复(d)到(g)至少一次。
第一方面提供一种对集成电路硬件设计执行故障注入测试的计算机实施的方法,所述方法包括:(a)接收识别所述硬件设计的一个或多个故障节点的原始故障节点列表;(b)接收指示所述原始故障节点列表中的一个或多个故障节点分组成多个故障节点组的信息,每个故障节点组包括对所述硬件设计的失效模式具有相同影响的故障节点;(c)基于所述故障节点组生成最终故障节点列表;(d)基于所述最终故障节点列表选择一组故障注入参数,所述一组故障注入参数识别所述最终故障节点列表中要发生故障的至少一个故障节点;(e)根据所选的一组故障注入参数,通过使故障注入到所述硬件设计的仿真中,对所述硬件设计执行故障注入测试;(f)确定所述故障注入测试的结果;(g)存储所述故障注入测试的结果;以及重复(d)到(g)至少一次。
选择一组故障注入参数可包括选择所述多个故障节点组中的故障节点组,以及从所选择的故障节点组中选择一个或多个故障节点。
可以选择所选择的故障节点组中的一个或多个故障节点,使得未选择用于故障注入测试的所选择的故障节点组的故障节点比已经选择用于故障注入测试的所选择的故障节点组的故障节点更有可能被选择。
选择一组故障注入参数还可包括从所述故障注入测试的结果确定所选择的故障节点组的哪些故障节点尚未被选择用于故障注入测试,并且随机选择尚未被选择用于故障注入测试的所选择的故障节点组的故障节点中的一个。
可以选择所述多个故障节点组中的故障节点组,使得已选择用于故障注入测试的故障节点组的次数越少,所述故障节点组被选择的可能性越大。
选择一组故障注入参数还可包括从所述故障注入测试的结果确定已经被选择用于故障注入测试最少次数的所述多个故障节点组中的哪些故障节点组,并且随机选择已经被选择用于故障注入测试最少次数的所述故障节点组中的一个。
当所述故障注入测试是单点故障测试时,从所选择的故障节点组选择一个或多个故障节点可包括从所选择的故障节点组选择单个故障节点。
每个故障节点组可以与失效模式相关联。每个失效模式可以与在所述硬件设计中实施的安全机制相关联。当所述故障注入测试是双点故障测试时,选择所选择的故障节点组的一个或多个故障节点可包括:选择所选择的故障节点组中的第一故障节点,所述第一故障节点形成实施用于相关联失效模式的安全机制的安全逻辑的一部分;以及第二故障节点,所述第二故障节点不形成实施用于相关联失效模式的安全机制的安全逻辑的一部分。
选择一组故障注入参数还可包括选择以下中的一者或多者:待注入故障的时间、故障的持续时间以及故障是0还是1。
所述方法还可包括从用于仿真所述硬件设计的切换覆盖率信息生成所述原始故障节点列表。
所述切换覆盖率信息可以识别一个或多个切换元件并且从所述切换覆盖率信息生成所述原始故障节点列表可包括将所述切换覆盖率信息中识别的每个切换元件作为故障节点添加到所述原始故障节点列表。
所述方法还可包括从所述硬件设计的仿真生成所述切换覆盖率信息。
所述原始故障节点列表中的每个故障节点可形成无故障节点组、一个或多于个一故障节点组的一部分,并且从所述故障节点组生成所述最终故障节点列表可包括将形成至少一个故障节点组的一部分的每个故障节点添加到所述最终故障节点列表。
所述最终故障节点列表可包括用于所述最终故障节点列表中的每个故障节点的条目,所述最终故障节点列表中的每个条目可包括识别故障节点的信息和识别所述故障节点形成其一部分的一个或多个故障节点组的信息。
每个失效模式可以与在所述硬件设计中实施的安全机制相关联,并且所述最终故障节点列表中的每个条目还可包括识别与所述故障节点形成其一部分的所述一个或多个故障节点组相关联的失效模式的信息和/或对于所述故障节点形成其一部分的每个故障节点组指示所述故障节点是否形成实施用于与该故障节点组相关联的失效模式的安全机制的安全逻辑的一部分的信息。
所述方法还可包括当多个仿真停止条件中的一个在所述仿真期间发生时使所述仿真停止。
所述多个仿真停止条件可包括以下中的一者或多者:在所述故障被注入之后在所述仿真中发生错误;由所述硬件设计实施的安全机制检测到故障;以及自故障被注入到仿真中以来预定数目的周期过去。
确定故障注入测试的结果可包括分析在所述仿真期间生成的故障注入测试日志。
每个故障注入测试可以与失效模式相关联。每个失效模式可以与在所述硬件设计中实施的安全机制相关联。确定故障注入测试的结果可包括:确定在所述故障被注入到所述仿真中之后,与所述故障注入测试相关联的所述安全机制是否检测到所述故障;以及确定在所述故障被注入到所述仿真中之后,所述仿真中是否出现错误。
所述方法还可包括从所述故障注入测试的结果生成一个或多个安全度量。
集成电路硬件设计可以是寄存器传输级硬件设计。
在集成电路制造系统处处理集成电路硬件设计可以使集成电路制造系统生成集成电路。
第二方面提供一种对集成电路硬件设计执行故障注入测试的系统,所述系统包括:故障节点分组模块,所述故障节点分组模块被配置成:接收识别所述硬件设计的一个或多个故障节点的原始故障节点列表;接收指示所述原始故障节点列表中的故障节点分组成多个故障节点组的信息,每个故障节点组包括对所述硬件设计的失效模式具有相同影响的故障节点;以及基于所述故障节点组生成最终故障节点列表;故障选择器,所述故障选择器被配置成针对多个故障注入测试中的每一个基于所述最终故障节点列表选择一组故障注入参数,所述一组故障注入参数识别所述最终故障节点列表中要发生故障的至少一个故障节点;故障注入器,所述故障注入器被配置成针对所述多个故障注入测试中的每一个根据所选择的一组故障注入参数,通过使故障注入到所述硬件设计的仿真中,对所述硬件设计执行故障注入测试;以及日志解析器,所述日志解析器被配置成针对所述多个故障注入测试中的每一个确定所述故障注入测试的结果并存储所述故障注入测试的结果。
可以提供一种在集成电路制造系统处从根据本文中描述的方法和/或系统测试的集成电路硬件设计制造集成电路的方法。可以提供已经根据本文中描述的方法和/或系统测试的集成电路硬件设计,所述集成电路硬件设计在集成电路制造系统中被处理时将系统配置成制造集成电路。可以提供非暂时性计算机可读存储介质,该计算机可读存储介质上存储已根据本文中描述的方法和/或系统测试的集成电路硬件设计,所述集成电路硬件设计在集成电路制造系统中被处理时使集成电路制造系统制造集成电路。
可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有已经根据本文中描述的方法和/或系统测试的集成电路硬件设计;布局处理系统,该布局处理系统被配置成处理集成电路硬件设计,以便生成集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置成根据电路布局描述来制造集成电路。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的方法。
如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是对集成电路硬件设计执行故障注入测试的示例方法的流程图;
图2是示出故障节点分组的实例的示意图;
图3是示出示例故障注入测试记录的一部分的示意图;
图4是示出可以从故障注入测试记录生成的示例度量的示意图;
图5是示出示例切换覆盖率报告的一部分的示意图;
图6是用于实施图1的方法的示例系统的框图;
图7是可用于实施本文描述的方法和系统的示例性基于计算的装置的框图;以及
图8是用于从集成电路硬件设计生成集成电路的示例集成电路制造系统的框图。
附图示出各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于本领域的技术人员而言将是显而易见的。仅通过举例的方式描述实施方案。
用于对集成电路硬件设计执行故障注入测试的现有工具和方法具有许多缺点,例如但不限于缺乏定制以及对寄存器传输级(例如VHDL)等级测试的有限支持。此外,对于诸如但不限于图形处理单元(GPU)的复杂硬件设计,测试所有可能的故障节点(即硬件设计的元件,例如但不限于可能在其仿真期间发生故障的信号和端口)通常是不现实和不切实际的。这不仅是因为此类硬件设计中的故障节点数量众多,以及与之相关的仿真时间,而且因为验证工程师通常也有数量有限的资源可供其处置。因此,通常随机选择故障节点来执行复杂硬件设计的故障注入测试。因此,为了有效地执行故障注入测试,期望以最小化实现故障注入测试目标所需的测试数目的方式选择故障注入测试中发生故障的故障节点。
因此,本文描述了用于故障节点被分组成故障节点组的集成电路硬件设计的基于仿真的故障注入测试的方法和系统,并且基于故障节点的分组来选择故障活动的每个故障注入测试中发生故障的故障节点。如下文更详细地描述,故障节点组是对待测试的失效模式具有相同效应的一组故障节点。如本领域技术人员所知,失效模式是失效发生的方式,或观察到失效的方式。与失效的原因相反,失效模式描述失效的发生方式。硬件设计的失效模式可以通过例如使用失效模式和效应分析(FMEA)技术或程序来识别,并且可以基于安全目标选择待测试的失效模式。
将故障节点分类到故障节点组,以及基于故障节点组选择要在任何故障注入测试中发生故障的故障节点,可以减少需要执行的故障注入测试的数目,以确保充分测试所有失效模式。所描述的方法和系统的其它益处包括但不限于它们可用于验证寄存器-传输级硬件设计或门级硬件设计(例如,网表);并且它们是可定制的。
现在参考图1,其示出对集成电路硬件设计执行故障注入测试的示例方法100,在集成电路硬件设计中硬件设计的故障节点被分组成故障节点组。方法100的全部或一部分可以由基于计算的装置来实现,诸如下面关于图7描述的基于计算的装置700。例如,可能存在其上存储有计算机可读指令的计算机可读存储介质,计算机可读指令在基于计算的装置处执行时使基于计算的装置执行图1的方法100的全部或一部分。
集成电路硬件设计在本文中可简称为硬件设计,是对集成电路的结构和/或功能的描述,该描述当在集成电路制造系统处处理时,使集成电路制造系统生成由硬件设计描述的集成电路。例如,如下面参考图8更详细地描述的那样,当在集成电路制造系统处处理集成电路硬件设计时,集成电路制造系统可以通过将硬件设计合成到硅中或者通过将配置数据加载到现场可编程门阵列(FPGA)中来生成集成电路。
可以以高级硬件描述语言(HDL),例如但不限于寄存器传输级(RTL)语言,来实现硬件设计。寄存器传输级语言的示例包括但不限于VHDL(VHSIC硬件描述语言)和对于本领域技术人员显而易见的是,可以使用其他高级硬件描述语言,诸如专有高级硬件描述语言。
硬件设计的实例化是由硬件设计定义的硬件和/或硬件功能的表示。硬件设计的实例化包括但不限于:硬件设计的仿真模型,其仿真由硬件设计定义的硬件的行为;硬件设计的合成版本(例如网表);硬件设计的硬件实现(例如集成电路或现场可编程门阵列(FPGA));以及由形式验证工具生成的硬件设计的数学模型。硬件设计的实例化以可以被测试以验证硬件设计的形式来体现硬件设计。
方法100开始于方框102,其中接收硬件设计中的原始故障节点列表。故障节点是被测硬件设计的元件,例如但不限于可以引入故障的信号或端口。原始故障节点列表可以包括硬件设计中的故障节点的综合列表。用于硬件设计的原始故障节点列表可以任何合适方式生成。例如,如下文更详细地描述,在一些情况下,原始故障节点列表可以从由用于仿真硬件设计的仿真工具生成的切换覆盖率信息生成。一旦已接收到原始故障节点列表,方法100就前进到方框104。
在方框104处,接收识别原始故障节点列表中的故障节点分组成故障节点组的信息。该分组基于待测试的硬件设计的失效模式。如上所述,失败模式是发生故障的方式,或观察到故障的方式。与失效的原因相反,失效模式描述失效的发生方式。示例失效模式是不正确地执行由加法器中的故障引起的加法指令的加法器。用于硬件设计的失效模式可以任何合适方式识别。例如,在一些情况下,硬件设计的失效模式可以通过称为失效模式和效应分析(FMEA)的技术或过程来识别。如所属领域的技术人员所知,FMEA是所执行的用以理解和探索装置或产品可能失效的方式以及在发生失效的情况下相关影响和/或结果的技术或过程。在FMEA过程中执行的步骤可能因产品或装置以及公司的质量流程而异。在执行FMEA之后,应理解产品或装置具有哪些失效模式以及可以添加哪些安全机制来保护其免受每种失效模式及其在系统中的作用的影响。
待测试的一组失效模式可以基于安全目标和安全案例开发。例如,待测试的失效模式可以是将导致违反安全目标的失效模式。安全目标是分配给系统的顶级安全要求,目的是降低一个或多个危险事件的风险。危险事件是可能导致损害和/或一个或多个其它不期望的结果的事件。是什么构成危险事件可以取决于集成电路的用途或使用。例如,被配置成控制机动车辆的方面的集成电路的危险事件可以是如果不及时控制,则可能导致事故的事件。
故障节点组是就失效模式提供相同效果的一个或多个故障节点的集合。例如,假设图2的输出O是观察到失效。在此实例中,部件0到999 2020–202999中每一个的节点N1到N4中的任一个中的故障将对输出O具有相同影响,因此每个部件的节点N1到N4可属于同一故障节点组。在某些情况下,原始故障节点列表中的故障节点可以手动分组成故障节点组。因此,识别原始故障节点列表中的故障节点分组成故障节点组的信息可以由用户(例如,验证工程师)使用例如图形用户界面(GUI)生成和/或输入。
原始故障节点列表中的每个故障节点可属于无故障节点组、一个或多于一个故障节点组。例如,如果原始故障节点列表中的故障节点对要测试的任何失效模式没有影响,那么该故障节点可以不属于任何故障节点组。这意味着原始故障节点列表中的一些故障节点可能不属于任何故障节点组。相比之下,如果原始故障节点列表中的故障节点对多于一个失效模式产生影响或与其相关,则故障节点可属于多个故障节点组。
可以从失效模式和被实施以解决失效模式的安全机制识别对失效模式具有影响的故障节点。例如,如果失效模式是随机存取存储器(RAM)数据损坏,且相关联的安全机制是错误检测和校正(例如ECC),则对应于控制逻辑或控制路径的故障节点可能与失效模式无关,而对应于数据或数据路径的故障节点可能与失效模式有关。类似地,可以从失效模式和安全机制识别对失效模式具有相同影响的故障节点以解决失效模式。例如,如果失效模式的安全机制是对特定管道数据输出的奇偶校验,那么显然,在任何管道阶段的数据损坏将对失效模式产生相同影响。一旦接收到将故障节点分组成故障节点组的信息,方法100就前进到方框106。
在方框106处,从方框102中接收到的原始故障节点列表和方框104中识别的故障节点组生成最终故障节点列表。在某些情况下,最终故障节点列表可包括属于故障节点组之一的所有故障节点(即,影响待测试的失效模式或与其有关的所有故障节点)。由于并非原始故障节点列表中的所有故障节点可能都属于故障节点组,因此最终故障节点列表可包括原始故障节点列表中的故障节点的子集。术语“X的子集”在本文中用于表示小于X的所有元件。因此,原始故障节点列表中的故障节点的子集包括少于原始故障节点列表的故障节点。
最终故障节点列表可包括用于其中的每个故障节点的条目,该条目识别故障节点并识别其所属的故障节点组。表1示出包括五个故障节点的示例最终故障节点列表。在某些情况下,如表1所示,识别故障节点的信息可以包括到硬件设计中的故障节点的完整路径。全路径可包括硬件设计中的故障节点的全分层路径。例如,如果硬件设计的顶层是A,并且具有子模块B,并且在子模块内部存在识别为故障节点的寄存器Z,则硬件设计中的故障节点的完整路径可描述为A.B.Z。然而,本领域的技术人员显然明白,这仅为示例,在硬件设计中故障节点的完整路径的格式可以对不同仿真工具和不同的硬件设计不同。故障节点组可以以任何合适的方式在最终故障节点列表中识别。例如,每个故障节点组可以被分配唯一标识符,例如数字,并且故障节点组可以由该唯一标识符识别。
表1
在某些情况下,最终故障节点列表中的一个或多个故障节点条目还可包括附加信息。例如,如表1中所示,最终故障节点列表中的每个故障节点可以被分配唯一的ID(例如,唯一的数字),并且每个故障节点条目可以包括识别故障节点的唯一ID的信息。在某些情况下,如表1中所示,对于故障节点相关联的每个失效模式,每个故障节点条目可以包括识别故障节点是否构成关于该失效模式的任务或安全逻辑的一部分的信息。任务逻辑被定义为被测硬件设计内有助于其功能操作的任何逻辑。相比之下,安全逻辑是被测硬件设计内的逻辑,其有助于或实施安全机制。
安全机制是由E/E功能或元件或其它技术实施的技术解决方案,以检测故障和/或控制失效以实现或维持安全状态。示例性安全机制包括纠错码(ECC)、循环冗余检查(CRC)、硬件冗余和内置自检(BIST)。安全机制通过安全逻辑来实现。安全逻辑的实例在申请人的英国专利申请号1617530.9中描述。在该实例中,安全逻辑被配置成检测在装置的处理器中何时发生越界存储器访问(out-of-bounds memory access),并且如果检测到越界违反,则将装置转变到安全状态。
在某些情况下,最终故障节点列表可以逗号分隔值(CSV)格式存储,以允许在方法的后续块中容易地解析或分析最终故障节点列表。然而,对于本领域技术人员将显而易见的是,这仅是示例,并且故障节点列表可以采取任何适当形式。在某些情况下,可以发布最终故障节点列表以使其可用于其它部件。
一旦已生成最终故障节点列表,方法100前进到故障注入测试开始的方框108。
在方框108处,基于在方框106处生成的最终故障节点列表来选择用于故障注入测试的参数。选择故障注入测试的参数可包括:(i)随机地或者伪随机地选择故障节点组;(ii)随机地或者伪随机地选择所选择的故障节点组中的一个或多个故障节点;和(iii)随机地或者伪随机地选择一个或多个故障参数,例如,但不限于故障注入的时间,故障注入的长度(例如,按时钟周期),以及使故障节点发生故障是将故障节点设置为“1”还是“0”。在某些情况下,长度为零可以指示无限故障(即,永久性故障)。
选自所选择故障节点组的故障节点的数目可以基于故障测试的类型,例如,测试是单点故障测试还是多点故障测试。如本领域技术人员所知,对于单点故障测试,单个故障节点发生故障,而对于多点故障测试,多个不同的故障节点发生故障。因此,对于单点故障测试,可以选择所选择故障节点组中的一个故障节点。相比之下,对于双点故障测试,选择所选择故障组中的两个故障节点。在某些情况下,对于双点故障测试,可以选择形成任务逻辑的一部分的一个故障节点,并且可以选择形成安全逻辑的一部分的一个故障节点。故障测试的类型可基于许多因素来选择,例如但不限于故障注入活动的意图和/或目标,所述故障注入活动可基于例如FMEA过程、安全计划和/或安全目标。
当最终故障节点列表为CSV或类似格式时,故障节点列表中的故障节点可以容易地基于故障节点组进行排序,其排序方式与能够基于特定列对微软Excel电子表格进行排序的方式相同。
在某些情况下,可以控制(或可以是可控制的)对故障节点组的随机或伪随机选择,以防止反复选择相同的故障节点组,而排除一个或多个其它故障节点组。具体地,在一些情况下,故障节点组选择可以以优先考虑尚未测试的故障节点组的方式执行。例如,如下文更详细地描述,可以维护所执行的故障注入测试的记录,其指示在每个故障注入测试中测试哪个故障节点组。在这些情况下,可以从故障注入测试的记录生成一组候选故障节点组。然后,可以从该组候选故障节点组随机地选择故障节点组。在某些情况下,该组候选故障节点组可以包括根据故障注入测试的记录具有最低故障注入测试数目的故障节点组。在存在至少一个未测试的故障节点组的情况下,该组候选故障节点组可包括所有未测试的故障节点组。
类似地,在一些情况下,可以控制(或能够控制)随机或伪随机地选择所选择故障节点组中的故障节点,以便防止选择相同故障节点多次,排除相同故障节点组中的其它故障节点。具体地,在一些情况下,所选择故障节点组中的故障节点的选择可以以优先考虑所选择故障节点组中的尚未测试的故障节点的方式执行。例如,如下文更详细地描述的,可以维护针对故障活动执行的故障注入测试的记录,该记录指示在每个故障注入测试中测试了哪些故障节点。在这些情况下,可以从故障注入测试的记录生成所选择故障节点组中的一组候选故障节点。然后,可以从该组候选故障节点中随机选择故障节点。在一些情况下,该组候选故障节点可包括根据故障注入测试的记录与最低故障注入测试次数相关联的所选择故障节点组中的故障节点。在所选择故障节点组中存在至少一个尚未测试的故障节点的情况下,该组候选故障节点组可包括所选择故障节点组尚未测试的所有故障节点。
在某些情况下,一旦已选择故障注入测试参数,就可以生成识别故障注入测试的所选择参数的随机故障节点包,或简单地生成故障节点包。故障节点包接着可被传输到测试台,该测试台可基于所识别的参数触发待执行的故障注入测试。一旦已选择故障注入测试的参数,方法100就前进到方框110。
在方框110处,运行硬件设计的仿真,其中根据方框108中选择的参数,将故障注入到仿真中。将故障注入到硬件设计的仿真中的技术被称为基于仿真的故障注入。其中注入了故障的仿真运行在本文中可被称为故障注入仿真。
如本领域技术人员所知,在硬件设计的仿真期间,模仿硬件设计响应于刺激的行为。可以在不同的抽象级下执行仿真,例如在门级(例如,门级仿真(GLS))的寄存器传输级下,或在与逻辑消耗功率的方式有关的一些物理特性被仿真的功率感知的GLS下。如下文关于图6更详细地描述,硬件设计的仿真通常使用仿真工具和测试台来执行。
仿真工具是软件工具,其被配置成响应于刺激而模仿硬件设计的行为。在某些情况下,不同的工具可用于仿真不同抽象级的硬件设计——例如,一些仿真工具可以被配置成执行寄存器传输级仿真,并且其它工具可以被配置成执行门级仿真。RTL仿真如同由硬件设计描述的集成电路在理想世界中那样操作,而不考虑任何物理或电磁特性。换句话说,在RTL仿真中,逻辑根据其操作仿真为触发器。
测试台描述了仿真硬件设计的环境。测试台可以识别:被测硬件设计、被测硬件设计的参考模型(例如,硬件设计的C模型)、要应用于硬件设计和参考模型的刺激,以及在仿真期间要监测(例如,采样)的硬件设计的元件(例如,信号、寄存器等)。测试台可由一组命令或代码实施,所述命令或代码在由仿真工具执行时使仿真工具实例化硬件设计和参考模型,向硬件设计和参考模块提供指定刺激。用于识别或指定刺激的命令随仿真工具而变化。在一些情况下,测试台可包括或限定多个不同的刺激集合,每个刺激集合被称为测试,并且可选择一组刺激或测试以供在仿真期间使用。
在基于仿真的故障注入中,故障被注入到仿真中,以便能够测试硬件设计对故障的响应。有两种类型的基于仿真的故障注入:运行时故障注入和编译时故障注入。在运行时故障注入中,在仿真期间注入故障。在编译时故障注入中,在硬件设计中的编译时间注入故障。在本文中所描述的实例中,故障在运行时间注入。换句话说,在仿真期间,仿真工具调整一个或多个故障节点(例如,将故障节点从“1”改变为“0”或反之亦然)或使一个或多个故障节点发生故障。运行时故障注入的好处之一是,与变化被测硬件设计以在其中注入故障的许多已知的故障注入工具相比,被测硬件设计未被修改。
在本文中所描述的实例中,根据方框108中所选择的故障注入参数将故障注入到仿真中。具体地说,根据所选择的故障参数(例如,在所选择的时间、在所选择的持续时间内,并以所选择的方式)将故障引入所选择的故障节点中。
为了能够将故障注入到仿真中,测试台还可包括故障注入器,该故障注入器被配置成接收识别在方框108中选择的故障注入测试参数(例如,故障包)的信息,并且根据所识别的参数使故障注入到仿真中。故障注入器能够通过生成指令或命令来使故障注入到仿真中,所述指令或命令在由仿真工具执行时使仿真工具将故障注入一个或多个期望的故障节点中。命令可识别要发生故障的节点、节点发生故障的时间、故障的长度以及节点发生故障的方式(例如,设置为‘0’或‘1’)。
例如,当仿真处于寄存器传输级时,故障注入器可以被配置成使用诸如“存入”或“强制”的已知命令,当由RTL仿真工具执行时,所述已知命令使仿真工具将故障注入到仿真中。具体地,强制命令是仿真命令,其在由仿真工具执行时使仿真工具用指定值覆盖指定项目(例如信号),直到执行释放命令为止。执行强制命令类似于黑客用假冒视频流覆盖安全员看到的CCTV录像,直到黑客将其切换回原始源。相比之下,在由仿真工具执行时,存放命令使仿真工具在一个时钟周期中将指定项目(例如信号)替换为指定值,而不会覆盖在后续周期中驱动项目的逻辑。例如,如果计数器初始化为零并且在已知事件上递增。然后,在发生100次已知事件之后,计数器将递增到100。如果在发生任何已知事件之前已存入计数器的值为15,则在发生100个已知事件之后,计数器将递增到115。要发生故障的故障节点可由其位置(例如,全层级路径)在命令中识别。
测试台还可包括命令或代码,该命令或代码在由仿真工具执行时使仿真工具检测在仿真期间发生的错误。测试台的此部分可被称为定义校验器和/或计分板。在某些情况下,可以通过将硬件设计的一个或多个信号、寄存器和/或端口与参考模型的一个或多个特征进行比较来检测错误。例如,在一些情况下,测试台可以使仿真工具响应于刺激而将硬件设计的输出与参考模型的输出进行比较,并且如果输出不匹配则确定存在错误。当故障被注入到硬件设计的仿真中,但未被注入到参考模型中时,如果硬件设计和参考模型产生相同的输出,即使考虑到故障,故障也可被视为安全故障,因为它不影响输出。
如本领域技术人员所知,存在可以检测在仿真期间发生的错误的多种方式。例如,可以经由一个或多个断言来检测在仿真期间发生的错误。如本领域技术人员所知,断言是识别硬件设计必须正确的特性的语句。由断言所识别的特性被称为断言特性。当由仿真工具执行时,断言语句使仿真工具在仿真期间监测所识别的特性以确定特性是否是正确的。如果仿真工具在仿真过程中的任何时候确定属性不是真的,则断言失败。
测试台还可包括命令或代码,该命令或代码指定在将故障注入到仿真中之后何时停止仿真。换句话说,测试台可以指定一个或多个仿真停止条件。仿真停止条件可以包括,在故障已注入到仿真中之后:(i)相关安全机制(即,与正测试的失效模式相关联的安全机制)检测到故障;(ii)在仿真期间发生致命和/或非致命错误;和/或(iii)特定数量的周期(例如,时钟周期)过去。一个或多个停止条件可以取决于方框108中选择的故障注入测试参数。例如,相关安全机制将基于被测试的失效模式。因此,可以响应于接收识别方框108中选择的故障注入测试参数的信息(例如,故障包)而生成一个或多个仿真停止条件。
测试台还可包括命令或代码,该命令或代码在由仿真工具执行时使仿真工具生成故障注入测试日志,该故障注入测试日志包括关于在仿真期间发生的事件等的信息。在某些情况下,测试台可以使仿真工具生成故障注入测试日志,该故障注入测试日志包括识别在仿真期间检测到的错误的信息、识别相关安全机制是否检测到故障的信息、和/或仿真被停止的原因。
一旦故障注入测试结束(即,仿真已停止),方法100前进到方框112。例如,仿真可能已经停止,因为在仿真期间,仿真工具识别了测试台中指定的仿真停止条件;或者仿真工具检测到了错误或造成仿真工具停止仿真的仿真中的另一状况。
在方框112处,确定故障注入测试的结果。在某些情况下,分析故障注入测试日志以确定测试的结果。如上文所描述,故障注入测试日志可包括识别在仿真期间检测到的错误的信息、识别相关安全机制是否检测到故障的信息和/或仿真被停止的原因。故障注入测试的结果可以基于:在仿真期间安全机制/安全逻辑是否检测到故障;是否由于故障而出现错误;和/或是否没有出现错误,并且由于另一原因(例如超时)而停止仿真。
例如,在一些情况下,故障注入测试的结果可以被确定为以下中的一种:检测到故障、安全故障、潜在不安全故障或潜在不安全锁定故障。具体地,故障注入测试的结果可确定为:如果相关安全机制/安全逻辑在仿真期间检测到故障,则为DETECTED FAULT(检测到故障);如果相关安全机制/安全逻辑在仿真期间未检测到故障,但是在仿真期间未发现测试台中列出的任何错误(例如,硬件设计的输出与参考模型的输出匹配),则为SAFE FAULT(安全故障);如果相关安全机制/安全逻辑在仿真期间未检测到故障,但是在仿真期间发现测试台中列出的至少一个错误(例如,硬件设计的输出与参考模型的输出不匹配),则为POTENTIALLY UNSAFE FAULT(可能不安全的故障);如果安全机制/安全逻辑在仿真期间未检测到故障,并且由于例如由仿真工具本身或测试台指定的超时条件正在达到造成仿真未进展到完成,则为POTENTIALLY UNSAFE LOCKUP FAULT(可能不安全的锁定故障)。对于本领域技术人员显而易见的是,这些仅为示例,并且在其它示例中,可能存在更少、更多和/或不同类型的结果。例如,在其它情况下,如果故障被安全机制检测到,则故障注入测试的结果可能仅仅是通过(PASS)或检测到故障(FAULT DETECTED);如果故障未被安全机制检测到,则结果为失败(FAIL)或未检测到故障(FAULT UNDETECTED);如果故障未被注入到仿真中,则结果为故障未被注入(FAULT NOT INJECTED)(例如,因为发生了仿真错误)。
在某些情况下,故障注入测试的结果的确定可以由软件程序、代码或脚本实现,所述软件程序、代码或脚本可以在下文被称为日志解析器,该日志解析器被配置成搜索故障注入日志以查找指示在仿真期间检测到什么错误的信息(例如,签名),以及指示是否由相关安全机制检测到故障的信息。软件程序、代码或脚本接着可被配置成基于所定位的信息确定故障注入测试的结果。一旦确定故障注入测试的结果,方法100前进到方框114。
在方框114处,存储故障注入测试的结果(例如,存储在存储器中)。在某些情况下,故障注入测试的结果可以存储在故障注入测试记录(其也可以被称为故障注入测试的记录)中。在某些情况下,在记录中可能有针对故障活动期间执行的每个故障注入测试的条目。在这些情况下,存储故障注入测试的结果可以包括将指示最近故障注入测试的结果的条目添加到故障注入测试记录。每个条目还可包括描述故障注入测试的其它信息,例如但不限于故障节点曾发生故障、故障节点所属的故障节点组、故障节点组相关的失效模式和/或用于仿真等的刺激(例如测试)集合。
现在参考图3,其示出了示例故障注入测试记录300的摘录。在图3的实例中,故障注入测试记录300的每一行对应于故障注入测试记录的条目,且提供关于特定故障注入测试的信息。可以看到,每个条目包括标识以下各项的信息:故障注入测试的结果;被测试的失效模式;在仿真期间使用的刺激集合(例如测试);被测试的故障节点组,以及发生故障的特定故障节点。对于本领域技术人员将显而易见的是,这仅是示例,并且故障注入测试记录可以采取任何适当形式。还可以看到,每个故障注入测试分配唯一的ID,在该实例中,所述ID反映执行故障注入测试的顺序。
在某些情况下,故障注入测试记录及其条目可以存储在数据库中以允许容易搜索和分析条目。一旦故障注入测试的结果已被保存在存储器中(例如,添加到故障注入测试记录中),方法100就前进到方框116。
在方框116处,基于直到此时执行的故障注入测试,确定是否要执行另一故障注入测试。优选地,尽可能执行多个故障注入测试,以便测试尽可能多的故障节点。然而,如上所述,由于复杂硬件设计中的故障节点数量庞大,测试复杂硬件设计中的所有故障节点通常不可行且/或不切实际。在某些情况下,确定是否要执行另一故障注入测试可基于以下各项中的一者或多者:针对每一故障节点组执行的故障注入测试的数目;自开始故障注入测试或故障注入活动以来经过的时间量;已至少测试一次的最终故障节点列表中的总故障节点的百分比(其可被称为故障节点覆盖率);和/或其它覆盖率度量。例如,可以继续执行故障注入测试,直到已对每个故障节点组执行所需数目的故障注入测试(例如1,000)。
如果确定要执行另一故障注入测试,则方法100返回到方框108,其中确定另一故障注入测试的参数,并且根据所选择的参数,运行其中注入了故障的硬件设计的仿真。然而,如果确定不执行另一故障注入测试,则方法100可以结束或方法100可以进行到方框118。
在方框118处,可以分析故障注入测试的结果(例如,故障注入测试记录)以确定或评估故障注入测试(例如,故障活动)的成功。这可包括从故障注入测试的结果(例如,故障注入测试记录)生成一个或多个度量。如上所述,将故障注入测试结果存储在故障注入测试记录中的益处之一是可以生成适合于不同测试意图和目标的许多不同度量。
例如,如图4中所示,可以生成每个故障节点组度量400。每个故障节点组度量标准可包括但不限于检测到的故障的百分比、安全故障的百分比、潜在不安全故障的百分比和潜在不安全锁定故障的百分比。可以生成的每个故障节点组的其它度量包括但不限于被测试的故障节点组中的故障节点的百分比。在某些情况下,可以通过组合相关故障节点组的度量来生成每个失效模式的度量。例如,可以生成每个失效模式的度量,其为相关故障节点组的对应度量的平均值。例如,可以将与两个故障节点组(FG1和FG2)相关联的图4的第一失效模式(FM1)的检测到的故障的百分比生成为针对FG1检测到的故障的百分比和针对FG2检测到的故障的百分比的平均值。在某些情况下,失效模式度量可以生成为加权平均值。在这些情况下,可将权重分配给与失效模式相关联的每个故障节点组。以类似方式,可以生成每个故障节点度量,并且可以从该故障节点组中的故障节点的故障节点度量生成每个故障节点组度量。故障节点组度量可以以任何合适的方式从故障节点度量生成,例如平均值、加权平均值等。
生成的度量标准可以基于设计目标和故障注入测试的意图。例如,故障注入测试或活动的目的可以是满足国际标准化组织(ISO)26262(“道路车辆–功能安全”)ASIL A/B/C/D。ISO 26262是生产汽车中的电气和/或电子系统的功能安全的国际标准。ISO26262是基于风险的安全标准,其中定性地评估危险操作情况的风险,并且定义安全措施以避免或控制系统性失效,并检测和控制随机硬件失效,或减轻其影响。ISO26262汽车安全完整性等级(ASIL)是由ISO 26262定义的风险分类方案。ASIL基于损害的可能性和可接受性确立安全要求。通过ISO 26262–A,B,C、D标识四种ASIL。ASIL A代表最低危险程度,ASIL D代表最高危险程度。车辆的不同部件需要不同的ASIL水平。通过执行危害分析和风险评估,建立电子部件的ASIL。确定部件是否满足特定ASIL级别需要确定三个度量:失效时间(FiT)、测量SPF覆盖率的单点故障(SPF),以及测量潜在故障覆盖率的潜在故障度量(LFM)。这些度量还可用于测量故障注入测试或故障活动的成功。对于本领域技术人员显而易见的是,这仅仅是示例,并且本文描述的故障注入测试可以出于另一个目的或意图而执行。
在某些情况下,可以在已经执行硬件设计的系统或功能验证之后执行图1的方法100。如上所述,可以通过基于仿真的验证和/或正式特性验证来执行系统或功能验证。在至少部分经由基于仿真的验证执行系统验证时,可以在图1的方法100的方框110中使用基于仿真的验证中使用的相同测试台(即相同的刺激或测试集)和仿真工具。这有助于确保捕获随机故障的质量与测试系统故障的质量一致。
方法100可用于在硬件设计的任何抽象级下执行故障注入测试。例如,方法100可以用于在RTL级或门级下执行故障注入测试。然而,应注意,在门级识别故障节点组可能比在RTL级识别故障节点组更困难。本发明人已确定,一些合成工具(即,可以从RTL代码产生网表的工具)可能并不总是针对相同RTL代码产生相同的网表。换句话说,在同一RTL代码上运行的不同合成可以产生不同的网表。因此,网表可能并不总是完全可重现的。因此,如果故障注入测试在门级下执行,则故障节点识别和故障注入测试优选地应在同一合成运行上执行。在一些情况下,针对例如图形处理单元(GPU)的复杂部件的硬件设计执行故障注入测试可以包括在RTL级下执行故障注入测试的一部分,并且在门级下执行故障注入测试的一部分。例如,一些安全机制,例如但不限于纠错码(ECC),能够在模块级进行测试,从而允许RTL级故障注入测试,而其它安全机制,例如但不限于双锁步处理,可能只能在系统级进行测试,在门级可以更有效地进行测试。
生成原始故障节点列表
当被测硬件设计是高级硬件描述语言,例如RTL语言时,在一些情况下,原始故障节点列表可以从由为硬件设计的仿真生成的切换覆盖率信息生成。切换覆盖率是仿真期间硬件设计的信号和/或端口的位从零切换为一(0->1)和返回(1->0)的个数或百分比的度量。切换覆盖率为100%意味着每个信号和/或端口的每个位已将其值从0更改为1并从1更改为0。切换覆盖率可用于评估仿真的刺激质量。如果信号或其位未从0到1或从1到0切换,则可以认为其未得到充分测试。因此,在一些情况下,切换覆盖率越高,刺激的质量越好。
仿真的切换覆盖率从切换覆盖率信息生成,该切换覆盖率信息描述硬件设计中的每个信号和/或端口的哪些位从零变为一(0->1)且返回(1->0)。切换覆盖率信息通常包括识别硬件设计中的每个信号和/或端口(例如,位置(其层级路径))的信息,以及信号或端口(或信号或端口的每个位)是否在两个方向上切换。切换覆盖率信息还可以包括指示信号或端口被切换次数的信息。
许多仿真工具能够通过在仿真期间监视硬件设计的信号和端口来生成用于硬件设计的仿真的切换覆盖率信息。例如,在某些仿真工具中,切换覆盖率监测是可以为仿真启用或禁用的功能;当启用时,仿真工具在仿真期间针对切换覆盖率监测硬件设计的信号和端口。在某些情况下,由仿真工具生成的切换覆盖率信息可以切换覆盖率报告的形式输出。例如,由仿真工具生成的切换覆盖率信息可以被提供给报告生成器,该报告生成器可以从其生成切换覆盖率报告。报告生成器可以形成仿真工具的一部分,或者可以与仿真工具分开。例如,仿真工具包括可用于生成覆盖率报告(例如切换覆盖率报告)的统一报告生成器(URG)。切换覆盖率报告可以人类可读格式呈现切换覆盖率信息。在某些情况下,切换覆盖率报告可以是文本(txt)文件格式或超文本标记语言(html)文件格式,然而,所属领域的技术人员将显而易见,这些格式仅为示例格式。切换覆盖率信息和/或切换覆盖率报告的结构可在仿真工具之间变化。
现在参考图5,其示出由仿真工具生成的示例切换覆盖率报告500的摘录。本示例摘录显示了名为“PVRLIB.IMG_ROUND_ROBIN_INEX_ARCH1”的模块的切换覆盖率信息。可以看出,摘录将本模块实例的位置或层级路径识别为“rgx_tdm_tb_tip.u_dut.I_RGX_TDM_CONTROL.I_IMG_ROUND_ROBIN_INDEX_ARCH1_MISSION_ENABLED_CLUSTERS”。具体地说,这是在仿真期间此模块的实例的位置,且因此此路径可提供给仿真工具以识别模块。摘录还识别该模块/实例的切换元件(例如,信号、端口、寄存器)。确切地说,在图5的示例摘录中,有七个切换元件-VALIDS,PREVIOUS_INDEX,NEXT_INDEX,FAIL_SIGNAL,ASSERT_INPUTS_OK,ASSERT_INDEX_LESS_THAN_WIDTH和ASSERT_PREV_INDEX_DISABLE”。
由于切换覆盖率信息包括识别硬件设计中的每个信号和/或端口的信息,因此可以从切换覆盖率信息生成硬件设计中的信号和/或端口的完整列表。因此,在一些情况下,原始故障节点列表可以通过解析切换覆盖率信息(例如,切换覆盖率报告)来生成。具体地说,可解析切换覆盖率信息(例如,切换覆盖率报告)以提取在切换覆盖率信息中识别的每个信号和/或端口及其在硬件设计中的位置。然后,可以在原始故障节点列表中针对其中识别的每个信号和/或端口生成故障节点条目,该条目识别信号和/或端口及其在硬件设计中的位置。
例如,对于图5中所示的格式的切换覆盖率报告500,原始故障节点列表可以通过以下操作生成:当遇到文本“ModuleName(模块名称)”时,将与模块名称(即,短语“实例”之后的文本)相关联的位置记录为当前位置或路径;当遇到文本“toggle(切换)”时,用当前位置或路径为由此识别的切换元件创建新故障节点条目。因此,在切换覆盖率报告中识别的最近模块的路径保持当前路径,直到识别到下一模块,此时与下一模块相关联的路径变成当前路径。对于本领域技术人员显而易见的是,这仅仅是一个示例,并且其中对切换覆盖率信息进行解析以识别硬件设计的故障节点的方法将基于切换覆盖率信息(例如,切换覆盖率报告)的格式而变化。
如下文更详细地描述的,可以通过切换覆盖率解析器执行从切换覆盖率信息生成原始故障节点列表。具体地,切换覆盖率解析器是软件部件,其被配置成接收预定格式的切换覆盖率信息;提取在其中识别的切换元件;以及通过将故障节点条目添加到每个所识别切换元件的原始故障节点列表来生成原始故障节点列表。
虽然从如本文所述的切换覆盖率信息生成的原始故障节点列表可用于图1的方法100中,但以这种方式生成的原始故障节点列表也可用于其它故障注入方法中。换句话说,从切换覆盖率信息生成的原始故障节点列表不限于在图1的方法100中使用,其中故障节点被分组成故障节点组。
当原始故障节点列表由从硬件设计的仿真生成的切换覆盖率信息生成时,则优选使用相同的测试台和仿真工具来生成切换覆盖率信息和故障注入测试两者。
系统
现在参考图6,其示出用于根据图1的方法100对集成电路硬件设计执行故障注入测试的示例系统600,其中硬件设计的故障节点被分组成故障节点组。图6的系统600的部件的全部或一部分可以由基于计算的装置来实现,诸如下面关于图7描述的基于计算的装置700。例如,可能存在其上存储有计算机可读指令的计算机可读存储介质,计算机可读指令在基于计算的装置处执行时使基于计算的装置执行图6的系统600的一个或多个部件的功能。
图6的系统600包括故障节点分组模块602、故障选择器604、测试台606、仿真工具608和日志解析器610。
故障节点分组模块602是软件工具,其被配置成接收用于被测硬件设计的原始故障节点列表612和待测试的一组失效模式,并且从中生成最终故障节点列表614。最终故障节点列表包括可能在故障活动期间出现故障的硬件设计的故障节点的列表。如上文所描述,原始故障节点列表612包括被测硬件设计中的故障节点列表。原始故障节点列表612可以任何合适方式生成。例如,如上所述,原始故障节点列表612可以从为仿真被测硬件设计而生成的切换覆盖率信息616来生成。可以任何合适方式生成待测试的硬件设计的失效模式集合。例如,可以根据FMEA技术或过程生成待测试的失效模式。
在本文所述的实例中,通过基于待测试的失效模式将原始故障节点列表612中的故障节点分组成故障节点组,以及基于分组生成最终故障节点列表614,从原始故障节点列表612生成最终故障节点列表614。如上文所描述,故障节点组包括对失效模式具有相同影响的故障节点。在某些情况下,原始故障节点列表中的故障节点分组成故障节点组可以由用户(例如,验证工程师)手动执行。在这些情况下,故障节点分组模块602可以被配置成从用户接收指示原始故障节点列表612中的哪些故障节点形成故障节点组的输入。例如,故障节点分组模块602可以被配置成向用户呈现图形用户界面等,其允许用户查看原始故障节点列表和失效模式中的故障节点,并且通过提供用户输入将故障节点分组成故障节点组。如上文所描述,原始故障节点列表612中的每个故障节点可属于无故障节点组、一个或多于一个故障节点组。在某些情况下,故障节点分组模块602可以被配置成自动地将唯一标识符(例如,数字)分配给由用户识别的每个故障节点组。替代地或另外,故障节点分组模块602可以被配置成允许用户将标识符分配给一个或多个故障节点组。故障节点分组模块602还可以被配置成从用户接收指示每个故障节点组相关联的失效模式的输入。
一旦故障节点分组模块602已接收到识别故障节点组和形成每个组的故障节点的输入,故障节点分组模块602就可以被配置成基于分组来生成最终故障节点列表614。例如,在一些情况下,最终故障节点列表614可包括形成至少一个故障节点组的一部分的原始故障节点列表612中的所有故障节点。在某些情况下,最终故障节点列表614可包括形成最终故障节点列表614的一部分的每个故障节点的条目。如上文所描述,每个条目可识别故障节点和故障节点所属的故障节点组。识别故障节点的信息可以包括硬件设计中故障节点的位置(例如,分层路径)。在某些情况下,每个条目可以包括附加信息。例如,在一些情况下,每个条目还可以包括指示故障节点是任务逻辑还是安全逻辑的信息和/或识别与故障节点相关联的失效模式的信息。
故障选择器604是软件工具,其被配置成基于最终故障节点列表614选择故障注入测试的参数。为故障注入测试选择参数可包括:(i)随机地或伪随机地选择故障节点组;(ii)随机地或伪随机地选择所选择故障节点组中的一个或多个故障节点;以及(iii)随机地或伪随机地选择一个或多个故障参数,例如但不限于,故障注入的时间、故障注入的长度、以及使故障节点发生故障将失效模式设置为“1”还是“0”。
由故障选择器604从所选择故障节点组选择的故障节点的数目可以基于故障测试的类型。例如,对于单点故障测试,可以从所选择故障节点组选择单个故障节点,并且对于双点故障测试,可以从所选择故障节点组选择两个故障节点。在某些情况下,对于双点故障测试,选择与任务逻辑相关联的一个故障节点,并选择与安全逻辑相关联的一个故障节点。在某些情况下,故障选择器604可以被配置成从用户接收指示要执行哪种类型的故障测试的输入(例如,单点故障、双点故障等)。
如上文所描述,在一些情况下,故障选择器604可以被配置成以给予已测试次数最少的故障节点组优先的方式随机地或伪随机地选择故障节点组。在某些情况下,故障选择器604可以被配置成以给予被测试次数最少(或根本没有被测试)的所选择故障节点组中的故障节点优先的方式从所选择故障节点组中随机或伪随机地选择故障节点。如上文所描述,故障选择器604可以被配置成分析故障注入测试记录618以确定已测试最少次数的故障节点组和/或故障节点。故障注入测试记录描述如下。
一旦故障选择器604已经选择用于故障注入测试的参数,故障选择器604就可以被配置成输出识别所选择参数的信息。在某些情况下,故障选择器604可以被配置成输出识别故障包620形式的所选择参数的信息。在某些情况下,识别所选择的故障注入参数(例如,故障包620)的信息可以被提供给测试台606,该测试台根据所选择参数触发待执行的故障注入仿真测试。
在一些情况下,故障选择器604可以被配置成响应于接收要执行故障注入测试的输入而选择一组新的故障注入测试参数。例如,用户可以向故障选择器604提供输入以发起故障活动,该故障活动使故障选择器604选择一组故障注入测试参数。然后,在每次故障注入测试之后,可以(自动地或手动地)就是否要执行另一故障注入测试作出决定。如果要执行另一故障注入测试,则通知故障选择器604,这使故障选择器604选择另一组故障注入测试参数。
测试台606描述了执行硬件设计仿真的环境。测试台606包括被测硬件设计622(或识别被测硬件设计的信息);一个或多个测试624(或识别一个或多个刺激集的信息);以及故障注入器626。硬件设计622可以处于任何合适的抽象级,例如RTL或门级(例如网表)。每个测试624可以由一组命令或脚本识别,所述命令或脚本在由仿真工具608执行时使仿真工具608响应于刺激而模仿硬件设计的行为。在某些情况下,测试台606还可以包括硬件设计(未示出)的参考模型,并且所选择的刺激也可以应用于参考模型。
故障注入器626是软件工具,其被配置成根据所识别的参数接收识别由故障选择器604选择的故障注入测试参数的信息(例如,故障包620),且造成故障被注入到仿真中。故障注入器626能够通过生成指令或命令来使故障注入到仿真中,所述指令或命令在由仿真工具608执行时使仿真工具在运行时将故障注入一个或多个期望的故障节点中。命令可识别要发生故障的故障节点(例如,故障节点的位置或路径)、故障节点发生故障的时间、故障的长度以及故障节点发生故障(例如,设置为‘0’或‘1’)的方式。
故障注入器626还可以被配置成在仿真期间发生一个或多个仿真停止条件时使仿真工具608停止仿真。仿真停止条件可以包括,在故障已注入到仿真中之后:(i)相关安全机制(即,与正测试的失效模式相关联的安全机制)检测到故障;(ii)在仿真期间发生致命和/或非致命错误;和/或(iii)特定数量的周期(例如,时钟周期)过去。
仿真工具608是被配置成仿真硬件设计的软件工具。仿真工具608可以是被配置成在期望级仿真硬件设计的任何已知软件工具。仿真工具608被配置成从测试台606接收信息,所述信息标识:被测硬件设计、待施加到硬件设计的刺激(例如,识别待运行的测试的信息)以及待监测的硬件设计的元件。然后,仿真工具响应于指定的刺激而模仿硬件设计的行为。仿真工具608还被配置成从故障注入器626接收识别要注入到仿真中的故障的信息(例如,故障注入命令),并据此在运行时将故障插入到仿真中;并且接收识别仿真停止条件的信息,并且在仿真期间发生所识别的仿真停止条件之一时停止仿真。一旦已发生停止条件,仿真工具608可输出故障注入测试日志628,该故障注入测试日志提供关于在仿真期间被监测元件的状态和/或其中检测到的错误的信息。故障注入测试日志628可以提供给日志解析器610以供分析。
日志解析器610是软件工具,其被配置成分析故障注入测试日志628以识别故障注入测试的结果并将结果存储在存储器中。故障注入测试的结果可以基于:在仿真期间安全机制/安全逻辑是否检测到故障;是否由于故障而出现错误;和/或是否没有出现错误,并且由于另一原因(例如超时)而停止仿真。例如,如上所述,故障注入测试的结果可以被确定为以下之一:检测到故障、安全故障、潜在不安全故障或潜在不安全锁定故障。在某些情况下,日志解析器610可以被配置成搜索故障注入测试日志628,以查找指示在仿真期间(如果)发生错误的信息(例如,签名),以及指示相关安全机制检测到错误的信息。然后,日志解析器610可以被配置成基于定位的信息来确定故障注入测试的结果。
一旦日志解析器610已经识别出故障注入测试的结果,日志解析器610被配置成将故障注入测试的结果存储在存储器中。在某些情况下,故障注入测试的结果可以存储在故障注入测试记录618中。在某些情况下,故障注入测试记录618中可能存在故障活动期间执行的每个故障注入测试的条目。在这些情况下,存储故障注入测试的结果可以包括将指示其结果的条目添加到故障注入测试记录618。每个条目还可包括描述故障注入测试的其它信息,例如但不限于故障节点曾发生故障、故障节点所属的故障节点组、故障节点组相关的失效模式和/或用于仿真等的刺激(例如测试)集合。参照图3描述示例性故障注入测试记录618。
如上所述,在一些情况下,一旦故障注入测试完成,就可以进一步处理故障注入测试的结果(例如,故障注入测试记录618)以分析故障注入测试的性能。在这些情况下,系统600还可以包括测试后处理模块630,其为被配置成(或可被配置成)分析故障注入测试的结果的软件工具。在一些情况下,测试后处理模块630可以被配置成或可以是可配置的以从故障注入测试结果(例如,故障注入测试记录618)生成一个或多个度量。生成的度量可以基于故障注入测试的意图或目的。上文描述了可从其生成的示例度量。
如上所述,在一些情况下,原始故障节点列表612可以从在仿真被测硬件设计期间生成的切换覆盖率信息616来生成。切换覆盖率信息可能已经由用于故障注入测试的相同测试台606和仿真工具608生成。在这些情况下,系统600还可包括切换覆盖率解析器632,该换覆盖率解析器为软件工具,其被配置成从切换覆盖率信息616识别硬件设计的切换元件且从切换覆盖率信息生成原始故障节点列表。例如,在一些情况下,切换覆盖率解析器632可以被配置成针对在切换覆盖率信息中识别的每个切换元件在原始故障节点列表中创建故障节点条目。
对于本领域技术人员显而易见的是,图6的系统600仅仅是示例,且图1的方法100可以另一种方式实施。
图7示出了示例性通用基于计算的装置700的各种部件,该基于计算的装置可被实现为任何形式的计算和/或电子装置,并且可在其中实现上述图1的方法100或图6的系统600的全部或一部分。
基于计算的装置700包括一个或多个处理器702,该一个或多个处理器可以是微处理器、控制器或任何其他合适类型的处理器,用于处理计算机可执行指令以控制装置的操作,以便评估由硬件设计定义的集成电路在完成任务时的性能。在一些实例中,例如,在使用片上系统架构的情况下,处理器702可以包括一个或多个固定的功能块(也被称为加速器),其实现对集成电路硬件设计执行故障注入测试的方法或系统的一部分。可在基于计算的装置处提供包括操作系统704的平台软件或任何其他合适的平台软件,以使应用程序软件诸如用于实现图1的方法100或图6的系统600的至少一部分的计算机可执行代码705能够在装置上执行。
可以使用可由基于计算的装置700访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可以包括例如计算机存储介质,诸如存储器706和通信介质。计算机存储介质(即,非暂时性机器可读介质)诸如存储器706,包括用于存储信息诸如计算机可读指令、数据结构或程序模块或其他数据的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存存储器或其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光学存储装置、磁带盒、磁带、磁盘存储或其他磁性存储装置,或可用于存储信息以供计算装置访问的任何其他非传输介质。相反,通信介质可以在调制数据信号诸如载波或者其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义,计算机存储介质不包括通信介质。尽管在基于计算的装置700内示出了计算机存储介质(即,非暂时性机器可读介质,例如存储器706),但是应当理解,存储器可以是分布式的或位于远程的,并且可以经由网络或其他通信链路(例如,使用通信接口708)来访问。
基于计算的装置700还包括输入/输出控制器710,该输入/输出控制器被布置为将显示信息输出到显示装置712,该显示装置可以与基于计算的装置700分离或成一体。显示信息可以提供图形用户界面。输入/输出控制器710还被布置为接收和处理来自一个或多个装置(例如,用户输入装置714(例如,鼠标或键盘))的输入。在一个实施方案中,如果显示装置712是触敏显示装置,则其也可以充当用户输入装置714。输入/输出控制器710还可以将数据输出到除显示装置之外的装置,例如本地连接的打印装置(图7中未示出)。
图6的系统600示出为包括数个功能块或单元。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块或单元可以任何合适的方式提供。应理解,在本文中被描述为由块或单元形成的中间值不需要由所述系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由所述系统在其输入和输出之间执行的处理的逻辑值。
本文中描述的系统可以被配置成执行本文中描述的任一种方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
可以提供计算机可读存储介质,该计算机可读存储介质上编码已根据本文所述的方法和/或系统测试的集成电路硬件设计,所述方法和/或系统在集成电路制造系统中被处理(即运行)时将系统配置成制造集成电路。
集成电路硬件设计也可以称为集成电路数据集,可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图8描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置成制造集成电路的示例。
图8示出集成电路(IC)制造系统802的实例,所述集成电路制造系统被配置成从已根据本文中所描述的方法或系统测试的集成电路硬件设计制造集成电路。特别地,IC制造系统802包括布局处理系统804和集成电路生成系统806。IC制造系统802被配置成接收已根据本文中所描述的方法或系统测试的IC定义数据集,处理IC定义数据集,并根据IC定义数据集生成IC。IC定义数据集的处理将IC制造系统802配置成制造集成电路。
布局处理系统804被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统804确定了电路布局时,它可以将电路布局定义输出到IC生成系统806。电路布局定义可以是例如电路布局描述。
IC生成系统806根据如本领域已知的电路布局定义生成IC。例如,IC生成系统806可以实现生成IC的半导体器件制造工艺,其可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代性地,提供至IC生成系统806的电路布局定义可以是计算机可读代码的形式,IC生成系统806可以使用该代码形成用于生成IC的适当掩模。
由IC制造系统802执行的不同处理可以全部在一个位置实现,例如,由一方。替代性地,IC制造系统802可以是分布式系统,使得过程中的一些可以在不同位置执行,且可以由不同各方执行。例如,以下级中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他实例中,通过在集成电路制造系统处对集成电路定义数据集的处理,可将系统配置为制造集成电路,无需对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集,以上面参考图8描述的方式对集成电路制造系统的配置,可以制造出如本文所述的设备。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图8所示的示例中,IC生成系统还可以由集成电路定义数据集进一步配置,以在制造集成电路时,根据在集成电路定义数据集中定义的程序代码,将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包括计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (17)

1.一种对集成电路硬件设计执行故障注入测试的计算机实施的方法(100),所述方法(100)包括:
(a)接收识别所述集成电路硬件设计的一个或多个故障节点的原始故障节点列表;
(b)接收指示所述原始故障节点列表中的一个或多个故障节点分组成多个故障节点组的信息,每个故障节点组包括对所述集成电路硬件设计的失效模式具有相同影响的故障节点;
(c)基于所述多个故障节点组生成最终故障节点列表;
(d)基于所述最终故障节点列表来选择一组故障注入参数,所述一组故障注入参数识别所述最终故障节点列表中要发生故障的至少一个故障节点;
(e)根据所选择的一组故障注入参数,通过使故障注入到所述集成电路硬件设计的仿真中,对所述集成电路硬件设计执行故障注入测试;
(f)确定所述故障注入测试的结果;
(g)存储所述故障注入测试的结果;以及
重复(d)到(g)至少一次;
其中,选择一组故障注入参数包括选择所述多个故障节点组中的故障节点组以及从所选择的故障节点组中选择一个或多个故障节点;
其中,按照使得所选择的故障节点组中的尚未被选择用于故障注入测试的故障节点比所选择的故障节点组中的已被选择用于故障注入测试的故障节点更有可能被选择的方式来选择所选择的故障节点组中的所述一个或多个故障节点;和/或
其中,按照使得一故障节点组已被选择用于故障注入测试的次数越少,该故障节点组就越可能被选择的方式来选择所述多个故障节点组中的所述故障节点组。
2.根据权利要求1所述的方法(100),其中选择一组故障注入参数还包括从所述故障注入测试的结果确定所选择的故障节点组的哪些故障节点尚未被选择用于故障注入测试,并且随机选择所选择的故障节点组的尚未被选择用于故障注入测试的故障节点中的一个。
3.根据权利要求1所述的方法(100),其中当所述故障注入测试是单点故障测试时,从所选择的故障节点组选择一个或多个故障节点包括从所选择的故障节点组选择单个故障节点。
4.根据权利要求1所述的方法(100),其中:
每个故障节点组与失效模式相关联;
每个失效模式与实施于所述集成电路硬件设计中的安全机制相关联;并且
当所述故障注入测试是双点故障测试时,选择所选择的故障节点组的一个或多个故障节点包括:选择所选择的故障节点组中的第一故障节点和第二故障节点,所述第一故障节点形成实施用于相关联失效模式的安全机制的安全逻辑的一部分,并且所述第二故障节点不形成实施用于相关联失效模式的安全机制的安全逻辑的一部分。
5.根据权利要求1所述的方法(100),其中选择一组故障注入参数还包括选择以下中的一者或多者:待注入故障的时间、故障的持续时间以及故障是0还是1。
6.根据权利要求1所述的方法(100),该方法还包括从用于仿真所述集成电路硬件设计的切换覆盖率信息生成所述原始故障节点列表。
7.根据权利要求6所述的方法(100),其中所述切换覆盖率信息识别一个或多个切换元件并且从所述切换覆盖率信息生成所述原始故障节点列表包括将所述切换覆盖率信息中识别的每个切换元件作为故障节点添加到所述原始故障节点列表。
8.根据权利要求6所述的方法(100),该方法还包括从所述集成电路硬件设计的仿真生成所述切换覆盖率信息。
9.根据权利要求1至8中任一项所述的方法(100),其中所述原始故障节点列表中的每个故障节点形成无故障节点组、一个或多于一个故障节点组的一部分,并且从所述多个故障节点组生成所述最终故障节点列表包括将形成至少一个故障节点组的一部分的每个故障节点添加到所述最终故障节点列表。
10.根据权利要求1至8中任一项所述的方法(100),其中所述最终故障节点列表包括用于所述最终故障节点列表中的每个故障节点的条目,所述最终故障节点列表中的每个条目包括识别故障节点的信息和识别所述故障节点形成其一部分的一个或多个故障节点组的信息。
11.根据权利要求10所述的方法(100),其中每个失效模式与在所述集成电路硬件设计中实施的安全机制相关联,并且所述最终故障节点列表中的每个条目还包括识别与所述故障节点形成其一部分的所述一个或多个故障节点组相关联的失效模式的信息和/或对于所述故障节点形成其一部分的每个故障节点组指示所述故障节点是否形成实施用于与该故障节点组相关联的失效模式的安全机制的安全逻辑的一部分的信息。
12.根据权利要求1至8中任一项所述的方法(100),该方法还包括当多个仿真停止条件中的一个在所述仿真期间发生时使所述仿真停止,所述多个仿真停止条件包括以下中的一者或多者:在所述故障被注入之后在所述仿真中发生错误;由所述集成电路硬件设计实施的安全机制检测到故障;以及自故障被注入到仿真中以来预定数目的周期过去。
13.根据权利要求1至8中任一项所述的方法(100),其中确定故障注入测试的结果包括分析在所述仿真期间生成的故障注入测试日志。
14.根据权利要求1至8中任一项所述的方法(100),其中:
每个故障注入测试与失效模式相关联;
每个失效模式与实施于所述集成电路硬件设计中的安全机制相关联;并且
确定故障注入测试的结果包括:确定在所述故障被注入到所述仿真中之后,与所述故障注入测试相关联的所述安全机制是否检测到所述故障;以及确定在所述故障被注入到所述仿真中之后,所述仿真中是否出现错误。
15.根据权利要求1至8中任一项所述的方法(100),其中所述集成电路硬件设计是寄存器传输级硬件设计。
16.一种对集成电路硬件设计执行故障注入测试的系统(600),所述系统(600)包括:
故障节点分组模块(602),所述故障节点分组模块被配置成:
接收识别所述集成电路硬件设计的一个或多个故障节点的原始故障节点列表(612);
接收指示所述原始故障节点列表中的故障节点分组成多个故障节点组的信息,每个故障节点组包括对所述集成电路硬件设计的失效模式具有相同影响的故障节点;以及
基于所述故障节点组生成最终故障节点列表(614);
故障选择器(604),所述故障选择器被配置成针对多个故障注入测试中的每一个基于所述最终故障节点列表来选择一组故障注入参数,所述一组故障注入参数识别所述最终故障节点列表中要发生故障的至少一个故障节点;
故障注入器(626),所述故障注入器被配置成针对所述多个故障注入测试中的每一个根据所选择的一组故障注入参数,通过使故障注入到所述集成电路硬件设计的仿真中,对所述集成电路硬件设计执行故障注入测试;以及
日志解析器(610),所述日志解析器被配置成针对所述多个故障注入测试中的每一个确定所述故障注入测试的结果并且存储所述故障注入测试的结果,
其中,选择一组故障注入参数包括选择所述多个故障节点组中的故障节点组以及从所选择的故障节点组中选择一个或多个故障节点;
其中,按照使得所选择的故障节点组中的尚未被选择用于故障注入测试的故障节点比所选择的故障节点组中的已被选择用于故障注入测试的故障节点更有可能被选择的方式来选择所选择的故障节点组中的所述一个或多个故障节点;和/或
其中,按照使得一故障节点组已被选择用于故障注入测试的次数越少,该故障节点组就越可能被选择的方式来选择所述多个故障节点组中的所述故障节点组。
17.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令在计算机系统处被执行时使所述计算机系统执行根据权利要求1至8中任一项所述的方法(100)。
CN202110869888.2A 2020-07-30 2021-07-30 用于集成电路硬件设计的故障注入测试的方法和系统 Active CN114065677B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2011901.2A GB2591532B (en) 2020-07-30 2020-07-30 Methods and systems for fault injection testing of an integrated circuit hardware design
GB2011901.2 2020-07-30

Publications (2)

Publication Number Publication Date
CN114065677A CN114065677A (zh) 2022-02-18
CN114065677B true CN114065677B (zh) 2023-12-19

Family

ID=72425338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110869888.2A Active CN114065677B (zh) 2020-07-30 2021-07-30 用于集成电路硬件设计的故障注入测试的方法和系统

Country Status (4)

Country Link
US (2) US11567126B2 (zh)
EP (1) EP3945448A1 (zh)
CN (1) CN114065677B (zh)
GB (1) GB2591532B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416360B2 (en) * 2019-10-09 2022-08-16 Fujifilm Medical Systems U.S.A., Inc. Systems and methods for detecting errors in artificial intelligence engines
US11983100B2 (en) * 2020-09-29 2024-05-14 Amazon Technologies, Inc. Automated testing of systems and applications
CN112596506A (zh) * 2020-12-30 2021-04-02 中国科学院空天信息创新研究院 故障注入方法、故障注入器、存储介质及故障注入系统
US11847392B1 (en) * 2021-11-30 2023-12-19 Cadence Design Systems, Inc. Method, product, and system for dynamic design switching for high performance mixed signal simulation
CN114355791B (zh) * 2021-12-24 2023-06-02 重庆长安汽车股份有限公司 用于智能驾驶冗余功能的仿真测试方法、系统及存储介质
DE102022121670A1 (de) 2022-08-26 2024-02-29 Connaught Electronics Ltd. Fahrspurerkennung und Führen eines Fahrzeugs

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106771962A (zh) * 2016-11-29 2017-05-31 天津大学 一种基于部分扫描的集成电路故障注入攻击模拟方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8122423B2 (en) * 2007-04-12 2012-02-21 Nxp B.V. Analog circuit testing and test pattern generation
US9372946B2 (en) * 2012-08-22 2016-06-21 Mentor Graphics Corporation Defect injection for transistor-level fault simulation
KR102251991B1 (ko) * 2015-05-14 2021-05-17 한국전자통신연구원 결함 주입 및 결함 감내 분석을 위한 방법 및 장치
US10365327B2 (en) * 2017-10-18 2019-07-30 International Business Machines Corporation Determination and correction of physical circuit event related errors of a hardware design
US10747633B2 (en) * 2018-09-24 2020-08-18 Intel Corporation Multilevel fault simulations for integrated circuits (IC)
GB2583333B (en) * 2019-04-15 2022-03-16 Imagination Tech Ltd Verification of hardware design for an integrated circuit that implements a function that is polynomial in one or more input variables

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106771962A (zh) * 2016-11-29 2017-05-31 天津大学 一种基于部分扫描的集成电路故障注入攻击模拟方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Automated integration of fault injection into the ASIC design flow;Aleksandar Simevski 等;《2013 IEEE International Symposium on Defect and Fault Tolerance in VLSI and Nanotechnology Systems (DFTS)》;20131231;第255-260页 *
Automated integration of fault injection into the ASIC design flow;Aleksandar Simevski 等;2013 IEEE International Symposium on Defect and Fault Tolerance in VLSI and Nanotechnology Systems (DFTS);第255-260页 *
Fault Grouping for Fault Injection Based Simulation of AMS Circuits in the Context of Functional Safety;Oezlem Karaca 等;《2016 13th International Conference on Synthesis, Modeling, Analysis and Simulation Methods and Applications to Circuit Design (SMACD)》;20160728;第1-4页 *
Fault Grouping for Fault Injection Based Simulation of AMS Circuits in the Context of Functional Safety;Oezlem Karaca 等;2016 13th International Conference on Synthesis, Modeling, Analysis and Simulation Methods and Applications to Circuit Design (SMACD);第1-4页 *

Also Published As

Publication number Publication date
EP3945448A1 (en) 2022-02-02
GB2591532B (en) 2022-03-02
US20220043059A1 (en) 2022-02-10
GB202011901D0 (en) 2020-09-16
US20230160957A1 (en) 2023-05-25
GB2591532A (en) 2021-08-04
CN114065677A (zh) 2022-02-18
US11567126B2 (en) 2023-01-31

Similar Documents

Publication Publication Date Title
CN114065677B (zh) 用于集成电路硬件设计的故障注入测试的方法和系统
US7661050B2 (en) Method and system for formal verification of partial good self test fencing structures
US10083262B2 (en) Deadlock detection in hardware design using assertion based verification
US7434184B2 (en) Method for detecting flaws in a functional verification plan
US11416662B1 (en) Estimating diagnostic coverage in IC design based on static COI analysis of gate-level netlist and RTL fault simulation
US11520963B2 (en) System and method for formal fault propagation analysis
Fey et al. A basis for formal robustness checking
Hunger et al. ATPG-Based grading of strong fault-secureness
US20220269846A1 (en) Structural analysis for determining fault types in safety related logic
Marchese et al. Formal fault propagation analysis that scales to modern automotive SoCs
Kumar et al. A semi-formal verification methodology for efficient configuration coverage of highly configurable digital designs
Biswal et al. A discrete event system approach to on-line testing of digital circuits with measurement limitation
US20220405399A1 (en) Methods and Systems for Measuring the Security of an Electronic Device Comprising Hardware and Software
Devarajegowda et al. A mutually-exclusive deployment of formal and simulation techniques using proof-core analysis
Bağbaba Methods to Optimize Functional Safety Assessment for Automotive Integrated Circuits
US11816410B2 (en) System and method for formal fault propagation analysis
Biswal et al. A binary decision diagram approach to on-line testing of asynchronous circuits with dynamic and static C-elements
GB2572633A (en) Verification of hardware design for data transformation pipeline
US11783105B2 (en) Method and system for verifying a sorter
JP7145942B2 (ja) フォーマルフォールト伝搬分析のためのシステム及び方法
Busch Automated Safety Verification for Automotive Microcontrollers
Arbel et al. Gating aware error injection
Zimmermann An exploration of options to increase functional safety in the AVR core
CN115374735A (zh) 用于功能安全诊断覆盖率的自动化
Tahoori et al. Obtaining FPGA soft error rate in high performance information systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant