本发明涉及指令级验证,具体涉及一种risc-v向量指令集功能验证的测试用例生成系统及方法。
背景技术:
1、随着cpu复杂度的提高,集成电路的规模也在不断变大,这对cpu系统级的验证提出了越来越高的要求。指令集功能验证作为系统级验证中非常重要的一环,其主要目的是对目标指令集进行定向测试或随机测试,从而验证cpu对指令集的兼容性,即该cpu能否准确无误的执行每条指令。近几年risc-v指令集越来越受到人们的关注,该指令集凭借精简的指令设计、高效的执行等优点成为了现代cpu设计的主流指令集之一,模块化的设计理念将该指令集根据应用场景分为一个基本指令集和多个扩展指令集,其中risc-v向量扩展(下称rvv)指令集主要面向人工智能、大数据等高性能高并发处理场景。
2、该扩展指令集基于单指令多数据的数据级并行架构,将64、128等位的向量寄存器的数据拆分为多个8、16等位的向量,然后将若干个向量进行并行地计算。由于risc-v向量扩展指令数量庞大,且配置参数较多,指令的执行又有相关性等原因,在cpu系统级验证时若手动编写每条向量扩展指令的测试用例效率较低。
技术实现思路
1、为了克服上述缺陷,本发明提出了一种risc-v向量指令集功能验证的测试用例生成系统及方法。
2、第一方面,提供一种risc-v向量指令集功能验证的测试用例生成系统,所述risc-v向量指令集功能验证的测试用例生成系统包括:所述系统包括:测试用例生成控制模块、场景构建模块和多个参考模型模块;
3、所述测试用例生成控制模块,用于设置向量指令测试参数,将所述测试参数发送至场景构建模块,将接收的源操作数组对象发送至参考模型模块,并将接收的源操作数组对象和接收的目的操作数组对象拼接,得到测试用例;
4、所述场景构建模块,用于基于所述测试参数生成源操作数组对象,并将源操作数组对象发送至测试用例生成控制模块;
5、所述参考模型模块,用于基于所述源操作数组对象生成目的操作数组对象,并将目的操作数组对象发送至测试用例生成控制模块。
6、优选的,所述向量指令测试参数包括:指令名称、元素宽度、向量寄存器组合和是否进行掩码操作。
7、优选的,所述场景构建模块具体用于:
8、将所述测试参数代入预先构建的场景函数,得到源操作数组对象;
9、获取测试参数中指令名称对应的向量指令类型;
10、基于向量指令对应的向量指令类型和操作对象确定该向量指令对应的计算类型;
11、将所述源操作数组对象发送至所述向量指令对应的计算类型对应的参考模型模块;
12、其中,每一类向量指令计算类型配置一个用于实现该类指令运算的参考模型模块。
13、进一步的,所述预先构建的场景函数包括:随机测试场景函数、遍历向量寄存器测试场景函数、源目寄存器编号重叠测试场景函数、0|1翻转测试场景函数、特殊值测试场景函数、指令相关性测试场景函数、旁路设计测试场景函数、avl改变测试场景函数、vta和vma的置位测试场景函数、vstart寄存器功能测试场景函数、异常测试场景函数。
14、优选的,所述测试用例生成控制模块、场景构建模块和多个参考模型模块之间的通用接口为自定义的数组对象群。
15、优选的,所述自定义的数组对象群包括,源操作数组对象、目的操作数组对象、源寄存器数组对象、目的寄存器数组对象、掩码操作数组对象;数组对象采用标准库中的ndarray数组对象进行搭建。
16、进一步的,所述参考模型模块具体用于:基于数组对象群,调用所述向量指令对应的计算类型对应的参考模型模块中的运算函数进行计算,得到目的操作数组对象。
17、进一步的,所述向量指令对应的计算类型包括:整型的向量与向量计算、整型的向量与标量计算、整型的向量与立即数计算、整型的向量访存、浮点的向量与向量计算、浮点的向量与标量计算、浮点的向量与立即数计算、整型的向量与向量掩码计算、整型的向量与标量掩码计算、整型的向量与立即数掩码计算、整型的向量掩码访存、浮点的向量与向量掩码计算、浮点的向量与标量掩码计算、浮点的向量与立即数掩码计算、特殊指令掩码操作。
18、第二方面,提供一种risc-v向量指令集功能验证的测试用例生成方法,所述risc-v向量指令集功能验证的测试用例生成方法包括:
19、测试用例生成控制模块设置向量指令测试参数,将所述测试参数发送至场景构建模块,将接收的源操作数组对象发送至参考模型模块,并将接收的源操作数组对象和接收的目的操作数组对象拼接,得到测试用例;
20、场景构建模块基于所述测试参数生成源操作数组对象,并将源操作数组对象发送至测试用例生成控制模块;
21、参考模型模块基于所述源操作数组对象生成目的操作数组对象,并将目的操作数组对象发送至测试用例生成控制模块。
22、优选的,所述向量指令测试参数包括:指令名称、元素宽度、向量寄存器组合和是否进行掩码操作。
23、本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
24、本发明提供了一种risc-v向量指令集功能验证的测试用例生成系统及方法,包括:所述测试用例生成控制模块,用于设置向量指令测试参数,将所述测试参数发送至场景构建模块,将接收的源操作数组对象发送至参考模型模块,并将接收的源操作数组对象和接收的目的操作数组对象拼接,得到测试用例;所述场景构建模块,用于基于所述测试参数生成源操作数组对象,并将源操作数组对象发送至测试用例生成控制模块;所述参考模型模块,用于基于所述源操作数组对象生成目的操作数组对象,并将目的操作数组对象发送至测试用例生成控制模块。本发明提供的技术方案共三个模块,分别是测试用例生成控制流模块、应用场景构建模块和指令参考模型模块,控制流模块调用另外两个模块,进行测试用例场景构建,参考结果的计算,以及最终测试程序体的生成。针对验证功能点不充分,验证覆盖率不足等问题,依据rvv指令手册和向量运算部件一般性设计方法构建了多样的向量指令应用场景,对向量指令执行过程中的边角情况进行针对性的测试,将向量指令集验证尽可能做到完备。搭建参考模型时针对大量具有相同特征的向量指令,采用了参数化、可定制化的方式,构建了可复用的测试用例生成模板,方便了新向量指令的扩展;各模块间采用ndarray数组对象作为上下级软件间的接口,接口统一,便于系统集成,方便程序员添加新的应用场景,从而扩展测试用例。
1.一种risc-v向量指令集功能验证的测试用例生成系统,其特征在于,所述系统包括:测试用例生成控制模块、场景构建模块和多个参考模型模块;
2.如权利要求1所述的系统,其特征在于,所述向量指令测试参数包括:指令名称、元素宽度、向量寄存器组合和是否进行掩码操作。
3.如权利要求1所述的系统,其特征在于,所述场景构建模块具体用于:
4.如权利要求3所述的系统,其特征在于,所述预先构建的场景函数包括:随机测试场景函数、遍历向量寄存器测试场景函数、源目寄存器编号重叠测试场景函数、0|1翻转测试场景函数、特殊值测试场景函数、指令相关性测试场景函数、旁路设计测试场景函数、avl改变测试场景函数、vta和vma的置位测试场景函数、vstart寄存器功能测试场景函数、异常测试场景函数。
5.如权利要求1所述的系统,其特征在于,所述测试用例生成控制模块、场景构建模块和多个参考模型模块之间的通用接口为自定义的数组对象群。
6.如权利要求1所述的系统,其特征在于,所述自定义的数组对象群包括,源操作数组对象、目的操作数组对象、源寄存器数组对象、目的寄存器数组对象、掩码操作数组对象;数组对象采用标准库中的ndarray数组对象进行搭建。
7.如权利要求3所述的系统,其特征在于,所述参考模型模块具体用于:基于数组对象群,调用所述向量指令对应的计算类型对应的参考模型模块中的运算函数进行计算,得到目的操作数组对象。
8.如权利要求3所述的系统,其特征在于,所述向量指令对应的计算类型包括:整型的向量与向量计算、整型的向量与标量计算、整型的向量与立即数计算、整型的向量访存、浮点的向量与向量计算、浮点的向量与标量计算、浮点的向量与立即数计算、整型的向量与向量掩码计算、整型的向量与标量掩码计算、整型的向量与立即数掩码计算、整型的向量掩码访存、浮点的向量与向量掩码计算、浮点的向量与标量掩码计算、浮点的向量与立即数掩码计算、特殊指令掩码操作。
9.一种risc-v向量指令集功能验证的测试用例生成方法,其特征在于,所述方法包括:
10.如权利要求9所述的方法,其特征在于,所述向量指令测试参数包括:指令名称、元素宽度、向量寄存器组合和是否进行掩码操作。