CN117538727A - 面向异构计算的并行故障模拟方法、系统和介质 - Google Patents

面向异构计算的并行故障模拟方法、系统和介质 Download PDF

Info

Publication number
CN117538727A
CN117538727A CN202311440461.6A CN202311440461A CN117538727A CN 117538727 A CN117538727 A CN 117538727A CN 202311440461 A CN202311440461 A CN 202311440461A CN 117538727 A CN117538727 A CN 117538727A
Authority
CN
China
Prior art keywords
fault
simulation
processor
simulated
faults
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.)
Pending
Application number
CN202311440461.6A
Other languages
English (en)
Inventor
赖李洋
林玩婷
黄嘉敏
郑锫骏
林泽凡
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.)
Shantou University
Original Assignee
Shantou University
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 Shantou University filed Critical Shantou University
Priority to CN202311440461.6A priority Critical patent/CN117538727A/zh
Publication of CN117538727A publication Critical patent/CN117538727A/zh
Pending legal-status Critical Current

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/2851Testing of integrated circuits [IC]
    • G01R31/2855Environmental, reliability or burn-in testing
    • G01R31/286External aspects, e.g. related to chambers, contacting devices or handlers
    • G01R31/2868Complete testing stations; systems; procedures; software aspects
    • 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/2851Testing of integrated circuits [IC]
    • G01R31/2855Environmental, reliability or burn-in testing
    • G01R31/286External aspects, e.g. related to chambers, contacting devices or handlers
    • G01R31/2868Complete testing stations; systems; procedures; software aspects
    • G01R31/287Procedures; Software aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了面向异构计算的并行故障模拟方法、系统和介质,方法包括获取多个异构故障处理器的器件参数和数字电路的第一故障集和测试向量集;确定每个故障处理器的故障模拟方式;为每个故障处理器分配对应的故障组,在当前测试向量组下根据故障模拟方式和故障组通过不同的故障处理器对相应的电路网表进行故障模拟,更新第一故障集和第二故障集;第一故障集非空时返回分配故障组的步骤,否则更新测试向量集和第一故障集;第二故障集为空时结束模拟,否则返回获取当前测试向量组的步骤;测试向量集为空时结束模拟。本发明实现了异质架构的并行故障模拟,克服了故障模拟时数据竞争和存储容量制约问题,提高了处理器的资源利用率及故障模拟性能。

Description

