一种基于代码生成的仿真软件测试方法

文档序号:32426589发布日期:2022-12-03 00:02阅读:81来源:国知局
一种基于代码生成的仿真软件测试方法

1.本发明涉及软件测试技术领域,尤其涉及一种基于代码生成的仿真软件测试方法。


背景技术:

2.在数位电路设计中,寄存器传输级(register-transfer level,rtl)是一种对同步数位电路的抽象模型,寄存器传输级抽象模型在诸如verilog和vhdl的硬件描述语言中被用于创建对实际电路的高层次描述。在现代的数位设计中,寄存器传输级上的设计是最典型的工作流程。仿真软件作为验证寄存器传输级代码的工具,其输出的波形图可以以一种直观的描述帮助开发人员了解整个模型的运行效果。这样可发人员就可以使用更小的代价定位抽象模型的可能性缺陷。因此保证仿真软件的可靠性与稳定性至关重要。
3.目前针对仿真软件的测试方法主要是应用模糊测试的用例生成类测试,其中具有代表性的是verismith。其通过基于ast模糊生成方式生成随机的verilog代码,并将其应用于综合工具或仿真软件的测试。
4.在芯片设计及高端制造业领域对于开发工具的稳定性以及开发工具的正确性均有很高的要求。已有的测试技术存在两个方面的不足,首先测试工具无法保证自身的稳定性,基于ast生成的verilog代码有一定的不可用性。这也就导致了工具所发现的缺陷有着假阳性的问题。其次基于ast生成的verilog代码多样性不足,实现的功能较为单一,这也限制了工具探索缺陷的空间。


技术实现要素:

5.根据现有技术存在的问题,本发明公开了一种基于代码生成的仿真软件测试方法,具体包括如下步骤:
6.对预学习的代码文件进行嵌入编码并进行嵌入标记;
7.再对测试用例进行信息提取和特征嵌入;
8.对测试用例进行异构信息编码和语法规则学习生成代码信息;
9.根据生成的代码信息和自然语言规则预测下一个语法规则,并最终得到预测的代码段,将得到的预测代码段组合为预测代码文件;
10.对预测代码文件进行测试。
11.进一步的,进行嵌入编码时:标记输入的语句并记录语句的长度,将每个标记拆分为字符,采用嵌入方式将所有标记和字符表示为数值向量,将数值向量反馈到编码器并通过子层将数值向量与词嵌入集成得到嵌入向量,使用编码器对嵌入向量进行编码。
12.进一步的,对于输入标记的语句,通过维护的查找表将其标记为嵌入。
13.进一步的,对测试用例进行信息提取时:采用位置嵌入方式对单词位置的信息进行编码,计算每个单词的位置嵌入,通过多头注意力机制学习非线性特征,将字符嵌入的信息与非线性特征进行合并获得合并特征,应用gating机制提取每个标记附近的局部特征,
将局部特征与合并特征进行特征嵌入。
14.进一步的,对测试用例进行异构信息编码时:使用规则id编码规则信息,通过查找表将规则序列中的规则表示为数值向量,根据查找表将语法规则作为原子标记,使用规则信息的编码增强规则的表示形式,将规则内容编码为向量并得到规则嵌入,使用位置嵌入表示语法规则的位置;
15.对测试用例进行语法规则学习时:将规则嵌入和位置嵌入的总和输入解码器的自注意力层提取输入特征,使用编码器的门控机制将内容编码规则合并到提取输入特征部分,将测试用例语法树视为图,使用邻接矩阵表示有向图,将测试用例语法树与邻接矩阵相乘得出所有节点的特征信息。
16.进一步的,预测下一个语法规则时:在解码器中构造块堆栈,标记从根到要扩展的节点的路径,将此路径中的节点表示为数值向量,应用两个全连接层来提取路径中的节点特征以进行预测,得到下一个语法规则;
17.获取预测代码文件时:根据将下一个语法规则指导组成新的代码片段,不断执行直到代码数量达到设定阈值,将得到的预测代码组合为预测代码文件。
18.由于采用了上述技术方案,本发明提供的一种基于代码生成的仿真软件测试方法,该方法可以生成可用性较高的仿真文件,在已有的测试条件下可以测试出仿真软件的bug,保证了在芯片设计及高端制造业领域仿真验证工具的稳定性。相比于现有技术,我们使用独特的ast编码器,使生成的代码文件可用性更高技术成熟度更好。并且在生成文件的多样性来看,对于特定语法规则的学习使得我们生成的仿真文件更加准确,这也使得我们的技术对于仿真软件的缺陷有更大的测试空间。
附图说明
19.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本发明基于代码生成的仿真软件测试方法的流程图
21.图2为本发明实施例中编码器和解码器的结构框图。
具体实施方式
22.为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
23.如图1所示的一种基于代码生成的仿真软件测试方法,具体包括如下步骤:
24.s1:对预学习的代码文件进行嵌入编码并进行嵌入标记:
25.s11:进行词嵌入编码处理;
26.s12:标记输入的语句并记录语句的长度
27.s13:将每个标记拆分为字符
28.s14:采用嵌入方式将所有标记和字符表示为数值向量
29.s15:将数值向量反馈到编码器并通过子层将数值向量与词嵌入集成得到嵌入向

