FPGA芯片内部开关矩阵的开关量全覆盖测试方法与流程

文档序号:28712500发布日期:2022-01-29 14:13阅读:293来源:国知局
FPGA芯片内部开关矩阵的开关量全覆盖测试方法与流程
fpga芯片内部开关矩阵的开关量全覆盖测试方法
技术领域
1.本发明涉及fpga领域,尤其是一种fpga芯片内部开关矩阵的开关量全覆盖测试方法。


背景技术:

2.fpga芯片具有开发周期短、成本低、风险小、集成度高、灵活性大等优点,且便于电子系统维护和升级,因此成为了数字芯片的主流,被广泛应用在通信、控制、视频、信息处理、消费电子、互联网、汽车以及航空航天等诸多领域。
3.以virtex架构的fpga芯片为例,如图1所示,fpag芯片内部主要包括配置逻辑单元(clb)、输入输出单元(iob)、开关盒(switch box)和互联资源(interconnect resource)。每个开关盒对应一个开关矩阵,如图1以sb表示。互联资源又分为互联线(wire segments)和开关量(pips programmable interconnect points),互联线是指开关矩阵外部的线段,包括连接不同开关矩阵的线段以及连接开关矩阵与不同的clb/iob之间的线段。开关量是指开关矩阵内部的互联,包括开关矩阵不同输入端和输出端之间的互联。如图2以一个内部包含6个开关量的开关矩阵为例,其包含的六个开关量分别记为pip1~pip6。
4.在fpga芯片中,互联资源占据fpga芯片面积的大部分(50%~90%),是fpga芯片资源中发生故障概率最高的部分,其中开关量的资源又占了互联资源的大部分(80-90%),因此为了保证fpga芯片的可靠运行,对开关量的测试非常重要。但是由于fpga芯片内部开关矩阵往往较多,单个开关矩阵内部开关量也很多,随着fpga芯片的规模逐渐变大需要测试的开关量更是数量庞大,比如virtex架构的95t芯片中单个开关矩阵内部可以达到3000多个开关量,因此如何高效准确的完成开关量的测试成了亟待解决的问题。


技术实现要素:

5.本发明人针对上述问题及技术需求,提出了一种fpga芯片内部开关矩阵的开关量全覆盖测试方法,本发明的技术方案如下:
6.一种fpga芯片内部开关矩阵的开关量全覆盖测试方法,该方法包括:
7.对fpga芯片中的待测试开关矩阵内部的待测试开关量基于输入端和输出端进行分组形成若干个测试组,每个测试组中包括若干个待测试开关量且一个测试组中的各个待测试开关量的输入端和输出端均不同,所有测试组中包括的待测试开关量覆盖待测试开关矩阵内部的全部待测试开关量;
8.选取一个未测试的测试组作为当前测试组,对于当前测试组中的每个待测试开关量,将待测试开关量的输入端配置连接至fpga芯片的一个输入io管脚、输出端配置连接至fpga芯片的一个输出io管脚,完成对当前测试组的开关量配置生成开关量测试配置文件,基于开关量测试配置文件得到用户输入已完成布线的网表,并利用码流工具生成码流后下载到fpga芯片执行;
9.在当前测试组中各个待测试开关量所连接的输入io管脚处分别施加测试向量,并
在对应的输出io管脚处分别获得输出向量,得到当前测试组中各个待测试开关量的测试结果;
10.选取下一个未测试的测试组作为当前测试组进行测试,直到对所有测试组都完成测试时完成对待测试开关矩阵内部的待测试开关量的全覆盖测试。
11.其进一步的技术方案为,fpga芯片中包括至少两个待测试开关矩阵,则方法还包括:对一个待测试开关矩阵中的所有测试组都完成测试后,对下一个待测试开关矩阵执行对待测试开关矩阵内部的待测试开关量基于输入端和输出端进行分组形成若干个测试组的步骤。
12.其进一步的技术方案为,待测试开关矩阵包括fpga内的全部开关矩阵,则方法用于对fpga芯片内部的全部开关矩阵内部的全部待测试开关量进行全覆盖测试。
13.其进一步的技术方案为,待测试开关矩阵内部的待测试开关量包括待测试开关矩阵内部的全部开关量或部分开关量。
14.其进一步的技术方案为,该方法还包括:
15.从待测试开关矩阵内部的全部开关量中选定部分开关量作为待测试开关量,或者,将待测试开关矩阵内部的全部开关量中的免测试开关量剔除得到剩余的待测试开关量,免测试开关量至少包括待测试开关矩阵内部未与外部单元相连的开关量。
16.其进一步的技术方案为,当一个输出io管脚处的输出向量与连接同一个待测试开关量的io管脚处的输入io管脚处的测试向量不同时,待测试开关量的测试结果指示待测试开关量故障,否则指示待测试开关量正常,则方法还包括:
17.根据当前测试组中各个待测试开关量的测试结果定位待测试开关矩阵内部存在故障的开关量。
18.其进一步的技术方案为,对待测试开关矩阵内部的待测试开关量基于输入端和输出端进行分组形成若干个测试组,包括:
19.对待测试开关矩阵内部的待测试开关量基于输出端的类别进行分类;
20.选取输出端属于同一个类别且输入端各不相同的若干个待测试开关量构成一个测试组。
21.其进一步的技术方案为,输出端的每一个类别包括若干种不同的线号,同一个类别的同一种线号包括若干个待测试开关量,则选取输出端属于同一个类别且输入端各不相同的若干个待测试开关量构成一个测试组,包括对于输出端的每一个类别:
22.确定未分组的待测试开关量中输出端属于当前类别的各个待测试开关量的线号,从每一种线号中选择一个待测试开关量构成一个测试组,构成的测试组包括输出端属于当前类别且线号各不相同,以及输入端各不相同的若干个待测试开关量。
23.其进一步的技术方案为,输出端的一个类别的不同线号包括的待测试开关量的数量均相等,则针对当前类别形成的各个测试组中分别包含当前类别中所有线号的待测试开关量;或者,输出端的一个类别中存在至少两个不同线号包括的待测试开关量的数量不相等,则针对当前类别形成的各个测试组中存在至少一个测试组仅包含当前类别中部分线号的待测试开关量。
24.其进一步的技术方案为,将待测试开关量的输入端配置连接至fpga芯片的一个输入io管脚、输出端配置连接至fpga芯片的一个输出io管脚,包括:
25.选取fpga芯片的一个未被占用的io管脚作为待测试开关量的输入io管脚连接到起始配置逻辑单元的slice输入,将起始配置逻辑单元的对应的slice输出连接到待测试开关量的输入端,将待测试开关量的输出端连接到终止配置逻辑单元的slice输入,将终止配置逻辑单元的slice输出连接到fpga芯片的一个未被占用的io管脚作为待测试开关量的输出io管脚。
26.本发明的有益技术效果是:
27.本技术公开了一种fpga芯片内部开关矩阵的开关量全覆盖测试方法,该方法通过对开关量进行合理的分组,可以快速有效的对待测试开关矩阵内部的全部待测试开关量进行全覆盖测试,覆盖率高、测试全面。进一步的本技术提供了一种基于开关量的输出端分类,再基于线号的遍历分组方法,操作简单,可以避免遗漏,分组效果好。
28.该方法不仅可以对特定的开关矩阵进行测试,也可以对芯片中的所有开关矩阵进行全覆盖测试,也可以对开关矩阵中特定的开关量进行测试,灵活性高,可以满足不同的测试需求。而且使用该方法不仅可以实现对开关量的测试得到测试结果,还可以准确定位出存在故障的开关量,便于后期排除故障。
附图说明
29.图1是fpga芯片内部结构示意图。
30.图2是一个开关矩阵内部的开关量的示意图。
31.图3是本技术的开关量全覆盖测试方法的流程示意图。
32.图4是一个实例中获取到的95t芯片中一个开关矩阵内部的输出端为byp0的所有开关量。
33.图5是本技术公开的方法中对一个待测试开关量进行开关量配置的示意图。
具体实施方式
34.下面结合附图对本发明的具体实施方式做进一步说明。
35.本技术公开了一种fpga芯片内部开关矩阵的开关量全覆盖测试方法,请参考图3所示的流程图,该方法包括如下步骤:
36.步骤1,对fpga芯片中的待测试开关矩阵内部的待测试开关量基于输入端和输出端进行分组形成若干个测试组,每个测试组中包括若干个待测试开关量,所有测试组中包括的待测试开关量覆盖待测试开关矩阵内部的全部待测试开关量。
37.在一个实施例中,待测试开关矩阵内部的待测试开关量包括待测试开关矩阵内部的全部开关量。在另一个实施例中,待测试开关矩阵内部的待测试开关量包括待测试开关矩阵内部的部分开关量,则在该实施例中,主要有两种方法可以确定待测试开关量:(1)从待测试开关矩阵内部的全部开关量中选定部分开关量作为待测试开关量,也即由用户指定选择部分特定的开关量作为待测试开关量进行测试,选定的标准可以按照开关量的各种属性或各种自定义选择标准,本技术不作限定。(2)将待测试开关矩阵内部的全部开关量中的免测试开关量剔除,并将剩余的所有开关量作为待测试开关量,免测试开关量是待测试开关矩阵内部确定不存在故障或者不使用的或者即便存在故障也不影响fpga芯片运行、因此无需测试的开关量。比较典型的,免测试开关量至少包括待测试开关矩阵内部未与外部单
元相连的开关量,由于这些开关量只在待测试开关矩阵内部而没有和外部的连线,因此不影响fpga芯片正常运行,可以剔除掉不用测试,从而可以在保证测试结果准确性的基础上减少不必要的测试量,提高测试效率。
38.在对待测试开关矩阵内部的待测试开关量进行分组时,要保证一个测试组中的各个待测试开关量的输入端和输出端均不同,从而避免同一个测试组内的开关量的输入端和输出端冲突打架。为了保证分组有效性,本技术提供的一个实施例的做法是首先对待测试开关矩阵内部的待测试开关量基于输出端的类别进行分类,然后选取输出端属于同一个类别且输入端各不相同的若干个待测试开关量构成一个测试组,也即一个测试组只包含一个输出端的类别的待测试开关量且同样要避免输入端冲突。
39.通过相应的指令可以获取各个开关量的输入端和输出端的相关信息,本技术以virtex架构的fpga芯片为例,开关量的输出端的类别常见的比如包括byp、ctrl、fan、五倍线、二倍线、长线等,可以直接通过资源列表获得。以byp类为例,则针对该类别形成的测试组中的所有待测试开关量的输出端都是byp类的。
40.由于实际情况中,输出端的每一个类别包括若干种不同的线号,同一个类别的同一种线号包括若干个待测试开关量,比如对于byp类,其包括8种不同的线号分别为byp0~byp7,而待测试开关矩阵内可能包含19个输出端为byp0的待测试开关量。则不将同一个类别的所有待测试开关量都划分到同一组中,避免严重的资源冲突问题,而是进一步的,在基于输出端的类别进行分类后,对于属于同一个类别的待测试开关量再基于线号进行分组,然后形成针对当前类别的多个测试组。具体的,对于输出端的每一个类别:确定未分组的待测试开关量中输出端属于当前类别的各个待测试开关量的线号,从每一种线号中选择一个待测试开关量构成一个测试组,构成的测试组包括输出端属于当前类别且线号各不相同,以及输入端各不相同的若干个待测试开关量。经过上述方法,可以快速有效的对所有待测试开关量进行分组,不仅可以保证全覆盖而且可以保证后续无资源冲突,效率较高。
41.比如对于byp类,若未分组的待测试开关量中分别包括若干个线号为byp0~byp7的待测试开关量,则从线号为byp0的所有待测试开关量中选择一个,对其他线号也是如此处理,遍历所有线号后构成待测试开关矩阵针对当前类别byp类的一个测试组,比如得到的一个测试组中包括8个待测试开关量分别记为pip1~pip8,其输入端与输出端的相关信息如下表一所示:
42.表一
[0043] 待测试开关矩阵输入端

