CN113434390B - 一种基于变异的fpga逻辑综合工具模糊测试方法 - Google Patents
一种基于变异的fpga逻辑综合工具模糊测试方法 Download PDFInfo
- Publication number
- CN113434390B CN113434390B CN202110687838.2A CN202110687838A CN113434390B CN 113434390 B CN113434390 B CN 113434390B CN 202110687838 A CN202110687838 A CN 202110687838A CN 113434390 B CN113434390 B CN 113434390B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- fpga
- tool
- fpga logic
- 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
Images
Classifications
-
- 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
Abstract
本发明公开了一种基于变异的FPGA逻辑综合工具模糊测试方法,属于计算机软件测试技术领本发明针对FPGA逻辑综合器的特点,首先构建合适的逻辑综合器的测试用例集;然后,在符合Verilog HDL语法规则的前提下,设定变异算子并对测试用例种子程序执行变异操作,得到更有效的测试用例;之后,执行待测FPGA逻辑综合工具,对测试用例程序进行综合,转换与硬件资源相匹配的综合网表netlist;最后,通过验证网表netlist与综合前Verilog设计的等价性结果来判断FPGA工具是否存在缺陷。本方法通过设计变异算子执行变异产生更多有效的FPGA逻辑综合工具测试的测试用例程序,增加了测试用例的多样性,可以帮助FPGA设计开发者更好的找到检测逻辑综合工具中存在的故障,提高FPGA逻辑综合器的质量。
Description
技术领域
本发明涉及一种FPGA逻辑综合工具的故障检测方法,具体为一种基于变异的FPGA逻辑综合工具模糊测试方法,属于计算机软件测试技术领域。
背景技术
FPGA(Field Programmable Gate Array)作为一种现场可编程专用集成电路,用户可以使用Verilog HDL(Hardware Description Language,HDL)对其进行配置,得到所需的硬件数字电路。
目前,FPGA大量参与各行业产品的优化设计,成为众多领域的关键核心器件。例如,在通信、航天、军工等领域,FPGA是云数据计算中心不可或缺的硬件加速单元。
在FPGA的设计开发过程中,主要包括设计输入、仿真验证、综合及布线布局和比特流的生成等关键步骤。其中,综合步骤至关重要,它将Verilog或者VHDL(VHSIC HardwareDescription Language)编写的硬件高级描述转换为能与FPGA硬件资源相匹配的一个描述——网表。但是,如果FPGA逻辑综合器在综合过程中将代码转换成与初始Verilog或VHDL设计行为不同的网表,则再硬件中会有严重的缺陷,这些缺陷会影响整个产品的设计,带来安全性隐患。
因此,在FPGA的设计开发工作中,为确保FPGA芯片没有任何功能故障,通过测试逻辑综合器产生正确的硬件是十分必要的。
针对FPGA逻辑综合器,现有的手动测试方法需要极大的人力和物力投入,成本较高。如何高效地完成FPGA逻辑综合器的设计开发是当前行业内最迫切的需求。因此,研究人员开始尝试对逻辑综合器的测试融入软件测试技术,对其进行自动化的测试。
目前,通常采用通过随机产生测试用例的方式对FPGA逻辑综合工具进行测试,并通过自动验证测试的输入与结果的一致性来发现FPGA综合工具的故障。这种方法虽然能够检测出FPGA综合工具存在的故障,但是所检测出的故障数量较少,存在大量重复的测试用例,且耗时过多,检测效率不高等不足
发明内容
本发明的目的是为了克服现有技术存在的缺陷,为了有效解决逻辑综合器在随机自动化测试过程中存在的有效测试用例冗余、检测效率不高等技术问题,创造性地提出一种基于变异的FPGA逻辑综合工具模糊测试方法,
本发明的主要创新点在于:针对FPGA逻辑综合器的特点,首先构建合适的逻辑综合器的测试用例集;然后,在符合Verilog HDL语法规则的前提下,设定变异算子并对测试用例种子程序执行变异操作,得到更有效的测试用例;之后,执行待测FPGA逻辑综合工具,对测试用例程序进行综合,转换与硬件资源相匹配的综合网表netlist;最后,通过验证网表netlist与综合前Verilog设计的等价性结果来判断FPGA工具是否存在缺陷。
本发明采用的技术方案如下:
一种基于变异的FPGA逻辑综合工具模糊测试方法,包括以下步骤:
步骤1:构建FPGA逻辑综合工具初始测试用例种子集Q。采用随机生成器,得到初始测试用例程序种子集。
具体地,对于初始测试用例程序,可以利用Verilog代码随机生成器进行构建。例如,采用Verismith随机生成器生成,Verismith是英国伦敦帝国理工学院研究人员发布的开源工具,能够随机产生满足Verilog 2005标准的可综合Verilog HDL程序。或者根据实际需要测试的FPGA逻辑综合工具对象,采用自定义的程序随机生成工具实现。
步骤2:依次从步骤1中构建的初始测试用例集中选取用例q1,q2,…,然后进行步骤3。
步骤3:判断测试用例变异的数量是否已达到设定值。若未达到,则执行步骤4,对步骤2所选取用例进行变异操作;若已达到,则进行步骤5。
步骤4:执行变异操作,变异初始测试用例程序,得到新的测试用例程序变体集合Q′。
其中,变异操作可以结合传统的Jeff Offutt和Kim King定义的22种变异算子与FPGA逻辑综合工具的语言特性,构造如表1所示的变异规则。
表1:FPGA逻辑综合器测试用例的变异规则
步骤5:从集合Q′中选取测试用例q′,作为待测FPGA逻辑综合器的测试输入,并对其进行已使用标记(已测试)。
步骤6:收集保存FPGA工具测试的输出结果。判断检测待测工具是否正常运行,或者运行后的综合结果与输入的测试用例程序是否具有等价性。
具体为:
对于测试用例程序集Q′中的每一个测试用例程序q′,若其中一个测试用例程序令需要测试的FPGA逻辑综合工具不能正常运行,或者工具正常运行后输出的综合网表与输入不具有等价性,则认为该测试用例程序导致FPGA工具出现故障。此时,将导致FPGA综合工具产生故障的测试用例程序进行保存,用于后续分析和约简故障信息。
其中,判断分析FPGA正常运行综合后的综合网表netlist与输入是否有等价性,可以借助等价性价检查工具,比如:SMT求解器、EC-FPGA工具及ABC正式验证工具等。让等价性检查器接受合成的结果与输入,判断两者之间是否有任何差异。
步骤7:判断是否达到测试终止条件。如果达到了测试终止条件,则终止测试,进行步骤8;否则,转到步骤1,继续执行测试。
整个FPGA测试的终止条件根据具体测试需求进行设定,包括设定测试迭代次数和测试时间。
步骤8:对引发待测逻辑综合器产生故障的测试用例程序进行约减。
其中,约简待测FPGA工具发生故障的测试用例程序,可以采用通用的程序约简工具Delta,也可以根据实际需求自定义工具实现。
步骤9:将约简的测试用例程序写入bug报告,提交给FPGA逻辑综合工具发者。
有益效果
本发明方法,对比现有技术,通过设计变异算子执行变异产生更多有效的FPGA逻辑综合工具测试的测试用例程序,增加了测试用例的多样性,可以帮助FPGA设计开发者更好的找到检测逻辑综合工具中存在的故障,提高FPGA逻辑综合器的质量。
附图说明
图1是本发明方法的流程示意图;
图2是具有等价性的测试输入设计与综合后的合成设计示例;
图3为原始测试输入设计和综合网表的斜接电路示意图。
具体实施方式
下面结合附图和实施示例对本发明方法进行详细说明。
实施例
在实施例中,本发明方法部署在如表1所示的Linux服务器上,根据实验需求安装对应的软件,如安装对应的待测工具Yosys 0.9(因其开源,所以选取该工具作为本发明的实验对象)与脚本解释器等。本实施示例由构建初始测试用例种子池、测试代码变异、脚本处理与执行等程序构成。
表1:Linux服务器配置信息表
处理器型号 | 内存 | GPU型号 | 操作系统 |
2.6GHz Intel Xeon E5-2680 | 64G | NVIDIA Tesla P4 | Ubuntu 20.04.2LTS |
首先构建初始用例程序种子池,设计变异算子,对测试用例程序进行变异,获取变异后的测试用例代码作为测试输入,执行待测工具,记录相应结果,对比执行结果与测试输入的等效性,以发现FPGA综合工具存在的故障。
如图1所示,一种基于变异的FPGA逻辑综合工具模糊测试方法。具体步骤如下:
步骤1:构建FPGA逻辑综合工具初始测试用例种子集Q:采用随机生成器,得到初始测试用例程序种子集。
具体为:采用Verismith程序随机生成器生成或根据实际需要测试的FPGA逻辑综合工具对象,采用自定义的程序随机生成工具实现。其中Verismith是英国伦敦帝国理工学院研究人员发布的开源工具,能够随机产生满足Verilog 2005标准的可综合HDL程序。
步骤2:依次从步骤1中构建的初始测试用例集中选取用例q1,q2,…,然后进行步骤3。
步骤3:判断测试用例变异的数量是否已达到设定值,若未达到,执行变异算子对步骤2所选取用例进行变异操作,若已达到,则结束变异执行操作,进行步骤5。
其中,本发明中突变操作可以结合传统的Jeff Offutt和Kim King定义的22种变异算子与FPGA逻辑综合工具的语言特性,构造了如表1所示的变异规则。
表1:FPGA逻辑综合器测试用例的变异规则
步骤4:执行变异操作,变异初始测试用例程序,得到新的测试用例程序变体集合Q′。
步骤5:从程序集Q′中选取测试用例q′,作为待测FPGA逻辑综合器Yosys的测试输入,对其进行已测试标记。
步骤6:收集保存FPGA逻辑综合工具Yosys测试的输出结果。判断检测待测工具是否正常运行,或者运行后的综合结果与输入的测试用例程序是否具有等价性。
具体为:对于测试用例程序集Q′中的每一个测试用例程序q′,若其中一个测试用例程序使待测的FPGA逻辑综合器Yosys不能正常运行,或者工具正常运行后输出的综合网表与输入不具有等价性,则认为该测试用例程序导致Yosys逻辑综合工具出现故障;此时,将导致工具产生故障的测试用例程序进行保存,用于后续分析和约简故障信息。
其中,判断分析Yosys正常运行综合后的综合网表netlist与输入的等价性是否一致,本实施用例采用SMT求解器进行等价性判断,具体的验证过程如下:
首先,Verilog必须被转换为逻辑表达式,如图2所示的例子,图2(a)为作为Yosys的测试输入Verilog原始设计模块,图2(b)为Yosys综合器综合后的合成设计Verilog网表模块,两者的等价性问题表示为逻辑表达:
其中,a、b、c均为变量。
然后,问题转为证明其逻辑表达式的可满足性(Sat)问题,即确定是否存在一个可能的输入,使逻辑表达式为真。因此,可将问题转化为图3所示的斜接电路,如果两个电路的输入电流相等,该电路将输出0,如果输出不匹配,则输出1。
最终,为了证明等价性,可以转而证明斜接电路是不可满足的(UnSat),即输入逻辑表达式给求解器SMT,识别一个满足方程的输入,如果没有找到,求解器SMT将返回方程不满足。这意味着两个逻辑表达式是等价的,也意味着两个模块是等价的。
步骤7:判断是否达到测试终止条件
整个FPGA测试的终止条件根据具体的测试需求进行设定,其中主要包含测试的迭代次数和测试时间;如果达到了测试终止条件,则结束FPGA逻辑综合工具的测试,执行下一步步骤8;否则,返回步骤1,继续执行测试。
步骤8:对引发待测工具产生故障的测试用例程序进行约减。
其中,约简待测FPGA工具发生故障的测试用例程序,可采用通用的程序约简工具Delta,也可以根据实际需求自定义工具实现。
步骤9:将约简的测试用例程序写入bug报告,提交给FPGA逻辑综合工具发者。
Claims (3)
1.一种基于变异的FPGA逻辑综合工具模糊测试方法,其特征在于,包括以下步骤:
步骤1:构建FPGA逻辑综合工具初始测试用例种子集Q;
采用随机生成器,得到初始测试用例程序种子集;
步骤2:依次从步骤1中构建的初始测试用例集中选取用例,然后进行步骤3;
步骤3:判断测试用例变异的数量是否已达到设定值;
若未达到,则执行步骤4,对步骤2所选取用例进行变异操作;若已达到,则进行步骤5;
步骤4:执行变异操作,变异初始测试用例程序,得到新的测试用例程序变体集合Q′;
步骤5:从集合Q′中选取测试用例q′,作为待测FPGA逻辑综合器的测试输入,并对其进行已使用标记;
步骤6:收集保存FPGA工具测试的输出结果,判断检测待测工具是否正常运行,或运行后的综合结果与输入的测试用例程序是否具有等价性;
具体为:
对于测试用例程序集Q′中的每一个测试用例程序q′,若其中一个测试用例程序令需要测试的FPGA逻辑综合工具不能正常运行,或者工具正常运行后输出的综合网表与输入不具有等价性,则认为该测试用例程序导致FPGA工具出现故障;此时,将导致FPGA综合工具产生故障的测试用例程序进行保存,用于后续分析和约简故障信息;
步骤7:判断是否达到测试终止条件;
如果达到了测试终止条件,则终止测试,进行步骤8;否则,转到步骤1,继续执行测试;
整个FPGA测试的终止条件根据具体测试需求进行设定,包括设定测试迭代次数和测试时间;
步骤8:对引发待测逻辑综合器产生故障的测试用例程序进行约减;
步骤9:将约简的测试用例程序写入bug报告,提交给FPGA逻辑综合工具发者。
2.如权利要求1所述的一种基于变异的FPGA逻辑综合工具模糊测试方法,其特征在于,步骤1中,对于初始测试用例程序,利用Verilog代码随机生成器进行构建。
3.如权利要求1所述的一种基于变异的FPGA逻辑综合工具模糊测试方法,其特征在于,步骤6中,使用等价性价检查工具判断分析FPGA正常运行综合后的综合网表netlist与输入是否有等价性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110687838.2A CN113434390B (zh) | 2021-06-21 | 2021-06-21 | 一种基于变异的fpga逻辑综合工具模糊测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110687838.2A CN113434390B (zh) | 2021-06-21 | 2021-06-21 | 一种基于变异的fpga逻辑综合工具模糊测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434390A CN113434390A (zh) | 2021-09-24 |
CN113434390B true CN113434390B (zh) | 2022-11-08 |
Family
ID=77756724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110687838.2A Active CN113434390B (zh) | 2021-06-21 | 2021-06-21 | 一种基于变异的fpga逻辑综合工具模糊测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434390B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568598B (zh) * | 2021-09-26 | 2021-12-14 | 中科亿海微电子科技(苏州)有限公司 | 基于yosys实现求和运算的FPGA逻辑综合方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080333B1 (en) * | 2002-10-31 | 2006-07-18 | Altera Corporation | Verifying logic synthesizers |
CN105868116B (zh) * | 2016-04-15 | 2018-07-24 | 西北工业大学 | 基于语义变异算子的测试用例生成和优化方法 |
US10452526B2 (en) * | 2017-06-15 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning for constrained mutation-based fuzz testing |
CN112181833A (zh) * | 2020-09-28 | 2021-01-05 | 全球能源互联网研究院有限公司 | 一种智能化模糊测试方法、装置及系统 |
CN112948193B (zh) * | 2021-03-08 | 2023-10-17 | 北京理工大学 | 一种基于差异测试的fpga综合工具缺陷检测方法 |
-
2021
- 2021-06-21 CN CN202110687838.2A patent/CN113434390B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113434390A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Civera et al. | An FPGA-based approach for speeding-up fault injection campaigns on safety-critical circuits | |
US7434184B2 (en) | Method for detecting flaws in a functional verification plan | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
US20110107281A1 (en) | Tiered schematic-driven layout synchronization in electronic design automation | |
JPH05167046A (ja) | ファクトリ・プログラムドデバイスの製造システム及び製造方法 | |
CN116663462B (zh) | 断言验证方法、断言验证平台、电子设备及可读存储介质 | |
US11789077B2 (en) | Single-pass diagnosis for multiple chain defects | |
CN114266210A (zh) | 芯片ate测试中的wgl文件处理方法及应用 | |
CN113434390B (zh) | 一种基于变异的fpga逻辑综合工具模糊测试方法 | |
US20070180411A1 (en) | Method and apparatus for comparing semiconductor-related technical systems characterized by statistical data | |
Goli et al. | Automated design understanding of SystemC-based virtual prototypes: Data extraction, analysis and visualization | |
CN111624475B (zh) | 大规模集成电路的测试方法及系统 | |
US10755012B2 (en) | System and method for generating a functional simulations progress report | |
Tang et al. | Diagnosing timing related cell internal defects for FinFET technology | |
US8065641B2 (en) | Automatically creating manufacturing test rules pertaining to an electronic component | |
Goli et al. | Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL | |
US7065724B2 (en) | Method and apparatus for generating and verifying libraries for ATPG tool | |
US9098637B1 (en) | Ranking process for simulation-based functional verification | |
CN115408967A (zh) | 通过结构分析标识安全相关端口与其安全机制的关联 | |
CN108363567B (zh) | 一种基于数据库的验证平台激励器自动化生成方法 | |
US9514258B2 (en) | Generation of memory structural model based on memory layout | |
CN116861829B (zh) | 用于定位逻辑系统设计中错误的方法、电子设备 | |
US10614181B2 (en) | Electronic design tools using non-synthesizable circuit elements | |
CN116681030B (zh) | 一种签核检查方法、装置、设备及存储介质 | |
CN107679266A (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 |