一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于启发式搜索的边界扫描测试矩阵生成方法

2023-02-02 00:11:56 来源:中国专利 TAG:


1.本发明属于电路故障诊断与测试技术领域,更为具体地讲,涉及一种基于启发式搜索的边界扫描测试矩阵生成方法。


背景技术:

2.随着大规模集成电路的应用和发展,电路的结构变得越来越复杂,单片集成电路的管脚数目变得越来越庞大,尺寸变得越来越小,管脚之间的物理距离变得越来越接近;这样的情况导致一些传统的故障检测手段,诸如飞针、设置物理探针等方法变得几乎无法使用;对于大规模集成电路测试性、保障性和维修代价的要求使得集成电路的生产者和研究人员开始谋求新的故障诊断方法;在集成电路的制造阶段就预先搭建好边界扫描链路结构,从而快速定位集成电路各管脚及管脚之间互联网络故障的边界扫描技术,为解决大规模集成电路故障诊断问题提供了强有力的保证;而用于边界扫描测试的测试矢量的生成,是这一技术研究的一个热点和难点。
3.边界扫描测试主要用于检测集成电路管脚本身的呆滞故障、管脚之间互联网络的断路故障以及管脚之间互联网络的短路故障;每次边界扫描测试所加载到整个测试链路的01矢量称为并行测试矢量量(ptv),而整个测试过程中加载到某一管脚上的所有01值组成的矢量称为串行测试矢量(stv),所有的测试矢量组成了测试矩阵(mtv),其中stv是mtv的行矢量,ptv是mtv的列矢量。要能保证管脚之间两两短路故障,管脚自身呆滞故障和互联网络之间断路故障的检测,要求所有的stv互不相同,也不能为全0行和全1行。同时,当管脚互连网络之间发生短路故障时,表现为其stv相或或相与(与或的表现与电路本身的电气实现手段有关);当某一组stv相或(与)的结果与某一个单一stv相同时,就称之为征兆误判,当某一组stv相或(与)的结果与另一组stv相或(与)的结果相同时,称之为征兆混淆;在紧凑性指标(stv长度)固定的条件下,尽可能的降低整个mtv的误判率很混淆率,是边界扫描测试矢量生成算法研究的一个主要方向。
4.目前评价mtv混淆率和误判率指标的算法可以分为无限制故障模型和有限制故障模型两类;前者没有充分利用电路的物理和电气信息,只是根据mtv矩阵本身的数学特性进行计算和评估;后者结合了电路管脚之间的距离等物理信息,从而计算出不同管脚之间发生短路故障的概率,然后将概率信息纳入到计算当中,得到以期望形式表现的误判率和混淆率;目前针对无限制故障模型的算法有二进制计数序列算法、改良计数序列算法、等权值算法等;而针对有限制故障模型,则利用遗传算法、神经网络等生成方式,对具有最小期望混淆率和误判率的mtv进行搜索。


技术实现要素:

5.本发明的目的在于克服现有技术的不足,提供一种基于启发式搜索的边界扫描测试矩阵生成方法,通过向前的启发式搜索和向后的回溯验证相结合的方式快速生成测试矢量矩阵,测试矢量矩阵具有最小混淆率和误判率,并克服了遗传算法等其它算法在某些条
件下无法得到最全局优解的缺点。
6.为实现上述发明目的,本发明一种基于启发式搜索的边界扫描测试矩阵生成方法,其特征在于,包括以下步骤:
7.(1)、统计被测电路板中的网络数量;
8.通过被测电路板的网表文件建立其拓扑模型,再将拓扑模型中每两两相连的芯片引脚作为一组网络,然后统计网络数量,并记第i组两两相连的芯片引脚构成的网络为ni;
9.(2)、计算任意两网络间的归一化距离l
ij

10.利用印制电路板绘制软件导出被测电路板中各个器件的中心位置在电路板上的坐标,再结合芯片手册上给出的引脚间距离,然后确定每两组网络ni与nj间的物理距离lc
ij

11.在所有网络间的物理距离中,找物理距离最大值,记为lc
max
,然后利用如下公式将任意两网络间的物理距离lc
ij
转换为归一化距离l
ij

[0012][0013]
(3)、构造网络之间的短路概率矩阵p;
[0014]
设步骤(1)中统计的网络数量为m,则短路概率矩阵p是一个m
×
m的对称矩阵,矩阵p中的元素p
ij
表示网络ni与nj之间发生短路的概率;
[0015]
(4)、构造测试矩阵m;
[0016][0017]
其中,a
ij
的取值为0或1,但必须满足每一行中的元素不能全为0或1,且行与行之间的元素不能完全相同;i=1,2,

,m;j=1,2,

,n,n表示整个边界扫描测试过程中向网络注入向量的次数;
[0018]
(5)、根据测试矩阵m生成多个行测试矩阵mi;
[0019]
将测试矩阵m的第一行作为第一个行测试矩阵m1,将测试矩阵m的第一行和第二行作为第二个行测试矩阵m2,然后以此类推,将测试矩阵m的第一行至第i行生成第i个行测试矩阵mi,最终共计生成m个行测试矩阵;
[0020]
(6)、确定测试矩阵m并计算测试代价;
[0021]
(6.1)、设置行测试代价函数f(mi);
[0022]
f(mi)=1-f1·
f2·
f3[0023]
[0024][0025]
其中,f1表示行测试矩阵mi不发生一阶误判的概率,f2表示行测试矩阵mi不发生二阶误判的概率,f3表示行测试矩阵mi不发生混淆的概率;k
ij
表示网络ni和网络nj发生短路故障是否会造成误判的取值,如果会造成误判,则k
ij
为1,否则为0;k
ijt
表示网络ni、nj、n
t
发生短路是否会造成二阶误判的取值,如果会造成误判,则k
ijt
为1,否则为0;表示网络与之间短路且网络与之间短路时是否会造成混淆的取值,如果会,则为1,否则为0;
[0026]
(6.2)、对测试矩阵m中各元素取值;
[0027]
以min[f(m1)]为目标,对第一个行测试矩阵m1中元素随机取值,从而确定出测试矩阵m中第一行各元素;
[0028]
以min[f(m2)]为目标,保持第二个行测试矩阵m2中第一行元素不变,对第二行元素随机取值,从而确定出测试矩阵m中第二行各元素;
[0029]
然后以此类推,以min[f(mi)]为目标,保持第i个行测试矩阵mi中前i-1行元素不变,对第i行元素随机取值,从而确定出测试矩阵m中第i行各元素;
[0030]
最终完成测试矩阵m中第m行元素取值;
[0031]
(6.3)、计算测试矩阵m的测试代价;
[0032]
将步骤(6.2)获取的测试矩阵m代入至步骤(6.1)中测试代价函数,得到测试矩阵m的测试代价,记为d;
[0033]
(7)、对每一个行测试矩阵构造启发函数;
[0034][0035]
其中,η表示故障种类,cj表示mi中第j行元素中1的个数与0的个数的比值,r
τ
表示第τ种故障发生时影响度,nj表示mi中第j行元素中1的个数;
[0036]
(8)、建立搜索树,搜索具有最小代价的测试矩阵;
[0037]
(8.1)、建立根节点;
[0038]
随机初始化一根节点,记为p0;设置根节点p0的编号为1,设置根节点p0的父亲节点编号为0,设置根节点p0的子节点编号为空,设置根节点p0对应的测试矩阵层数为1;
[0039]
(8.2)、填充根节点内容;
[0040]
(8.2.1)、将整数1到整数2
n-2对应的二进制编码分别转化为1
×
n的矩阵,其中,第l个矩阵记为f
l
,l=1,2,

,2
n-2;
[0041]
(8.2.2)、遍历矩阵f
l
,将矩阵f
l
代入至测试代价函数和启发函数,得到测试代价f(f
l
)和启发函数值h(f
l
),然后计算矩阵f
l
对应的总代价g(f
l
)=f(f
l
)
×
h(f
l
);
[0042]
(8.2.3)、比较总代价g(f
l
)与测试代价d大小,将大于d的g(f
l
)舍去,将剩下的g(f
l
)及对应的f
l
保存在根节点p0中;
[0043]
(8.2.4)、选出g(f
l
)最小对应的f
l
,用f
l
替换行测试矩阵m1,并作为根节点p0的测试矩阵;
[0044]
(8.3)、根节点扩展;
[0045]
为根节点p0建立一个子节点,记为p1;子节点p1编号为当前节点总数加1,设置子节点p1对应的测试矩阵层数为其父亲节点对应的测试矩阵层数加1,完成根节点p0扩展;
[0046]
(8.4)、填充子节点内容;
[0047]
(8.4.1)、建立2
n-2个2
×
n的矩阵f
l
,其第一行为其父亲节点的测试矩阵mf1,第二行分别为整数1到整数2
n-2对应的二进制编码;
[0048]
(8.4.2)、按照步骤(8.2.2)所述方法计算每个矩阵的总代价g(f
l
),再将大于d的g(f
l
)舍去,将大于d的g(f
l
)舍去,将剩下的g(f
l
)及对应的f
l
保存在子节点p1中;
[0049]
(8.4.3)、选出g(f
l
)最小对应的f
l
,再用f
l
替换行测试矩阵m2,并作为子节点p1的测试矩阵;
[0050]
(8.5)、对根节点进行回溯矫正;
[0051]
(8.5.1)、将行测试矩阵m2对应的总代价g(m2)替换行测试矩阵m1对应的总代价g(m1),即利用子节点p1中的ming(f
l
)替换根节点p0中的ming(f
l
);
[0052]
(8.5.2)、比较根节点p0下保存的所有g(f
l
),如果替换后的g(m2)任然是最小值,则进入步骤(8.6);否则,为根节点p0再建立一个子节点,记为p2,然后返回步骤(8.3),并按照步骤(8.3)-(8.5)所述方法继续拓展根节点p0;
[0053]
(8.6)、以子节点p1为根节点,按照步骤(8.3)-(8.4)所述方法扩展子节点p1并填充内容然后按照步骤(8.5)所述方法进行回溯矫正,但保证每一轮回溯至根节点p0;
[0054]
(8.7)、以此类推,当某一个子节点对应的测试矩阵层数为m时,停止搜索树的拓展,并在填充该子节点内容的过程中,记录下总代价最小对应的矩阵,记为行测试矩阵mm,对应的总代价记为g(mm);
[0055]
(8.8)、比较总代价g(mm)与测试代价d的大小,如果d>g(mm),则将测试代价d的更改为g(mm);否则保持测试代价d不变;
[0056]
(8.9)、以测试矩阵层数为m的子节点为起点,按照步骤(8.5)所述进行回溯矫正,在回溯到根节点p0的过程中各个父亲节点的行测试矩阵都没有发生改变,则此时搜索结束,从而输出最终的测试矩阵m。
[0057]
本发明的发明目的是这样实现的:
[0058]
本发明基于启发式搜索的边界扫描测试矩阵生成方法,先统计被测电路板中的网络数量并计算计算任意两网络间的归一化距离,然后通过任意两网络间的归一化距离计算网络间发生短路的概率,从而构造网络之间的短路概率矩阵;接着设置测试矩阵,并根据测试矩阵生成多个行测试矩阵,最后基于测试代价和启发函数值,通过建立搜索树的方式,搜索具有最小代价的测试矩阵。
[0059]
同时,本发明基于启发式搜索的边界扫描测试矩阵生成方法还具有以下有益效果:
[0060]
(1)、使用回溯校正结构的启发式搜索,与遗传算法、粒子群算法、蚁群算法得到的测试矢量相比,能够得到具有更低误判率和混淆率的测试矩阵。
[0061]
(2)、使用结合故障信息定义的启发函数,与无启发式搜索相比,搜索速度更快,运
行效率更高。
[0062]
(3)、在搜索过程中,限定矩阵的行不能为全0和全1,也不能出现两两相同的行,从而避免了大量无效的搜索步骤,缩小了搜索范围,缩短了搜索时间
附图说明
[0063]
图1是本发明基于启发式搜索的边界扫描测试矩阵生成方法流程图;
[0064]
图2是被测电路的示意图;
[0065]
图3是部分搜索树示意图。
具体实施方式
[0066]
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0067]
实施例
[0068]
图1是本发明基于启发式搜索的边界扫描测试矢量生成方法流程图。
[0069]
在本实施例中,如图1所示,本发明一种基于启发式搜索的边界扫描测试矩阵生成方法,包括以下步骤:
[0070]
s1、统计被测电路板中的网络数量;
[0071]
在本实施例中,被测电路的连接关系如图2所示,通过被测电路板的网表文件建立其拓扑模型,再将拓扑模型中每两两相连的芯片引脚作为一组网络,然后统计网络数量,共有7个网络,并记第i组两两相连的芯片引脚构成的网络为ni;
[0072]
s2、计算任意两网络间的归一化距离l
ij

