面向RISC-V处理器特权指令集一致性的形式验证方法及装置

文档序号:36157893发布日期:2023-11-23 04:34阅读:40来源:国知局
面向

本发明涉及计算机,尤其涉及一种面向risc-v处理器特权指令集一致性的形式验证方法及装置。


背景技术:

1、risc-v指令集主要分为非特权指令集和特权指令集两部分。操作系统中虚拟化和安全等功能的实现离不开特权指令集。不同于常规指令对数据进行运算和读写操作,特权指令集需要考虑在不同特权级别下指令执行的差异性,以及中断、异常处理、地址转换和保护等问题,实现较为复杂。这就导致处理器设计者在设计该部分指令时极易出错,产生功能问题。

2、特权指令集一致性的形式化验证对处理器设计是否符合特权指令集规范进行检查,是处理器功能验证的重要环节。形式验证技术基于数学证明手段,使用系统性的方法遍历整个状态空间,与测试和仿真相比,能够发现更深层次的系统设计错误,而且不需用户手动提供激励和测试用例,已经被广泛用于处理器设计的验证。

3、chisel是一种嵌入到scala中的新型硬件构建语言,已经广泛用于risc-v处理器的rtl设计,因此,risc-v处理器chisel设计的特权指令集一致性的形式验证问题也应得到关注。

4、但目前已有的对risc-v处理器设计的指令集一致性进行形式验证的工具尚不支持特权指令集的一致性验证。对于常规的测试方法,其问题在于不能对处理器设计进行完备的验证,即通过测试不能完全保证设计的正确性。对chisel生成的verilog进行测试或形式验证的方法,延长了工具链,需要再根据生成的verilog代码与不同的工具对接,实现较为困难。


技术实现思路

1、针对以上问题,本发明公开了一种面向risc-v处理器特权指令集一致性的形式验证方法及装置,该方法使用形式化方法中的模型检测技术,对指定的验证范围,如果存在设计问题则一定能发现。

2、本发明的技术方案,包括:

3、一种面向risc-v处理器特权指令集一致性的形式验证方法,包括:

4、在chisel设计的待验证处理器中引出指令信号、通用寄存器信号、访存信号、控制和状态寄存器信号、tlb页表翻译信号到信号同步模块;其中,所述信号同步模块用于对指令信号、通用寄存器信号、访存信号、控制和状态寄存器信号和tlb页表翻译信号进行信号同步处理;

5、将所述指令信号作为特权指令集参考模型执行的指令输入,并将所述通用寄存器信号、所述访存信号、所述控制和状态寄存器信号、所述tlb页表翻译信号与所述特权指令集参考模型的执行结果是否一致设为待验证性质;其中,所述特权指令集参考模型是由chisel编写,且表达risc-v特权指令集规范中约定行为的模型;

6、将特权指令集参考模型、待验证处理器、信号同步模块与待验证性质共同转换迁移系统模型;

7、基于所述迁移系统模型,交由模型检测算法进行求解,得到所述待验证处理器的验证结果。

8、进一步地,所述特权指令集参考模型执行指令的过程包括:对运行过程中出现的不合法指令、非对齐访存、断点和系统调用进行处理的异常处理流程;

9、所述异常处理流程包括:

10、记录产生的所有异常并确定当前优先级最高的异常;

11、基于当前优先级最高的异常,进行m模式下的异常处理流程和s模式/u模式下的异常委托处理流程;其中,所述进行m模式下的异常处理流程,包括:

12、以当前最高优先级作为参数,调用异常处理函数,以保存所述当前优先级最高的异常的现场;

13、对所述当前优先级最高的异常进行异常处理;

14、待异常处理完毕后,调用mret指令退出异常处理流程。

15、进一步地,所述记录产生的所有异常并确定当前优先级最高的异常,包括:

16、设置全局异常使能和异常处理函数,所述异常处理函数维护一容器,且出现异常则将容器相应位打开,并打开全局异常使能;

17、设置一优先级序列以保存risc-v异常代码的优先级;其中,所述risc-v异常代码的优先级基于risc-v特权指令集手册定义;

18、使用scala语言的高阶函数foldright对所述容器进行按照优先级进行遍历,以确定当前优先级最高的异常。

19、进一步地,所述以当前最高优先级作为参数,调用异常处理函数,以保存所述当前优先级最高的异常的现场,包括:

20、将异常发生前所处的特权级存储在mstatus.mpp位,mstatus.mie保存到mstatus.mpie位,并将mstatus.mie置零以禁用中断;

21、和/或,

