一种以内升温方式检测时延故障的定温指令级自测试方法

文档序号:8380840阅读:527来源:国知局
一种以内升温方式检测时延故障的定温指令级自测试方法
【技术领域】
[0001]本发明涉及半导体工艺技术领域,尤其是涉及一种以内升温方式检测时延故障的定温指令级自测试方法,是一种VLSI故障容忍高温条件下时延故障的检测方法。
【背景技术】
[0002]高温因素一直是影响计算机系统可靠性的关键因素之一。计算机系统在正常工作温度下可正确地工作。但是,一旦温度升高,计算机系统中将出现大量无法理解的故障。即使整个系统的芯片都经过了严格的制造测试,这种问题依然普遍存在。这种与温度相关的问题主要来源于最坏时延故障,即高温条件下的时延故障。随着芯片温度的提高,电路中信号传输的时延也会显著地提高,因此高温条件会加剧芯片原本的时延。然而糟糕的是,由于当前芯片有着日益递增的性能要求,设计中预留给高温和其它因素的时间边界被严重地消减了。在这种情况下,高温导致电路时延超过芯片的固有时延的故障成为了一项计算机系统的普遍问题。这个问题需要被妥当地处理,尤其是高可靠性要求的计算机系统。但是,当前的方法检测这种问题存在缺陷,因此需要设计合适测试方法检测高温条件下的时延故障。
[0003]当前的制造测试并不适用于测试高温条件下的时延故障。首先,针对正常的时延故障,制造测试自身就有缺陷。这种方法需要在被测电路上插入辅助测试电路(Design forTest, DFT),这样使得被测电路中的故障能够更容易被激活或被观测。但是,这种测试要求改变了原来的电路,会引入一些在正常工作中完全不会出现的向量(被称为非功能向量)。对于时延故障,制造测试将会引入的这种非功能向量比例极其高。这样,很多工作模式下能正常工作的芯片在制造测试过程中却被误认为是错误芯片。这种问题被称为过度测试问题,它会对芯片工业带来难以容忍的经济损失。其次,采用制造测试的方法检测高温条件下的时延故障是非常危险的。一方面,当温度提高后制造测试会加剧已经存在的过量测试问题。这是因为非功能向量能够轻易地激活那些不可测的长通路,而当温度升高后,这部分故障首先被观测到。另一方面,当前的制造测试亟需降低测试温度,而不是测试高温条件下的时延故障。在制造测试中,它的信号跳变数目是正常工作模式下的数倍,这些不正常的信号跳变会迅速加热芯片,甚至直接烧毁芯片。因此,制造测试并不适用于测试高温条件下的时延故障。
[0004]老化测试常常用于测试芯片在高温条件下是否正常工作,但是它同样具有一些致命的问题。在老化测试中,被测芯片被烤炉从外部加热直到它到达给定的温度。然后,这种温度下,老化测试运行正常程序数个小时或者数天,藉此可以测试高温条件下芯片的缺陷。但是,老化测试会损坏被测芯片。由于长时间的烘烤,这种方法会损坏绝缘,进而降低芯片的寿命。更糟糕的是,老化测试不能有效地测试高温条件下的时延缺陷。首先,由于绝缘层的因素,老化测试可能加热芯片的表层,而并没有有效地加热芯片的内部电路。更进一步,正常的功能程序并不是专门针对时延故障,它们的故障覆盖率不高,难以完备地测试芯片。
[0005]指令级自测试方法是一种新型的测试技术,它通过运行普通的功能程序测试处理器或嵌入式系统,它最显著的特征是极高的故障覆盖率,堪比采用全扫描结构的制造测试。这种方法曾经被用于测试基于跳变故障模型的时延测试,并且达到了 94%以上的故障覆盖率。同时,它也能够用于基于路径故障模型的时延测试,同样达到了较高的故障覆盖率。以往的指令级自测试方法仅考虑过低功耗或低温度,以减少测试开销。但是,没有工作考虑采用指令级自测试方法,检测高温条件下的时延故障。为了有效地检测最糟糕情况下的时延故障,指令级自测试方法需要运行在系统允许的最高温度范围内,即能够在高温范围内开展定温测试。

【发明内容】

