飞针测试机开路测试路径优化方法

文档序号:10551868阅读:575来源:国知局
飞针测试机开路测试路径优化方法
【专利摘要】本发明提供一种飞针测试机开路测试路径优化方法,其特征在于:所述方法包括如下步骤:A、读取并整理路径优化所需要的信息;B、循环对每个网络的点进行配对,然后再将配对合并;B1、建立第一至第十三容器;B2、分别从正面可测试点容器、反面可测试点容器中读取同一个网络的正面点及反面点,分别保存到第一容器、第二容器中;B3、对第一、二容器中的点重新排序;B4、进行开路配对;B7、配对合并,合并后放入第十三容器中;C、开路优化;D、生成测试文件:开路优化完成后,生成新的CONTI.LST文件;本发明比现有的软件在测试时间上可优化30%,测试时间可缩短50%;可广泛应用于印制电路板制造行业及测试行业。
【专利说明】
飞针测试机开路测试路径优化方法
技术领域
[0001] 本发明涉及印制板测试技术领域,尤其涉及一种飞针测试机开路测试路径优化方 法。
【背景技术】
[0002] 印刷电路板(PCB)是集成各种电子元器件的信息载体,在各个领域得到了广泛的 应用。随着技术的不断发展和工业的持续进步,电子产品趋于更轻、更薄、更短、更小,也使 得PCB制造技术朝更高密度发展。在高度自动化的生产现场如何高效得检测高密度PCB以及 降低检测成本,一直是研究人员的难题。目前,我国在生产PCB过程中的测试手段比较单一, 其中飞针测试是一种主要的测试手段,但现有的飞针测试机运行效率低下、操作流程复杂、 错检率也高。为了改善这种情况,发明一种能够生成高效、稳定、精确的PCB检测路径算法就 成为一项具有现实意义的紧迫任务。
[0003] 飞针测试机是一个在制造环境测试PCB(印刷电路板)的系统。它用探针代替车床, 在X-Y机构上装有4-8个由电机驱动的可分别快速移动的探针,利用探针在Z方向的移动同 PCB的焊点进行接触并进行电气测量。测试人员把设计工程师的CAD数据转换成可使用的文 件,这些文件包含了需要测试的焊点的坐标(X,Y)及焊点在PCB中的网络值,由此决定驱动 各个探针的X、Y、Z电机的移动.通常,一块PCB上可能有上千个焊点,如果探针不按一种最优 或较优的路径移动进行测试,可能会耗费数倍的测试时间,延误生产。把旅行商问题即TSP 问题应用到该系统上,很好的解决了探针移动轨迹优化的问题。TSP属于组合数学中一个 古老而又困难的问题。有效的解决它,在可计算理论上具有重要的理论意义,同时也具有重 要的实际应用价值。目前解决此类问题常用的算法有遗传算法、模拟退火算法等。但是他们 并没有很好的根据飞针测试仪的特点来建立模型,因为时间复杂的太高而未达到很好的效 率。

【发明内容】

[0004] 本发明所要解决的技术问题是提供一种飞针测试机开路测试路径优化方法。
[0005] 根据本发明的一种技术方案,一种飞针测试机开路测试路径优化方法,其特征在 于:所述方法包括如下步骤:
[0006] A、读取并整理路径优化所需要的信息:
[0007] B、循环对每个网络的点进行配对,然后再将配对合并:
[0008] B1、B1、建立第一至第十三容器,其中第七、第八、第九、第十、第^^一和第十二容器 保存配对结果,第十三容器用于保存配对合并后的结果;
[0009] B2、分别从正面可测试点容器、反面可测试点容器中读取同一个网络的正面点及 反面点,分别保存到第一容器、第二容器中;
[0010] B3、对第一、二容器中的点重新排序:
[0011 ] B31、B31、分别将第一容器、第二容器中的点按X坐标从小到大排列,再将容器中的 点分成左面点和右面点两部分;将第一容器中的左面点和右面点分别放入第三容器和第四 容器中;将第二容器中的左面点和右面点分别放入第五容器和第六容器中;再分别对第三 容器、第四容器、第五容器、第六容器的点按最近邻法则进行排序;然后将第一容器、第二容 器清空;再将第三容器与第四容器中的点放入第一容器中,第五容器与第六容器的点放入 第二容器中;
[0012] B4、进行开路配对:
[0013] B41、当前网络只有正面点或只有反面点时进行单面配对;当前网络既有正面点也 有反面点时,进行双面点配对;
[0014] B42、当配对的结果为有正、反面各两个点时,保存在第七容器中;当配对的结果为 有正、反面各一个点时,保存在第八容器中;当配对的结果为只有正面点时,保存在第九容 器中;当配对的结果为只有反面点时,保存在第十容器中;当配对的结果为有两个正面点和 一个反面点时,保存在第十一容器中;当配对的结果为有一个正面点和两个反面点时,保存 在第十二容器中;
[0015] B5、当前网络处理完成后清空第一、第二、第三、第四、第五、第六容器,并将反面可 测试点容器中的所有第二容器中的点删除,正面可测试点容器中的所有第一容器中的点删 除;
[0016] B6、判断正、反面可测试点容器是否都为空,若不为空,重复8233、84、85步骤;若 为空执彳丁 B7;
[0017] B7、配对合并,合并后放入第十三容器中;
[0018] C、开路优化:
[0019] D、生成测试文件:开路优化完成后,生成新的CONTI. LST文件。
[0020] 根据本发明所述的飞针测试机开路测试路径优化方法的一个优选方案,开路优化 按以下步骤进行:
[0021] C1、初始化链表,读取第十三容器中的第一行的信息,并对链表第一个结点进行初 始化,初始化完成后在第十三容器中删除该行;
[0022] C2、定义一个int型变量(整数型变量)min用于保存第十三容器中的行到当前链表 最后行的距离最小值,并定义初始值为零;再定义一个int型变量index,用于保存距离等于 min的行在第十三容器中所对应的位置;
[0023] C3将min赋值为0,index赋值为1;
[0024] C4、继续读取第十三容器中的下一行信息,计算它与链表中当前行的距离,若当 前距离小于min则将当前距离赋值给min,并将当前位置索引号赋值给index;若当前距离大 于min则计算下一个节点;
[0025] C5、判断是否遍历完第十三容器,若遍历完,则将index所指的第十三容器中的行 链接到链表的末尾,并删除index所指的第十三容器中的行,然后执行C6;若没遍历完则继 续执行C4;
[0026] C6、判断第十三容器是否为空,若为空,表示链表已排好序,最终路径已生成,执行 D;若不为空表示路径还没完全生成,重复执行C2、C3、C4;
[0027]根据本发明的所述的飞针测试机开路测试路径优化方法的一个优选方案,步骤 B41中,当网络只有正面点时,按以下方法进行单面点配对:
[0028] B411、定义变量i为第一容器的索引,初始值为0即指向第一容器的第一个点,从第 一容器的第一个点开始依次向后,当i为〇或者i为偶数的时候,配对情况为第一容器中第i 结点和第第一容器中第i+1结点,当i>〇并且i为奇数的时候,配对情况为第一容器中第i+1 结点和第一容器中第i结点;将配对放入第九容器;当索引指向第一容器中倒数第二个点时 结束配对,配对完成。
[0029]同理,当网络只有反面点时反面测试点配对方法同正面测试点配对方法,不同之 处在于定义变量i为第二容器的索引,初始值为〇即指向第二容器的第一个点,配对结果放 入第十容器中。
[0030] 根据本发明的所述的飞针测试机开路测试路径优化方法的一个优选方案,步骤 B41中,当前网络既有正面点也有反面点时,进行双面点配对;方法如下:
[0031] B412、当正面点数大于1,反面点数为1时,配对方法为:将反面点作为"公共点",分 别从第三容器、第四容器中取出第一个点,与反面点进行配对,结果放入第十一容器中;重 复以上步骤直到第三容器,第四容器中的最后一个点;若其中一个容器比另一个容器多一 个点,则将多一个点的那个容器的最后一个点与反面点进行配对,配对结果放入第八容器 中;
[0032] B413、当反面点数大于1,正面点数为1时,配对方法为:将正面点作为"公共点",分 别从第五、第六容器中取出第一个点,与正面点配对,结果放入第十二容器中;重复以上步 骤直到第五容器,第六容器中的最后一个点;若其中一个容器比另一个容器多一个点,则将 多一个点的那个容器的最后一个点与正面点进行配对,配对结果放入第八容器中;
[0033] B414、当正、反面的点数都大于1,并且.
,配对方法为:
[0034]①、定义变量j为第二、三、四容器的索引,初始值为0即指向第二、三、四容器的第 一个占.
[0035]②、当j <反面点数_2并且j为偶数的时候,按照第三容器第j点、第四容器第j点、 第二容器第j点、第二容器第j+1点的顺序进行配对,配对为两个正面点和两个反面点,放入 第七容器中;
[0036]当j <反面点数-2并且j为奇数的时候,按照第三容器第j点、第四容器第j点、第二 容器第j+1点、第二容器第j点的顺序进行配对,配对为两个正面点和两个反面点,放入第七 容器中;
[0037]当」>反面点数-2时,按照第三容器第j点、第四容器第j点、第二容器最后一个点 的顺序进行配对,配对结果为两个正面点和一个反面点,放入第十一容器中。
[0038] 重复上述步骤直至
[0039] ③、当.
也就是最后一次配对时,如果正面点数为奇数,配对结果为 第四容器的最后一个点、第二容器的最后一个点,即一个正面点和一个反面点,保存到第 八容器中;如果正面点数为偶数,配对结果为第三容器的最后一个点、第四容器的最后一个 点、第二容器的最后一个点,即两个正面点和一个反面点,放入第十一容器中。
[0040] B415、进行双面点配对时,当正反面点数都大于1,并且当
时,配对方法如下:
[0041 ]①定义变量k为第一、五、六容器的索引,初始值为0即指向第一、五、六容器的第一 个占.
[0042] ②、当k彡正面点数-2,并且k为偶数的时候,按照第一容器第k点、第一容器第k+1、 第五容器第k点、第六容器第k点的顺序进行配对,配对为配对为两个正面点和两个反面点, 放入第七容器中;
[0043] 当正面点数-2并且k为奇数的时候,按照第一容器第k+1点、第一容器第k点、第 五容器第k点、第六容器第k点的顺序进行配对,配对为配对为两个正面点和两个反面点,放 入第七容器中;
[0044] 当k>E面点数-2时,按照第一容器最后一个点、第五容器第k点、第六容器第k点 的顺序进行配对,配对为两个正面点和一个反面点,放入第十一容器中;
[0045] 重复上述步骤直到
[0046] ③、当
,也就是最后一次配对时,如果反面点数为奇数,将第一容 器最后一个点、第六容器最后一个点,配对为一个正面点和一个反面点,反应保存到第八容 器中;如果反面点数为偶数,将第一容器最后一个点、第五容器最后一个点、第六容器最后 一个点,配对为两个正面点和一个反面点,放入第十一容器中;
[0047] B416、当网络只有一个正面点和一个反面点时,则将这两个点配对放入第八容器 中。
[0048]根据本发明的所述的飞针测试机开路测试路径优化方法的一个优选方案,步骤 B7按方法如下进行配对合并:
[0049] B71、取出第八容器中的两个配对合并成行保存至第十三容器中;
[0050] B72、取出第七容器中的一个配对成行保存至第十三容器中;
[00511 B73、判断第九容器是否为空,当第九容器不为空时判断第十容器是否为空,若第 十容器也不为空,则分别从第九容器、第十容器中取出一配对合并成行后放入第十三容器 中;
[0052] B74、若第九容器不为空,第十容器为空,则将第九容器中配对取出,合成一行后放 入第十三容器中;
[0053] B75、若第九容器为空,第十容器不为空,则将第十容器中的配对取出,合成一行后 放入第十三容器中;
[0054] B76、取出第^^一容器中的配对成行后保存至第十三容器中;
[0055] B77、取出第十二容器中的配对成行后保存至第十三容器中;
[0056] B78、重复 871、872、873、874、875、876、877,直到合并完成。
[0057] 本发明所述的印制电路板测试路径优化方法的有益效果是:本发明先从待优化 conti . 1st文件中提取所有有效点,并按照"网络号正反面标志x坐标y坐标"的格式定义点 信息,在满足飞针测试机运行规则的前提下,对所有点进行配对,然后重新生成路径;经过 实际大量的测试,结果表明比现有的软件在测试时间上可优化30%,测试时间可缩短50% ; 优化的conti. 1st文件行数越多,其优化结果越明显。本发明可广泛应用于印制电路板制造 行业及测试行业。
【附图说明】
[0058] 以下将结合附图对本发明的实施例作进一步的说明。
[0059] 图1是飞针测试机开路测试路径优化方法流程图。
[0060] 图2是conti ? 1st文件格式示意图。
[0061]图3是本发明的读取conti . 1st文件并整理路径优化所需信息流程图。
[0062]图4是本发明循环对每个网络进行配对,并合并配对流程图。
[0063]图5是本发明开路配对流程图。
[0064] 图6是本发明中步骤B414的配对函数流程图。
[0065] 图7是本发明当中配对合并流程图。
[0066]图8是本发明中开路优化流程图。 图9是具体实施例中双面点配对的conti . 1st文件格式示意图。 图10是具体实施例中合并配对点的conti . 1st文件格式示意图。
【具体实施方式】
[0067] 参见图1,一种飞针测试机开路测试路径优化方法,所述方法包括如下步骤:
[0068] A、读取并整理路径优化所需要的信息,具体操作流程可参见图3所示,在具体实施 例中可按步骤A1~A6进行:
[0069] A1、逐行读取需要进行优化的conti. 1st文件,提取每行中的正、反面有效点,并将 其放入正面可测试点容器以及反面可测试点容器中;
[0070] 飞针测试机通过读取conti. 1st文件作为输入,我们对原有的文件进行优化,生成 新的conti ? 1st文件,conti为文件名中的关键字,文件名可命名为continew等,? 1st为文件 的格式名。可以通过对比原有conti . 1st文件和新的conti . 1st文件的总移动距离来对比优 化效果。
[0071] conti. 1st文件的文件每一行都不会超过68个字符,对于每个字符位都有严格的 定义,其中包含大量信息,包括文件行数、网络号,点的类型信息,点的坐标等conti. 1st文 件格式参见图2。
[0072] 文件的第一行为注释,第二行开始为数据行,每行总字符数为68,从第二行开始到 最后一行格式如下。
[0073] Columns 1-5、18-22、35-39、52-56 为网络号;
[0074] Columns 6、23、40、57为点的类型,〇代表正面点, 8代表反面点,11代表孔;
[0075] Columns 7-11、24-28、41-45、58-62为点的1轴坐标;
[0076] Columns 13-17、29-33、47-51、64-68为点的7轴坐标;
[0077]由于PCB板大多为多层板,所以孔是必不可少的。我们这里对孔的处理方法为,若 孔在Columns 6、23的位置上,则将其放在正面可测试点容器中,若孔在Columns 40、57的位 置上,则将其放在反面可测试点容器中。
[0078] A2、去除正面可测试点容器以及反面可测试点容器中的重复点;
[0079]因为在读原conti. 1st文件时,原文件中包含配对关系,所以会出现重复的点,所 以要在读取conti . 1st文件后去除重复点。
[0080] B、循环对每个网络的点进行配对,然后再将配对合并;具体操作流程参见图4所 不。
[0081] PCB板的表面上分布了 N个点,根据导通关系,我们可以将这些点分为多个网络,每 个网络内部的任意两点之间都应该导通;任意两个不同网络之间都应该绝缘。一个网络中 的点可以只出现在正面或者反面,也可以同时出现在正、反面上。
[0082] B1、建立第一至第十三容器;第七、第八、第九、第十、第^^一和第十二容器用于保 存配对结果,第十三容器用于保存配对合并后的结果;
[0083]即建立第七容器保存两正两反的配对结果,建立第八容器保存一正一反的配对结 果,建立第九容器保存两正零反的配对结果,建立第十容器保存零正两反的配对结果,建立 第十一容器保存两正一反的配对结果,建立第十二容器保存一正两反的配对结果。建立第 十三容器用于保存配对合并后结果即conti . 1st文件的行。
[0084] B2、分别从正面可测试点容器、反面可测试点容器中读取同一个网络的正面点及 反面点,分别保存到第一容器、第二容器中;
[0085]所有正面点保存在正面可测试点容器中,同理所有反面点保存在反面可测试点容 器中,若被测试的PCB板为单面板,则正面可测试点容器或者反面可测试点容器为空。第一 容器保存当前所处理的网络的正面点,第二容器保存当前所处理网络的反面点。若当前网 络为单面网络则第一容器或第二容器为空。
[0086] B3、对于第一、二容器中的点重新排序:
[0087] B31、分别将第一容器、第二容器中的点按x坐标从小到大排列,然后以x坐标居中 的点为界,再将容器中的点分成左面点和右面点两部分,左面点的x坐标小于中点的x坐标, 右面点的X坐标大于中点的X坐标;将第一容器中的左面点和右面点分别放入第三容器、第 四容器中;将第二容器中的左面点和右面点分别放入第五容器、第六容器中;再分别对第三 容器、第四容器、第五容器、第六容器的点按最近邻法则进行排序;然后将第一容器、第二容 器清空;再将第三容器与第四容器中的点放入第一容器中,第五容器、第六容器的点放入第 二容器中;
[0088] 将正面一个网络的正面点以及反面点分成左、右两部分,是为了在后面配对时将 左面点分配给左面的测试针,将右面点分配给右面的测试针,这样使得左面测试针的x坐标 始终小于右面测试针的X坐标,从而防止了两针在移动时出现相撞。
[0089] 对第三、四、五、六容器中的点重新进行排序时按照最近邻法则进行排序。起始点 分别为各个容器中的第一个点,即x坐标最小的点,然后根据公式d=max( |xi_xi+i|,|yi-yi+i ),(Xi,yi)为当前点的坐标,(Xi+i,yi+i)为其余非有序点的坐标,计算其余所有非有序点到 当前点的距离,取其中距离d最小的点排在当前点的后面,然后将该点设置为当前点,重复 上面的操作。
[0090] 将第一容器、第二容器清空;再将第三容器与第四容器中的点放入第一容器中,采 用先将第三容器的一个点放入第一容器中,再将第四容器的一个点放入第一容器中,依次 循环,直到第三容器、第四容器的点都放入了第一容器。采用相同方法将第五容器、第六容 器的点放入第二容器中;
[0091] B4、进行开路配对,流程图参见图5;
[0092] B41、当前网络只有正面点或只有反面点时进行单面配对;当前网络既有正面点也 有反面点时,进行双面点配对;
[0093] 具体可以通过如下方法判断:如果第一容器的点数为0,说明只有反面点;如果第 二容器的点数为〇,说明只有正面点;
[0094] B42、当配对的结果为有正、反面各两个点时,保存在第七容器中;当配对的结果为 有正、反面各一个点时,保存在第八容器中;当配对的结果为只有正面点时,保存在第九容 器中;当配对的结果为只有反面点时,保存在第十容器中;当配对的结果为有两个正面点和 一个反面点时,保存在第十一容器中;当配对的结果为有一个正面点和两个反面点时,保存 在第十二容器中;
[0095] 在具体实施例中,步骤B41中进行单面点配对时,可按步骤B411~B416进行:
[0096] B411、定义变量i为第一容器的索引,初始值为0即指向第一容器的第一个点,从第 一容器的第一个点开始依次向后,当i为〇或者i为偶数的时候,配对情况为第一容器中第i 结点和第第一容器中第i+1结点,当i>〇并且i为奇数的时候,配对情况为第一容器中第i+1 结点和第一容器中第i结点;将配对放入第九容器;当索引指向第一容器中倒数第二个点时 结束配对,配对完成。
[0097]同理,当网络只有反面点时反面测试点配对方法同正面测试点配对方法,不同之 处在于定义变量i为第二容器的索引,初始值为〇即指向第二容器的第一个点,配对结果放 入第十容器中。
[0098]在具体实施中,当前网络既有正面点也有反面点时,进行双面点配对;方法如下: [0099] B412、当正面点数大于1,反面点数为1时,配对方法为:将反面点作为"公共点",分 别从第三容器、第四容器中取出第一个点,与反面点进行配对,结果放入第十一容器中;重 复以上步骤直到第三容器,第四容器中的最后一个点;若其中一个容器比另一个容器多一 个点,则将多一个点的那个容器的最后一个点与反面点进行配对,配对结果放入第八容器 中;
[0100] B413、当反面点数大于1,正面点数为1时,配对方法为:将正面点作为"公共点",分 别从第五、第六容器中取出第一个点,与正面点配对,结果放入第十二容器中;重复以上步 骤直到第五容器,第六容器中的最后一个点;若其中一个容器比另一个容器多一个点,则将 多一个点的那个容器的最后一个点与正面点进行配对,配对结果放入第八容器中;
[0101] B414、当正、反面的点数都大于1,并且-
反面点数-1时,配对方法为:
[0102]①、定义变量j为第二、三、四容器的索引,初始值为0即指向第二、三、四容器的第 一个占.
[0103] ②、当j <反面点数-2并且j为偶数的时候,按照第三容器第j点、第四容器第j点、 第二容器第j点、第二容器第j+1点的顺序进行配对,配对为两个正面点和两个反面点,放入 第七容器中;
[0104] 当j <反面点数-2并且j为奇数的时候,按照第三容器第j点、第四容器第j点、第二 容器第j+1点、第二容器第j点的顺序进行配对,配对为两个正面点和两个反面点,放入第七 容器中;
[0105] 当」>反面点数-2时,按照第三容器第j点、第四容器第j点、第二容器最后一个点 的顺序进行配对,配对结果为两个正面点和一个反面点,放入第十一容器中。
[0106] 重复上述步骤直到/=数-1:;
[0107] ③、当= 也就是最后一次配对时,如果正面点数为奇数,配对结果为 2 第四容器的最后一个点、第二容器的最后一个点,即一个正面点和一个反面点,保存到第八 容器中;如果正面点数为偶数,配对结果为第三容器的最后一个点、第四容器的最后一个 点、第二容器的最后一个点,即两个正面点和一个反面点,放入第十一容器中。
[0108] B415、进行双面点配对时,当正反面点数都大于1,并且当正面点数 <反面点数-1 2 时,配对方法如下:
[0109] ①定义变量k为第一、五、六容器的索引,初始值为0即指向第一、五、六容器的第一 个占.
[0110] ②、当k彡正面点数-2,并且k为偶数的时候,按照第一容器第k点、第一容器第k+1、 第五容器第k点、第六容器第k点的顺序进行配对,配对为配对为两个正面点和两个反面点, 放入第七容器中;
[0111] 当正面点数-2并且k为奇数的时候,按照第一容器第k+1点、第一容器第k点、第 五容器第k点、第六容器第k点的顺序进行配对,配对为配对为两个正面点和两个反面点,放 入第七容器中;
[0112] 当k>E面点数-2时,按照第一容器最后一个点、第五容器第k点、第六容器第k点 的顺序进行配对,配对为两个正面点和一个反面点,放入第十一容器中;
[0113] 重复上述步骤直到t =反面点数-1; 2
[0114] ③、当也就是最后一次配对时,如果反面点数为奇数,将第一容 器最后一个点、第六容器最后一个点,配对为一个正面点和一个反面点,反应保存到第八容 器中;如果反面点数为偶数,将第一容器最后一个点、第五容器最后一个点、第六容器最后 一个点,配对为两个正面点和一个反面点,放入第十一容器中;
[0115] 其中,^^>反面点数-1条件是依据开路测试的原理而设计的。因为开路测 试的任务是依次检测每个网络中的点是否都联通,换句话说每个网络中的任意两点都应该 是导通的,同一个网络中不应该存在开路情况。而飞针测试机的四根针一次能检测6组导通 关系。因此依照开路测试的原理,为了使每个网络的配对尽可能地少,当所测PCB板正反两 面都有测试点时,若^^<反面点数-1时,假设正面点数为12,反面点数为6,那么按 照B413的方法配对形式为图9所示。
[0116]
[0117] 从图中可以看出,对于反面点是将其串联起来形成一串,而正面点是按x坐标的大 小,将x坐标小的点放在第一根针位置上,x坐标大的点放在第二根针位置上。利用飞针测试 机的四根测试针一次能够检测6组导通关系的原理。将反面点串联,若反面点导通,若与之 连接的正面点也导通,则整个网络的所有点都导通。
[0118] 同理,设计^5^<反面点数-1,为了将正面点串联起来,将反面点x坐标小的 2 点放在第三根针位置上,将反面点x坐标大的点放在第四根针位置上,若正面的点全部导 通,则若反面的所有点都与正面的点导通则整个网络导通。
[0119] B416、当网络只有一个正面点和一个反面点时,则将这两个点配对放入第八容器 中。
[0120] B5、当前网络处理完成后清空第一、第二、第三、第四、第五、第六容器,并将反面可 测试点容器中的所有第二容器中的点删除,正面可测试点容器中的所有第一容器中的点删 除;
[0121]第一、二、三、四、五、六容器保存当前进行处理的网络的信息,当前网络处理完成 后,需要清空它们保存的信息,以便处理新的网络时使用。
[0122] 第二容器保存当前进行配对网络的反面点,反面可测试点容器内保存所有反面 点,通过反面可测试点容器是否为空来判定所有双面网络以及反面网络已经配对完成,若 反面可测试点容器为空则处理剩下的正面网络,因此每当配对完双面网络或者反面网络后 都要对相应的反面可测试点容器内的点进行清除。同理每次配对完双面网络或者正面网络 后也要对相应的正面可测试点容器内的点进行清除。
[0123] B6、判断正、反面可测试点容器是否都为空,若不为空,重复82、83、84、85步骤;若 为空执彳丁 B7;
[0124] B7、为了进一步缩短行数,进行配对合并,可将第八容器中的配对相互合并,将第 九容器与第十容器的配对合并,合并后放入第十三容器中。具体流程参见图7;
[0125] 在配对完成后下一步操作是合并配对点。因为第九容器中保存的配对只有正面两 个点,第十容器中保存的配对只有反面两个点,所以将第九容器与第十容器合并为一行,而 第八容器中的配对为一个正面点和一个反面点,将第八容器中的点合并为一行。将以上合 并的行都保存至第十三容器中。为形象的说明配对原理,下面示例说明。conti . 1st文件数 据行由四个点的信息组成,左边两个为PCB板正面点,右边两个为PCB板反面的点,若某个位 置为空则为〇h 0y 0表示该位置没有测试点,飞针测试机对应该位置的针脚此时保持不动, cont i.lst文件如图10所示。
[0126]
[0127] 第八容器中的配对为一个正面点、一个反面点,为使得文件行数最少应该将第八 容器中的配对互相合并,使其填满一行不留空位,合并时应注意为防止出现撞针,从左至右 第一个点的x坐标应小于第二个点的x坐标,第三个点的x坐标应小于第四个点的x坐标。假 设第八容器中有两个配对64c lllly 1111 64s 2222y 2222与54c 1112y 1112 54s 2223y 2223那么合并成一行后应为:
[0128] 64c lllly 1111 54c 1112y 1112 64s 2222y 2222 54s 2223y 2223同理第九第 十容器中的配对合并也要防止出现撞针。
[0129]在具体实施例中,可按如下B71~B78方法进行配对合并:
[0130] B71、取出第八容器中的两个配对合并成行保存至第十三容器中。
[0131] B72、取出第七容器中的一个配对成行保存至第十三容器中。
[0132] B73、判断第九容器是否为空,当第九容器不为空时判断第十容器是否为空,若第 十容器也不为空,则分别从第九容器、第十容器中取出一配对合并成行后放入第十三容器 中。
[0133] B74、若第九容器不为空,第十容器为空,则将第九容器中配对取出,合成一行后放 入第十三容器中。
[0134] B75、若第九容器为空,第十容器不为空,则将第十容器中的配对取出,合成一行 后放入第十三容器中。
[0135] B76、取出第十一容器中的配对成行后保存至第十三容器中。
[0136] B77、取出第十二容器中的配对成行后保存至第十三容器中。
[0137] B78、重复 871、872、873、874、875、876、877直到合并完成;
[0138] C、开路优化,具体流程见图8。在具体实施例中可按步骤C1~C6进行:
[0139] C1、初始化链表,读取第十三容器中的第一行的信息,并对链表第一个结点进行初 始化,初始化完成后在第十三容器中删除该行;
[0140] C2、定义一个整数型变量min用于保存第十三容器中的行到当前链表最后行的距 离最小值,并定义初始值为零;再定义一个整数型变量index,用于保存距离等于min的行在 第十三容器中所对应的位置;
[0141] C3将min赋值为0,index赋值为1;
[0142] C4、继续读取第十三容器中的下一行信息,计算它与链表中当前行的距离,若当前 距离小于min则将当前距离赋值给min,并将当前位置索引号赋值给index;若当前距离大于 min则计算下一个节点;
[0143] C5、判断是否遍历完第十三容器,若遍历完,则将index所指的第十三容器中的行 链接到链表的末尾,并删除index所指的第十三容器中的行,然后执行C6;若没遍历完则继 续执行C4;
[0144] C6、判断第十三容器是否为空,若为空,表示链表已排好序,最终路径已生成,执行 步骤D;若不为空,表示路径还没完全生成,返回执行步骤C3;
[0145] D、生成文件:开路优化完成后,生成新的CONTI. LST文件。
[0146] 飞针测试机可以直接读取CONTI.LST文件进行测试。该文件的格式如图2所示。
[0147] 其中,步骤C4计算该行信息在每个节点处的移动距离采用如下方法:
[0148] C41、计算相邻两行之间的路径距离:例如:
[0149] 用(XlW)(j = l,2,3,4)表示第i行,从左向右第j个点的坐标,山表示第i行第i+1 行从左向右第j个点之间的距离,dj按如下公式计算:
[0150] df = max(| */ |,| y{ -y{+l |)
[0151] max()为取最大值函数,需要注意的是当结点坐标为零时代表当前此针悬空,不是 回到原点;
[0152] 即dj取K-d |j/U两者之中的最大值。
[0153] 定义第i行与第i+1行的移动最终路径长度如下:
[0154] D( i , i+1) =max(di ,d2 ,d3 ,d4)
[0155] 则相邻两行的对应网络的距离计算如下:
[0156] 第一针移动距离:劣=niax(| x,1 -<+1 |,| .v,1 - .1。丨)
[0157] 第二针移动距离:尖=max(| -x,2+11,|_v,2 -.v,2a |)
[0158] 第三针移动距离:4 = max(| x,3 - x,3+1 |, | -兄3fl |)
[0159] 第四针移动距离:= max(| x,4 -.xfj - | 兄+ - v,4+l |)
[0160]最后,相邻两行的移动距离为四根针移动距离的最大值:
[0161] D( i , i+1) =max(di ,d2 ,d3 ,d4)
[0162] C42、当链表中的n行已经排好顺序,当前要插入的行为第n+1行时,则逐行计算剩 余第i行未排序的所有行到已排序的第n行的路径长度Ddm+l),选出距离已排序序列第n 行路径长度最短的行,作为已排序序列的第n+1行,n,n+l行之间的最短移动距离:
[0163] minDi(n,n+l)=min(max(di,d2,d3,d4))
[0164] 当找到距离已排序结点最后一个节点的距离最近的结点后,将其插入到已排序结 点的最后面,然后再从第十三容器中读取新一行信息,重复上述操作,直至结束。
[0165] 飞针测试有4根针,正反面各两针,每次测试4个不同点,即文件中的一行,且可以 测出4个点之间的六组导通关系。本方法需要正确读取待优化conti. 1st文件的信息,生成 可以用于4针联动飞针测试机的测试文件,且要求走针路径尽量短。
[0166] 本方法可以描述成如下的优化模型:
[0167] (1)变量定义
[0168] 设经过配对后生成的行为Wl其中i G (1,m),表示经过配对后共生成m行。
[0169] (2)解空间
[0170] 解空间S为测试路径,解可以表示为{W1,W2, . . .,wm},W1,W2, . . .,^是所有行的一个 排列,表明从文件的第一行W1开始,即四根针从各自的起始位置开始,依次经过W1,W2, ..., Wm-1,最后到达Wm。其中Wi与Wi+1之间的距离为D(i,i + l)。
[0171] (3)目标函数
[0172] 需要在所有行的所有排列中找到一个排列,使得总路径距离最短
[0173] 令(11 = 0(14+1),8卩(11为第1行到第1+1行的距离,那么路径的总距离最短为: m
[0174] i=l
[0175] 求D的值。
[0176] (4)约束条件
[0177] 四根针应该测试完所有的导通关系,不能漏掉,且确保所有的点都检测到。将所有 的行用贪婪算法求解,显然求出的解只是众多排列组合可能中的一种,是局部最优解。
[0178] 根据以上的描述,当行数较小的时候,可以验证该结果是否为全局最优解,但是当 行数很多时,理论上当行数超过20行用普通计算机求最优解需要一年时间。所以该问题是 一个NP完全问题,当数据量超过一定规模时,以当今技术手段无法找到全局最优解。所以, 在实际的工程应用中,我们只能找到局部最优解。根据针对PCB飞针测试路径优化来讲,我 们主要从两个方面进行优化。一是尽量减少文件的行数,即减少分针移动的次数。二是在行 数尽量少的前提下尽量是总的路径距离减少。
[0179] 本发明采用的配对方式,先将各个网络根据正反面的点数,及奇偶情况分类讨论, 确保了对每个网络配对时不会出现漏配的情况,而且保证了了不会装针,而且行数少。同时 配对后的合并操作进一步减少了文件的行数。
[0180] 使用本发明描述的优化算法对Conti (396超长板)、Conti (2503拼版)和Conti (10035常规)3个1st文件进行开路优化,并同深圳飞翔公司采用的现有测试软件生成的文 件进行对比,仿真结果见表1。
[0181]表1优化算法的仿真结果
[0183]因为PCB板的走线和构造特别复杂,特别是对于多层PCB,还要考虑多针的并行工 作,优化起来很有难度。在实际的飞针测试中,发现对于拼版,超长版的优化结果相对于常 规板来讲要好很多,因为拼版,超长版的行数一般为常规板的几倍或者几十倍,所以优化 效果更加明显。使用本专利提出的开路优化算法对开路测试文件进行优化后,探针所走的 最大路径长度相比于原文件,有明显的优化。
【主权项】
1. 一种飞针测试机开路测试路径优化方法,其特征在于:所述方法包括如下步骤: A、 读取并整理路径优化所需要的信息; B、 循环对每个网络的点进行配对,然后再将配对合并: B1、建立第一至第十=容器,其中,第屯、第八、第九、第十、第十一和第十二容器用于保 存配对结果,第十=容器用于保存配对合并后的结果; B2、分别从正面可测试点容器、反面可测试点容器中读取同一个网络的正面点及反面 点,分别保存到第一容器、第二容器中; B3、对第一、二容器中的点重新排序: B31、分别将第一容器、第二容器中的点按X坐标从小到大排列,再将容器中的点分成左 面点和右面点两部分;将第一容器中的左面点和右面点分别放入第=容器和第四容器中; 将第二容器中的左面点和右面点分别放入第五容器和第六容器中;再分别对第=容器、第 四容器、第五容器、第六容器的点按最近邻法则进行排序;然后将第一容器、第二容器清空; 再将第=容器与第四容器中的点放入第一容器中,第五容器与第六容器的点放入第二容器 中; B4、进行开路配对: B41、当前网络只有正面点或只有反面点时进行单面配对;当前网络既有正面点也有反 面点时,进行双面点配对; B42、当配对的结果为有正、反面各两个点时,保存在第屯容器中;当配对的结果为有 正、反面各一个点时,保存在第八容器中;当配对的结果为只有正面点时,保存在第九容器 中;当配对的结果为只有反面点时,保存在第十容器中;当配对的结果为有两个正面点和一 个反面点时,保存在第十一容器中;当配对的结果为有一个正面点和两个反面点时,保存在 第十二容器中; B5、当前网络处理完成后清空第一、第二、第=、第四、第五、第六容器,并将反面可测试 点容器中的所有第二容器中的点删除,正面可测试点容器中的所有第一容器中的点删除; B6、判断正、反面可测试点容器是否都为空,若不为空,重复日2、日3、日4、日5步骤;若为空, 执行B7; B7、配对合并,合并后放入第十=容器中; C、 开路优化; D、 生成测试文件:开路优化完成后,生成新的CONTI丄ST文件。2. 根据权利要求1所述的飞针测试机开路测试路径优化方法,其特征在于:开路优化按 W下步骤进行: CU初始化链表,读取第十=容器中的第一行的信息,并对链表第一个结点进行初始 化,初始化完成后在第十=容器中删除该行; C2、定义一个整数型变量min用于保存第十=容器中的行到当前链表最后行的距离最 小值,并定义初始值为零;再定义一个整数型变量index,用于保存距离等于min的行在第十 =容器中所对应的位置; C3将min赋值为0,index赋值为1; C4、继续读取第十=容器中的下一行信息,计算它与链表中当前行的距离,若当前距离 小于min则将当前距离赋值给min,并将当前位置索引号赋值给index;若当前距离大于min 则计算下一个节点; C5、判断是否遍历完第十S容器,若遍历完,则将index所指的第十S容器中的行链接 到链表的末尾,并删除index所指的第十=容器中的行,然后执行C6;若没遍历完,则继续执 行步骤C4; C6、判断第十=容器是否为空,若为空,执行步骤D;若不为空,返回执行步骤C3。3. 根据权利要求1或2所述的飞针测试机开路测试路径优化方法,其特征在于:步骤B41 中,当网络只有正面点时,按W下方法进行单面点配对: B411、定义变量i为第一容器的索引,初始值为O即指向第一容器的第一个点,从第一容 器的第一个点开始依次向后,当i为O或者i为偶数的时候,配对情况为第一容器中第i结点 和第一容器中第i+1结点,当i〉〇并且i为奇数的时候,配对情况为第一容器中第i + 1结点和 第一容器中第i结点;将配对放入第九容器;当索引指向第一容器中倒数第二个点时结束配 对,配对完成。4. 根据权利要求3所述的飞针测试机开路测试路径优化方法,其特征在于:步骤B41中, 当前网络既有正面点也有反面点时,按W下方法进行双面点配对: B412、当正面点数大于1,反面点数为1时,配对方法为:将反面点作为"公共点",分别从 第=容器、第四容器中取出第一个点,与反面点进行配对,结果放入第十一容器中;重复W 上步骤直到第=容器,第四容器中的最后一个点;若其中一个容器比另一个容器多一个点, 则将多一个点的那个容器的最后一个点与反面点进行配对,配对结果放入第八容器中; B413、当反面点数大于1,正面点数为1时,配对方法为:将正面点作为"公共点",分别从 第五、第六容器中取出第一个点,与正面点配对,结果放入第十二容器中;重复W上步骤直 到第五容器,第六容器中的最后一个点;若其中一个容器比另一个容器多一个点,则将多一 个点的那个容器的最后一个点与正面点进行配对,配对结果放入第八容器中; B414、当正、反面的点数都大于1,并且面点数时,配对方法为: ① 、定义变量j为第二、S、四容器的索引,初始值为O即指向第二、S、四容器的第一个 占 . ② 、当j《反面点数-2并且j为偶数的时候,按照第S容器第j点、第四容器第j点、第二 容器第j点、第二容器第j+1点的顺序进行配对,配对为两个正面点和两个反面点,放入第屯 容器中; 当j《反面点数-2并且j为奇数的时候,按照第=容器第j点、第四容器第j点、第二容器 第j+1点、第二容器第j点的顺序进行配对,配对为两个正面点和两个反面点,放入第屯容器 中; 当占'>反面点数-2时,按照第S容器第j点、第四容器第j点、第二容器最后一个点的顺 序进行配对,配对结果为两个正面点和一个反面点,放入第十一容器中。 重复上述步骤,直到i = E面严-1; ③ 、当J= -1,也就是最后一次配对时,如果正面点数为奇数,配对结果为第四 容器的最后一个点、第二容器的最后一个点,即一个正面点和一个反面点,保存到第八容器 中;如果正面点数为偶数,配对结果为第=容器的最后一个点、第四容器的最后一个点、第 二容器的最后一个点,即两个正面点和一个反面点,放入第十一容器中。 B415、当正、反面点数都大于1,并且当面点数-1时,配对方法如下: 2 ① 定义变量k为第一、五、六容器的索引,初始值为O即指向第一、五、六容器的第一个 点' ; ② 、当k《正面点数-2,并且k为偶数的时候,按照第一容器第k点、第一容器第k+1、第五 容器第k点、第六容器第k点的顺序进行配对,配对为配对为两个正面点和两个反面点,放入 第屯容器中; 当k《正面点数-2并且k为奇数的时候,按照第一容器第k+1点、第一容器第k点、第五容 器第k点、第六容器第k点的顺序进行配对,配对为配对为两个正面点和两个反面点,放入第 屯容器中; 当4>正面点数-2时,按照第一容器最后一个点、第五容器第k点、第六容器第k点的顺 序进行配对,配对为两个正面点和一个反面点,放入第十一容器中; 重复上述步骤直到it =麻点数-1; .2 ③ 、当A =脈点数-1,也就是最后一次配对时,如果反面点数为奇数,将第一容器最后 2 一个点、第六容器最后一个点,配对为一个正面点和一个反面点,反应保存到第八容器中; 如果反面点数为偶数,将第一容器最后一个点、第五容器最后一个点、第六容器最后一个 点,配对为两个正面点和一个反面点,放入第十一容器中; B416、当网络只有一个正面点和一个反面点时,则将运两个点配对放入第八容器中。5.根据权利要求4所述的一种飞针测试机开路测试路径优化方法,其特征在于:步骤B7 按方法如下进行配对合并: B71、取出第八容器中的两个配对合并成行,保存至第十=容器中; B72、取出第屯容器中的一个配对成行,保存至第十=容器中; B73、判断第九容器是否为空,当第九容器不为空时判断第十容器是否为空,若第十容 器也不为空,则分别从第九容器、第十容器中取出一配对合并成行后放入第十=容器中; B74、若第九容器不为空,第十容器为空,则将第九容器中配对取出,合成一行后放入第 十S容器中; B75、若第九容器为空,第十容器不为空,则将第十容器中的配对取出,合成一行后放入 第十=容器中; B76、取出第十一容器中的配对成行后保存至第十=容器中; B77、取出第十二容器中的配对成行后保存至第十=容器中; B78、重复 871、872、873、874、875、876、877直到合并完成。
【文档编号】G01R31/28GK105911450SQ201610169018
【公开日】2016年8月31日
【申请日】2016年3月22日
【发明人】周尚波, 李文琛, 吴小雨, 陈淑芳
【申请人】重庆大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1