CN112948193B - 一种基于差异测试的fpga综合工具缺陷检测方法 - Google Patents
一种基于差异测试的fpga综合工具缺陷检测方法 Download PDFInfo
- Publication number
- CN112948193B CN112948193B CN202110251720.5A CN202110251720A CN112948193B CN 112948193 B CN112948193 B CN 112948193B CN 202110251720 A CN202110251720 A CN 202110251720A CN 112948193 B CN112948193 B CN 112948193B
- Authority
- CN
- China
- Prior art keywords
- test
- tool
- fpga
- test case
- cases
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明涉及一种基于差异测试的FPGA综合工具缺陷检测方法,属于计算机软件测试技术领域。本发明通过使用可供比较的参考FPGA综合工具,给定一个测试代码,将测试代码生成与其等价的变异代码,这些参考的FPGA综合工具和待测工具将对其执行编译得到各自的执行结果。由于参考综合工具和待测的FPGA综合工具在差异测试中遵循相同规约,其执行结果相同。因此,通过比较待测工具与参考工具的执行结果的一致,能够有效判断待测工具是否存在缺陷。本发明方法对比现有技术,通过变异产生有效的FPGA综合工具测试的测试种子用例,能够有效检测综合工具中存在的缺陷,并将其缺陷报告进行保存,可供开发人员快速的修复Bug。
Description
技术领域
本发明涉及一种FPGA综合工具的缺陷检测方法,具体涉及一种基于差异测试的FPGA综合工具缺陷检测方法,属于计算机软件测试技术领域。
背景技术
近年来,软件的正常运行越来越依赖于硬件。几乎所有的数字计算都以这样或那样的方式依赖于逻辑综合工具,越来越多的领域使用FPGA(Field Programmable GateArray)来加速服务器上的应用程序。此外,硬件的日益复杂也导致对自动化有很大的需求,这意味着综合工具的正确性对硬件的可靠性至关重要。因此,对FPGA综合工具进行严格测试,十分必要。
为了测试FPGA综合工具的正确性,有人提出通过构造生成随机、有效、确定的或者不确定的Verilog设计并传递给综合工具,综合工具会产生一个可以与原始设计进行比较的等效的nestlist网表,然后基于Verilog设计的输出与合成的网表在时钟边缘应该总是相等的原则,对综合工具是否存在缺陷进行判断。
尽管现有的方法能够很好地为FPGA综合工具缺陷进行检测,但是,随机构造行为良好的Verilog不太可能穷尽测试许多不同的Verilog构造组合。同时,如果使用不确定的Verilog设计,需要考虑测试的代价,因为生成不确定的Verilog需要执行额外的模拟步骤来避免误报。这些将导致FPGA综合工具bug检测效率欠佳。
发明内容
本发明的目的是针对现有的FPGA综合工具缺陷检测方法效果不佳的技术问题,提出一种基于差异测试的FPGA综合工具缺陷检测方法。
本发明方法的创新点在于:通过使用两个或者更多的可供比较的参考FPGA综合工具,给定一个测试代码,将测试代码生成与其等价的变异代码,这些参考的FPGA综合工具和待测工具将对其执行编译得到各自的执行结果。由于参考综合工具和待测的FPGA综合工具在差异测试中遵循相同规约,其执行结果相同。因此,通过比较待测工具与参考工具的执行结果的一致,能够有效判断待测工具是否存在缺陷。
本发明采用以下技术方案实现。
一种基于差异测试的FPGA综合工具缺陷检测方法,包括以下步骤:
步骤1:构建FPGA综合工具测试用例种子库。
具体地,可以从测试人员输入的综合设计实例中,获取所需测试用例。例如,可以从现有的高级综合工具官网、开源社区的有效链接中,爬取、解析获得高级语言文件。
步骤2:基于遗传算法,对测试种子用例按照测试效果的优先从高到低进行排序,并依次执行。可降低测试的时间,提高测试效率。
具体地,对测试用例优先排序问题的一般性描述为:测试用例集T,测试用例的全排列集PT,排序目标函数f(x):PT→R。寻找T'∈PT,使得对任意T″∈PT(T″≠T'),有f(T')≥f(T″)。其中,T'、T″表示在测试用例的全排列集中任意选取的测试用例序列,T″≠T'。
在FPGA和软件***的在测试中,在检测HDL时,不仅要根据信号流图对逻辑进行检测,还要依据时序图,对时变信号的一致性进行检测。针对以上的测试需求设计测试点,在测试用例集中,每一个测试用例可能对应一个或者多个测试点。
首先,定义基于测试点覆盖的评价指标APTC(Average Percentage of Test-point Coverage),即测试用例使用个数和检测错误个数之间的关系进行量化。设测试用例集T有n个测试用例,能够检测出m个缺陷。对一个给定的测试用例执行次序,TFi表示首个可检测到第i个缺陷的测试用例在该执行次序中所处的次序,则APTC的计算公式为:
其中,APTC∈(0,100%),其取值越高,则缺陷检测速度越快。
如表1所示的实例,该实例中有5个测试用例和10个测试点。对于测试用例序列A-B-C-D-E和E-D-C-B-A,其中APTC的取值分别为50%、64%,所以执行次序2的效果优先。
表1测试用例与测试点的对应关系的一个实例
然后,基于遗传算法适应度函数(其值介于0-1之间),即评价指标APTC指导遗传算法进行搜索。
步骤3:选取测试用例P。
其中,选取测试用例遵循以下条件:
如果执行的是初始测试,则从步骤2中的种子库中随机选取测试用例。否则,根据测试用例APTC的取值从大到小进行选择。
步骤4:变异测试用例,得到新的测试用例P'。
其中,生成和测试用例等价的变异代码,可以使用原始的AST来分析测试用例并将其进行等价变异。分析测试用例的AST的语句,如果某一条语句未执行且其孩子也未被执行,则标记该语句为未执行语句,并对其语句进行删除或者***操作,当进行删除该语句时,将移除它在AST子树的所有相关的词句,包括其孩子语句,当进行***代码段时,可无限制***语句到这些标记的未执行语句。
步骤5:使用待测的FPGA综合工具,并选取至少2个现有的参考工具,对步骤4中生成的变异测试代码P'进行转换,得到测试代码HDL的综合网表netlist。
其中,选取的参考工具与待测的FPGA综合工具有相同的规约,即,待测工具和参考工具是能够进行比较的FPGA综合工具,它们的实现秉相同的规约原则。
步骤6:判断是否有工具出现崩溃现象。如果出现测试奔溃情况,则直接进行bug报告生成并存储。如果参考工具和待测工具都对测试用例转换成功,则执行步骤7。
具体地,在FPGA综合工具中,对于一个设计的测试用例会产生一个与其进行比较的等效的netlist网表,即综合工具Verilog设计的输出与转换生成的网表在时钟边缘总是相等,当两者不相等时判定其执行崩溃。
步骤7:对比现有的参考工具和待测的FPGA综合工具的转换结果。
具体地,当测试用例被综合工具综合后形成网表文件.edf,综合工具调用自带的仿真工具进行功能仿真得出结果。
或者,综合工具也可以借助综合后的3个*.v文件,一个是testbench文件,一个是工具生成的xxx_synthesis.v,另一个是glbl.v文件来创建新的工程对其进行仿真。
步骤8:比较上一步的仿真结果是否相同,若相同,表示选取的测试用例不适合,返回步骤3,若结果不一致,则生成并存储bug报告结果。
有益效果
本发明方法,对比现有技术,通过变异产生有效的FPGA综合工具测试的测试种子用例,能够有效检测综合工具中存在的缺陷,并将其缺陷报告进行保存,可供开发人员快速的修复Bug。
附图说明
图1是本发明方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明方法做进一步详细说明。
实施例
本方法部署在在如表2所示的硬件环境下,根据实验需求安装对应的待测软件,本实验中选取的2个现有的参考工具1-Yosys 0.9、参考工具2-Vivado 18.2,对FPGA综合工具Quartus Prime 19.2进行检测,其中Yosys 0.9开源。本实施例由测试用例种子池构架、测试代码变异、测试种子用例排序等程序构成。
表2:硬件环境配置信息表
步骤1:搜集已有的FPGA综合工具的设计实例构建测试用例种子库,对种子池中的测试用例进行初始化,对每个测试用例设置初始优先级参数值c0,使得每个测试用例被随机选取的机会均等。
具体为:使用爬虫技术,从一些高级综合工具的官网和开源社区的有效链接中爬取解析出高级语言文件。
步骤2:基于遗传算法对测试种子用例进行优先级排序。将测试用例按测试效果的优先从高到低进行排序并依次执行,进而可降低测试的时间,提高测试效率。
具体为:
测试用例优先排序问题的一般性描述如下:
测试用例集T,测试用例的全排列集PT,排序目标函数f(x):PT→R。寻找T'∈PT,使得对任意的T″∈PT(T″≠T')有f(T')≥f(T″)。其中,T'和T″表示在测试用例的全排列集中任意选取的测试用例序列,T″≠T'。
在FPGA和软件***的在测试中,在检测HDL时,不仅要根据信号流图对逻辑进行检测,还要依据时序图,对时变信号的一致性进行检测。针对以上的测试需求设计测试点,在测试用例集中,每一个测试用例可能对应一个或者多个测试点。
定义基于测试点覆盖的评价指标APTC,即测试用例使用个数和检测错误个数之间的关系来量化。设测试用例集T,有n个测试用例,能够检测出m个缺陷,对一个给定的测试用例执行次序,TFi表示首个可检测到第i个缺陷的测试用例在该执行次序中所处的次序,则APTC的计算公式为:
其中,APTC∈(0,100%),取值越高,则缺陷检测速度越快。
然后,基于遗传算法适应度函数,其值介于0~1之间,即评价指标APTC指导遗传算法进行搜索。
步骤3:选取测试用例P。
其中,选取测试用例遵循以下规则:
如果执行初始测试,从步骤2中的种子库中随机选取测试用例,否则,根据测试用例APTC的取值进行选择,选取高优先级的测试用例。
步骤4:变异测试用例,得到新的测试用例P'。
其中,生成和测试用例等价的变异代码,可以使用原始的AST来分析测试用例并将其进行等价变异,分析测试用例的AST的语句,如果某一条语句未执行,且其孩子也未被执行,那么就标记该语句为未执行语句,并对其语句进行删除或者***操作。当进行删除该语句时,将会移除它在AST子树的所有相关的词句,包括其孩子语句;当进行***代码段时,可以无限制的一直***语句到这些标记的未执行语句。具体过程如图1所示。
步骤5:使用待测的FPGA综合工具和参考工具1、参考工具2,对步骤4中生成的变异测试代码P'进行转换,得到测试代码HDL的综合网表netlist,参考工具1和参考工具2的实现是和待测的FPGA综合工具有相同的规约,即待测对象工具和参考对象工具是可以进行比较的FPGA综合工具,它们的实现秉着相同的规约原则。
步骤6:判断是否有工具出现崩溃现象;如果出现测试奔溃情况,直接进行bug报告生成并存储,如果参考工具和待测工具都对测试用例转换成功,则执行下一步骤。
具体为:
在FPGA综合工具中,对于一个设计的测试用例,会产生一个与其进行比较的等效的netlist网表,即综合工具Verilog设计的输出与转换生成的网表在时钟边缘应该总是相等的,当两者不相等时,判定其执行崩溃。
步骤7:对比参考工具1、参考工具2和待测的FPGA综合工具的转换结果。
具体为:
借助综合后的3个*.v文件。一个是testbench文件,一个是工具生成的xxx_synthesis.v,另一个是glbl.v文件,使用ModelSim对期进行仿真。
步骤8:比较上一步的仿真结果是否相同,若相同,表示选取的测试用例不适合,返回步骤3,若结果不一致,则生成并存储bug报告结果。
其结果如下所示;
相同资源下工具的运行时间:
Yosys 0.9:200 CPU hours
Vivado 18.2:180 CPU hours
Quartus Prime 19.2:180 CPU hours
探测到bug的数量:
Quartus Prime 19.2:2
结果表明:使用本发明方法,可以有效检出测综合工具存在的bug。
Claims (4)
1.一种基于差异测试的FPGA综合工具缺陷检测方法,其特征在于,包括以下步骤:
步骤1:构建FPGA综合工具测试用例种子库;
步骤2:基于遗传算法,对测试种子用例按照测试效果的优先从高到低进行排序,并依次执行;
对测试用例优先排序问题的一般性描述为:测试用例集T,测试用例的全排列集PT,排序目标函数f(x):PT→R;
寻找T'∈PT,使得对任意T″∈PT,有f(T')≥f(T″),其中,T'、T″表示在测试用例的全排列集中任意选取的测试用例序列,T″≠T';
首先,定义基于测试点覆盖的评价指标APTC,即测试用例使用个数和检测错误个数之间的关系进行量化;设测试用例集T有n个测试用例,能够检测出m个缺陷;对一个给定的测试用例执行次序,TFi表示首个可检测到第i个缺陷的测试用例在该执行次序中所处的次序,则APTC的计算公式为:
其中,APTC∈(0,100%),其取值越高,则缺陷检测速度越快;
然后,基于评价指标APTC的值,选择APTC取值最高对应的测试用例执行次序;
步骤3:选取测试用例P,其中,选取测试用例遵循步骤2中APTC取值最高对应的测试用例执行次序;
步骤4:变异测试用例,得到新的测试用例P';
步骤5:使用待测的FPGA综合工具,并选取至少2个现有的参考工具,对步骤4中生成的变异测试代码P'进行转换,得到测试代码HDL的综合网表netlist;
步骤6:判断是否有工具出现崩溃现象;如果出现测试工具崩溃情况,则直接进行bug报告生成并存储;如果参考工具和待测FPGA综合工具都对测试用例转换成功,则执行步骤7;
步骤7:对比现有的参考工具和待测的FPGA综合工具的转换结果;当测试用例被综合工具综合后形成网表文件.edf,综合工具调用自带的仿真工具进行功能仿真得出结果;
步骤8:比较上一步的仿真结果是否相同,若相同,表示选取的测试用例不适合,返回步骤3,若不相同,则生成并存储bug报告结果。
2.如权利要求1所述的一种基于差异测试的FPGA综合工具缺陷检测方法,其特征在于,步骤4中生成和测试用例等价的变异代码,使用原始的AST来分析测试用例并将其进行等价变异;
分析测试用例的AST的语句,如果某一条语句未执行且其孩子也未被执行,则标记该语句为未执行语句,并对其语句进行删除或者***操作,当进行删除该语句时,将移除它在AST子树的所有相关的词句,包括其孩子语句,当进行***代码段时,无限制***语句到这些标记的未执行语句。
3.如权利要求1所述的一种基于差异测试的FPGA综合工具缺陷检测方法,其特征在于,步骤7中对比转换结果时,FPGA综合工具借助综合后的3个*.v文件,一个是testbench文件,一个是工具生成的xxx_synthesis.v,另一个是glbl.v文件来创建新的工程对其进行仿真。
4.如权利要求1所述的一种基于差异测试的FPGA综合工具缺陷检测方法,其特征在于,选取2个现有的参考工具,其中参考工具1为Yosys 0.9,参考工具2为Vivado 18.2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110251720.5A CN112948193B (zh) | 2021-03-08 | 2021-03-08 | 一种基于差异测试的fpga综合工具缺陷检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110251720.5A CN112948193B (zh) | 2021-03-08 | 2021-03-08 | 一种基于差异测试的fpga综合工具缺陷检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948193A CN112948193A (zh) | 2021-06-11 |
CN112948193B true CN112948193B (zh) | 2023-10-17 |
Family
ID=76228755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110251720.5A Active CN112948193B (zh) | 2021-03-08 | 2021-03-08 | 一种基于差异测试的fpga综合工具缺陷检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948193B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434390B (zh) * | 2021-06-21 | 2022-11-08 | 北京理工大学 | 一种基于变异的fpga逻辑综合工具模糊测试方法 |
CN114385492B (zh) * | 2021-12-30 | 2024-07-12 | 大连理工大学 | 一种基于差分测试的高级综合工具优化选项缺陷检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621125B2 (en) * | 2009-10-13 | 2013-12-31 | Intellitech Corporation | System and method of sending and receiving data and commands using the TCK and TMS of IEEE 1149.1 |
CN111400169B (zh) * | 2020-02-25 | 2023-04-18 | 中科亿海微电子科技(苏州)有限公司 | 一种自动化生成用于测试软硬件的网表文件的方法及*** |
CN111737120B (zh) * | 2020-06-15 | 2022-09-23 | 河南工业大学 | 一种软件缺陷修复方法及装置 |
CN112034331B (zh) * | 2020-08-17 | 2023-04-18 | 北京时代民芯科技有限公司 | 一种基于fpga的电路模块测试方法 |
-
2021
- 2021-03-08 CN CN202110251720.5A patent/CN112948193B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112948193A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及*** | |
Luo et al. | ICS protocol fuzzing: Coverage guided packet crack and generation | |
JP3858000B2 (ja) | フィルタリング型アプローチを使用する組合せ回路の検証方法 | |
CN112948193B (zh) | 一种基于差异测试的fpga综合工具缺陷检测方法 | |
US6553514B1 (en) | Digital circuit verification | |
CN112035359B (zh) | 程序测试方法、装置、电子设备及存储介质 | |
US20140258987A1 (en) | Determining correctness of an application | |
CN109542783B (zh) | 一种基于变量分割的扩展有限状态机测试数据生成方法 | |
CN115687115B (zh) | 一种移动应用程序自动化测试方法及*** | |
CN115098292B (zh) | 应用程序崩溃根原因识别方法、装置及电子设备 | |
CN102141959B (zh) | 一种受上下文无关文法约束的测试用例生成方法 | |
CN108563561B (zh) | 一种程序隐性约束提取方法及*** | |
CN114936158A (zh) | 一种基于图卷积神经网络的软件缺陷定位方法 | |
Letychevskyi et al. | Modeling method for development of digital system algorithms based on programmable logic devices | |
US20110022906A1 (en) | Method and system for test point insertion | |
US6099577A (en) | Logic circuit conversion method and logic circuit design support device | |
CN111625448B (zh) | 协议包生成方法、装置、设备及存储介质 | |
CN115185920B (zh) | 一种日志类型的检测方法、装置及设备 | |
CN116126692A (zh) | 一种基于python的算法工具自动化测试***及方法 | |
CN101833505A (zh) | 一种软件***安全缺陷检测方法 | |
JP5075695B2 (ja) | プロパティ記述のカバレッジ測定装置及びプログラム | |
JP2011048785A (ja) | 多重イベント定義装置、多重イベント検証装置、多重イベント定義方法および多重イベント定義プログラム | |
Imtiaz et al. | Predicting vulnerability for requirements | |
US7689399B1 (en) | Automatic extraction of design properties | |
CN110750449A (zh) | 一种测试驱动的网页构件功能抽取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |