CN114780314A - 基于程序谱技术的fpga代码缺陷定位方法及系统 - Google Patents
基于程序谱技术的fpga代码缺陷定位方法及系统 Download PDFInfo
- Publication number
- CN114780314A CN114780314A CN202210452466.XA CN202210452466A CN114780314A CN 114780314 A CN114780314 A CN 114780314A CN 202210452466 A CN202210452466 A CN 202210452466A CN 114780314 A CN114780314 A CN 114780314A
- Authority
- CN
- China
- Prior art keywords
- test
- program
- positioning
- statement
- test 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.)
- Pending
Links
Images
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
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)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了基于程序谱技术的FPGA代码缺陷定位方法及系统,涉及硬件测试技术领域,其技术方案要点是:构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。本发明有效对硬件代码缺陷定位中的静态分析方法的不足进行弥补,同时无需将所有测试用例都运行进行测试,有效提高了测试效率。
Description
技术领域
本发明涉及硬件测试技术领域,更具体地说,它涉及基于程序谱技术的FPGA代码缺陷定位方法及系统。
背景技术
HDL(硬件描述语言)是一种使用形式化方法来描述数字电路和系统的语言。据统计,目前90%以上的ASIC和FPGA都是采用HDL设计的。HDL已成功应用于设计的各个阶段:建模、仿真、验证和综合。迄今为止,已经出现了数百种硬件描述语言,极大地促进了设计自动化。如今基于源代码的方法的生产使用使设计人员能够创建非常复杂的片上系统,从而将源代码用作逻辑综合的基础。形式验证技术的最新成就甚至允许在大型现实世界设计中进行缺陷检测,其中用于本地化错误语句的工具支持至关重要,因为它可以减少开发时间和总体项目成本。
目前,在软件系统中对于缺陷定位的研究已经有很长的历程了,但是在硬件领域相关研究还很少,主要原因在于硬件描述语言是并发执行,与软件代码的串行不同。此外,硬件描述语言需要考虑时序,在其它高级语言中是没有时序这个概念的。然而,到目前为止,只有少数研究涉及HDL中的缺陷定位。文献表明,目前对HDLs缺陷定位的研究具有以下特点:首先,对门级代码的研究较多,对RTL(Register Transfer Level)级代码的研究较少。其次,虽然硬件描述语言已经被大量广泛使用,但还是有更多的研究集中在VHDL上。最重要的一点是,目前主要的HDLs缺陷定位方法都是基于模型的。然而,通过包括基于模型方法在内的静态分析定位算术符号错误或条件语句错误是一个很大的挑战,这是静态分析的特性决定的。
因此,如何研究设计一种能够克服上述缺陷的基于程序谱技术的FPGA代码缺陷定位方法及系统是我们目前急需解决的问题。
发明内容
为解决现有技术中的不足,本发明的目的是提供基于程序谱技术的FPGA代码缺陷定位方法及系统,既可以有效对硬件代码缺陷定位中的静态分析方法的不足进行弥补,同时无需将所有测试用例都运行进行测试,有效提高了测试效率。
本发明的上述技术目的是通过以下技术方案得以实现的:
第一方面,提供了基于程序谱技术的FPGA代码缺陷定位方法,包括以下步骤:
构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;
以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;
依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;
若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。
进一步的,所述测试结果的表达式具体为:
其中,P(Q)表示P个测试用例对Q条程序语句的测试结果;xPQ表示第P个测试用例对第Q条程序语句的执行结果;eP表示第P个测试用例的测试结果。
进一步的,所述可疑值的计算公式具体为:
其中,S表示可疑值;αef表示测试用例已执行程序语句后测试失败所对应的测试用例数量;αnf表示测试用例不执行程序语句时测试失败所对应的测试用例数量;αep表示测试用例已执行程序语句后测试通过所对应的测试用例数量;αnp表示测试用例不执行程序语句时测试通过所对应的测试用例数量。
进一步的,所述程序语句的测试结果中已执行、不执行、测试失败、测试通过所对应的测试用例数量均通过映射函数转换成单个数字。
进一步的,该方法还包括:
依据目标程序的缺陷类型确定已完成测试的测试用例中对应类别的执行语句占比;
根据各个测试用例的执行语句占比以及已完成测试的测试用例数量动态更新定位阈值。
进一步的,所述执行语句占比的更新过程具体为:
依据目标程序的缺陷类型确定标记值范围;
从测试用例中筛选出执行语句的标记值在标记值范围内的执行语句数量;
以执行语句数量与测试用例中的总执行语句数之比作为执行语句占比。
进一步的,所述定位阈值的更新公式具体为:
其中,SN表示N测试用例已完成测试后更新的定位阈值;S0表示基准阈值;M(k)表示第k个测试用例中所筛选的执行语句数量;M0(k)表示第k个测试用例中的总执行语句数。
第二方面,基于程序谱技术的FPGA代码缺陷定位系统,包括:
用例构建模块,用于构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;
动态测试模块,用于以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;
可疑值计算模块,用于依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;
定位分析模块,用于若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。
第三方面,提供了一种计算机终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面中任意一项所述的基于程序谱技术的FPGA代码缺陷定位方法。
第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行可实现如第一方面中任意一项所述的基于程序谱技术的FPGA代码缺陷定位方法。
与现有技术相比,本发明具有以下有益效果:
1、本发明提出的基于程序谱技术的FPGA代码缺陷定位方法,通过测试用例对动态执行的存在缺陷的目标程序进行测试,并以可疑值大于定位阈值对于目标程序中存在的单一缺陷进行定位,既可以有效对硬件代码缺陷定位中的静态分析方法的不足进行弥补,如算术符号缺陷和条件语句缺陷的定位,同时无需将所有测试用例都运行进行测试,有效提高了测试效率;
2、本发明依据目标程序的缺陷类型确定已完成测试的测试用例中对应类别的执行语句占比,并根据各个测试用例的执行语句占比以及已完成测试的测试用例数量动态更新定位阈值,能够精准筛选出存在缺陷的程序语句,进一步降低了FPGA代码缺陷定位过程中测试用例的数量,测试效率更高。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1是本发明实施例1中的流程图;
图2是本发明实施例2中的流程图;
图3是本发明实施例3中的系统框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1:基于程序谱技术的FPGA代码缺陷定位方法,如图1所示,包括以下步骤:
S1:构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;
S2:以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;
S3:依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;
S4:若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。
本发明通过测试用例对动态执行的存在缺陷的目标程序进行测试,并以可疑值大于定位阈值对于目标程序中存在的单一缺陷进行定位,既可以有效对硬件代码缺陷定位中的静态分析方法的不足进行弥补,如算术符号缺陷和条件语句缺陷的定位,同时无需将所有测试用例都运行进行测试,有效提高了测试效率。
测试结果的表达式具体为:
其中,P(Q)表示P个测试用例对Q条程序语句的测试结果;xPQ表示第P个测试用例对第Q条程序语句的执行结果;eP表示第P个测试用例的测试结果。
例如,元素xPQ=1表示程序语句Q由测试用例P执行;而xPQ=0说明没有执行。错误向量e代表测试结果。如果测试用例P失败,则元素eP等于1,否则为0。错误向量显示每个测试用例的结果。
可疑值的计算公式可选用以下的任意一种,包括:
其中,S表示可疑值;αef表示测试用例已执行程序语句后测试失败所对应的测试用例数量;αnf表示测试用例不执行程序语句时测试失败所对应的测试用例数量;αep表示测试用例已执行程序语句后测试通过所对应的测试用例数量;αnp表示测试用例不执行程序语句时测试通过所对应的测试用例数量。
需要说明的是,可疑值的计算也可以选用以上七种中的至少两种,并以均值或权重值作为最终的可疑值,在此不受限制。
此外,程序语句的测试结果中已执行、不执行、测试失败、测试通过所对应的测试用例数量均通过映射函数转换成单个数字。
实施例2:基于程序谱技术的FPGA代码缺陷定位方法,如图2所示,实施例2与实施例1的不同之处在于:为了进一步降低测试用例的运行数量,该方法还包括:依据目标程序的缺陷类型确定已完成测试的测试用例中对应类别的执行语句占比;根据各个测试用例的执行语句占比以及已完成测试的测试用例数量动态更新定位阈值。
执行语句占比的更新过程具体为:依据目标程序的缺陷类型确定标记值范围;从测试用例中筛选出执行语句的标记值在标记值范围内的执行语句数量;以执行语句数量与测试用例中的总执行语句数之比作为执行语句占比。
定位阈值的更新公式具体为:
其中,SN表示N测试用例已完成测试后更新的定位阈值;S0表示基准阈值;M(k)表示第k个测试用例中所筛选的执行语句数量;M0(k)表示第k个测试用例中的总执行语句数。
实施例3:基于程序谱技术的FPGA代码缺陷定位系统,该代码缺陷定位系统用于实现实施例1或实施例2记载的代码缺陷定位方法,如图3所示,包括用例构建模块、动态测试模块、可疑值计算模块和定位分析模块。
其中,用例构建模块,用于构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;动态测试模块,用于以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;可疑值计算模块,用于依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;定位分析模块,用于若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。
工作原理:本发明通过测试用例对动态执行的存在缺陷的目标程序进行测试,并以可疑值大于定位阈值对于目标程序中存在的单一缺陷进行定位,既可以有效对硬件代码缺陷定位中的静态分析方法的不足进行弥补,如算术符号缺陷和条件语句缺陷的定位,同时无需将所有测试用例都运行进行测试,有效提高了测试效率;此外,本发明依据目标程序的缺陷类型确定已完成测试的测试用例中对应类别的执行语句占比,并根据各个测试用例的执行语句占比以及已完成测试的测试用例数量动态更新定位阈值,能够精准筛选出存在缺陷的程序语句,进一步降低了FPGA代码缺陷定位过程中测试用例的数量,测试效率更高。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于程序谱技术的FPGA代码缺陷定位方法,其特征是,包括以下步骤:
构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;
以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;
依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;
若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。
4.根据权利要求3所述的基于程序谱技术的FPGA代码缺陷定位方法,其特征是,所述程序语句的测试结果中已执行、不执行、测试失败、测试通过所对应的测试用例数量均通过映射函数转换成单个数字。
5.根据权利要求1-4任意一项所述的基于程序谱技术的FPGA代码缺陷定位方法,其特征是,该方法还包括:
依据目标程序的缺陷类型确定已完成测试的测试用例中对应类别的执行语句占比;
根据各个测试用例的执行语句占比以及已完成测试的测试用例数量动态更新定位阈值。
6.根据权利要求5所述的基于程序谱技术的FPGA代码缺陷定位方法,其特征是,所述执行语句占比的更新过程具体为:
依据目标程序的缺陷类型确定标记值范围;
从测试用例中筛选出执行语句的标记值在标记值范围内的执行语句数量;
以执行语句数量与测试用例中的总执行语句数之比作为执行语句占比。
8.基于程序谱技术的FPGA代码缺陷定位系统,其特征是,包括:
用例构建模块,用于构建对目标程序进行缺陷定位测试的包含所有测试用例的测试集;
动态测试模块,用于以测试集中的测试用例对动态执行的目标程序进行依次测试,得到测试结果;
可疑值计算模块,用于依据已完成测试的测试用例所对应的测试结果计算出目标程序中每条程序语句的可疑值;
定位分析模块,用于若存在程序语句的可疑值大于定位阈值,则输出相应的程序语句作为目标程序的代码缺陷定位结果;若不存在,则继续执行下一个测试用例进行测试。
9.一种计算机终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,其特征是,所述处理器执行所述程序时实现如权利要求1-7中任意一项所述的基于程序谱技术的FPGA代码缺陷定位方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征是,所述计算机程序被处理器执行可实现如权利要求1-7中任意一项所述的基于程序谱技术的FPGA代码缺陷定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210452466.XA CN114780314A (zh) | 2022-04-27 | 2022-04-27 | 基于程序谱技术的fpga代码缺陷定位方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210452466.XA CN114780314A (zh) | 2022-04-27 | 2022-04-27 | 基于程序谱技术的fpga代码缺陷定位方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780314A true CN114780314A (zh) | 2022-07-22 |
Family
ID=82432832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210452466.XA Pending CN114780314A (zh) | 2022-04-27 | 2022-04-27 | 基于程序谱技术的fpga代码缺陷定位方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780314A (zh) |
-
2022
- 2022-04-27 CN CN202210452466.XA patent/CN114780314A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8762912B2 (en) | Tiered schematic-driven layout synchronization in electronic design automation | |
US8826202B1 (en) | Reducing design verification time while maximizing system functional coverage | |
US8938703B1 (en) | Method and apparatus for comprehension of common path pessimism during timing model extraction | |
JP2000148808A (ja) | スケジュ―リングされた動作記述に対するストラクチュラルrtlの正当性検証方法 | |
US8495535B2 (en) | Partitioning and scheduling uniform operator logic trees for hardware accelerators | |
Chang et al. | Automatic error diagnosis and correction for RTL designs | |
US11789077B2 (en) | Single-pass diagnosis for multiple chain defects | |
US20070180411A1 (en) | Method and apparatus for comparing semiconductor-related technical systems characterized by statistical data | |
Alizadeh et al. | A scalable formal debugging approach with auto-correction capability based on static slicing and dynamic ranking for RTL datapath designs | |
US11907631B2 (en) | Reset domain crossing detection and simulation | |
US9058452B1 (en) | Systems and methods for tracing and fixing unknowns in gate-level simulation | |
Gaber et al. | Improved automatic correction for digital VLSI circuits | |
US7552043B2 (en) | Method, system and program product for selectively removing instrumentation logic from a simulation model | |
JP2018136763A (ja) | 類似関数抽出装置および類似関数抽出プログラム | |
CN114780314A (zh) | 基于程序谱技术的fpga代码缺陷定位方法及系统 | |
US6813599B1 (en) | Efficient memory structure simulation for sequential circuit design verification | |
CN116976248A (zh) | 使用冗余节点的电路设计调整 | |
US20220382943A1 (en) | Identifying association of safety related ports to their safety mechanisms through structural analysis | |
US7051301B2 (en) | System and method for building a test case including a summary of instructions | |
Kostelijk et al. | Automatic verification of library-based IC designs | |
Raik et al. | Automated design error debug using high-level decision diagrams and mutation operators | |
US20240320406A1 (en) | Identifying rtl code that can be a source of verification complexity for downstream equivalence checkers and generating recommendations to improve runtime of equivalence checkers | |
JPS63140969A (ja) | 試験容易化方式 | |
US20150026652A1 (en) | System, method, and computer program product for correlating transactions within a simulation of a hardware platform for post-simulation debugging | |
Tsai et al. | Yield-driven, false-path-aware clock skew scheduling |
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 |