一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种RISC-VCPU验证中的签名比较方法及装置与流程

2022-07-23 08:04:46 来源:中国专利 TAG:

一种risc-v cpu验证中的签名比较方法及装置
技术领域
1.本发明涉及与验证技术相关的即使领域,特别涉及一种risc-v cpu验证中的签名比较方法及装置。


背景技术:

2.risc-v是由加州伯克利分校团队设计和开发的一款开源的指令集架构,与x86、arm等主流指令集架构相比,risc-v是开源、精简、免费的架构。加上日益完善的生态环境,成为国内发展自主cpu的一个重大的机遇。cpu作为集成电路产业设计最为复杂的芯片,其庞大的设计规模和复杂的结构,也对功能验证提出了更高的要求。更短的验证周期,更少的验证工作人员,才能降低研发成本,提高效率。
3.现有的验证技术有静态验证技术和动态验证技术。
4.静态验证其主要原理是生成可读的汇编指令,通过编译工具,将生成的汇编指令转变成模拟器和dut(设计测试)所需要的二进制格式,通过加载到两种设计中执行后,将生成的测试结果保存后进行比较,判断dut的行为是否符合参考模型,以验证设计的正确性。
5.动态验证技术主要原理为通过接口使指令生成器与dut和参考模型直接通信,动态的运行指令,动态比较结果,根据是否出现错误选择停止仿真还是继续运行。
6.现有的验证技术存在以下问题:
7.静态验证技术强调的是一种事后验证,实现较为简单,但是无法实时发现错误;
8.而动态验证技术可实时比较发现问题,但是结构比较复杂,耗时较长。
9.因此,如何将上述问题加以解决,即问本领域技术人员的研究方向所在。


技术实现要素:

10.发明所要解决的问题
11.本发明的主要目的是解决静态验证技术和动态验证技术的缺点而提供一种risc-v cpu验证中的签名比较方法及装置。
12.用于解决问题的方案
13.为了达到上述目的,本发明提供一种risc-v cpu验证中的签名比较方法,包括如下步骤:
14.步骤s1:选定签名点,具体为选择一条不影响架构可见状态的指令;
15.步骤s2:通过spike模拟器在签名点获取准确的的寄存器状态;
16.步骤s3:cpu运行同样的测试用例。
17.优选地,步骤s1包括:
18.在risc-v架构下选用了一条汇编指令,该汇编指令为把寄存器zero的值0左移0位,空出的位置填入0。
19.优选地,步骤s2包括如下子步骤:
20.步骤s21:在spike模拟器中添加签名点时提取寄存器信息到输出文件的代码;
21.步骤s22:屏蔽掉测试用例中的对比宏,运行测试用例获取各个签名点寄存器的状态的正确结果数据文件。
22.优选地,所述步骤s3包括如下子步骤:
23.步骤s31:把正确结果数据文件放入特定内存区域a;
24.步骤s32:打开测试用例中的对比宏,运行测试用例;
25.步骤s33:每次进入签名点,根据一个包含处理器编号的寄存器找特定的内存位置,找到正确储存数据的内存地址,取出数据进行比较。
26.优选地,所述步骤s33包括如下子步骤:
27.步骤s331:用一个包含处理器编号的寄存器,一个暂存的寄存器暂存t0,t1,t2寄存器,并根据所述包含处理器编号的寄存器把t0,t1,t2寄存器值先写入一个内存区域b;
28.步骤s332:根据所述包含处理器编号的寄存器依次从内存区域a中取出整数寄存器,浮点寄存器进行比对,如果比对一致,则继续运行,否则退出执行;
29.步骤s333:恢复t0,t1,t2寄存器到初值;
30.步骤s334:继续执行。
31.为了达到上述目的,本发明还提供一种risc-v cpu验证中的签名比较装置,包括:
32.签名选定单元,用于选定签名点,具体为选择一条不影响架构可见状态的指令;
33.寄存器状态获取单元,用于通过spike模拟器在签名点获取准确的的寄存器状态;
34.测试用例运行单元,cpu运行同样的测试用例。
35.优选地,所述寄存器状态获取单元包括:
36.提取寄存器信息子单元,在spike模拟器中添加签名点时提取寄存器信息到输出文件的代码;以及
37.正确结构数据文件获取子单元,屏蔽掉测试用例中的对比宏,运行测试用例获取各个签名点寄存器的状态的正确结果数据文件。
38.优选地,所述测试用例运行单元包括:
39.存放子单元,把正确结果数据文件放入特定内存区域a;
40.运行测试用例子单元,打开测试用例中的对比宏,运行测试用例;以及
41.内存地址获取子单元,每次进入签名点,根据一个包含处理器编号的寄存器找特定的内存位置,找到正确储存数据的内存地址,取出数据进行比较。
42.为了达到上述目的,本发明还提供一种电子设备,所述电子设备存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
43.为了达到上述目的,本发明还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述方法的步骤。
44.发明的效果
45.本发明具备简单、快速又具备动态验证技术的实时比较功能。刚开始验证时,signature开始是会较多,但是随着设计的稳定,出错的概率会越来越少,从而可以进一步的减少signature点,进一步的提升了验证速度。
附图说明
46.图1是一种risc-v cpu验证中的签名比较方法的流程图;
47.图2是spike执行case(测试用例)流程的流程图;
48.图3是cpu执行case流程;
49.图4是一种risc-v cpu验证中的签名比较装置框图。
50.图5是本技术实施例提供的一种电子设备的结构示意图。
51.图6是本技术实施例提供的一种用于签名比较方法的程序产品的结构示意图。
具体实施方式
52.下面将结合本发明实施例中的图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。并且,在此处需要进一步强调的是,以下的具体实施例提供的优选的技术方案,各方案(实施例)之间是可以相互配合或结合使用的。
53.如图1所示,为本发明一种risc-v cpu验证中的签名比较方法的流程图,本发明的一种risc-v cpu验证中的签名比较方法包括如下步骤:
54.步骤s1:选定签名(signature)点;
55.步骤s1包括如下子步骤:
56.步骤s11:可选择一条hint指令(hint为不影响架构可见状态的指令);
57.步骤s12:在本文中risc-v架构下选用了“slti zero,zero,0”。(“slti zero,zero,0”为一条汇编指令,意思把寄存器zero的值0左移0位,空出的位置填入0,结果写入寄存器zero,实际不影响寄存器zero的值,因为zero寄存器里面的值始终是0)。
58.步骤s2:通过spike(spike是一个模拟器的名称)在signature点获取golden(准确的)的寄存器状态,流程图见图2,该步骤s2包括如下子步骤:
59.步骤s21:在spike中添加signature点时提取寄存器信息到输出文件的code(代码);
60.步骤s22:屏蔽掉case中的对比宏,运行case获取各个signature点寄存器的状态的golden_data.log(正确结果数据)文件;
61.步骤s3:cpu运行同样的case,流程图见图2
62.该步骤s3包括如下子步骤:
63.步骤s31:把golden_data.log(正确结果数据)文件放入特定内存区域a;
64.步骤s32:打开case中的对比宏,运行case;
65.步骤s33:每次进入signature点,根据mhartid(mhartid是一个包含处理器编号的寄存器)找特定的内存位置,找到正确储存数据的内存地址,取出数据进行比较;
66.该步骤s33包括如下子步骤:
67.步骤s331:用mscratch,sscratch(sscratch是一个暂存的寄存器)寄存器暂存t0,t1,t2(t0,t1,t2均是寄存器),并根据mhartid把这些寄存器值先写入一个内存区域b;
68.步骤s332:根据mhartid依次从内存区域a中取出整数寄存器,浮点寄存器,mhartid,misa,mstatus,mtvec,mepc,sepc,mtval,stval,mcause,satp(上述均为寄存器)
等进行比对,如果比对一致,则继续运行,否则退出执行;
69.步骤s333:恢复t0,t1,t2到初值;
70.步骤s334:继续执行。
71.综上所述,本发明的核心思想在于:
72.为通过设定signature点(可选择一条hint指令,在本文中risc-v架构下选用了slti zero,zero,0),先让golden simulator(模拟器)(本文选用spike)执行,当spike执行到此hint指令时,在debug模式下,便可把整数寄存器,浮点寄存器,mhartid,misa,mstatus,mtvec,mepc,sepc,mtval,stval,mcause,satp等等各种欲比对的寄存器数值加以保存至golden_data.log文件,不同的mhartid分配不同的空间位置。这样对于此signature点,便有了golden的结果。
73.用rtl仿真时,将golden_data.log文件放入特定内存区域,所用case与golden simulator的除了在执行完hint指令,需要对数据进行检查外,其它并无差异,即可以通过宏开关来实现case一致。具体比较时,先根据mhartid找特定的内存位置,找到正确储存数据的内存地址,然后取出数据进行比较。csr寄存器等比较时,需要用到三个寄存器(比如t0,t1,t2),一个用于表示内存的地址,一个用于表示从内存中读到的数据,一个用于浮点寄存器的转换(比如fmv.x.d t2,ft10),然后和rtl(硬件设计语言)的对应寄存器进行比较,对于这三个寄存器,我们可先利用mscratch,sscratch寄存器暂存,把这些寄存器值先写入一个内存区域,再从内存中一个个读出来到t1,golden的结果得到t2,比较t1和t2的值,这样便实现的全部的比较。如果在比较过程中出现错误,直接跳转到case失败的label(标签),结束case运行,如果成功,则根据自身的mhartid,计算出下次的比较地址,然后写入一个特定的内存位置,最后他三个寄存器恢复原来数值。等到下次比较时,又可根据mhartid在特定的内存位置来取到正确储存数据的内存地址,以此往复,直到failed(失败),或者case结束。
74.图4是一种risc-v cpu验证中的签名比较装置框图。本发明的一种risc-v cpu验证中的签名比较装置1包括:签名选定单元11、寄存器状态获取单元12以及测试用例运行单元13。
75.签名选定单元11,其用于选定签名(signature)点;
76.签名选定单元11包括:
77.选择指令子单元,其可选择一条hint指令(hint为不影响架构可见状态的指令);在本文中risc-v架构下选用了“slti zero,zero,0”。(“slti zero,zero,0”为一条汇编指令,意思把寄存器zero的值0左移0位,空出的位置填入0,结果写入寄存器zero,实际不影响寄存器zero的值,因为zero寄存器里面的值始终是0)。
78.寄存器状态获取单元12:通过spike(spike是一个模拟器的名称)在signature点获取golden(准确的)的寄存器状态,寄存器状态获取单元12包括:
79.提取寄存器信息子单元:在spike中添加signature点时提取寄存器信息到输出文件的code(代码);以及
80.正确结构数据文件获取子单元:屏蔽掉case中的对比宏,运行case获取各个signature点寄存器的状态的golden_data.log(正确结果数据)文件;
81.测试用例运行单元13,cpu运行同样的case(测试用例),
82.测试用例运行单元13包括:
83.存放子单元:把golden_data.log(正确结果数据)文件放入特定内存区域a;
84.运行测试用例子单元:打开case中的对比宏,运行case;
85.内存地址获取子单元:每次进入signature点,根据mhartid(mhartid是一个包含处理器编号的寄存器)找特定的内存位置,找到正确储存数据的内存地址,取出数据进行比较;
86.内存地址获取子单元包括:
87.用mscratch,sscratch(sscratch是一个暂存的寄存器)寄存器暂存t0,t1,t2(t0,t1,t2均是寄存器),并根据mhartid把这些寄存器值先写入一个内存区域b;
88.根据mhartid依次从内存区域a中取出整数寄存器,浮点寄存器,mhartid,misa,mstatus,mtvec,mepc,sepc,mtval,stval,mcause,satp(上述均为寄存器)等进行比对,如果比对一致,则继续运行,否则退出执行;
89.恢复t0,t1,t2到初值;
90.继续执行。
91.与现有技术相比,本发明的有益效果在于:
92.本发明可简单、快速的对risc-v cpu进行动态验证。而且随着验证rtl的稳定,signature点越来越少,验证速度也会越来越快。
93.参见图5,本技术实施例还提供了一种电子设备200,电子设备200包括至少一个存储器210、至少一个处理器220以及连接不同平台系统的总线230。
94.存储器210可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)211和/或高速缓存存储器212,还可以进一步包括只读存储器(rom)213。
95.其中,存储器210还存储有计算机程序,计算机程序可以被处理器220执行,使得处理器220执行本技术实施例中签名比较方法的步骤,其具体实现方式与上述签名比较方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。
96.存储器210还可以包括具有至少一个程序模块215的实用工具214,这样的程序模块215包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
97.相应的,处理器220可以执行上述计算机程序,以及可以执行实用工具214。
98.总线230可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
99.电子设备200也可以与一个或多个外部设备240例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等)通信。这种通信可以通过输入输出接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。
100.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现本技术实施例中签名比较方法的步骤,其具体实现方式与上述签名比较方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。
101.图6示出了本实施例提供的用于实现上述签名比较方法的程序产品300,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品300不限于此,在本技术中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品300可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
102.计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如java、c 等,还包括常规的过程式程序设计语言诸如c语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
103.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献