30.s16:使用编码器对嵌入向量进行编码
31.s17:对于输入标记的语句,通过维护的查找表将其标记为嵌入
32.s2:得到嵌入标记后,我们开始进行信息提取与特征嵌入,具体步骤如下:
33.s21:使用位置嵌入对单词位置的信息进行编码
34.s22:计算每个单词的位置嵌入
35.s23:通过多头注意力机制学习非线性特征
36.s24:将字符嵌入的信息与非线性特征进行合并获得合并特征
37.s25:应用gating机制提取每个标记附近的局部特征
38.s26:将局部特征与合并特征进行特征嵌入
39.s3:程序是通过预测语法规则的顺序生成的,但是仅考虑这些规则就缺少程序的具体认识,导致程序不足以预测下一个规则。因此,我们需要ast编码器考虑异构信息,对于规则进行预测,具体步骤如下:
40.s31:使用规则id,编码规则信息
41.s32:通过查找表将规则序列中的规则表示为数值向量
42.s33:依据查找表将语法规则作为原子标记
43.s34:使用规则信息的编码增强规则的表示形式
44.s35:将规则内容编码为向量,并得到规则嵌入
45.s36:使用位置嵌入表示语法规则的位置
46.s37:将规则嵌入,位置嵌入的总和输入解码器的自注意力层提取输入特征
47.s38:使用编码器的门控机制将内容编码规则合并到提取输入特征部分
48.s39:将测试用例语法树视为图,并使用邻接矩阵m表示有向图。将测试用例语法树与邻接矩阵相乘得出所有节点的特征信息
49.s4:进行两次编码后,根据生成的代码信息与自然语言规则预测下一个语法规则,并最终得到预测的代码片段
50.s41:在解码器中构造块堆栈,标记从根到要扩展的节点的路径
51.s42:将此路径中的节点表示为数值向量
52.s43:应用两个全连接层来提取路径中的节点特征以进行预测得到下一个语法规则
53.s44:根据下一个语法规则组成新的代码片段,不断执行直到代码数量达到设置的阈值。
54.s46:将得到的预测代码组合为预测代码文件
55.s5:得到预测代码文件后我们将进入测试阶段,具体步骤如下:
56.s51:保存得到的预测代码文件为仿真测试文件格式
57.s52:依据预测代码文件生成预编译文件以用于测试
58.s53:编译得到的测试文件
59.s54:如果编译过程中出现崩溃或异常,则将文件保存至异常文件夹,否则保存到正常文件夹
60.以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1