输出端pip1int_x10y59el2beg0

byp0pip2int_x10y59er2beg1

byp1pip 3int_x10y59sl2beg1

byp2pip 4int_x10y59sr2beg2

byp3pip 5int_x10y59nl2beg1

byp4pip 6int_x10y59nr2beg0

byp5pip 7int_x10y59wl2beg2

byp6pip 8int_x10y59wr2beg1

byp7
[0044]
在一个实施例中,输出端的一个类别的不同线号包括的待测试开关量的数量均相
等,则针对当前类别形成的各个测试组中分别包含当前类别中所有线号的待测试开关量。比如对于byp类,假设线号byp0~byp7分别包含10个待测试开关量,则每次都遍历所有线号,则最终正好形成10个针对byp类的测试组,且每个测试组包括线号分别为byp0~byp7的8个待测试开关量。
[0045]
在另一个实施例中,输出端的一个类别中存在至少两个不同线号包括的待测试开关量的数量不相等,则针对当前类别形成的各个测试组中存在至少一个测试组仅包含当前类别中部分线号的待测试开关量,且一般先分组形成的测试组中包含的待测试开关量更多。比如对于byp类,假设线号byp0~byp6分别包含10个待测试开关量,但线号byp7仅包含9个待测试开关量,则每次都遍历所有线号,同样形成10个针对byp类的测试组,前9个测试组包括线号分别为byp0~byp7的8个待测试开关量,但最后一次遍历时,线号为byp7的待测试开关量已经全部分组,此时未分组的待测试开关量仅包含byp0~byp6的7个待测试开关量,则最后一个测试组只有线号为byp0~byp6的7个待测试开关量。
[0046]
步骤2,选取一个未测试的测试组作为当前测试组,对于当前测试组中的每个待测试开关量,将待测试开关量的输入端配置连接至fpga芯片的一个输入io管脚、输出端配置连接至fpga芯片的一个输出io管脚,完成对当前测试组的开关量配置生成开关量测试配置文件,也即ncd文件。
[0047]
具体的,选取fpga芯片的一个未被占用的io管脚作为待测试开关量的输入io管脚连接到起始配置逻辑单元的slice输入,将起始配置逻辑单元的对应的slice输出连接到待测试开关量的输入端,将待测试开关量的输出端连接到终止配置逻辑单元的slice输入,将终止配置逻辑单元的slice输出连接到fpga芯片的一个未被占用的io管脚作为待测试开关量的输出io管脚。
[0048]
基于开关量测试配置文件得到用户输入已完成布线的网表,并利用码流工具生成码流后下载到fpga芯片执行,具体的,在fpga editor里打开该ncd文件,进行自动布线,然后生成bit文件,配置到fpga芯片中。
[0049]
步骤3,在当前测试组中各个待测试开关量所连接的输入io管脚处分别施加测试向量,并在对应的输出io管脚处分别获得输出向量。连接同一个待测试开关量的输入io管脚和输出io管脚有对应关系,基于各组存在对应关系的两个io管脚处的输出向量与测试向量得到当前测试组中各个待测试开关量的测试结果。
[0050]
当一个输出io管脚处的输出向量与连接同一个待测试开关量的io管脚处的输入io管脚处的测试向量不同时,待测试开关量的测试结果指示待测试开关量故障,否则指示待测试开关量正常。进一步的,当输出io管脚处的输出向量恒为0时表示其连接的待测试开关量有常开故障,当输出io管脚处的输出向量恒为1时表示其连接的待测试开关量有常闭故障。由此根据当前测试组中各个待测试开关量的测试结果可以定位待测试开关矩阵内部存在故障的开关量,不仅可实现测试还可实现故障的精确定位。
[0051]
步骤4,选取下一个未测试的测试组作为当前测试组进行测试,直到对所有测试组都完成测试时,完成对当前的待测试开关矩阵内部的待测试开关量的全覆盖测试。
[0052]
经过上述步骤1~4,可以完成对一个待测试开关矩阵内部的全部待测试开关量的全覆盖测试,fpga芯片中可以只包括一个待测试开关矩阵,可以由用户自定义配置选择其中一个开关矩阵作为待测试开关矩阵,则该方法可以用于测试特定的开关矩阵,灵活性较
高、实用性较优。
[0053]
或者在另一个实施例中,fpga芯片中包括至少两个待测试开关矩阵,则当有多个待测试开关矩阵时,通过步骤1~4完成对一个待测试开关矩阵内部的全部待测试开关量的全覆盖测试后,对下一个待测试开关矩阵再次按照上述步骤1~4的方法进行测试,如此循环直到对所有待测试开关矩阵都完成测试。
[0054]
在上述实施例中,当包括多个待测试开关矩阵时,这些待测试开关矩阵可以是fpga芯片内部的部分开关矩阵或全部开关矩阵。当只选取fpga芯片内部的部分开关矩阵作为待测试开关矩阵时,与单个待测试开关矩阵类似,可以由用户指定对特定的一部分开关矩阵进行测试。而当待测试开关矩阵包括fpga内的全部开关矩阵,该方法用于对fpga芯片内部的全部开关矩阵内部的全部待测试开关量进行全覆盖测试,测试的完整性和准确性都较高。
[0055]
为了更清楚的说明本技术的方法的流程,本技术以virtex架构的95t芯片为例,以如下一个实例对测试流程进行说明:
[0056]
通过命令xdl-report-pips xc5vsx95tff1136可以获取95t芯片内的所有开关量的输入端和输出端的相关信息,该实例以将95t芯片内的pip_x10y59开关矩阵作为待测试开关矩阵为例,则可以获取该开关矩阵内部的所有共3000多个开关量的相关信息。
[0057]
对待测试开关矩阵内部的待测试开关量基于输出端的类别进行分类,并确定当前类别中所有线号的待测试开关量。比如对于byp类来说,待测试开关矩阵中线号为byp0的开关量共包括25个,如图4所示,而其中有6个开关量是免测试开关量,在前序已经筛选掉了,则对于byp类来说,待测试开关矩阵中共包括19个线号为byp0的待测试开关量。对于byp类的其他线号byp1~byp7来说,同样获取各个线号下的所有待测试开关量。
[0058]
按照byp0~byp7作为输出端进行分组,分组原则就是同一个测试组内输入端的开关量不同(避免输入开关量打架),并且一个测试组中要保证剩余的所有线号都测到,比如得到的一个测试组如上表一所示。由此通过将byp0~byp7包含的所有待测试开关量分为19个测试组可以涵盖95t内输出端为byp类的所有待测试开关量。
[0059]
假设上表一示出的是当前测试组,对于其中的一个待测试开关量pip1,配置将其通过clb分别连接到相应的io管脚,如图5所示的示意图,选择iob1作为对应的输入io管脚连接到clb1的slice输入,将对应的clb1的slice输出连接到待测试开关量pip1的输入端。将待测试开关量pip1的输出端连接到clb2的slice输入,将对应的clb2的slice输出连接到iob2作为输出io管脚。对于其他待测试开关量也同样这样操作,完成以ncd文件格式形成的开关量测试配置文件,该开关量测试配置文件再经调整布线成功后,利用码流工具生成码流bit文件,加载到fpga执行。在iob1施加测试向量,在对应的iob2获取输出向量,由此可以得到对当前测试组中pip1的测试结果,其余同理。
[0060]
以上所述的仅是本技术的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1