一种基于RISC-V处理器的指令集验证方法及装置

文档序号:32379688发布日期:2022-11-30 01:42阅读:380来源:国知局
一种基于RISC-V处理器的指令集验证方法及装置
一种基于risc-v处理器的指令集验证方法及装置
技术领域
1.本发明涉及集成电路及处理器验证技术领域,具体涉及一种基于risc-v处理器的指令集验证方法及装置。


背景技术:

2.risc-v是一种完全开源的指令集架构,该指令集不仅注重于在微型化、低功耗用途设备上实现,且充分考虑了当代市场化的竞争环境实现了指令集的完全开源,从而使risc-v指令集得到进一步发展。
3.当前,相比于现有指令集框架中的其他指令集,risc-v指令集框架具有开源性、差异化和自由选择的优势日趋明显。因此,出现了很多基于risc-v架构的处理器,这些处理器的实现范围十分广泛,不仅有针对特定环境下的定制化处理器,面向复杂场景的通用risc-v处理器更是层出不穷。
4.随着risc-v处理器与集成电路工艺技术的高速发展,当前芯片的设计规模呈指数上升。日趋复杂的处理器结构以及多样化的扩展指令集使得处理器指令集验证越来越困难,为保证处理器能够正确执行指令,在完成处理器阶段性设计后,针对处理器指令集的验证工作变得极为重要,但目前risc-v官方仅提供了较为简单的指令测试集,与实现处理器指令集验证高覆盖率的目标差距较大。虽然目前仍能够通过生成随机指令序列的方式提高指令测试覆盖率,但针对指令边界条件的测试又难以在有限的时间内遍历到。


技术实现要素:

5.为了克服上述缺陷,本发明提出了一种基于risc-v处理器的指令集验证方法及装置。
6.第一方面,提供一种基于risc-v处理器的指令集验证方法,所述基于risc-v处理器的指令集验证方法包括:
7.采用python脚本语言生成针对risc-v指令集测试的汇编文件;
8.通过待测处理器执行所述汇编文件,得到测试结果;
9.通过外部设备将实时接收的测试结果进行汇总并生成测试结果文件。
10.优选的,所述汇编文件包括:gen_isa.py文件、gen_testcase_i/m/a/f/d.py文件、testcase_gen.py文件和rv_testcase_macros.py文件。
11.进一步的,所述gen_isa.py文件,用于读入参数,构建文件目录;
12.所述gen_testcase_i/m/a/f/d.py文件,用于调用测试用例生成模板,并生成用于指令集验证的测试用例;
13.所述testcase_gen.py文件,用于存储用于指令集验证的测试用例模板;
14.所述rv_testcase_macros.py文件,用于存储为所述用于指令集验证的测试用例模板预设的宏定义。
15.进一步的,所述测试用例模板包括下述中的至少一种:冲突角度的试用例模板、指
令边界角度的试用例模板、硬件设计角度的试用例模板、数学角度的试用例模板、处理器系统角度的试用例模板。
16.进一步的,所述冲突角度的试用例模板包括下述中的至少一种:存储部件访问冲突测试用例模板、数据相关冲突测试用例模板、定点浮点计算单元冲突测试用例模板、多级条件跳转测试用例模板、缓存同步及一致性测试用例模板。
17.进一步的,所述指令边界角度的试用例模板包括下述中的至少一种:语句覆盖率测试用例模板、条件覆盖率试用例模板、翻转覆盖率试用例模板、功能覆盖率试用例模板。
18.进一步的,所述硬件设计角度的试用例模板包括下述中的至少一种:溢出情况试用例模板、符号位处理试用例模板、寄存器使用分配试用例模板。
19.进一步的,所述数学角度的试用例模板包括下述中的至少一种:特殊值试用例模板、最值试用例模板。
20.进一步的,所述处理器系统角度的试用例模板包括下述中的至少一种:指令的流向试用例模板、指令间的间隔试用例模板、指令间类型的异同试用例模板、指令间数据的异同试用例模板、指令间数据引用试用例模板。
21.第二方面,提供一种基于risc-v处理器的指令集验证装置,所述基于risc-v处理器的指令集验证装置包括:
22.生成模块,用于采用python脚本语言生成针对risc-v指令集测试的汇编文件;
23.分析模块,用于通过待测处理器执行所述汇编文件,得到测试结果;
24.汇总模块,用于通过外部设备将实时接收的测试结果进行汇总并生成测试结果文件。
25.本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
26.本发明提供了一种基于risc-v处理器的指令集验证方法及装置,包括:采用python脚本语言生成针对risc-v指令集测试的汇编文件;通过待测处理器执行所述汇编文件,得到测试结果;通过外部设备将实时接收的测试结果进行汇总并生成测试结果文件。本发明提供的技术方案能够显著提高验证覆盖率,同时能够覆盖大部分指令边界条件,提高处理器指令集验证效率。
附图说明
27.图1是本发明实施例的基于risc-v处理器的指令集验证方法的主要步骤流程示意图;
28.图2是本发明实施例的汇编测试文件框架图;
29.图3是本发明实施例的python脚本执行流程图;
30.图4是本发明实施例的基于risc-v处理器的指令集验证装置的主要结构框图。
具体实施方式
31.下面结合附图对本发明的具体实施方式作进一步的详细说明。
32.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员
在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
33.实施例1
34.参阅附图1,图1是本发明的一个实施例的基于risc-v处理器的指令集验证方法的主要步骤流程示意图。如图1所示,本发明实施例中的基于risc-v处理器的指令集验证方法主要包括以下步骤:
35.步骤s101:采用python脚本语言生成针对risc-v指令集测试的汇编文件;
36.步骤s102:通过待测处理器执行所述汇编文件,得到测试结果;
37.步骤s103:通过外部设备将实时接收的测试结果进行汇总并生成测试结果文件。
38.在一个实施方式中,所述汇编文件对应的文件框架由宏定义组成,如图2所示,包括处理器硬件初始化、测试内容及结果比较、数据存储区。处理器硬件初始化部分与具体risc-v处理器设计相关,用户可以根据具体设计对处理器硬件初始化代码进行编写适配。测试内容及结果比较部分由步骤s2生成,采用自测试的方法进行结果比较。数据存储区用于存储测试所需的测试激励及测试所需的临时数据量。
39.其中,所述汇编文件包括:gen_isa.py文件、gen_testcase_i/m/a/f/d.py文件、testcase_gen.py文件和rv_testcase_macros.py文件。
40.本实施例中,python脚本文件一共由8个文件组成,文件运行流程如图3所示。其中,gen_isa.py作为程序入口文件,用于读入参数,构建文件目录,引导相应函数的执行。gen_testcase_i/m/a/f/d.py共5个文件存放各类指令的测试用例生成方法,用于调用测试用例生成模板。testcase_gen.py文件存放各类指令的测试用例模板,为验证的指令提供可用的测试模板,以及通过调用numpy数学库和指令集模拟器参考模型获取“golden”计算结果,并创建生成目标汇编测试文件。rv_testcase_macros.py文件存放代码所用到的各种宏,用于为测试用例模板提供包括文本、数据等宏变量或宏定义。testcase_gen.py采用了参数化、模块化的编写方式,在扩展性方面,仅需对testcase_gen.py添加新的测试模板即可灵活实现自定义指令集测试。
41.python脚本通过调用由具体汇编指令组成的宏定义来实现指令验证,由汇编指令组成的宏定义构建了多种处理器运行场景,具体的包括存储部件访问冲突、数据相关冲突、定点浮点计算单元冲突、多级条件跳转、缓存同步及一致性测试。在构建测试场景方面,本验证方法从多个角度考虑针对指令边界情况的验证,具体的包括覆盖率角度有语句覆盖率、条件覆盖率、翻转覆盖率、功能覆盖率;硬件设计角度有溢出情况,、符号位处理、寄存器使用分配;数学角度考虑特殊值(-1,0,1),最值(全f,全0),浮点边界值(qnan,snan,+inf,-inf,规格化浮点数,非规格化浮点数);处理器体系架构的角度包括指令的流向、指令的相关距离、指令间类型的异同、指令间数据的异同、指令间数据引用。本专利通过以上多个角度构造指令集测试用例,充分保证了指令集定向测试的完备性。
42.python脚本通过提供随机计算激励及计算结果实现指令集随机验证,大批量的随机测试用例有利于提高指令集验证覆盖率,“golden”计算结果具体由python numpy数学库与指令集模拟器提供,用于保证指令集验证的正确性。更具体的,python numpy数学库用于产生定点数计算结果,指令集模拟器用于产生浮点数计算结果。python脚本将测试激励与正确的预期计算结果收集整理后产生目标汇编测试文件。
43.因此,所述gen_isa.py文件,用于读入参数,构建文件目录;
44.所述gen_testcase_i/m/a/f/d.py文件,用于调用测试用例生成模板,并生成用于指令集验证的测试用例;
45.所述testcase_gen.py文件,用于存储用于指令集验证的测试用例模板;
46.所述rv_testcase_macros.py文件,用于存储为所述用于指令集验证的测试用例模板预设的宏定义。
47.其中,所述测试用例模板包括下述中的至少一种:冲突角度的试用例模板、指令边界角度的试用例模板、硬件设计角度的试用例模板、数学角度的试用例模板、处理器系统角度的试用例模板。
48.所述冲突角度的试用例模板包括下述中的至少一种:存储部件访问冲突测试用例模板、数据相关冲突测试用例模板、定点浮点计算单元冲突测试用例模板、多级条件跳转测试用例模板、缓存同步及一致性测试用例模板。
49.所述指令边界角度的试用例模板包括下述中的至少一种:语句覆盖率测试用例模板、条件覆盖率试用例模板、翻转覆盖率试用例模板、功能覆盖率试用例模板。
50.所述硬件设计角度的试用例模板包括下述中的至少一种:溢出情况试用例模板、符号位处理试用例模板、寄存器使用分配试用例模板。
51.所述数学角度的试用例模板包括下述中的至少一种:特殊值试用例模板、最值试用例模板。
52.所述处理器系统角度的试用例模板包括下述中的至少一种:指令的流向试用例模板、指令间的间隔试用例模板、指令间类型的异同试用例模板、指令间数据的异同试用例模板、指令间数据引用试用例模板。
53.在一个实施方式中,所述步骤s102具体可以将生成的汇编测试文件经编译后放入待测处理器中执行,执行的结果将通过待测处理器发送到外部设备体现,外部设备为可运行操作系统的计算机。通过计算机实时接收测试结果。
54.在一个实施方式中,所述步骤s103具体可以通过计算机将实时接收的测试结果进行汇总并生成测试结果报表文件,测试结果汇总文件将通过计算机屏幕输出显示。
55.实施例2
56.基于同一发明构思,本发明提供一种基于risc-v处理器的指令集验证装置,如图4所示,所述基于risc-v处理器的指令集验证装置包括:
57.生成模块,用于采用python脚本语言生成针对risc-v指令集测试的汇编文件;
58.分析模块,用于通过待测处理器执行所述汇编文件,得到测试结果;
59.汇总模块,用于通过外部设备将实时接收的测试结果进行汇总并生成测试结果文件。
60.优选的,所述汇编文件包括:gen_isa.py文件、gen_testcase_i/m/a/f/d.py文件、testcase_gen.py文件和rv_testcase_macros.py文件。
61.进一步的,所述gen_isa.py文件,用于读入参数,构建文件目录;
62.所述gen_testcase_i/m/a/f/d.py文件,用于调用测试用例生成模板,并生成用于指令集验证的测试用例;
63.所述testcase_gen.py文件,用于存储用于指令集验证的测试用例模板;
64.所述rv_testcase_macros.py文件,用于存储为所述用于指令集验证的测试用例
模板预设的宏定义。
65.进一步的,所述测试用例模板包括下述中的至少一种:冲突角度的试用例模板、指令边界角度的试用例模板、硬件设计角度的试用例模板、数学角度的试用例模板、处理器系统角度的试用例模板。
66.进一步的,所述冲突角度的试用例模板包括下述中的至少一种:存储部件访问冲突测试用例模板、数据相关冲突测试用例模板、定点浮点计算单元冲突测试用例模板、多级条件跳转测试用例模板、缓存同步及一致性测试用例模板。
67.进一步的,所述指令边界角度的试用例模板包括下述中的至少一种:语句覆盖率测试用例模板、条件覆盖率试用例模板、翻转覆盖率试用例模板、功能覆盖率试用例模板。
68.进一步的,所述硬件设计角度的试用例模板包括下述中的至少一种:溢出情况试用例模板、符号位处理试用例模板、寄存器使用分配试用例模板。
69.进一步的,所述数学角度的试用例模板包括下述中的至少一种:特殊值试用例模板、最值试用例模板。
70.进一步的,所述处理器系统角度的试用例模板包括下述中的至少一种:指令的流向试用例模板、指令间的间隔试用例模板、指令间类型的异同试用例模板、指令间数据的异同试用例模板、指令间数据引用试用例模板。
71.实施例3
72.基于同一种发明构思,本发明还提供了一种计算机设备,该计算机设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor、dsp)、专用集成电路(application specificintegrated circuit,asic)、现成可编程门阵列(field-programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行计算机存储介质内一条或一条以上指令从而实现相应方法流程或相应功能,以实现上述实施例中一种基于risc-v处理器的指令集验证方法的步骤。
73.实施例4
74.基于同一种发明构思,本发明还提供了一种存储介质,具体为计算机可读存储介质(memory),所述计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中一种基于risc-v处理器的指令集验证方法的步骤。
75.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序
产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
76.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
77.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
78.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
79.最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1