[0006]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种能有效地测试高温条件下的时延故障、保证高的故障覆盖率、减小处理器损失的以内升温方式检测时延故障的定温指令级自测试方法。
[0007]本发明的目的可以通过以下技术方案来实现:
[0008]一种以内升温方式检测时延故障的定温指令级自测试方法,对处理器进行高温时延测试,包括以下步骤:
[0009]I)获取原始指令级自测试程序模块,形成未变形原始程序模块集合TH);
[0010]2)对原始指令级自测试程序模块进行循环展开的变形;
[0011]3)对原始指令级自测试程序模块进行基于触发cache miss的变形;
[0012]4)根据步骤2)和3),形成基于循环展开变形的程序模块集合TF1、基于触发cachemiss变形的程序模块集合TF2和同时采用循环展开和触发cache miss变形的程序模块集合 TF3 ;
[0013]5)在设定的测试温度区间内,采用定温测试程序调度算法,从所述TF0、TF1、TF2、TF3中获取可行调度;
[0014]6)将处理器加热到测试温度区间的下界,根据可行调度,执行相应程序,针对时延故障实施内升温的定温测试。
[0015]所述步骤2)中,循环展开的变形具体为:
[0016]2.1)删除程序模块中循环语句的检测器;
[0017]2.2)提取循环次数,并将其作为变量N的值;
[0018]2.3)检查变量N是否大于0,若是,则进入步骤2.4),若否,则进入步骤2.6);
[0019]2.4)根据N的值,设置程序模块中load指令和store指令的偏移地址,并输出本次循环对应的指令序列;
[0020]2.5)变量N自减1,返回步骤2.3);
[0021]2.6)结束。
[0022]所述步骤3)中,进行基于触发cache miss的变形时,判断处理器的cache结构,根据所述cache结构触发原始指令级自测试程序模块中的cache miss。
[0023]所述cache结构包括直接映射cache、全相联cache或组相联cache。
[0024]所述步骤5)中,定温测试程序调度算法是基于贪心策略,从TF0、TF1、TF2、TF3中搜索满足设定的测试温度区间的测试程序调度方案。
[0025]所述贪心策略包括低开销程序变形优先策略和高温度模块优先策略。
[0026]所述定温测试程序调度算法具体为:
[0027]5.1)以测试温度区间的下界为初始温度;
[0028]5.2)根据低开销程序变形优先策略,从TH)开始搜索,根据初始温度计算TH)中未执行程序模块的终态温度;
[0029]5.3)根据所述终态温度判断TH)是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.4);
[0030]5.4)根据低开销程序变形优先策略,从TF2开始搜索,根据初始温度计算TF2中未执行程序模块的终态温度;
[0031]5.5)根据所述终态温度判断TF2是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.6);
[0032]5.6)根据低开销程序变形优先策略,从TFl开始搜索,根据初始温度计算TFl中未执行程序模块的终态温度;
[0033]5.7)根据所述终态温度判断TFl是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.8);
[0034]5.8)根据低开销程序变形优先策略,从TF3开始搜索,根据初始温度计算TF3中未执行程序模块的终态温度;
[0035]5.9)根据所述终态温度判断TF3是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则终止。
[0036]所述未执行程序模块的终态温度采用四阶runge-kutta算法计算获得。
[0037]所述未执行程序模块的终态温度的具体计算过程为:
[0038]al)获得未执行程序模块i的测试时间time和功耗power ;
[0039]a2)根据初始温度计算未执行程序模块i在一个采样间隔interval后的终态温度Te ;
[0040]a3)将终态温度Te设置成下一个采样周期的初始温度Ts ;
[0041]a4)重复步骤al)?a3)M次,得到最终的终态温度Te ;
[0042]其中,M为循环变量,M= time/interval。
[0043]所述根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中具体为:
[0044]bl)初始化最高温度Temax等于首个可行模块的终态温度,最高温模块序号max等于该程序模块的序号i ;
[0045]b2)判断是否存在其它可行模块,若是,则选择另一可行模块j,执行步骤b3),若否,则执行步骤b4);
[0046]b3)判断可行模块j的终态温度是否大于最高温度Temax,若是,则将可行模块j的终态温度作为最高温度Temax,同时将序号max更新为j,返回步骤b2
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1