22、将异常原因写入mcause寄存器,导致异常的附加信息写入mtval寄存器;

23、和/或,

24、将异常指令的指令pc写入mepc寄存器;

25、和/或,

26、将特权级更改至m模式。

27、进一步地,所述特权指令集参考模型执行指令的过程包括:虚拟内存和物理内存的地址转换流程;

28、所述虚拟内存和物理内存的地址转换流程的实现过程,包括:

29、通过信号同步机制得到tlb页表翻译信号,根据risc-v指令集规定的虚拟内存和物理内存的地址转换算法,使用其中的页表项数据得到虚拟页和物理帧直接的映射关系。

30、进一步地,所述特权指令集参考模型执行指令的过程包括:针对tlb页表的访存流程;

31、所述针对tlb页表的访存流程的实现过程,包括:

32、设计多个内存读写接口,所述多个内存读写接口包括:用于load/store指令的访存接口以及用于虚拟内存和物理内存的地址转换翻译的三个读端口、一个写端口;

33、针对需要访存虚拟地址的load/store指令,基于所述多个内存读写接口实现针对tlb页表的访存流程。

34、进一步地,将所述通用寄存器信号、所述访存信号、所述控制和状态寄存器信号、所述tlb页表翻译信号与所述特权指令集参考模型的执行结果是否一致设为待验证性质,包括:

35、通过信号同步机制进行获取所述通用寄存器信号、所述访存信号、所述控制和状态寄存器信号、所述tlb页表翻译信号与所述特权指令集参考模型的执行结果;其中,所述信号同步机制包括:

36、通过嵌套多个regnext()函数实现固定周期信号的后延,所述固定周期信号包括:通用寄存器信号;

37、和,

38、将非固定周期信号记录于队列内,并在待验证处理器完成指令后,且参考模型执行指令时,对队列进行非固定周期信号读取,以完成对非固定周期信号的同步,所述非固定周期信号包括:访存信号、控制和状态寄存器信号;

39、和,

40、设计多个队列存储访存不同页表级的tlb页表翻译信号,并在待验证处理器执行指令时将tlb页表信号存储到多个队列中,在参考模型执行指令时对多个队列进行tlb页表翻译信号读取,以完成tlb页表翻译信号的同步;

41、基于信号同步机制的获取结果,设置待验证性质。

42、进一步地,所述基于所述迁移系统模型,交由模型检测算法进行求解,得到所述待验证处理器的验证结果,包括:

43、将迁移系统模型输出为btor2格式;

44、调用模型检测算法,对btor2格式的迁移系统进行形式化验证,在满足指令验证范围约束的前提下,检查状态空间内是否有违反待验证性质的情况;

45、如果发现反例,根据chisel和btor2的对应关系生成反例波形。

46、进一步地,所述模型检测算法包括:bmc、k-induction或ic3。

47、一种risc-v处理器chisel设计指令集一致性的形式验证装置,包括:

48、待验证处理器,用于提供指令信号、通用寄存器信号、访存信号、控制和状态寄存器信号、tlb页表翻译信号;

49、同步模块,用于对指令信号、通用寄存器信号、访存信号、控制和状态寄存器信号、tlb页表翻译信号进行信号同步处理;

50、特权指令集参考模型,用于基于指令信号,得到所述特权指令集参考模型的执行结果;

51、其中,将所述通用寄存器信号、所述访存信号、所述控制和状态寄存器信号、所述tlb页表翻译信号与所述特权指令集参考模型的执行结果是否一致设为待验证性质后,将特权指令集参考模型、待验证处理器、信号同步模块与待验证性质共同转换迁移系统模型,并基于所述迁移系统模型,交由模型检测算法进行求解,得到所述待验证处理器的验证结果。

52、与现有技术相比,本发明的积极效果为:

53、针对特权指令集的验证需要用户对指令集和计算机系统结构有着较为深刻地理解,同时常规的形式化验证技术也需要用户具有形式化验证的相关知识。本发明不需要用户在risc-v指令集、计算机系统结构、形式化验证技术具有深刻的了解。仅需使用chisel的语法连接待验证处理器中的电路信号到信号同步模块,降低了形式化验证方法的使用难度;

54、针对risc-v特权指令集一致性验证问题设计,无需使用chisel断言编写待验证性质,可以在不同chisel处理器设计中复用;验证的配置与运行均在chisel代码中完成,自动调用后端模型检测算法;

55、相比于测试方法,形式化方法的验证更完备,无需设置测试用例。

56、相比于利用verilog工具的验证方法,验证工作流程更短,不用再在verilog代码层面进行连接配置等工作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1