基于软件自测试的千核片上网络并行在线测试方法

文档序号:33017444发布日期:2023-01-20 17:16阅读:31来源:国知局
基于软件自测试的千核片上网络并行在线测试方法

1.本发明属于集成电路测试技术领域,尤其涉及一种基于软件自测试的千核片上网络并行在线测试方法。


背景技术:

2.凭借出色的并行通信能力,众核片上网络(networks-on-chip,noc)已经成为超级计算机中一种有前途的架构。目前,许多研究机构都在尝试为下一代超级计算机设计千核级别的noc。千核noc需要很强的鲁棒性和容错性。在实际运行过程中,千核noc不仅要适用于低故障的情况,还可能要面临故障较多的状况。解决该问题的一个可行方案是,千核noc经过在线测试后隔离故障部分和重配置资源,从而保持正常运行。因此,在线测试对于确保基于千核noc的系统无错误运行至关重要。
3.现有的测试方法中,基于自动测试设备(automatic test equipment,ate)的测试方法虽然可以在制造众核片上网络的过程中使用,但是该方法依赖ate,并且ate价格昂贵,同时也会带来侵入式硬件,这都导致了测试开销居高不下。此外,基于ate的测试方法是一种离线测试方法,因此不适合千核noc的在线测试。内建自测试(built-in self-test,bist)方法将测试向量的生成输入和测试响应的收集分析集成到了待测电路内部,从而减少了对ate的依赖,但是bist方法仍然需要额外的测试模式,因此对在线测试的支持有限。更为严重的是,bist方法需要侵入式硬件,由此带来的额外测试面积开销十分高昂。考虑到不依赖ate和无侵入式硬件,软件自测试(software-based-self-test,sbst)方法被证明是一种高效的noc测试方法。然而,sbst面对千核noc这种时序深度较大的电路时有局限性。在面对千核noc在线测试时,sbst亟需解决测试数据包的自动生成问题,并且需要能够在较大时序深度下激活noc中难以测到的测试场景。此外,sbst方法虽然可以做到没有侵入式硬件,但是用以在线测试的数据包会占用千核noc的l1高速缓存,这属于千核noc的关键资源。同时,sbst必须在千核noc的空闲期间执行测试。因此,sbst方法进行并行在线测试时也亟需对存储空间和执行时间进行优化。


技术实现要素:

4.本发明目的在于提供一种基于软件自测试的千核片上网络并行在线测试方法,以解决上述的技术问题。
5.为解决上述技术问题,本发明的一种基于软件自测试的千核片上网络并行在线测试方法的具体技术方案如下:
6.一种基于软件自测试的千核片上网络在线测试方法,包括如下步骤:
7.步骤1:使用有界模型检验为软件自测试方法自动生成测试向量;
8.步骤2:使用蒙特卡洛模拟方法解决测试数据包配置的选择问题;
9.步骤3:在蒙特卡洛模拟过程中增加多线程机制。
10.进一步地,所述步骤1的有界模型检验的软件自测试方法包括如下步骤:
11.第一步:从千核noc路由节点的rtl设计文件中提取efsm模型,同时,bsbst将要覆盖的测试场景作为属性集合pe和pf存储到数据库中;
12.第二步:bsbst检查数据库中是否还存在未验证的属性,如果存在,则bsbst从数据库中获取一个未验证的属性,然后进行下一步;反之如果不存在,bsbst终止流程;
13.第三步:bsbst通过减小模型的规模以缓解状态空间爆炸问题;
14.第四步:bsbst使用bmc工具验证所给属性;如果工具无法给出引导序列,bsbst则认为所给属性在功能模式下不可测试,此时返回到第二步;反之如果工具给出了对应的引导序列,bsbst进入下一步;
15.第五步:如果验证的属性属于集合pe,bsbst将此时引导序列中输入信号信号序列视作激活属性p的测试向量;否则如果验证的属性属于集合pf,bmc将模型固定到发生状态更新的时间范围内并且强加引导序列,然后bsbst使用约束下的atpg为状态更新期间激活的故障生成测试向量;
16.第六步:bsbst将测试向量映射为sbst程序,并返回到整个流程的第二步,重复上述过程。
17.进一步地,所述步骤2为千核noc开发了一个使用c语言的高层模拟器,所述模拟器基于herms路由节点设计,在保留千核noc中必要变量的同时约减了许多底层细节,所述模拟器还完成缓冲区和交换机的功能,其结果与门级网表仿真结果的周期精度保持一致,同时,给出测试数据包配置的高层评估方式cov=n
scen
/sum
scen
和前者描述了测试覆盖率cov的计算方式,分子部分表示当前数据包配置能够覆盖到未曾测试的场景,分母部分表示总共需要覆盖的测试场景;后者给出了评估当前配置的目标值objective公式,分子部分是测试覆盖率cov,分母是两个部分的乘积,前者是对测试数据包配置中微片之和求平方根,后者是千核片上网络中添加当前测试数据包配置后的完成时间time
cur
与添加该配置之前的时刻time
pre
的比值。
18.进一步地,所述步骤2使用蒙特卡洛模拟在大范围的随机空间内搜索近似最优配置,包括如下步骤:
19.第一步:当千核noc可以注入测试数据包时,蒙特卡洛模拟方法在当前时刻ts执行随机测试数据包配置生成,产生n
rc
组随机测试数据包配置;
20.第二步:将每个配置下的所有数据包分别放入高层模拟器中模拟运行,直到模拟器中的所有数据包都传输完毕才停止,并且记录此时的终止时间te,蒙特卡洛模拟执行高层评估方式计算不同配置的目标值大小;
21.第三步,选出n
rc
组随机测试数据包配置的最大目标值以及对应的配置;
22.第四步:将当前的最大目标值与之前最佳配置取得的目标值进行对比,检查当前最优配置是否改进了历史最优配置;如果改进了,则更新此时的最优配置,然后继续执行蒙特卡洛模拟;反之如果当前最优配置没有改进,则将历史最优配置选为此时注入千核noc的最佳测试数据包配置。
23.进一步地,所述步骤3使用多线程技术来为千核noc的在线自测试问题生成最优测试数据包配置,多线程下的并行测试数据包配置选择方法包含4种不同类型的线程,分别为主控线程、配置生成线程、配置模拟线程和配置统计线程,4种线程分别承担不同的功能,并
且彼此交互共同完成多线程的任务。
24.进一步地,所述配置生成线程包括如下步骤:
25.第一步:配置生成线程在系统中生成大量不同配置的测试数据包暂存起来;
26.第二步:当需要为当前蒙特卡洛模拟提供n
conf
数量的配置时,配置生成线程将已有配置在状态表中的标志位置1,这表示这些配置已就绪;
27.第三步:当已就绪的配置达到计算平台支持的可用线程数avail
thread
时,配置生成线程向主控线程发送就绪信号,此时,主控线程会通知配置模拟线程配置准备就绪;
28.第四步:配置生成线程需要等待主控线程的返回请求信号;当得到了返回请求信号,配置生成线程将avail
thread
数量的测试数据包配置传递给配置模拟线程,同时将这些配置在状态表中的状态标志设置为2;如果已经生成了n
conf
数量的配置,同时这些配置对应的状态标志为2时,配置生成线程就会清空n
conf
数量配置对应的单元;反之,如果传递给配置模拟线程的配置数量不足n
conf
,配置生成线程会返回到第三步;
29.第五步:在生成了n
conf
数量的配置后,配置生成线程等待主控线程的信号;如果接收到的是迭代信号,配置生成线程则会返回到第二步,重新生成另一个组n
conf
数量的测试数据包配置;如果接收到的是更新信号,配置生成线程则根据此时千核noc的状态更新空闲输入端口的数量n
free
,至此,配置生成线程结束此次任务,等待主控线程的下一次调用。
30.进一步地,所述配置模拟线程包括如下步骤:
31.第一步:配置模拟线程从主控线程获取当前noc的状态信息,同时向主控线程发送请求配置注入的信号;
32.第二步:当收到主控线程返回的就绪确认信号时,配置模拟线程会得到配置生成线程传递过来的avail
thread
数量的测试数据包配置;
33.第三步:配置模拟线程对avail
thread
个配置分别使用noc高层模拟器进行模拟,在模拟过程中得到avail
thread
个配置分别对应的测试场景覆盖情况以及完成时间te;如果测试数据包配置的完成时间在千核noc允许的空闲时间以内,配置模拟线程才使用高层评估方式计算该配置的目标值;反之如果出现了超时情况,配置模拟线程则将对应配置的目标值直接设置为0;在这之后,配置模拟线程会进行一个同步更新操作,用以更新所有配置的目标值;当且仅当完成avail
thread
个测试数据包配置的模拟和评估计算之后,配置模拟线程才将avail
thread
数量的评估计算结果传递给配置统计线程,此时,配置模拟线程当前阶段的任务结束,等待主控线程的下一次调用。
34.进一步地,所述,配置统计线程包括如下步骤:
35.第一步:配置统计线程接收配置模拟线程每次提交的avail
thread
个评估结果;
36.第二步,配置统计线程从avail
thread
个评估结果中筛选出最大目标值max
new
及其对应的测试数据包配置;
37.第三步:配置统计线程将max
new
与临时存储器中保存的之前的最大目标值max
tem
进行比较;如果当max
new
大于max
tem
,配置统计线程会用max
new
更新max
tem
;反之如果小于则舍弃max
new

38.第四步:配置统计线程判断配置数量是否达到总配置数n
conf
;如果达到了,配置统计线程则查找上一次蒙特卡洛模拟迭代得到的最大目标值max
pre
是否存在;如果不存在,配置统计线程会用max
tem
更新max
pre
;反之如果存在max
pre
,配置统计线程会对比max
tem
和max
pre
的大小;如果max
tem
大于max
pre
,配置统计线程会用max
tem
更新max
pre
,并且将max
tem
对应的配置记录为此时的最优配置,然后向主控线程发送迭代信号,请求继续执行蒙特卡洛模拟迭代;如果max
tem
小于max
pre
,配置统计线程则将max
pre
对应的配置视为此阶段的最终最优测试数据包配置传递给主控线程进行更新。
39.进一步地,所述,配置主控线程包括如下步骤:
40.第一步:主控线程启动配置生成线程,并且将此时千核noc的状态信息传递给配置模拟线程;
41.第二步:如果配置模拟线程发出了请求信号,而配置生成线程发出了就绪信号,主控线程就调度配置生成线程将生成的测试数据包配置导入配置模拟线程;
42.第三步:当配置模拟线程中的所有同步操作都执行完毕,主控线程向配置统计线程发送信号;
43.第四步:如果收到配置统计线程发出的迭代信号,这表示需要继续执行蒙特卡洛模拟,主控线程同时给配置生成线程和配置模拟线程发送迭代信号,进行下一轮迭代;而如果收到配置统计线程发出的更新信号,这表示当前已经得到了最优数据测试包配置,主控线程则停止蒙特卡洛模拟,并且给出配置的详细信息;此外,在配置模拟线程中,测试数据包配置在高层模拟器上的终止时间如果超出了千核noc所允许的空闲时间,主控线程则读取此轮蒙特卡洛模拟的起始状态,并且将千核noc的状态信息返回到对应的时刻,同时清除该过程中的所有临时变量;
44.第五步:其他3种线程从返回的noc状态重新启动,以生成下一个空闲周期内的最优测试数据包配置;如果没有出现超时现象并且生成了最优测试数据包配置,主控线程使用高层模拟器对该配置进行模拟,直到配置中的任意数据包传输完毕到达目标路由节点,记此时的时间为t
first

45.第六步:主控线程使用t
first
时刻的状态来更新千核noc的状态。
46.本发明的一种基于软件自测试的千核片上网络并行在线测试方法具有以下优点:
47.1.本发明方法提出了一种基于有界模型检验的并行软件自测试方法(psbst),完成了以千核noc为研究对象的众核noc在线测试。psbst能够自动生成一系列最优的测试数据包配置,以高测试质量和低测试开销完成千核noc的在线测试。
48.2.本发明方法提出了基于有界模型检验的软件自测试方法为noc中每个路由节点及其关键部件高效生成测试数据包,每个测试数据包能够覆盖对应路由节点上的缓冲区和可行转向的待测场景,同时在多个数据包的配合下能够覆盖交换机中的冲突仲裁场景。
49.3.本发明方法开发了一个高层模拟器,提出了一种测试数据包配置的高层评估方法,两者能够大大降低测试数据包配置的模拟和评估时间。在此之上,本发明采用蒙特卡洛模拟求解测试数据包配置的选择问题。该方法在大范围的随机空间内搜索近似最优配置,这样既能够保证测试质量,又能够最大限度地降低测试开销。
50.4.本发明方法为测试数据包配置的选择问题使用多线程技术。通过主控线程、配置生成线程、配置模拟线程以及配置统计线程这4种线程的交互及合作,多线程机制保证蒙特卡洛模拟可以在足够大的搜索空间中选择出测试数据包的近似最优配置,同时也减少测试数据包配置的生成时间。
51.5.本发明方法能够实现高测试质量,完成千核noc的在线测试。同时,本发明方法
在千核noc的功能模式下进行在线测试,这可以有效地避免数据包在功能模式下出现不可测转向,从而能够避免过度测试问题。
52.6.本发明方法能够有效降低测试开销,不需要任何额外的面积开销,也不需要昂贵的自动测试设备。
附图说明
53.图1为基于有界模型检验进行时延测试的软件自测试方法的流程示意图;
54.图2为基于有界模型检验的软件自测试方法的流程示意图;
55.图3为高层模拟器模拟数据包传输的流程示意图;
56.图4为蒙特卡洛模拟求解测试数据包配置的选择问题流程图;
57.图5为多线程技术下的并行测试数据包配置选择流程图;
58.图6为配置生成线程流程图;
59.图7为配置模拟线程流程图;
60.图8为配置统计线程流程图;
61.图9为主控线程流程图;
62.图10为蒙特卡洛迭代的目标值变化示意图;
63.图11为蒙特卡洛模拟迭代次数和覆盖率示意图;
64.图12为不同随机测试数据量下故障覆盖率示意图;
65.图13为psbst在千核noc缓冲区测试覆盖率的灰度图;
66.图14为随机测试在千核noc缓冲区测试覆盖率的灰度图;
67.图15为psbst在千核noc路由节点测试覆盖率的灰度图;
68.图16为随机测试在千核noc路由节点测试覆盖率的灰度图;
69.图17为蒙特卡洛模拟迭代的执行时间示意图。
具体实施方式
70.为了更好地了解本发明的目的、结构及功能,下面结合附图,对本发明一种基于软件自测试的千核片上网络并行在线测试方法做进一步详细的描述。
71.一、相关定义与相关指标
72.1.相关定义
73.软件自测试方法(software-based self-testing,sbst):sbst使用软件程序进行noc的在线测试时,核心思想是sbst程序直接利用noc传输测试数据包以激活noc中的故障,然后接收noc对此产生的测试响应,从而达到在线测试的目的。测试数据包以01二进制方式存储在noc的功能处理单元中。
74.有界模型检测(bounded model checking,bmc):bmc是一种很重要的自动验证技术。它充分利用sat(satisfiability)求解工具的特征,把bmc问题编码成sat实例,有效地使模型检验的变量数提升一个数量级以上。它不仅可以自动地验证有穷状态系统中命题的正确性,且一旦命题有错,它还能够提供不满足命题的违例。
75.引导序列(leading sequence):引导序列是指从扩展有限状态机的初始配置到满足属性p的配置的每个时间片的输入信号和变量值的序列,用来激活属性p。
76.蒙特卡洛(monte carlo)方法:也称为统计模拟方法、随机抽样技术,是一种基于随机数、以概率统计理论为指导的数值计算方法。该方法起源于原子能事业中对中子随机扩散过程的直接模拟。随着计算机技术的高速发展,现代计算机能够快速有效地执行数以百万的模拟,这使得蒙特卡洛方法能够在迅速给出近似解的同时保证近似解的准确性,尤其是面对过于复杂难以直接处理的问题时。
77.2.相关指标
78.为了衡量本发明方法的有效性,通过下列指标进行评价:
79.故障覆盖率:故障覆盖率为使用软件自测试方法检测到的故障占总体故障总数的比例。为求得故障覆盖率,使用商业测试向量自动生成工具tetramax进行故障模拟,获得故障覆盖率。
80.测试开销:包括面积开销,外部测试仪器的使用情况,测试数据量以及测试时间。
81.二.本发明方法原理
82.本发明提出了一种基于软件自测试的千核片上网络在线测试方法,该方法能够自动生成一系列最优的测试数据包配置,以高测试质量和低测试开销完成千核noc的在线测试。如图1所示,本发明方法包括步骤:
83.步骤1:使用有界模型检验为软件自测试方法自动生成测试向量;本发明将千核片上网络路由节点中的缓冲区及交换机建模成有限状态自动机,该状态机可以从路由节点对应的寄存器传输级设计文件中自动提取。本发明使用有界模型检验提取激活状态机内部功能所需的引导序列。对于路由节点中使能电路对应的故障,本发明将引导序列中的输入信号序列视为测试向量;对于时序控制电路对应的故障,在获得引导序列后,本发明将时序控制电路固定到在功能转换发生的时刻展开,然后通过删去内部寄存器和使用约束下的测试向量自动生成为时序电路生成测试向量。
84.如图2所示,基于有界模型检验的软件自测试(bsbst)方法从千核noc路由节点的rtl设计文件中提取efsm模型。同时,bsbst将要覆盖的测试场景作为属性集合pe和pf存储到数据库中。第二步,bsbst检查数据库中是否还存在未验证的属性。如果存在,则bsbst从数据库中获取一个未验证的属性,然后进行下一步;反之如果不存在,bsbst终止流程。第三步,bsbst通过减小模型的规模以缓解状态空间爆炸问题。第四步,bsbst使用bmc工具验证所给属性。如果工具无法给出引导序列,bsbst则认为所给属性在功能模式下不可测试,此时返回到第二步;反之如果工具给出了对应的引导序列,bsbst进入下一步。接下来,如果验证的属性属于集合pe,bsbst将此时引导序列中输入信号信号序列视作激活属性p的测试向量;否则如果验证的属性属于集合pf,bmc会将模型固定到发生状态更新的时间范围内并且强加引导序列,然后bsbst使用约束下的atpg为状态更新期间激活的故障生成测试向量。最后,bsbst将测试向量映射为sbst程序,并返回到整个流程的第二步,重复上述过程。
85.步骤2:使用蒙特卡洛模拟方法解决测试数据包配置的选择问题。
86.在获得bsbst生成的测试数据包后,本发明基于高层模拟器和高层评估方式,使用蒙特卡洛模拟方法求解测试数据包配置的选择问题。首先,如果直接在千核noc的门级网表文件上进行模拟和求解,该过程将会非常耗时,原因在于千核noc的门级网表中包含的底层细节过多。其次,由于eda工具在故障模拟时对并行计算的严格限制,大量测试数据包配置的评估过程会非常漫长。针对上述两个待解决问题,本发明对应地为千核noc开发了一个使
用c语言的高层模拟器。如图3所示,该模拟器基于herms路由节点设计,在保留千核noc中必要变量的同时约减了许多底层细节,这样能够确保其精确和效率。该模拟器还完成了缓冲区和交换机的功能,其结果与门级网表仿真结果的周期精度保持一致。同时,为了评估给定测试数据包配置的测试质量和测试开销,本发明给出了测试数据包配置的高层评估方式cov=n
scen
/sum
scen
和和前者描述了测试覆盖率(cov)的计算方式,分子部分表示当前数据包配置能够覆盖到未曾测试的场景(n
scen
),分母部分表示总共需要覆盖的测试场景(sum
scen
)。后者则给出了评估当前配置的目标值(objective)公式,分子部分是测试覆盖率(cov),分母则是两个部分的乘积,前者是对测试数据包配置中微片之和求平方根,后者是千核片上网络中添加当前测试数据包配置后的完成时间(time
cur
)与添加该配置之前的时刻(time
pre
)的比值。
87.基于上述描述,本发明使用蒙特卡洛模拟在大范围的随机空间内搜索近似最优配置。如图4所示,执行蒙特卡洛模拟有以下几个步骤:第一步,当千核noc可以注入测试数据包时,蒙特卡洛模拟方法在当前时刻ts执行随机测试数据包配置生成,产生n
rc
组随机测试数据包配置。第二步,该方法将每个配置下的所有数据包分别放入高层模拟器中模拟运行,直到模拟器中的所有数据包都传输完毕才停止,并且记录此时的终止时间te。在该步骤中,蒙特卡洛模拟会执行高层评估方式计算不同配置的目标值大小。第三步,该方法选出n
rc
组随机测试数据包配置的最大目标值以及对应的配置。接下来,该方法将当前的最大目标值与之前最佳配置取得的目标值进行对比,检查当前最优配置是否改进了历史最优配置。如果改进了,则该方法更新此时的最优配置,然后继续执行蒙特卡洛模拟;反之如果当前最优配置没有改进,则将历史最优配置选为此时注入千核noc的最佳测试数据包配置。此时的最佳测试数据包配置是从大量的随机配置中挑选出来的,在这个过程中没有出现一个目标值更大的配置。因此,此时的最佳测试数据包配置是根据蒙特卡罗模拟原理的近似最优解。它既能够保证测试质量,又能够最大限度地降低测试开销。
88.步骤3:在蒙特卡洛模拟过程中增加多线程机制。
89.即使使用前文所述的高层模拟器和高层评估方式,蒙特卡洛模拟的执行和求解时间仍然稍显漫长。蒙特卡洛模拟方法本身需要大量的随机试验以保证所得求解结果的质量是近似最优解。为减少蒙特卡洛模拟的迭代时间,本发明注意到:蒙特卡洛模拟方法执行不同测试数据包配置的迭代时,使用高层模拟器和高层评估方式的起始状态是一致的。同时,所有的迭代过程相互之间没有干扰,这是因为不同的测试数据包配置之间是独立的。因此,考虑到当前的计算平台往往都支持多线程程序以提高计算效率,本发明进一步地使用多线程技术来为千核noc的在线自测试问题生成最优测试数据包配置。
90.如图5所示,多线程下的并行测试数据包配置选择方法中主要包含了4种不同类型的线程,分别为主控线程、配置生成线程、配置模拟线程和配置统计线程。这4种线程分别承担了不同的功能,并且彼此交互共同完成多线程的任务。
91.如图6所示,配置生成线程主要有以下几个步骤:第一步,配置生成线程在系统中生成了大量不同配置的测试数据包暂存起来。第二步,当需要为当前蒙特卡洛模拟提供n
conf
数量的配置时,配置生成线程将已有配置在状态表中的标志位置1,这表示这些配置已就绪。然后,当已就绪的配置达到计算平台支持的可用线程数(avail
thread
)时,配置生成线程向主控线程发送就绪信号。此时,主控线程会通知配置模拟线程配置准备就绪。接下来,
配置生成线程需要等待主控线程的返回请求信号。当得到了返回请求信号,配置生成线程会将avail
thread
数量的测试数据包配置传递给配置模拟线程,同时将这些配置在状态表中的状态标志设置为2。如果已经生成了n
conf
数量的配置,同时这些配置对应的状态标志为2时,配置生成线程就会清空n
conf
数量配置对应的单元;反之,如果传递给配置模拟线程的配置数量不足n
conf
,配置生成线程会返回到第三步。在生成了n
conf
数量的配置后,配置生成线程需要等待主控线程的信号。如果接收到的是迭代信号,配置生成线程则会返回到第二步,重新生成另一个组n
conf
数量的测试数据包配置;如果接收到的是更新信号,配置生成线程则根据此时千核noc的状态更新空闲输入端口的数量n
free
。至此,配置生成线程结束此次任务,等待主控线程的下一次调用。
92.如图7所示,配置模拟线程主要有以下几个步骤:第一步,配置模拟线程从主控线程获取当前noc的状态信息,同时向主控线程发送请求配置注入的信号。第二步,当收到主控线程返回的就绪确认信号时,配置模拟线程会得到配置生成线程传递过来的avail
thread
数量的测试数据包配置。下一步,配置模拟线程对avail
thread
个配置分别使用noc高层模拟器进行模拟,在模拟过程中得到avail
thread
个配置分别对应的测试场景覆盖情况以及完成时间(te)。其中需要特别注意的是,如果测试数据包配置的完成时间在千核noc允许的空闲时间以内(period),配置模拟线程才会使用高层评估方式计算该配置的目标值;反之如果出现了超时情况,配置模拟线程则会将对应配置的目标值直接设置为0。在这之后,配置模拟线程会进行一个同步更新操作,用以更新所有配置的目标值。当且仅当完成avail
thread
个测试数据包配置的模拟和评估计算之后,配置模拟线程才会将avail
thread
数量的评估计算结果传递给配置统计线程。此时,配置模拟线程当前阶段的任务结束,等待主控线程的下一次调用。
93.如图8所示,配置统计线程主要有以下几个步骤:首先,配置统计线程接收配置模拟线程每次提交的avail
thread
个评估结果。然后,配置统计线程从avail
thread
个评估结果中筛选出最大目标值(max
new
)及其对应的测试数据包配置。接下来,配置统计线程会将max
new
与临时存储器中保存的之前的最大目标值(max
tem
)进行比较。如果当max
new
大于max
tem
,配置统计线程会用max
new
更新max
tem
;反之如果小于则舍弃max
new
。接下来,配置统计线程会判断配置数量是否达到总配置数n
conf
。如果达到了,配置统计线程则会查找上一次蒙特卡洛模拟迭代得到的最大目标值(max
pre
)是否存在。如果不存在,配置统计线程会用max
tem
更新max
pre
;反之如果存在max
pre
,配置统计线程会对比max
tem
和max
pre
的大小。如果max
tem
大于max
pre
,配置统计线程会用max
tem
更新max
pre
,并且将max
tem
对应的配置记录为此时的最优配置,然后向主控线程发送迭代信号,请求继续执行蒙特卡洛模拟迭代;如果max
tem
小于max
pre
,配置统计线程则将max
pre
对应的配置视为此阶段的最终最优测试数据包配置传递给主控线程进行更新。
94.如图9所示,主控线程主要有以下几个步骤:首先,主控线程启动配置生成线程,并且将此时千核noc的状态信息传递给配置模拟线程。接下来,如果配置模拟线程发出了请求信号,而配置生成线程发出了就绪信号,主控线程就调度配置生成线程将生成的测试数据包配置导入配置模拟线程。下一步,当配置模拟线程中的所有同步操作都执行完毕,主控线程会向配置统计线程发送信号。在这之后,如果收到配置统计线程发出的迭代信号,这表示需要继续执行蒙特卡洛模拟,主控线程会同时给配置生成线程和配置模拟线程发送迭代信
号,进行下一轮迭代;而如果收到配置统计线程发出的更新信号,这表示当前已经得到了最优数据测试包配置,主控线程则停止蒙特卡洛模拟,并且给出配置的详细信息。此外,在配置模拟线程中,测试数据包配置在高层模拟器上的终止时间如果超出了千核noc所允许的空闲时间,主控线程则会读取此轮蒙特卡洛模拟的起始状态,并且将千核noc的状态信息返回到对应的时刻,同时清除该过程中的所有临时变量。在此之后,其他3种线程从返回的noc状态重新启动,以生成下一个空闲周期内的最优测试数据包配置。如果没有出现超时现象并且生成了最优测试数据包配置,主控线程会使用高层模拟器对该配置进行模拟,直到配置中的任意数据包传输完毕到达目标路由节点,记此时的时间为t
first
。然后,主控线程使用t
first
时刻的状态来更新千核noc的状态。上述流程将重复执行,4种线程继续生成最优测试数据包配置测试尚未覆盖到的测试场景,直至所有测试场景被覆盖为止。
95.三.实验过程及结果分析
96.本实验在32
×
32二维网格结构的千核noc上使用基于软件自测试的并行在线测试(psbst)方法。本实验给出了蒙特卡洛模拟过程中的模拟次数、最佳配置的测试覆盖率以及目标值变化等数据,分析和证明高层模拟器、高层评估方式、蒙特卡洛模拟以及多线程技术在测试千核noc时的优势。其次,本实验会给出psbst测试千核noc的测试质量。最后,本实验给出psbst的测试开销,包括额外测试面积开销、测试数据包配置的生成时间、测试执行时间以及测试数据量大小等。
97.1.多线程下的蒙特卡洛模拟
98.当千核noc可以注入测试数据包时,本发明使用蒙特卡洛模拟去寻找当前状态下近似最优的测试数据包配置。此时的最优配置不仅要覆盖尽可能多的待测试场景,同时也要最大限度地降低测试开销,本文通过高层评估以目标值的方式同时表征两者。
99.图10展示了千核noc在初始状态下,每次蒙特卡洛模拟迭代过程中最大目标值的变化情况。需要说明的是,本文虽然使用蒙特卡洛模拟从1000个不同的测试数据包配置中选择最优配置,但是这些配置对于整个算法的搜索空间而言所占的比例仍然很低,可能会存在能够实现更大目标值的其他配置。为了进行充分地搜索,本文在当前蒙特卡洛模拟执行完1000个配置的模拟和最大目标值统计后,继续在相同起始状态下开始新的1000个配置的蒙特卡洛模拟迭代,以搜索是否存在比当前最优配置更好的配置。本文将持续蒙特卡洛模拟过程,直至不再出现更好的测试数据包配置为止。此时的近似最优配置不一定是最优配置,但是大多数配置无法取得与该最优配置相媲美的目标值。
100.图11展示了每当为当前千核noc注入测试数据包配置时,psbst执行的蒙特卡洛模拟迭代次数和对应的测试场景覆盖情况。每次蒙特卡洛模拟的迭代次数从2到8不等。由于蒙特卡洛模拟每次生成1000个不同的测试数据包配置并评估配置的目标值,因此psbst至少需要模拟2000个配置才能够得到当前最佳配置。在此过程中,高层模拟器、高层评估方式和多线程机制有效地支持了蒙特卡洛模拟求解测试数据包配置的选择问题。图11中的红色折线显示出,蒙特卡洛模拟过程中,测试场景的累积覆盖率一直在增加,直至达到100%。高层评估方式计算整个千核noc上新激活的测试场景,而一旦激活了新的测试场景,高层评估方式会将其从未经测试的场景集合中删除。这样,psbst就不会选择重复激活测试场景的配置,从而减少在线测试的开销。
101.2.测试质量
102.首先,本发明使用bsbst对众核noc中的路由节点及其关键部件进行了测试。实验使用完全扫描测试(full-scan,fscan)、功能测试(functional testing,ftest)和结构式软件自测试方法(structural sbst,ssbst)作为对比。
103.表1不同方法下的路由节点及关键部件的故障覆盖率对比
[0104] 缓冲区交换机路由节点fscan(16bits)
‑‑‑‑
100ftest(32bits)88.976.585ssbst(8bits)
‑‑‑‑
96.5bsbst(16bits)99.389.498
[0105]
如表1所示,bsbst的测试质量非常高:首先,bsbst在路由节点上的故障覆盖率高达98%,与fscan能够实现的100%非常接近。其次,bsbst对于缓冲区的测试非常充分,能够达到99.3%。尽管fscan在所有方法中能够实现的故障覆盖率是最高的,然而它受限于依赖ate和离线测试,因而不能够运用到千核noc的在线测试中。与ftest相比,bsbst能够更有效地测试众核noc中的时序电路,并且在缓冲区、交换机和路由节点上实现的测试覆盖率均远超ftest。与ssbst相比,bsbst对于时序深度较大的电路测试更充分。举例而言,缓冲区中计数器的激活需要大于10的时钟周期,bsbst仍然能够实现该单元100%的故障覆盖率而无论它的时序深度有多大。综上所述,在众核noc路由节点及其关键部件的测试质量方面,bsbst优于现有的测试方法。
[0106]
接下来,本发明使用psbst对千核noc进行了测试,测试结果如表2所示。表2主要侧重于展示psbst以及对比的fscan、随机测试方法(random)在缓冲区、交换机以及千核noc整体上的测试覆盖率。
[0107]
表2千核noc的不同测试方法在测试质量方面的比较
[0108][0109]
psbst在千核noc上实现了94.11%的总体故障覆盖率。psbst将bsbst生成的测试数据包抽象为测试场景,然后使用蒙特卡洛模拟确保所有的测试场景都出现在了千核noc的每个路由节点上。因此,当本发明通过并行的方式将测试数据包施加到每个路由节点上时,psbst在千核noc上实现了很高的故障覆盖率。考虑到千核noc进行故障模拟所需的时间过于漫长,本发明将缓冲区深度大小从16降低到4,psbst无法直接测试到的与外部信号(比如tx信号)相关的故障比例上升。因此,与bsbst相比,psbst在千核noc缓冲区上的故障覆盖率有所降低,从99.3%降低到了98.18%。此外,本发明测试的千核noc是基于herms而设计的,它的路由节点包含了任意一个输入端口到任意一个输出端口的所有转向。然而,当千核noc使用xy路由算法时,部分转向通道并不会被激活。在实际运行过程中,即使不会出现的
转向通道对应的电路出现了故障,千核noc的功能也不会受到任何影响。因此,psbst实现的测试覆盖率虽然不及fscan,但考虑到过度测试问题,本文认为psbst具有更高的测试质量。
[0110]
现有的测试方法无法满足千核noc的在线测试要求。首先,fscan是测试千核noc的有效方法,如表2所示,该方法实现了100%的故障覆盖率。然而,fscan需要使用ate来注入测试数据,并且需要正常工作模式外的专用测试模式。因此,fscan仅适用于制造过程中的测试,而不适用于千核noc的在线自测。其次,千核noc的规模巨大,随机测试生成的数据包在有效测试数据包集合中所占的比例很小。因此,随机测试很难达到理想的故障覆盖率。图12展示了随机测试所获得的故障覆盖率,其中横轴显示的“nx”表示随机测试的数据包总量是psbst所用的n倍。随着测试数据包数量从1倍增加到4倍,随机测试下的千核noc故障覆盖率的增长速度逐渐放缓,实现的故障覆盖率最多只能达到57.27%。因此,随机测试由于较低的故障覆盖率,无法满足千核noc的在线测试要求。
[0111]
接下来,本发明使用一组灰度图来说明psbst是如何有效测试千核noc不同位置的缓冲区和路由节点。首先,灰度图13和14分别显示了psbst和随机测试在千核noc每个路由节点缓冲区上的故障覆盖率。
[0112]
如灰度图13所示,psbst在千核noc中的每个缓冲区上都实现了高故障覆盖率。产生这种现象的原因是,bsbst生成的测试数据包具有出色的测试性能,同时psbst确保这些测试数据包出现在了千核noc的每个缓冲区上。相比之下的灰度图14则反映出随机测试对千核noc中大多数缓冲区的故障覆盖率较低,而内部路由节点的故障覆盖率更低。这是因为缓冲区中的许多内部电路单元没有完全被随机测试数据包触发。除此原因外,千核noc四周的路由节点可以通过边界扫描或jtag与外部相连,而内部路由节点则难以接入。
[0113]
如灰度图14所示,psbst有效地测试了千核noc中任何位置的路由节点,同时也避免了过度测试问题。如前所述,千核noc内部路由节点中的许多转向在功能模式下不会被触发,即这些转向在功能上是不可测试的。本发明统计了内部节点的不可测情况,一个内部路由节点包含了25种转向通道,但其中只有68%(=(25-4-4)/25)可以进行功能测试。基于上述原因,psbst在千核noc边缘路由节点上实现的测试覆盖率略高于内部路由节点,是合理可接受的情况。
[0114]
此外,千核noc中仲裁逻辑对应的电路也很难测试,因为它需要多个测试数据包同时到达路由节点。这一要求在千核noc中很难满足,尤其是对于内部路由节点中的交换机而言。psbst将路由节点中所有可行的转向抽象为测试场景,而蒙特卡洛模拟在实现所有测试场景的覆盖之前不会终止。同时,高层模拟器还通过参照门级网表设计实现了精确的周期仿真。因此,psbst可以确保测试数据包按时到达被测路由节点,从而有效地测试仲裁电路。如灰度图15所示,psbst在每个路由节点上都能够实现高故障覆盖率。由于千核noc的边缘路由节点可以从外部边界扫描或jtag中获取数据包,因此它们具有更多的可测试次数,从而具有更高的故障覆盖率。如灰度图16所示,随机测试在千核noc路由节点上的故障覆盖率较低。同时,不同位置的路由节点的测试覆盖率波动很大。综上所述,本发明得出结论,psbst能够在千核noc上取得很高的测试质量。
[0115]
3.测试开销
[0116]
psbst适合在线测试千核noc的另一个优势在于该方法的测试开销很低。
[0117]
表3千核noc的不同测试方法在测试开销方面的比较
[0118][0119]
如表3所示,psbst使用片上资源在千核noc路由节点之间传输数据包来完成测试,因此它不需要任何侵入性硬件,也不会引入任何额外面积开销。相比之下,fscan需要高达千核noc总面积17.14%的额外面积开销。由于规模庞大大,千核noc的面积为5.31
×
106um2,因此插入扫描链之后的总面积高达6.22
×
106um2。
[0120]
表3还显示出psbst生成测试包所用的时间。首先,psbst的测试数据包生成时间包括了bmc的求解时间。由于切片技术显着减小了千核noc路由节点缓冲区和交换机的状态机模型规模,bmc的整个求解过程仅需2.48秒。其次,psbst的测试数据包生成时间还涉及到蒙特卡洛模拟的求解时间。psbst使用多线程技术大大减少了模拟过程的时间。图17详细显示了每次蒙特卡洛模拟迭代的执行时间,其中最大的求解时间为将近5000秒,这是在可接受范围内的。如果采用处理核心更多计算性能更好的平台,蒙特卡洛模拟的求解时间可以得到进一步的优化。
[0121]
最后,本发明注意到psbst的测试数据量和测试时间是合理的。由于高层模拟器和高层评估方式统计的是测试数据包在整个千核noc上覆盖的测试场景数量,psbst会优先选择覆盖多个未测试场景的数据包。同时,一旦选择了某个测试数据包,psbst就会将该数据包新覆盖到的测试场景从未测试的场景中去除。于是,通过将测试数据包配置的目标值置0的方式,psbst可以避免选择重复覆盖已测试场景的数据包。此外,在覆盖到新测试场景的情况下,psbst使用蒙特卡洛模拟和高层评估方式最小化了测试成本。作为对比,随机测试未能有效地测试路由节点,反而是重复测试千核noc中的易测试区域。因此,虽然随机测试使用了psbst的4倍测试数据量,但它只实现了57.27%的故障覆盖率。此外,fscan没有利用noc的互连结构和高复用特性来进行并行测试,而是需要将千核noc内的所有寄存器连接成一个扫描链,这会导致测试向量的数量非常大,高达991848kb。作为对比,psbst只有485kb,不及fscan测试数据量的1/2000。同时,fscan需要通过扫描链将测试向量移入和移出千核noc,这会导致测试时间异常高,高达8.13
×
109cycle。作为对比,psbst只有81815cycle。由上述实验数据可知,在测试数据量和测试执行时间方面,fscan比psbst的开销高出了几个数量级。综上所述,本发明得出结论,psbst对千核noc进行测试时的测试开销很低。
[0122]
可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本技术的权利要求范围内的实施例都属于本发明所保护的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1