[0073]
利用印制电路板绘制软件导出被测电路板中各个器件的中心位置在电路板上的坐标,再结合芯片手册上给出的引脚间距离,然后确定每两组网络ni与nj间的物理距离lc
ij

[0074]
在所有网络间的物理距离中,找物理距离最大值,记为lc
max
,然后利用如下公式将任意两网络间的物理距离lc
ij
转换为归一化距离l
ij

[0075][0076]
s3、构造网络之间的短路概率矩阵p;
[0077]
设步骤s1中统计的网络数量为m,则短路概率矩阵p是一个m
×
m的对称矩阵,矩阵p中的元素p
ij
表示网络ni与nj之间发生短路的概率;
[0078]
其中,短路概率p
ij
的计算公式为:
[0079][0080]
其中,a0为最邻近两个网络之间的短路概率,a为衰减函数。
[0081]
在本实施例中,假设被测电路中统计出7个网络,以一个7网络电路为例,根据上述步骤,可构造其概率矩阵p如表1所示;
[0082]
网络n1n2n3n4n5n6n7
n110.0617832580.0753186970.0850319650.0505529960.0298178720.08084529n20.06178325810.0728010580.0267056680.0259446530.0648646990.075078608n30.0753186970.07280105810.075230360.0878725540.0722125970.075621341n40.0850319650.0267056680.0752303610.0700437360.0413516370.027647403n50.0505529960.0259446530.0878725540.07004373610.0568547330.035707438n60.0298178720.0648646990.0722125970.0413516370.05685473310.05503421n70.080845290.0750786080.0756213410.0276474030.0357074380.055034211
[0083]
表1s4、构造测试矩阵m;
[0084][0085]
其中,a
ij
的取值为0或1,但必须满足每一行中的元素不能全为0或1,且行与行之间的元素不能完全相同;i=1,2,

,m;j=1,2,

,n,n表示整个边界扫描测试过程中向网络注入向量的次数;
[0086]
在本实施例中,构造出规模大小为7
×
4的测试矩阵m;
[0087]
s5、根据测试矩阵m生成多个行测试矩阵mi;
[0088]
将测试矩阵m的第一行作为第一个行测试矩阵m1,将测试矩阵m的第一行和第二行作为第二个行测试矩阵m2,然后以此类推,将测试矩阵m的第一行至第i行生成第i个行测试矩阵mi,最终共计生成m个行测试矩阵;
[0089]
s6、确定测试矩阵m并计算测试代价;
[0090]
s6.1、设置行测试代价函数f(mi);
[0091]
f(mi)=1-f1·
f2·
f3[0092][0093][0094]
其中,f1表示行测试矩阵mi不发生一阶误判的概率,f2表示行测试矩阵mi不发生二阶误判的概率,f3表示行测试矩阵mi不发生混淆的概率;k
ij
表示网络ni和网络nj发生短路故障是否会造成误判的取值,如果会造成误判,则k
ij
为1,否则为0;k
ijt
表示网络ni、nj、n
t
发生短路是否会造成二阶误判的取值,如果会造成误判,则k
ijt
为1,否则为0;表示网络与之间短路且网络与之间短路时是否会造成混淆的取值,如果会,则为1,否则为0;
[0095]
s6.2、对测试矩阵m中各元素取值;
[0096]
以min[f(m1)]为目标,对第一个行测试矩阵m1中元素随机取值,从而确定出测试矩
阵m中第一行各元素;
[0097]
以min[f(m2)]为目标,保持第二个行测试矩阵m2中第一行元素不变,对第二行元素随机取值,从而确定出测试矩阵m中第二行各元素;
[0098]
然后以此类推,以min[f(mi)]为目标,保持第i个行测试矩阵mi中前i-1行元素不变,对第i行元素随机取值,从而确定出测试矩阵m中第i行各元素;
[0099]
最终完成测试矩阵m中第m行元素取值;
[0100]
在本实施例中,根据步骤s6,最终生成测试矩阵m如下:
[0101][0102]
s6.3、计算测试矩阵m的测试代价;
[0103]
将步骤s6.2获取的测试矩阵m代入至步骤s6.1中测试代价函数,得到测试矩阵m的测试代价,记为d;
[0104]
在本实施例中,将计算得该矩阵代价为0.4064,即d=0.4064。
[0105]
s7、对每一个行测试矩阵构造启发函数;
[0106][0107]
其中,η表示故障种类,cj表示mi中第j行元素中1的个数与0的个数的比值,r
τ
表示第τ种故障发生时影响度,nj表示mi中第j行元素中1的个数;
[0108]
s8、建立搜索树,搜索具有最小代价的测试矩阵;
[0109]
s8.1、建立根节点;
[0110]
随机初始化一根节点,记为p0;设置根节点p0的编号为1,设置根节点p0的父亲节点编号为0,设置根节点p0的子节点编号为空,设置根节点p0对应的测试矩阵层数为1;
[0111]
在本实施例中,根节点编号信号如表2所示:
[0112]
矩阵层数节点编号子节点父节点11 0
[0113]
表2
[0114]
s8.2、填充根节点内容;
[0115]
s8.2.1、将整数1到整数2
n-2对应的二进制编码分别转化为1
×
n的矩阵,其中,第l个矩阵记为f
l
,l=1,2,