面向异构计算的并行故障模拟方法、系统和介质
技术领域
本发明涉及数字电路技术领域,尤其是面向异构计算的并行故障模拟方法、系统和介质。
背景技术
故障模拟作为测试向量生成系统(Automatic Test Pattern Generation,ATPG)和芯片可靠性分析的重要组成部分,是芯片测试领域的基础性和关键性问题。现有的并行故障模拟技术大多是基于众核处理器(Many-Core Processor)的同构并行计算,其中最具代表性是西门子公司等提出的基于众核处理器实现的数据并行故障模拟方案,它通过提高单线程模拟单个故障的性能以及采用众核处理器实现多线程故障模拟的方式来提升故障模拟的性能。
虽然在同构并行计算中通过单线程进行故障模拟的性能在不断地提高,但是故障模拟所需的内存通常会随着线程数量的增长而线性增长,而且数字电路的规模在不断地扩大,这导致处理器中可分配的内存已经难以满足故障模拟的内存需求,而且频繁的内存空间交换将会大幅度地抑制故障模拟的性能。如果只是致力于同构并行计算中单线程的性能提升,则难以使得多线程的性能得到同步提升。
相比于单纯依靠众核处理器的并行计算,异构计算能更加经济高效地获取不同类型芯片的高性能算力,如果能够实现对异构器件的内存的合理分配,则在一定程度上能够满足故障模拟的内存需求,其应用潜力巨大。其它常用的计算器件包括通用图形处理器(General-purpose Computing On Graphics Processing Units,GPGPU),其优势是运算核心数远大于众核处理器,缺点是单核性能相对较弱以及内存比较有限。十几年前,通用图形处理器就被提出用于故障模拟,但其内存较小,需要探寻合适的内存共享故障模拟方法才能发挥优势。目前相关的并行故障模拟技术存在如下缺陷:
一方面,现有成熟的并行故障模拟技术都是基于众核处理器的同构并行计算来实现,而同构并行计算无法使得其他类型的处理器被有效利用,浪费了其他类型的处理器的高性能算力,故障模拟的效率有待提高;
另一方面,通用图形处理器和加速卡等其他类型的处理器的内存较小,当它们被用于并行故障模拟时将会出现内存爆炸等问题,而且它们在进行共享内存的并行读写时容易造成线程间数据竞争、存储冲突等问题,数据竞争的问题致使部分当前被模拟的故障无法传递到下层,这些无法被传递到下层的故障则需要重新被模拟,导致故障模拟性能降低;而存储冲突的问题则会带来频繁的数据交换,从而抵消图形处理器的算力优势。
发明内容
本发明的目的在于至少一定程度上解决现有技术中存在的技术问题之一。
为此,本发明的目的在于提供面向异构计算的并行故障模拟方法、系统和介质。
为了达到上述技术目的,本发明实施例所采取的技术方案包括:
一方面,本发明实施例提供了面向异构计算的并行故障模拟方法,包括以下步骤:
获取多个故障处理器的器件参数和待模拟的数字电路的第一故障集和测试向量集;
其中,多个故障处理器包括多个第一处理器和多个第二处理器,所述第一处理器和所述第二处理器异构,所述第一故障集包括多个待模拟故障及其编号;
根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式;
其中,所述故障模拟方式包括第一模拟方式或者第二模拟方式中的任一种;
判断所述测试向量集是否存在有至少一个测试向量组;
当所述测试向量集存在有至少一个测试向量组时,从所述测试向量集中获取当前测试向量组,将所述数字电路的多个电路网表初始化为无故障状态,根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组,在所述当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新所述第一故障集和第二故障集;
判断所述第一故障集是否为空集;若否,则返回根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组的步骤;若是,从所述测试向量集中删除所述当前测试向量组,选择下一个测试向量组作为当前测试向量组,当所述第二故障集为非空时,获取所述第二故障集作为第一故障集,返回判断所述测试向量集是否存在有至少一个测试向量组的步骤;
当所述测试向量集或者所述第二故障集为空集时,输出所述数字电路的故障模拟结果。
另一方面,本发明实施例还提供了面向异构计算的并行故障模拟系统,包括:
获取模块,用于获取多个故障处理器的器件参数和待模拟的数字电路的第一故障集和测试向量集;其中,多个故障处理器包括多个第一处理器和多个第二处理器,所述第一处理器和所述第二处理器异构,所述第一故障集包括多个待模拟故障及其编号;
第一处理模块,用于根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式;其中,所述故障模拟方式包括第一模拟方式或者第二模拟方式中的任一种;
第一判断模块,用于判断测试向量集是否存在有至少一个测试向量组;
第二处理模块,用于当所述测试向量集存在有至少一个测试向量组时,从所述测试向量集中获取当前测试向量组,将所述数字电路的多个电路网表初始化为无故障状态,根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组,在所述当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新所述第一故障集和第二故障集;
第二判断模块,用于判断所述第一故障集是否为空集;
第三处理模块,用于当所述第一故障集非空时,返回根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组的步骤;当所述第一故障集为空集时,从测试向量集中删除当前测试向量组,选择下一个测试向量组作为当前测试向量组;
第三判断模块,用于判断所述第二故障集是否为空集;
第四处理模块,用于当所述第二故障集非空时,则获取第二故障集作为第一故障集,返回判断测试向量集是否存在有至少一个测试向量组的步骤;
结束模块,用于当所述测试向量集或者所述第二故障集为空集时,输出数字电路的故障模拟结果。
又一方面,本发明实施例提供了一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于实现上述的面向异构计算的并行故障模拟方法。
本发明的有益效果是:提供面向异构计算的并行故障模拟方法、系统和介质,通过异质架构的计算器件协同工作,最大程度地利用各个计算器件的内存和算力进行多线程的并行故障模拟,能够突破通用图像处理器等计算器件进行故障模拟时出现的数据竞争和存储容量制约问题,有效解决了现有技术仅依靠同构并行计算来处理故障模拟过程中内存开销大和高性能算力利用率不足的问题,大幅度地提高了资源利用率和故障模拟性能。
附图说明
图1是本发明提供的面向异构计算的并行故障模拟方法的流程图;
图2是本发明提供的分配故障模拟方式的流程图;
图3是本发明提供的FFR的示意图;
图4是本发明提供的FFR有向图的示意图;
图5是本发明提供的FFR传输域的一种示意图;
图6是本发明提供的FFR传输域的另一种示意图;
图7是本发明提供的异构故障模拟的流程图;
图8是本发明提供的异构故障模拟的原理图;
图9是本发明提供的采用第二模拟方式进行并行故障模拟的应用图;
图10是本发明提供的FFR有向图和FFR传输域的示意图;
图11是本发明提供的并行故障模拟的事件管理机制数组标识的示意图。
具体实施方式
下面结合说明书附图和具体的实施例对本申请进行进一步的说明。所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)众核处理器(Many-Core Processor),是为高度并行处理而设计的特殊类型的多核处理器,包含许多更简单、独立的处理器内核(从几十个内核到几千个或更多)。众核处理器与多核处理器的不同之处在于,从一开始就针对更高程度的显式并行和更高吞吐量(或更低功耗)进行了优化,但代价是延迟和更低的单线程性能。众核处理器广泛用于嵌入式计算机和高性能计算。
2)通用图形处理器(General-purpose computing on graphics processingunits,GPGPU),是一种利用处理图形任务的图形处理器来计算原本由中央处理器(CentralProcessing Unit,CPU)处理的通用计算任务。这些通用计算常常与图形处理没有任何关系。由于现代图形处理器强大的并行处理能力和可编程流水线,令流处理器可以处理非图形数据,特别在面对单指令流多数据流(SIMD),且数据处理的运算量远大于数据调度和传输的需要时,通用图形处理器在性能上大大超越了传统的中央处理器应用程序。
3)并行向量单故障传播(Parallel Pattern Single Fault Simulation,PPSFP),是一种并行故障模拟方法,对于具有若干位数据宽度的主机,若干个测试向量组的信号值被打包成一个数据字,对于无故障或者故障电路,可以利用位逻辑运算并行模拟若干个测试向量,它对组合电路或者全扫描顺序电路特别有效。
针对相关技术存在的缺陷和问题,本发明实施例提出了面向异构计算的并行故障模拟方法、系统和介质,采用PPSFP的思想和竞争包容和维度融合的故障模拟策略来实现异质架构下的并行故障模拟,所能够模拟的故障包括但不限于单固定型故障、桥接故障、跳变延时故障等,突破了数据竞争的瓶颈,为实现异质架构下的高效并行故障模拟打下了扎实的基础。
下面将结合附图详细阐述本发明实施例提供的面向异构计算的并行故障模拟方法。
本发明实施例中的方法,可应用于终端中,也可应用于服务器中,还可以是运行于终端或服务器中的软件等。终端可以是平板电脑、笔记本电脑、台式计算机等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
参照图1,图1是本发明提供的面向异构计算的并行故障模拟方法的流程图,所述方法可以包括但不限于如下步骤:
S100,获取多个故障处理器的器件参数和待模拟的数字电路的第一故障集和测试向量集。
需要说明的是,多个故障处理器包括多个第一处理器和多个第二处理器,第一处理器和第二处理器异构,即第一处理器和第二处理器的架构不同,每个故障处理器的器件参数可以包括但不限于故障处理器的可用内存信息和线程数。
可选地,第一处理器为众核处理器。
可选地,第二处理器可以包括但不限于通用图形处理器、加速卡等除了众核处理器以外的处理器,第二处理器所指代的处理器可以根据实际情况而选取,本发明对此不作具体限定。
另外,第一故障集可以包括但不限于多个待模拟故障及其编号,测试向量集可以包括但不限于多个测试向量组,每个测试向量组均包括至少一个测试向量,测试向量是指数字电路在故障检测时输入的逻辑值,例如“01111011”、“10110000”等。
本发明实施例采用PPSFP的思想来进行故障模拟,每次采用多个向量对一个故障进行并行模拟,当前故障检测完毕后再用多个向量对下一个故障进行并行模拟。如果处理器的字节长度为W,那么一次故障模拟可以用W个向量并行模拟或者检测一个故障,在本发明实施例中,这W个向量称为一个测试向量组。
S200,根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式。
需要说明的是,故障模拟方式包括第一模拟方式或者第二模拟方式中的任一种。
本步骤中,利用每个故障处理器的可用内存信息和线程数来确定每个故障处理器用于处理故障模拟任务的方式。
S300,判断测试向量集是否存在有至少一个测试向量组。若是,转至步骤S310;若否,则输出数字电路的故障模拟结果,结束故障模拟。
本步骤中,当测试向量集为空集时,说明没有更多的测试向量组可供故障检测,此时结束故障检测。
S310,从测试向量集中获取当前测试向量组,将数字电路的多个电路网表初始化为无故障状态。
S320,根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组,在当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新第一故障集和第二故障集。
本步骤中,首先,将第一故障集中最容易产生冲突的多个待模拟故障分配给采用第一模拟方式的故障处理器,以数字电路的FFR有向图为基础,将第一故障集中其余待模拟故障分配给采用第二模拟方式的故障处理器,使得每个故障处理器均分配有对应的故障组。然后,在每个电路网表中插入一组故障;之后,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,之后更新第一故障集和第二故障集。
S330,判断第一故障集是否为空集;若否,则返回步骤S320;若是,从测试向量集中删除当前测试向量组,选择下一个测试向量组作为当前测试向量组,进入步骤S340;
S340,判断第二故障集是否为空集;若是,则输出数字电路的故障模拟结果,结束故障模拟;若否,则获取第二故障集作为第一故障集,返回步骤S300。
以上步骤中,当第一故障集为空集时,说明当前测试向量组已经完成对所有待模拟故障的模拟或者检测,此时,将当前测试向量组从测试向量集中删除,并选择下一个测试向量组作为当前测试向量组。之后,判断第二故障集是否为空集,当第二故障集为空集时,说明所有待模拟故障均已处于完成状态,则待模拟的数字电路的故障模拟已然完成,此时输出数字电路的故障模拟结果;当第二故障集不是空集时,说明仍旧还有未进行故障模拟的待模拟故障,此时令第一故障集等于第二故障集,清空第二故障集,之后返回步骤S300。此外,当第一故障集为非空时,说明在当前测试向量组下还有待模拟故障未进行模拟,此时返回步骤S320。
在本发明的一些实施例中,步骤S100中,获取多个故障处理器的器件参数和待模拟的数字电路的第一故障集和测试向量集的步骤主要包括:
S110,获取数字电路的多个待模拟故障及其编号作为数字电路的第一故障集,同时获取数字电路的多个测试向量组作为数字电路的测试向量集。
本步骤中,首先,根据数字电路的结构确定其电路层级,故障所在的电路层级越小,待模拟故障与数字电路的输出端的层级距离越大;然后,根据电路层级的大小对多个待模拟故障进行编号,编号规则是故障所在的电路层级越低,故障的编号越小;故障所在的电路层级越高,故障的编号越大。
S120,获取多个第一处理器和多个第二处理器作为多个故障处理器,以故障处理器的可用内存信息和线程数作为故障处理器的器件参数。
在本发明的一些实施例中,参照图2,图2是本发明提供的分配故障模拟方式的流程图,步骤S200中,根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式的步骤主要包括:
S210,判断故障处理器是否为第一处理器;若是,转至步骤S220;若否,转至步骤S240。
本步骤中,判断故障处理器的类型,即判断故障处理器是否为众核处理器,以便于根据处理器的类型选取适当的模拟方式来进行故障模拟。
S220,根据故障处理器的器件参数计算故障处理器的故障模拟内存。
本步骤中,根据众核处理器的可用内存信息和线程数来计算众核处理器的故障模拟内存。
S230,判断故障处理器的故障模拟内存是否满足第一内存。若是,采用第一模拟方式作为故障处理器的故障模拟方式;若否,采用第二模拟方式作为故障处理器的故障模拟方式。
需要说明的是,第一内存定义为采用第一模拟方式进行故障模拟的所需内存。
本步骤中,当众核处理器的故障模拟内存大于或等于第一内存时,说明故障处理器的故障模拟内存满足第一内存,选择第一模拟方式作为众核处理器的故障模拟方式,第一模拟方式为数据并行故障模拟策略。当众核处理器的故障模拟内存小于第一内存时,说明故障处理器的故障模拟内存不满足第一内存,选择第二模拟方式作为众核处理器的故障模拟方式,第二模拟方式为竞争包容和维度融合的故障模拟策略。其中,数据并行故障模拟策略以及竞争包容和维度融合的故障模拟策略将在后面内容详细阐述。
S240,根据故障处理器的器件参数计算故障处理器的故障模拟内存。
本步骤中,根据非众核处理器的可用内存信息和线程数来计算非众核处理器的故障模拟内存。可以理解的是,非众核处理器为除了众核处理器以外的其他处理器,可以是通用图形处理器,可以是其他如图形处理器、加速卡等处理器。
S250,判断故障处理器的故障模拟内存是否满足第二内存。若是,采用第二模拟方式作为故障处理器的故障模拟方式;若否,将故障处理器作为不参与故障模拟的故障处理器。
需要说明的是,第二内存定义为采用第二模拟方式进行故障模拟的所需内存。
本步骤中,当非众核处理器的故障模拟内存大于或者等于第二内存时,说明非众核处理器的故障模拟内存满足第二内存,选择第二模拟方式作为非众核处理器的故障模拟方式,第二模拟方式为竞争包容和维度融合的故障模拟策略。当非众核处理器的故障模拟内存小于第二内存时,说明当前非众核处理器不适合运行当前故障模拟,将当前非众核处理器作为不参与故障模拟的故障处理器。
进一步地,采用第一模拟方式进行故障模拟所需要存储的信息可以包括但不限于电路网表信息、逻辑门仿真值、故障来源和事件驱动管理信息,而存储这些信息所需的内存则称为内存需求。对于同一组采用第一模拟方式进行模拟的故障组内的所有待模拟故障,除了电路网表是同组共享的,每个待模拟故障对应的逻辑门仿真值、故障来源和事件驱动管理信息都需要被单独存储。因此,第一内存通过电路网表、逻辑门仿真值、故障来源和事件驱动管理的内存需求以及线程数来决定。
另外,故障类型的改变将改变故障模拟的所需内存,如果是桥接故障,其模拟所需内存与单固定型故障模拟所需内存基本相同;如果是跳变延时故障,则其模拟需要考虑的内存还包括插入时序器件所需内存以及增加逻辑门仿真值空间所需的内存。
示例性地,当故障类型为单固定型故障时,第一内存满足:
第一内存=电路网表的内存需求+线程数×(逻辑门仿真值的内存需求+故障来源的内存需求+事件驱动管理的内存需求);
其中,线程数是指故障处理器的线程数;电路网表信息包括电路的输入、输出和每个门的信息以及它们之间的连接关系,因此,电路网表的内存需求满足:电路网表的内存需求=端口内存+门器件内存+连线关系内存,端口和门器件需要存储的有标识号、类型、扇入连接线信息和扇出连接线信息,连接线需要存储有标识号、输入器件信息、扇出数和驱动器件信息;逻辑门仿真值的内存需求满足:单仿真值内存×门数×2,单仿真值内存与采用几值逻辑仿真有关,如果采用4值逻辑,则需要2bit的内存,“×2”是因为除了要存储有故障的仿真值以外,还要存无故障时的仿真值;除了记录故障仿真值,还需要记录它对应的故障来源信息,故障来源的内存需求满足:单故障标识内存×门数;事件驱动管理信息存储数字电路的门标识和层级标识,事件驱动管理的内存需求满足:门器件标识内存+层级标识内存。
进一步地,采用第二模拟方式进行故障模拟所需存储的信息可以包括但不限于电路网表信息、逻辑门仿真值、故障来源和事件驱动管理信息,而存储这些信息所需的内存则称为内存需求。对于同一组采用第二模拟方式进行故障模拟的故障组内的所有待模拟故障,它们共用电路网表信息、逻辑门仿真值、故障来源和事件驱动管理信息。因此,第二内存通过电路网表信息、逻辑门仿真值、故障来源和事件驱动管理信息来决定。
另外,故障类型的改变将改变故障模拟的所需内存,如果是桥接故障,其模拟所需内存与单固定型故障模拟所需内存基本相同;如果是跳变延时故障,则其模拟需要考虑的内存还包括插入时序器件所需内存,以及增加逻辑门仿真值空间所需的内存。
示例性地,当故障类型为单固定型故障时,第二内存满足:
第二内存=线程系数×(电路网表的内存需求+逻辑门仿真值的内存需求+故障来源的内存需求+事件驱动管理的内存需求);
其中,线程系数定义为采用第二模拟方式进行故障模拟的内存需求与采用第一模拟方式进行故障模拟的内存需求的比值。
以典型的两千万门数字电路进行跳变延时故障模拟为例对故障模拟方式的选择进行说明。
参照下表所示是典型的两千万门数字电路进行跳变延时故障模拟的内存需求。
假设每个众核处理器均采用32个线程同时进行并行的故障模拟,则每个众核处理器进行数据并行故障模拟的所需内存为:1GB+32×(0.32GB×6+200MB)=68.84GB。如果某一众核处理器的内存满足64.84GB,则该众核处理器采用数据并行故障模拟策略来处理故障,如果某一众核处理器的内存不足64.84GB,则该众核处理器采用竞争包容和维度融合的故障模拟策略来处理故障。而对于采用竞争包容和维度融合的故障模拟策略的众核处理器,模拟一组故障组所需内存比单线程所需内存稍微大一点,若线程系数为1.5,那么其消耗内存仅为1.5×(1GB+0.32GB×6+200MB)=4.68GB。即对于其他如通用图形处理器等非众核处理器,如果其内存满足4.68GB,则该非众核处理器采用竞争包容和维度融合的故障模拟策略来处理故障,否则该非众核处理器不适合运行当前故障模拟。
此外,选择竞争包容和维度融合的故障模拟策略的计算器件可以根据自身内存来判断能否进行多个故障组的模拟,每增加一个故障组的模拟,其内存需求需要增加1.5×(0.32GB×6+200MB)=3.18GB,通过选择竞争包容和维度融合的故障模拟策略的计算器件的故障模拟内存即可确定该计算器件可执行的故障组的数量。
在本发明的一些实施例中,步骤S310中,将数字电路的多个电路网表初始化为无故障状态的步骤主要包括:
S311,从测试向量集中获取当前测试向量组,对待模拟的数字电路的多个电路网表进行无故障模拟,以将所有电路网表初始化为无故障状态。
在本发明的一些实施例中,步骤S320中,根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组的步骤主要包括:
S321,根据采用第一模拟方式的故障处理器的器件参数,将第一故障集中的部分待模拟故障分配给采用第一模拟方式的故障处理器,生成采用第一模拟方式的故障处理器的故障组,以第一故障集中未分配的待模拟故障作为待分配故障集。
本步骤中,首先选择最容易产生故障模拟冲突的待模拟故障作为采用第一模拟方式的故障处理器的故障组,其中,采用第一模拟方式的故障处理器的故障组中待模拟故障的数量等于采用第一模拟方式的故障处理器的线程数。
S322,将数字电路划分为多个无扇出区,以无扇出区作为基本单元,通过有向线段表示无扇出区之间的连接和数据流向,构建数字电路的FFR有向图。
本步骤中,根据John P.Hayes提出的无扇出区网络(Fan-out Free Network)的定义以及Kurt J.Antreich提出的电路分区概念,对数字电路的无扇出区(Fan-out FreeRegion,FFR)作出如下定义:如果数字电路的某个区域仅有一个输出端,且该输出端为逻辑输出端或者扇出端,该区域电路的每一传输线至多连接一个逻辑门的一输入,则该电路区域称为无扇出区。
即,FFR为在数字电路中仅有一个输出端且输出端为逻辑输出端或者扇出端的电路区域,每个无扇出区的每条传输线至多连接一个逻辑门的一个输入端。
示例性地,参照图3,图3是本发明提供的FFR的示意图,根据扇出端和逻辑输出端的分布,在图3所示的数字电路中共有七个FFR,其中,逻辑门G1和G4的所在区域构成FFR1,与逻辑门G7连接的扇出端的左侧区域形成了FFR2,逻辑门G2的所在区域构成了FFR3,与逻辑门G4连接的扇出端的右侧区域(非逻辑门G7所在的区域)构成了FFR4,逻辑门G7的所在区域构成了FFR5,逻辑门G5、G8和G9的所在区域构成了FFR6,逻辑门G3和G6的所在区域构成了FFR7。
在划分数字电路的多个FFR后,本发明实施例根据多个FFR来构建数字电路的无扇出区有向图,并将无扇出区有向图称为FFR有向图。在FFR有向图中,以FFR为单元,其用圆圈来进行表示,不同FFR之间的连接关系通过有向线段来表示,而有向线段的箭头则表征不同FFR之间的数据流动方向。
示例性地,参照图4,图4是本发明提供的FFR有向图的示意图,图4所示的FFR有向图对应于图3所示的无扇出区分布,图3中的七个FFR均通过圆圈的形式表示,七个FFR之间的连接关系和数据流方向则通过有向线段表示,进而得到如图4所示的FFR有向图。
此外,FFR有向图具有层级结构,以位于同一列的FFR作为同一FFR层级的FFR,FFR与数字电路的输出端之间的距离越大,FFR所在的FFR层级越低。
示例性地,参照图4所示的FFR有向图,FFR1、FFR2和FFR3位于同一列,且它们距离数字电路的输出端最远,因此FFR1、FFR2和FFR3位于第一个FFR层级,即层级1;而FFR4、FFR5、FFR6和FFR7位于同一列,且它们距离数字电路的输出端最近,因此FFR4、FFR5、FFR6和FFR7位于第二个FFR层级,即层级2,进而使得FFR有向图具有层级结构。
S323,通过FFR有向图将待分配故障集中的多个待模拟故障分配给数字电路的多个电路网表,得到多个电路网表的初始故障组。
本步骤中,以FFR有向图为基础,从第一层FFR开始根据分组原则划分包含有故障的m个互不重叠的FFR传输域,一个FFR传输域中选择一个故障,形成故障组Gf1,再以同样方法形成故障组Gf2~Gfk,根据优先级原则对每组组内故障设立优先级,进而构成多个电路网表的初始故障组。
需要说明的是,在本发明的一个实施例中,待分配故障集中所有待模拟故障均被分配给对应的电路网表,但是,在本发明的其他实施例中,待分配故障集中部分待模拟故障被分配给对应的电路网表,待分配故障集中仍旧存在有部分待模拟故障未被分配。
S324,根据采用第二模拟方式的故障处理器的器件参数,将多个初始故障组分配给采用第二模拟方式的故障处理器,进而生成采用第二模拟方式的故障处理器对应的故障组。
本步骤中,根据采用第二模拟方式的故障处理器的线程数,为采用第二模拟方式的故障处理器分配对应的初始故障组,其中,每个采用第二模拟方式的故障处理器所分配到的故障组中的待模拟故障的数量等于每个采用第二模拟方式的故障处理器的线程数,而每个采用第二模拟方式的故障处理器所分配到的故障组的数量由其故障模拟内存决定。
示例性地,假设数字电路的第一故障集有2000个待模拟故障,有4个众核处理器和2个图形处理器,每个众核处理器有32个可用线程,每个图形处理器的可用线程数上万,众核处理器采用第一模拟方式进行故障模拟,图形处理器采用第二模拟方式进行故障模拟,每个图形处理器可处理至多两个故障组。经过前面步骤确定每个故障处理器的故障模拟方式时,根据异构器件的线程数对第一故障集中的多个待模拟故障进行分组,具体流程如下:
首先,每个众核处理器可以处理32个待模拟故障,则4个众核处理器可以处理128个待模拟故障,因此从2000个待模拟故障中选择最容易产生冲突的128个待模拟故障,为采用第一模拟方式的故障处理器分配对应的故障组,每个采用第一模拟方式的故障处理器所分配到的故障组中的待模拟故障为32个。
然后,将第一故障集中剩余1872个待模拟故障进行分组,以FFR有向图为基础,将1872个待模拟故障分为5个初始故障组,5个初始故障组分别包含的待模拟故障的数量为600、450、300、270和252,这5个初始故障组供2个图形处理器进行处理。
可选地,根据每个图形处理器可处理的故障组的最大数量,采用随机分配的方式来将初始故障组分配给对应的图形处理器。例如,每个图形处理器可处理至多两个故障组,那么随机分配第一个初始故障组和第二个初始故障组给第一个图形处理器,则第一个图形处理器需要采用1050个线程来处理这两个故障组;随机分配第三个初始故障组和第四个初始故障组,则第二个图形处理器需要采用570个线程来处理这两个故障组;而最后一个初始故障组将在第二轮故障模拟中被模拟。
在本发明的一些实施例中,步骤S323中,对个每个电路网表,通过FFR有向图将待分配故障集中的多个待模拟故障分配给电路网表,得到电路网表的初始故障组的实现过程主要包括以下步骤:
S3231,确定电路网表的传输参数。
需要说明的是,传输参数为预先设定的电路参数。
S3232,根据FFR有向图和所述传输参数,构建电路网表的多个无扇出传输域。
需要说明的是,无扇出传输域称为FFR传输域。其中,相邻两个FFR传输域互不重叠,每个FFR传输域均包括至少一个待模拟故障和至少两个FFR。
示例性地,参照图5,图5是本发明提供的FFR传输域的其一示意图,其中灰色三角形表示FFR传输域,图5中仅展示了部分FFR传输域;外围为黑色虚线的两个FFR传输域互不重叠,黑色实线的两个FFR具有重叠域,FFR1和FFR4形成了其一FFR传输域,FFR3和FFR7形成了其二FFR传输域,这两个FFR传输域互不重叠。而FFR8、FFR12和FFR9形成的区域和FFR9、FFR13和FFR10形成的区域相互重叠,即这两个区域存在有重叠域,则这两个区域中只能有一个区域为FFR传输域。
S3233,依次从每个无扇出传输域中选择至少一个待模拟故障。
本步骤中,根据所需选择的待模拟故障的数量值,选择符合数量值要求的互不重叠的FFR传输域,并依次从每个所选的FFR传输域中选择一个待模拟故障。但需要注意的是,所选择的待模拟故障的数量值不能大于第一数值。
S3234,根据所选择的待模拟故障的编号,确定所选择的待模拟故障的优先级,以待模拟故障及其优先级作为电路网表的初始故障组。
需要说明的是,每个电路网表均对应分配有一个初始故障组,初始故障组包括多个待模拟故障及其优先级。
本步骤中,优先级的设立与故障编号相关,编号小的待模拟故障所处的电路层级低,故障传输到输出端的路径往往更长,应当优先模拟,因此故障编号小的待模拟故障的优先级高。即,编号小的待模拟故障的优先级高于编号大的待模拟故障的优先级。之后,以待模拟故障及其优先级作为电路网表的初始故障组。
在本发明的一些实施例中,电路网表的传输参数可以包括但不限于电路网表中所包括的FFR传输域的深度和宽度,其中,电路网表中的每个FFR传输域的宽度和深度均相同。
更为具体地,FFR传输域的深度是指FFR传输域中的FFR的层数,层数是指FFR层级的数量,位于同一列的FFR的FFR层级相同,而且FFR层级越低,FFR传输域中的FFR与数字电路的输出端之间的距离越大。
示例性地,参照图6,图6是本发明提供的FFR传输域的其二示意图,图示中FFR传输域1包括两层FFR,FFR传输域2包含三层FFR,故FFR传输域1的深度为2,FFR传输域2的深度为3。
更为具体地,FFR传输域的宽度是指FFR传输域中,除了FFR传输域最底层的FFR以外只有一个子节点的FFR的数量与位于FFR传输域最底层的FFR的数量之和。
示例性地,参照图6,对于FFR传输域1,FFR7只有一个子节点,FFR3位于FFR传输域1的最底层,故FFR传输域1的宽度为2;对于FFR传输2,FFR4、FFR5、FFR6均位于传输域的最底层,故FFR传输域2的宽度为3。
本发明实施例中,FFR传输域表示该输出FFR受其他FFR影响的范围。当多个故障所处的FFR传输域互不重叠且处于同一层FFR时,这些故障在并行模拟时在其FFR传输域内不会发生冲突。虽然这些故障传递到其FFR传输域以外时仍旧会存在有冲突的概率,但是此概率极小,可以忽略不计。
可选地,考虑到能顺利传递到输出端的故障有限,对于一般规模的电路而言,当FFR传输域的深度大于4时,多个故障并行模拟产生冲突的概率将很低。
在本发明的一些实施例中,步骤S3232中,根据FFR有向图和所述传输参数,构建电路网表的多个无扇出传输域的步骤主要包括:
根据FFR有向图的层级结构,以任一无扇出区作为输出点,以位于输出点所在的FFR层级之前的FFR层级作为待选层级,选择输出点以及待选层级中符合传输参数且与输出点连接的无扇出区作为无扇出传输域,进而构建电路网表的多个无扇出传输域。
本步骤中,根据FFR有向图的层级结构,以任意一个FFR作为输出点,往前若干个FFR层级,找到再往前的若干个FFR层级中所有与输出点连接的FFR,进而形成一个满足预设的FFR传输域的宽度和深度的FFR传输域。
示例性地,参照图5,若设置FFR传输域的深度和宽度为2,从FFR4作为输出点,往前1个FFR层级找到与之连接的FFR1,故FFR1和FFR4构成一个FFR传输域。从FFR5作为输出点,往前1个FFR层级找到与之连接的FFR1和FFR2,故FFR1、FFR2和FFR5构成另一个FFR传输域,以此类推可以画出11个FFR传输域。但是,在这些FFR传输域中,存在有相互重叠的FFR传输域,比如FFR8、FFR12和FFR9形成的区域和FFR9、FFR13和FFR10形成的区域相互重叠,则每两个相互重叠的FFR传输域择一保留,进而得到电路网表中多个互不重叠的FFR传输域。
再示例性地,参照图6,若设置FFR传输域的深度和宽度为2,以FFR7作为输出点,往前1个FFR层级找到与FFR7连接的FFR3,进而形成一个宽度和深度为2的FFR传输域1。再示例性地,若设置FFR传输域的宽度和深度为3,以FFR12为输出点,往前1个FFR层级找到与FFR12连接的FFR8和FFR9,以FFR8和FFR9作为输出点,往前1个FFR层级找到与FFR8连接的FFR4和FFR5,往前1个FFR层级找到与FFR9连接的FFR5和FFR6,进而形成一个宽度和深度为3的FFR传输域2。
在本发明的一些实施例中,步骤S3234中,形成每个电路网表对应的故障组,对于故障组中待模拟故障的数量的最大值即第一数值,其与电路结构有关,可通过如下计算公式计算:
其中,N(i)FFR表示第i层FFR的个数,令FFR有向图的FFR层级为则/>l(i,j)表示第i层FFR第j个FFR传输域的宽度,j=1,2,3,...,N(i+1)FFR;/>表示第i层FFR中FFR传输域的宽度的最大值。以第i层FFR中宽度最大的FFR传输域作为分母,第i层FFR的个数作为分子,再对/>取整(四舍五入),用于表示这一层中互相不重叠的FFR传输域的最小数量。在第i层FFR中至少有/>个FFR传输域不重叠,那么对任一层FFR中至少有/>个FFR传输域不重叠。即,对于任一层FFR,至少存在m个FFR传输域不重叠。基于此,可以将m作为故障组中待模拟故障的数量的最大值,即第一数值。
进一步地,对于常见的电路结构而言,FFR传输域的宽度随着其深度的增加而非严格递增,故可将上述公式简化为以下公式:
简化后的公式虽然丢失了部分电路结构的特性,存在一定的偏差,但是可以大幅度降低故障模拟的计算复杂度。另外,可对某一类电路进行多次实验,以修正参数。之后,当遇到同一类型电路时,可以直接使用简化后的公式并套用参数,在确保一定精度的同时降低了计算复杂度。
在本发明的一些实施例中,参照图7,图7是本发明提供的异构故障模拟的流程图,步骤S320中,在当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新第一故障集和第二故障集的步骤主要包括:
S325,将每个故障组插入到对应的电路网表中。
具体地,对于通过采用第一模拟方式的故障处理器进行故障模拟的电路网表,在每个电路网表中插入采用第一模拟方式的故障处理器所分配的故障组中的一个待模拟故障。此外,对于通过采用第二模拟方式的故障处理器进行故障模拟的电路网表,在每个电路网表中插入一组采用第二模拟方式的故障处理器所分配的故障组。
示例性地,网表1~m为通过采用第一模拟方式的故障处理器进行故障模拟的电路网表,采用第一模拟方式的故障处理器所分配的故障组为G,G包括m个待模拟故障,则将G中的每个待模拟故障依次插入至网表1~m中,网表1插入有故障组G中的故障1,…,网表m插入有故障组G中的故障m,每个网表均插入有一个待模拟故障。网表m+1~k为通过采用第二模拟方式的故障处理器进行故障模拟的电路网表,采用第二模拟方式的故障处理器所分配的故障组为Gf(m+1)~Gfk,网表m+1中插入故障组Gf(m+1),…,网表k中插入故障组Gfk
需要强调的是,在本发明的其他实施例中,在将故障组插入到对应的电路网表后,第一故障集中可能会存在有部分未参与前述步骤分组,且不参与本轮故障模拟的待模拟故障。
S326,在当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对数字电路进行故障模拟,得到每个待模拟故障的检测状态。
需要说明的是,检测状态包括完成状态、无法检测状态或者被放弃状态中的任一种。
具体地,若一故障产生的故障效应在该测试向量下可以传递到输出端,则该故障可被检测到,其为完成状态;若一故障在该测试向量下无法传递到输出端,或者传递到输出端但是故障模拟值与正确值一致,则该故障无法检测,其为无法检测状态;若一故障因受组内其他故障影响无法传递到输出端,则该故障被放弃,其为被放弃状态。
S327,将第一故障集中属于无法检测状态的待模拟故障加入至第二故障集中,删除第一故障集中属于完成状态和无法检测状态的待模拟故障,保留第一故障集中属于被放弃状态的待模拟故障,以更新第一故障集和第二故障集。
本步骤中,更新后的第一故障集包括未被插入到电路网表中的故障组和属于被放弃状态的待模拟故障,第二故障集包括属于无法检测状态的待模拟故障。
S328,在当前测试向量组下将每个电路网表初始化为无故障状态。
本步骤中,在当前测量向量组下,使得每个网表故障点处恢复为无故障的值,再对每个网表进行无故障模拟,进而将每个电路网表初始化为无故障状态。
进一步地,参照图7和图8,图8是本发明提供的异构故障模拟的原理图,步骤S326中,根据每个故障处理器的故障模拟方式和所分配的故障组对所述数字电路进行故障模拟的步骤主要包括:
通过采用第一模拟方式的故障处理器的多个线程对所分配的故障组中的多个待模拟故障进行并行的故障模拟。
需要说明的是,采用第一模拟方式的故障处理器的每个线程均用于对至多一个待模拟故障进行故障模拟。
本步骤中,通过采用数据并行故障模拟策略的计算器件的每个线程从故障组中取出一个待模拟故障进行故障模拟,数据并行故障模拟策略是指利用一个线程执行一个待模拟故障的故障模拟,而且每个线程的故障模拟并行进行。如果待模拟故障能被检测到,则待所有线程都执行完这一次故障模拟后检查第一故障集中是否还有待模拟故障,如果待模拟故障不能被检测到,将未被检测到的待模拟故障放入第二故障集中,以便于下一个向量组对其进行检测。
进一步地,步骤S326中,根据每个故障处理器的故障模拟方式和所分配的故障组对所述数字电路进行故障模拟的步骤还包括:
通过采用第二模拟方式的故障处理器的多个线程对所分配的故障组中的所有待模拟故障进行并行的故障模拟。
需要说明的是,采用第二模拟方式的故障处理器用于处理至少一个故障组,采用第二模拟方式的故障处理器的多线程用于对被处理的故障组中的所有待模拟故障进行故障模拟。
本步骤中,通过采用竞争包容和维度融合故障模拟策略的计算器件的多线程对一个或者多个故障组进行故障模拟,一个线程参与执行至少一个故障组的故障模拟,每个线程的故障模拟并行进行。如果待模拟故障能被检测到,则待所有线程都执行完这一次故障模拟后检查第一故障集中是否还有待模拟故障。如果待模拟故障不能被检测到,需要考虑两个原因,其一是故障能够完成模拟但是不能被检测到,那么该故障属于无法检测状态,将未被检测到的待模拟故障放入第二故障集中,以便于下一个向量组对其进行检测;其二是故障在模拟过程汇总由于冲突被放弃,这种情况则将其重新放入到第一故障集中,以使得当前向量组对其进行下一轮的故障模拟。
更进一步地,通过采用第二模拟方式的故障处理器的多个线程对所分配的故障组中的所有待模拟故障进行并行的故障模拟的步骤主要包括:
获取电路网表中电路层级标识和逻辑标识为第二数值的逻辑门作为待模拟逻辑门;
根据电路网表中的层级结构,利用故障组中的待模拟故障以电路层级递增的方式依次激活电路网表中的待模拟逻辑门,以对待模拟逻辑门进行故障模拟。
本发明实施例,采用竞争包容和维度融合故障模拟策略来实现电路网表的故障模拟。竞争包容和维度融合故障模拟策略是指每个故障组内的多个待模拟故障共用仿真值存储空间和事件管理机制进行事件驱动的层级故障并行模拟。竞争包容和维度融合故障模拟策略主要分为事件管理机制和共用仿真值存储空间两个方面。
具体地,相关技术中,一个故障模拟需要完整的电路仿真值存储空间,而故障电路的事件驱动仿真激活的逻辑门的数量非常有限,对于两千万门级的电路,跳变延迟故障模拟的电路仿真值存储空间可达到2GB,若每个故障模拟均需要2GB内存,内存的消耗非常大。对此,本发明实施例基于前述提出的故障分组的步骤,当电路网表内故障激活的路径不交错且相互独立时,对插入至电路网表的故障组内的所有待模拟故障采用同一个仿真值存储空间进行故障模拟,使得位于同一组内的所有故障可以共用电路的仿真值存储空间,即多个故障并行模拟仅需要2GB的内存,极大地降低了并行故障模拟的内存消耗。
更为具体地,当逻辑门的仿真值存储空间为N时,则该逻辑门最多可存储N个故障的仿真值。
具体地,事件管理机制通过一维数组电路层级标识level_flag[NL]、二维数组逻辑门标识eval_flag[Ngate][Nnetlist],引导多个故障以电路层级递增方式进行事件驱动的故障模拟。NL为电路层级数,Ngate为电路逻辑门数,Nnetlist为网表数量。
当某一逻辑门需要进行故障模拟时,其对应的电路层级标识和逻辑门标识的取值为第二数值。可选地,第二数值为1。而当进行故障模拟时,当检测到某一电路层级标识为1时,则检测该电路层级的所有逻辑门标识,进而得到电路网表中电路层级标识和逻辑标识为1的逻辑门,以此作为待模拟逻辑门,并对待模拟逻辑门进行故障模拟。若故障效应传递到同一逻辑门,也只是将对应的标识多次设置为1,而不会出现采用事件驱动仿真激活同一逻辑门时产生数据竞争这一常见问题,本发明实施例具有竞争包容的优势。
此外,当逻辑门的仿真值存储空间为N时,该逻辑门最多可存储N个故障的仿真值,当存在有N+1个故障模拟都经过该逻辑门时,即N+1个故障同时激活同一个逻辑门,则N+1个故障的仿真值都需要被存储,那么将会发生存储冲突的问题。为了解决多个故障同时激活同一个逻辑门导致逻辑门的仿真值存储空间不足的问题,本发明实施例在竞争包容和维度融合故障模拟策略的基础上,在并行故障模拟中引入了优先级模拟机制。优先级模拟机制为:当多个待模拟故障激活同一待模拟逻辑门时,保留优先级大于第三数值的待模拟故障进行下一电路层级的激活,以被放弃状态作为优先级小于或等于第三数值的待模拟故障的检测状态。需要说明的是,第三数值由逻辑门的仿真值存储空间决定。在优先级模拟机制中,根据多个同时激活同一逻辑门的待模拟故障的优先级,以优先级高的待模拟故障作为能够传递到后一电路层级的待模拟故障,而优先级低的待模拟故障则在本轮故障模拟中被放弃,其定义为被放弃状态。被放弃的优先级低的待模拟故障将在后续被重新分配,再次进行故障模拟。
示例性地,假设每个逻辑门存储空间为1,该逻辑门最多存储一个故障的仿真值。若两个故障模拟都经过该逻辑门,两个故障都需要存储仿真值,存在空间不足的问题。此时根据这两个故障的优先级决定继续模拟的故障,保留优先级高的故障模拟值,放弃对优先级低的故障模拟。
下面以一个例子对本发明实施例提出的竞争包容和维度融合故障模拟策略的实现过程进行举例说明。
参照图9,图9为本发明提供的采用第二模拟方式对如图3所示的数字电路进行并行故障模拟的应用图,如图9所示的数字电路具有两个电路网表,其中,图9的(a)为网表1,图9的(b)为网表2,网表1和网表2均具有四个电路层级,分别为L1至L4。在图9中,测试向量中用灰色框来表示故障效应的传递,白色框表示无故障时的模拟值,电路层级数NL为4,电路逻辑门数Ngate为9,网表数量Nnetlist为2。
假设:故障处理器包括一个通用图形处理器,没有众核处理器参与本轮故障模拟,创建第一故障集Finit={a、c1、e、g},测试向量集Tinit={(01111011,10110000)}。由于篇幅有限,本实施例中的测试向量集只设置了一组测试向量。故障按电路层级排序为a、e、g、c1,按此顺序对故障依次编号为1~4。
如图3所示的数字电路可以分为7个FFR,每个FFR的输出端均为逻辑输出端或者扇出端。将数字电路转化为如图10所示的FFR有向图和FFR传输域,其中,FFR1、FFR3、FFR5、FFR7是具有故障的,由于电路规模较小,本实施例设置FFR传输域深度为2。通过公式计算可以得到故以2为一组故障组的故障数量的最大值。此外,FFR有向图的FFR层级分别为层级1和层级2,其中,FFR1至FFE3位于层级1,FFR4至FFR7位于层级2。
参照图11,图11是本发明提供的事件管理机制的数组标识示意图。具体地,对于网表1,根据分组原则从第一层FFR开始划分含有故障的互相不重叠的FFR传输域,得到传输域1和传输域3,并从中选取故障a和e作为该通用图形处理器的其中一组故障组并插入网表1。同时,设置组内故障优先级,故障按照优先级从高到低排序为a、e。而对于网表2,根据分组原则选择传输域2,4,从中分别选择故障c1和g作为通用图形处理器的另一组故障组并插入网表2。同时,设置组内故障优先级,故障按照优先级从高到低排序为c1、g。
之后,通过通用图形处理器的多个线程同时对这两个网表的故障组进行故障模拟。
在一组测试向量(01111011,10110000)下,网表1和网表2将故障a、e、c1、g对应的电路层级标识和逻辑门标识均设置为1。当检测到L1的电路层级标识为1,检测网表1中第一层G1_0、G2_0的标识,并检测网表2中第一层G3_1的标识;当检测到网表1中第一层G1_0、G2_0的标识为1时,对网表1的逻辑门G1和G2进行故障模拟,当检测到网表2中第一层G3_1的标识为1时,对网表2的逻辑门G3进行故障模拟。
之后,将L1、G1_0、G2_0、G3_1的标识重新设为0,网表1中故障a、e分别传递到L2的逻辑门G4、G5和G6,网表2中故障组G传递到L2的逻辑门G6,故将L2、G4_0、G5_0、G6_0、G6_1标识设为1。
当检测到L2的电路层级标识为1,检测网表1中第二层G4_0、G5_0、G6_0的标识,并检测网表2中第二层G6_1的标识;当检测到网表1中第二层G4_0、G5_0、G6_0的标识为1,对网表1的逻辑门G4、G5、G6进行故障模拟,当检测到网表2中第二层G6_1的标识为1,对网表2的逻辑门G6进行故障模拟。
之后,将L2、G4_0、G5_0、G6_0、G6_1的标识重新设为0,网表1中故障e传递到L3的逻辑门G8,故将L3、G8_0的标识设为1,网表2中故障组G传递到输出端。
当检测到L3的电路层级标识为1,检测网表1中第三层G8_0的标识,并检测网表2中第三层G7_1的标识;当检测到网表1中第三层G8_0的标识为1,对网表1的逻辑门G8进行故障模拟,当检测到网表2中第三层G7_1的标识为1,对网表2的逻辑门G7进行故障模拟。
之后,将L3、G8_0、G7_1的标识设为0,网表1中故障e传输到L4的逻辑门G9,故将L4、G9_0的标识设为1。
当检测到L4的电路层级标识为1,检测网表1中第四层G9_0的标识;当检测到网表1中第四层G9_0的标识为1,对网表1的逻辑门G9进行模拟。而在网表2的L4层中无逻辑门标识为1,因此网表2的L4层无需模拟。
之后,将L4、G9_0的标识设为0,这一轮故障模拟结束。
通过本轮故障模拟,网表1中故障a在该组测试向量下无法传递到输出端,故障e传输到输出端p是可被检测到的故障,其中没有被放弃的故障。因此,从第一故障集Finit中删除故障a和e,将故障a放入第二故障集Fund。网表2中故障c1和g均无法被该测试向量检测,则将c1、g从第一故障集Finit中删除并放入第二故障集Fund。此时,第二故障集Fund={a,c1,g}。
这一轮故障模拟结束后,第一故障集Finit为空,将当前测试向量组从测试向量集T中删除,令第一故障集Finit=Fund={a,c1,g},清空第二故障集Fund。但是,由于测试向量集T为空集,因而故障模拟结束。
此外,本发明实施例还提供了面向异构计算的并行故障模拟系统,包括:
获取模块,用于获取多个故障处理器的器件参数和待模拟的数字电路的第一故障集和测试向量集;其中,多个故障处理器包括多个第一处理器和多个第二处理器,所述第一处理器和所述第二处理器异构,所述第一故障集包括多个待模拟故障及其编号;
第一处理模块,用于根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式;其中,所述故障模拟方式包括第一模拟方式或者第二模拟方式中的任一种;
第一判断模块,用于判断测试向量集是否存在有至少一个测试向量组;
第二处理模块,用于当所述测试向量集存在有至少一个测试向量组时,从所述测试向量集中获取当前测试向量组,将所述数字电路的多个电路网表初始化为无故障状态,根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组,在所述当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新所述第一故障集和第二故障集;
第二判断模块,用于判断所述第一故障集是否为空集;
第三处理模块,用于当所述第一故障集非空时,返回根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组的步骤;当所述第一故障集为空集时,从测试向量集中删除当前测试向量组,选择下一个测试向量组作为当前测试向量组;
第三判断模块,用于判断所述第二故障集是否为空集;
第四处理模块,用于当所述第二故障集非空时,则获取第二故障集作为第一故障集,返回判断测试向量集是否存在有至少一个测试向量组的步骤;
结束模块,用于当所述测试向量集或者所述第二故障集为空集时,输出数字电路的故障模拟结果。
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
本发明实施例还提供了一种计算机可读存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于执行上述的面向异构计算的并行故障模拟方法。
同理,上述方法实施例中的内容均适用于本存储介质实施例中,本存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
综上可见,在现有技术中,众核处理器一般采用数据并行故障模拟的策略来处理故障,也就是不同运算核可以独立地模拟不同的故障,但是每个故障的模拟都需要不小的存储空间,空间不足会产生频繁的内存和硬盘数据交换使得性能大打折扣,所以这种同构并行故障模拟对系统的存储容量提出了很高的要求,硬件成本较高。
本发明实施例提供了面向异构计算的并行故障模拟方法、系统和介质,不同的计算器件会根据自身可提供的内存大小与模拟当前故障组所需的内存大小来决定处理当前故障组采用的策略。对于众核处理器,如果内存充足则采用通用的数据并行故障模拟策略,这样能充分利用内存资源,高效完成故障模拟;如果众核处理器能利用的内存资源不足,又或者是其他内存有限的器件,则采用竞争包容和维度融合的故障处理策略,这样能保证各种处理器都能充分利用当前资源并行处理故障从而达到性能的最优化。
本发明通过异质架构的计算器件协同工作,最大程度地利用各个计算器件的内存进行多线程的并行故障模拟,能够突破通用图像处理器等计算器件进行故障模拟时出现的数据竞争和存储容量制约问题,有效解决了现有技术仅依靠同构并行计算来处理故障模拟过程中内存开销大和高性能算力利用率不足的问题,大幅度地提高了资源利用率和故障模拟性能。
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本发明权利要求所限定的范围内。