,2
n-2;
[0116]
s8.2.2、遍历矩阵f
l
,将矩阵f
l
代入至测试代价函数和启发函数,得到测试代价f(f
l
)和启发函数值h(f
l
),然后计算矩阵f
l
对应的总代价g(f
l
)=f(f
l
)
×
h(f
l
);
[0117]
s8.2.3、比较总代价g(f
l
)与测试代价d大小,将大于d的g(f
l
)舍去,将剩下的g(f
l
)及对应的f
l
保存在根节点p0中;
[0118]
s8.2.4、选出g(f
l
)最小对应的f
l
,用f
l
替换行测试矩阵m1,并作为根节点p0的测试矩阵;
[0119]
在本实施例中,将整数1到14对二进制编码分别转化为1
×
4的矩阵,每一个矩阵的测试代价如表3所示;
[0120][0121]
表3
[0122]
s8.3、根节点扩展;
[0123]
为根节点p0建立一个子节点,记为p1;子节点p1编号为当前节点总数加1,设置子节点p1对应的测试矩阵层数为其父亲节点对应的测试矩阵层数加1,完成根节点p0扩展;
[0124]
s8.4、填充子节点内容;
[0125]
s8.4.1、建立2
n-2个2
×
n的矩阵f
l
,其第一行为其父亲节点的测试矩阵mf1,第二行分别为整数1到整数2
n-2对应的二进制编码;
[0126]
s8.4.2、按照步骤s8.2.2所述方法计算每个矩阵的总代价g(f
l
),再将大于d的g(f
l
)舍去,将大于d的g(f
l
)舍去,将剩下的g(f
l
)及对应的f
l
保存在子节点p1中;
[0127]
s8.4.3、选出g(f
l
)最小对应的f
l
,再用f
l
替换行测试矩阵m2,并作为子节点p1的测试矩阵;
[0128]
通过扩展,得到根节点及其子节点的编号信息如表4所示;
[0129][0130]
表4
[0131]
s8.5、对根节点进行回溯矫正;
[0132]
s8.5.1、将行测试矩阵m2对应的总代价g(m2)替换行测试矩阵m1对应的总代价g(m1),即利用子节点p1中的ming(f
l
)替换根节点p0中的ming(f
l
);
[0133]
s8.5.2、比较根节点p0下保存的所有g(f
l
),如果替换后的g(m2)任然是最小值,则进入步骤s8.6;否则,为根节点p0再建立一个子节点,记为p2,然后返回步骤s8.3,并按照步骤s8.3-s8.5所述方法继续拓展根节点p0;
[0134]
s8.6、以子节点p1为根节点,按照步骤s8.3-s8.4所述方法扩展子节点p1并填充内容然后按照步骤s8.5所述方法进行回溯矫正,但保证每一轮回溯至根节点p0,例如,我们将搜索树的节点从上至下按层划分,那么在回溯过程中,例如第三层的节点需要先回溯至第二层的父节点,再回溯至第一层的根节点;
[0135]
s8.7、以此类推,当某一个子节点对应的测试矩阵层数为m时,停止搜索树的拓展,并在填充该子节点内容的过程中,记录下总代价最小对应的矩阵,记为行测试矩阵mm,对应的总代价记为g(mm);
[0136]
在本实施例中,下面我们以图3所示的搜索树及表5所示的节点编号信息为例进行
详细说明,具体如下:
[0137]
1)、扩展节点1得到节点2;
[0138]
2)、将节点1的代价回溯到节点2,此时节点1的测试矩阵类型不发生改变,故扩展节点2,得到节点3;
[0139]
3)、将节点3的代价回溯到节点2,此时节点2的测试矩阵类型不发生改变,但节点2不为根节点,故将节点3的代价回溯到节点1;
[0140]
4)、节点1的测试矩阵类型发生改变,故重新扩展节点1,得到节点4;
[0141]
5)、将节点4的代价回溯到节点1,此时节点1的测试矩阵类型不发生改变,故扩展节点4,得到节点5;
[0142]
6)、以此类推,当某一个子节点对应的测试矩阵层数为4时,停止搜索树的拓展,并在填充该子节点内容的过程中,记录下总代价最小对应的矩阵,
[0143][0144]
表5
[0145]
s8.8、比较总代价g(mm)与测试代价d的大小,如果d>g(mm),则将测试代价d的更改为g(mm);否则保持测试代价d不变;
[0146]
在本实施例中,以行测试矩阵mm为例,其为层数为7的矩阵,通过计算测试代价为0.0261,且小于代价上界d的值0.4064,故将代价上界修改为0.0261。
[0147][0148]
s8.9、以测试矩阵层数为m的子节点为起点,按照步骤s8.5所述进行回溯矫正,在回溯到根节点p0的过程中各个父亲节点的行测试矩阵都没有发生改变,则此时搜索结束,从而输出最终的测试矩阵m;
[0149]
在本实施例中,以测试矩阵层数为4的子节点为起点,最终搜索输出测试代价为0.0137为测试矩阵m;
[0150][0151]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献