Claims (10)

1.面向异构计算的并行故障模拟方法,其特征在于,包括以下步骤:
获取多个故障处理器的器件参数和待模拟的数字电路的第一故障集和测试向量集;
其中,多个故障处理器包括多个第一处理器和多个第二处理器,所述第一处理器和所述第二处理器异构,所述第一故障集包括多个待模拟故障及其编号;
根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式;
其中,所述故障模拟方式包括第一模拟方式或者第二模拟方式中的任一种;
判断所述测试向量集是否存在有至少一个测试向量组;
当所述测试向量集存在有至少一个测试向量组时,从所述测试向量集中获取当前测试向量组,将所述数字电路的多个电路网表初始化为无故障状态,根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组,在所述当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新所述第一故障集和第二故障集;
判断所述第一故障集是否为空集;若否,则返回根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组的步骤;若是,从所述测试向量集中删除所述当前测试向量组,选择下一个测试向量组作为当前测试向量组,当所述第二故障集为非空时,获取所述第二故障集作为第一故障集,返回判断所述测试向量集是否存在有至少一个测试向量组的步骤;
当所述测试向量集或者所述第二故障集为空集时,输出所述数字电路的故障模拟结果。
2.根据权利要求1所述的面向异构计算的并行故障模拟方法,其特征在于,所述根据每个故障处理器的器件参数,确定每个故障处理器的故障模拟方式,包括:
当所述故障处理器为第一处理器时,根据所述故障处理器的器件参数计算所述故障处理器的故障模拟内存,当所述故障处理器的故障模拟内存满足第一内存时,采用第一模拟方式作为所述故障处理器的故障模拟方式,当所述故障处理器的故障模拟内存不满足第一内存时,采用第二模拟方式作为所述故障处理器的故障模拟方式;
当所述故障处理器为第二处理器时,根据所述故障处理器的器件参数计算所述故障处理器的故障模拟内存,当所述故障处理器的故障模拟内存满足第二内存时,采用第二模拟方式作为所述故障处理器的故障模拟方式,当所述故障处理器的故障模拟内存不满足第二内存时,将所述故障处理器作为不参与故障模拟的故障处理器。
3.根据权利要求1所述的面向异构计算的并行故障模拟方法,其特征在于,所述根据每个故障处理器的器件参数为每个故障处理器分配对应的故障组,包括:
根据采用第一模拟方式的故障处理器的器件参数,将所述第一故障集中的部分待模拟故障分配给采用第一模拟方式的故障处理器,生成采用第一模拟方式的故障处理器的故障组,以所述第一故障集中未分配的待模拟故障作为待分配故障集;
将所述数字电路划分为多个无扇出区,以所述无扇出区作为基本单元,通过有向线段表示所述无扇出区之间的连接和数据流向,构建所述数字电路的FFR有向图;
其中,所述FFR有向图具有层级结构,所述无扇出区为在所述数字电路中仅有一个输出端且所述输出端为逻辑输出端或者扇出端的电路区域,每个所述无扇出区的每条传输线至多连接一个逻辑门的一个输入端;
通过所述FFR有向图将所述待分配故障集中的多个待模拟故障分配给所述数字电路的多个电路网表,得到多个电路网表的初始故障组;
根据采用第二模拟方式的故障处理器的器件参数,将多个所述初始故障组分配给采用第二模拟方式的故障处理器,进而生成采用第二模拟方式的故障处理器对应的故障组。
4.根据权利要求3所述的面向异构计算的并行故障模拟方法,其特征在于,对于每个电路网表,通过所述FFR有向图将所述待分配故障集中的多个待模拟故障分配给所述电路网表,得到所述电路网表的初始故障组的步骤包括:
确定所述电路网表的传输参数;
根据所述FFR有向图和所述传输参数,构建所述电路网表的多个无扇出传输域,其中,相邻两个无扇出传输域互不重叠,每个所述无扇出传输域均包括至少一个待模拟故障和至少两个无扇出区;
依次从每个所述无扇出传输域中选择至少一个待模拟故障;
根据所选择的待模拟故障的编号,确定所选择的待模拟故障的优先级,其中,所述编号小的待模拟故障的优先级高于所述编号大的待模拟故障的优先级;
以所述待模拟故障及其优先级作为所述电路网表的初始故障组。
5.根据权利要求4所述的面向异构计算的并行故障模拟方法,其特征在于,所述根据所述FFR有向图和所述传输参数,构建所述电路网表的多个无扇出传输域,包括:
根据所述FFR有向图的层级结构,以任一所述无扇出区作为输出点,以位于所述输出点所在的FFR层级之前的FFR层级作为待选层级,选择所述输出点以及所述待选层级中符合所述传输参数且与所述输出点连接的无扇出区作为无扇出传输域,进而构建所述电路网表的多个无扇出传输域。
6.根据权利要求1所述的面向异构计算的并行故障模拟方法,其特征在于,所述在所述当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对多个电路网表进行故障模拟,更新所述第一故障集和第二故障集,包括:
将每个所述故障组插入到对应的电路网表中;
在当前测试向量组下,根据每个故障处理器的故障模拟方式和所分配的故障组对所述数字电路进行故障模拟,得到每个待模拟故障的检测状态;
其中,所述检测状态包括完成状态、无法检测状态或者被放弃状态中的任一种;
将所述第一故障集中属于所述无法检测状态的待模拟故障加入至第二故障集中,删除所述第一故障集中属于所述完成状态和所述无法检测状态的待模拟故障;
在当前测试向量组下将每个所述电路网表初始化为无故障状态。
7.根据权利要求6所述的面向异构计算的并行故障模拟方法,其特征在于,所述根据每个故障处理器的故障模拟方式和所分配的故障组对所述数字电路进行故障模拟,包括:
通过采用第一模拟方式的故障处理器的多个线程对所分配的故障组中的多个待模拟故障进行并行的故障模拟,其中,采用第一模拟方式的故障处理器的每个线程均用于对至多一个待模拟故障进行故障模拟;
通过采用第二模拟方式的故障处理器的多个线程对所分配的故障组中的所有待模拟故障进行并行的故障模拟,其中,采用第二模拟方式的故障处理器用于处理至少一个故障组,采用第二模拟方式的故障处理器的多线程用于对被处理的故障组中的所有待模拟故障进行故障模拟。
8.根据权利要求7所述的面向异构计算的并行故障模拟方法,其特征在于,所述通过采用第二模拟方式的故障处理器的多个线程对所分配的故障组中的所有待模拟故障进行并行的故障模拟,包括:
获取所述电路网表中电路层级标识和逻辑标识为第二数值的逻辑门作为待模拟逻辑门;
根据所述电路网表中的层级结构,利用所述故障组中的待模拟故障以电路层级递增的方式依次激活所述电路网表中的待模拟逻辑门,以对所述待模拟逻辑门进行故障模拟。
9.根据权利要求7所述的面向异构计算的并行故障模拟方法,其特征在于,所述通过采用第二模拟方式的故障处理器的多个线程对所分配的故障组中的所有待模拟故障进行并行的故障模拟,还包括:
当所述电路网表内故障激活的路径不交错且相互独立时,对插入至所述电路网表的故障组内的所有待模拟故障采用同一个仿真值存储空间进行故障模拟。
10.根据权利要求7所述的面向异构计算的并行故障模拟方法,其特征在于,所述通过采用第二模拟方式的故障处理器的多个线程对所分配的故障组中的所有待模拟故障进行并行的故障模拟,还包括:
当多个所述待模拟故障激活同一待模拟逻辑门时,保留优先级大于第三数值的待模拟故障进行下一电路层级的激活,以所述被放弃状态作为所述优先级小于或等于第三数值的待模拟故障的检测状态。
CN202311440461.6A 2023-10-31 2023-10-31 面向异构计算的并行故障模拟方法、系统和介质 Pending CN117538727A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311440461.6A CN117538727A (zh) 2023-10-31 2023-10-31 面向异构计算的并行故障模拟方法、系统和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311440461.6A CN117538727A (zh) 2023-10-31 2023-10-31 面向异构计算的并行故障模拟方法、系统和介质

Publications (1)

Publication Number Publication Date
CN117538727A true CN117538727A (zh) 2024-02-09

Family

ID=89792949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311440461.6A Pending CN117538727A (zh) 2023-10-31 2023-10-31 面向异构计算的并行故障模拟方法、系统和介质

Country Status (1)

Country Link
CN (1) CN117538727A (zh)

Similar Documents

Publication Publication Date Title
CN110704360B (zh) 一种基于异构fpga数据流的图计算优化方法
CN111433758B (zh) 可编程运算与控制芯片、设计方法及其装置
US20220198114A1 (en) Dataflow Function Offload to Reconfigurable Processors
JP2010033561A (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
CN111090464B (zh) 一种数据流处理方法及相关设备
JP2009505171A (ja) ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置
CN111630505A (zh) 深度学习加速器系统及其方法
EP3662376B1 (en) Reconfigurable cache architecture and methods for cache coherency
CN103870213A (zh) 经由管线化的状态包触发性能事件捕获
US7999808B1 (en) Parallel processing system, method, and computer program product for executing node traversal or primitive intersection
CN110457033A (zh) 用于在gpu上生成动态踪迹数据的装置和方法
WO2011058657A1 (ja) 並列計算装置、並列計算方法、および並列計算プログラム
US20230418677A1 (en) Preemption in a machine learning hardware accelerator
TW202109286A (zh) 純函數語言神經網路加速器系統及結構
CN104166539A (zh) 并行原子递增
CN112765088A (zh) 利用数据标签提高多计算单元平台上数据共享的方法
CN117538727A (zh) 面向异构计算的并行故障模拟方法、系统和介质
Bytyn et al. Dataflow aware mapping of convolutional neural networks onto many-core platforms with network-on-chip interconnect
Liu et al. Memory-centric communication mechanism for real-time autonomous navigation applications
WO2021212045A1 (en) Synchronization of processing elements and software managed memory hierarchy in a machine learning accelerator
US11527036B2 (en) Coherency gathering for ray tracing
US20230289242A1 (en) Hardware accelerated synchronization with asynchronous transaction support
US20230289190A1 (en) Programmatically controlled data multicasting across multiple compute engines
US20230315655A1 (en) Fast data synchronization in processors and memory
US20230289189A1 (en) Distributed Shared Memory

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