System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于RISC-V架构的随机中断调试验证系统技术方案_技高网

一种基于RISC-V架构的随机中断调试验证系统技术方案

技术编号:40158005 阅读:6 留言:0更新日期:2024-01-26 23:33
本发明专利技术公开了一种基于RISC‑V架构的随机中断调试验证系统,属于处理器核验证技术领域,集成于一种基于RISC‑V架构的处理器验证系统中,该验证系统将指令生成模块、程序编译模块、模拟器模块、仿真验证模块、比对检查模块和回归管理模块联系起来,然后通过集成验证系统,在不同场景下模拟大量随机指令执行状态,实现全面验证处理器架构和微架构的正确性;采用UVM测试环境自我检查的方法和握手机制,实现对中断或调试功能验证的比对,从可以在独立的验证环境中进行中断或调试功能的有效验证而不依赖模拟器的支持;采用UVM_TEST来模拟各种中断调试场景,考虑不同中断验证场景和调试方式,实现对中断和调试功能的全面验证。

【技术实现步骤摘要】

本专利技术属于处理器核验证,具体地说,是涉及一种基于risc-v架构的随机中断调试验证系统。


技术介绍

1、在现有技术中,虽然存在一些针对处理器中断调试验证的系统,也有一些专为risc-v架构被测对象设计的验证系统,但目前还没有一款专门针对risc-v架构处理器,并能完成中断调试功能验证的系统。这种缺乏专门的系统的情况导致在risc-v架构处理器开发和调试过程中的困扰。

2、绝大多数针对处理器中断调试的验证系统都依赖于参考模型,如模拟器。这些系统需要使用支持risc-v中断调试标准的模拟器才能完成整个系统的验证。然而,不同的中断和调试设计标准之间存在差异,并且即使模拟器支持中断和调试,也需要进行精确的建模来模拟中断处理程序和调试只读程序(debug rom)的行为。这种依赖于模拟器的验证方法存在一些局限性和困难。

3、在现有技术中,中断调试的激励信号往往是固定的,而且不同种类中断之间的仲裁和随机性较差,无法全面有效地生成各种验证场景。同样,调试激励的生成通常也是固定的,需要配置不同的调试控制寄存器来模拟不同的调试场景。这种固定的激励生成方式限制了验证的灵活性和覆盖范围。

4、现有技术中通常采用模块化验证方法来专门验证中断和调试功能,但无法很好地模拟在不同场景下被测对象执行大量随机指令的状态,以验证中断和调试模块的正确性。而在实际流片执行时,可能会出现一些与处理器架构和微架构相关的问题,这些问题在模块化验证阶段很难暴露出来。


技术实现思路

1、本专利技术提供一种基于risc-v架构的随机中断调试验证系统,用以解决现有处理器中断调整验证中存在的依赖于模拟器的实现和建模、激励信号和调试激励生成随机化弱、难以模拟不同场景下大量随机指令执行状态等技术问题。

2、本专利技术采用以下技术方案予以实现:

3、提出一种基于risc-v架构的随机中断调试验证系统,包括:

4、指令生成模块,为程序生成部分,生成包含随机指令流的汇编程序;其中,在中断随机指令中加入以若干条存储指令结束的握手数据,以实现基于存储指令将握手数据存储到指定的签名地址;

5、程序编译模块,包括汇编程序所用到的编译器、连接器和反汇编器、编译所生成的结果文件资源库、以及验证系统的编译工具调用脚本;

6、仿真验证模块,包括uvm测试环境、被测对象和uvm_test,以及用于构建、控制和管理仿真的主脚本、项目管理脚本和makefile;所述uvm测试环境由uvm代理和虚拟序列器组成;所述uvm_test调用虚拟序列器动态生成用以描述中断测试场景和测试用例的随机中断激励;所述uvm代理包括内核输出代理和中断代理;所述内核输出代理包括内核输出监测器,用于监测签名地址的写入操作,将写入操作的相关信息传输到uvm测试环境,以使uvm测试环境接收到签名地址上的相关信息后,执行对应的中断测试事务或比对操作,以及,检测被测对象实时信号变化,并将关键信号的变化信息输出到被测对象信号监视输出的rtl仿真日志文件中;

7、所述中断代理包括事务对象、中断接口、中断序列器和中断驱动器;其中,所述事务对象用于随机生成随机中断激励;所述中断接口用于连接被测对象的各个中断信号接口和所述uvm测试环境;所述中断序列器用于生成中断序列流,管理测试序列流的执行顺序并将序列流传递给中断驱动器以进行驱动;所述中断驱动器用于向被测对象接口按照设定时序逻辑发送所述中断序列流;

8、所述uvm_test包括通过调用基础测试类和设定功能函数实施中断或调试功能验证的中断调试测试,包括:

9、初始化uvm测试环境并设置相关的寄存器、配置参数和变量;

10、通过调用发送中断调试激励信号函数调度虚拟序列中的中断序列,来发送各类中断或调试激励信号,触发中断或调试事件;

11、调用等待中断调试事件函数等待中断或调试事件的触发完成,确保处理器内核从正常模式正确进入了调试模式,开始执行中断调试处理程序;

12、调用检查中断调试事件函数检查中断或调试事件的处理状态,验证中断或调试事件是否被正确处理,并检查相关寄存器和变量的值是否正确;

13、在确认中断或调试事件处理完毕后,调用结束中断调试刺激信号的发送函数结束中断或调试刺激信号的发送,并等待中断或调试事件被清除;

14、最后,恢复uvm测试环境,并检查处理器内核返回中断或调试前的正常模式,同时检查相关的寄存器和变量是否符合预期变化,并清理测试环境,之后继续保持指令在被测对象中被执行,以准备下一轮测试。

15、与现有技术相比,本专利技术的优点和积极效果是:本专利技术提出的基于risc-v架构的随机中断调试验证系统,针对现有验证系统依赖于模拟器,且模拟器实现标准不同和建模困难的问题,采用握手机制和uvm测试环境自我检查的方法,实现验证平台本身对中断和调试功能验证的比对,从而可以在独立的验证环境中进行中断调试功能的有效验证,无需依靠模拟器,解决了模拟器标准差异和建模困难带来的限制。针对激励信号和调试激励生成随机化弱,限制了验证的随机性和覆盖范围的问题,采用uvm测试环境和uvm_test来模拟各种中断调试场景,同时考虑到不同中断之间的仲裁以及异步中断、嵌套中断等复杂场景的验证;对于调试功能,通过诸如ebreak断点调试、ebreakm调试、单步调试等不同的调试方式,实现对中断和调试功能的全面验证。针对模块化验证方法难以模拟不同场景下的大量随机指令执行状态,从而限制了对处理器架构和微架构相关问题的发现的问题,将中断调试验证系统集成在一种基于risc-v架构的内核验证系统中,实现内核指令功能验证的同时进行中断调试验证,通过集成验证系统,可以在不同场景下模拟大量随机指令执行状态,从而全面验证处理器架构和微架构的正确性。

16、结合附图阅读本专利技术实施方式的详细描述后,本专利技术的其他特点和优点将变得更加清楚。

本文档来自技高网...

【技术保护点】

1.一种基于RISC-V架构的随机中断调试验证系统,其特征在于,包括:

2.根据权利要求1所述的基于RISC-V架构的随机中断调试验证系统,其特征在于,所述验证系统采用握手机制实现中断或调试功能验证,包括:

3.根据权利要求1所述的基于RISC-V架构的随机中断调试验证系统,其特征在于,所述事务对象以一个名为 irq_sequence_item的类实现,用于表示随机中断请求和属性; irq_sequence_item类继承自UVM 序列项的子类uvm_sequence_item,定义用于表示中断请求类型和数量的成员变量irq_software、irq_timer、irq_external、irq_nmi和 num_of_interrupt;所述成员变量使用 rand关键字进行声明,以便在随机化过程中生成随机的取值;为irq_sequence_item类定义两个约束条件:num_of_interrupt_c用于限制num_of_interrupt的取值范围,并且要求 irq_software、irq_timer、irq_external和 irq_nm的总数等于 num_of_interrupt的值;define_const用于确保在特定情况下只生成一个特定类型的中断,只有在 num_of_interrupt等于 1 时中断才会被有效激活,用于产生单中断激励场景。

4.根据权利要求1所述的基于RISC-V架构的随机中断调试验证系统,其特征在于,所述中断序列器以中断请求序列类core_base_seq实现,用于生成随机化的中断请求,并控制其优先级和类型;定义用于表示中断请求之间的随机时间间隔和延迟时间的成员变量irq_interval和irq_delay;为core_base_seq类定义约束条件irq_acceptable_interval_c和irq_acceptable_delay_c,确保 irq_interval和 irq_delay的取值范围;实现方法body()、send_req()、stop()和wait_seq_stop();其中,body() 方法是序列的主体任务,通过循环发送中断请求,并根据停止条件判断是否终止序列;在每次循环中,send_req()方法负责发送中断请求,并随机化的irq_interval和 irq_delay值进行等待,当达到设定的循环次数或外部设置了停止标志时,循环终止;send_req()方法在派生类中进行具体的实现,在派生类中,根据需要随机化中断请求的类型和优先级,通过调用start_item()、randomize_item()和 finish_item()方法完成中断请求的生成和发送;stop()方法用于停止序列的执行,其设置了停止标志位,并等待序列完成,以确保所有中断请求都已发送完毕;wait_seq_stop()方法用于等待序列的完成直到序列的seq_finished标志位被设置为1,表示序列执行完成。

5.根据权利要求4所述的基于RISC-V架构的随机中断调试验证系统,其特征在于,所述中断序列器通过继承irq_base_seq定义了如下派生类:irq_raise_seq、irq_raise_single_seq、irq_raise_nmi_seq和irq_drop_seq,并通过重写 randomize_item()方法来实现特定类型的中断请求的随机化;其中,irq_base_seq为基础中断请求序列类,包含中断请求的发送任务和随机化函数;irq_raise_seq用于产生多个中断请求序列类,随机化中断请求的数量和类型,支持屏蔽和非屏蔽中断;irq_raise_single_seq用于产生单个中断请求序列类,随机化中断请求的类型,仅支持单个中断请求;irq_raise_nmi_seq用于产生非可屏蔽中断请求序列类,仅产生非可屏蔽中断请求;irq_drop_seq用于取消中断请求序列类,用于取消中断请求信号的拉高,即不再发送中断请求。

6. 根据权利要求1所述的基于RISC-V架构的随机中断调试验证系统,其特征在于,所述中断驱动器包含任务wait_clks和wait_neg_clks,以及包含子任务run_phase、handle_reset、get_and_drive、reset_signals、drive_seq_item和drive_reset_value; wait_clks表示等待指定数量的时钟周期,wait_neg_clks表示等待指定数量的下降沿时钟周期;run_phase表示执行驱动器的运行阶段,handle_reset表示处理复位信号的任务,get_and_drive表示获取并驱动中断请求的任务...

【技术特征摘要】

1.一种基于risc-v架构的随机中断调试验证系统,其特征在于,包括:

2.根据权利要求1所述的基于risc-v架构的随机中断调试验证系统,其特征在于,所述验证系统采用握手机制实现中断或调试功能验证,包括:

3.根据权利要求1所述的基于risc-v架构的随机中断调试验证系统,其特征在于,所述事务对象以一个名为 irq_sequence_item的类实现,用于表示随机中断请求和属性; irq_sequence_item类继承自uvm 序列项的子类uvm_sequence_item,定义用于表示中断请求类型和数量的成员变量irq_software、irq_timer、irq_external、irq_nmi和 num_of_interrupt;所述成员变量使用 rand关键字进行声明,以便在随机化过程中生成随机的取值;为irq_sequence_item类定义两个约束条件:num_of_interrupt_c用于限制num_of_interrupt的取值范围,并且要求 irq_software、irq_timer、irq_external和 irq_nm的总数等于 num_of_interrupt的值;define_const用于确保在特定情况下只生成一个特定类型的中断,只有在 num_of_interrupt等于 1 时中断才会被有效激活,用于产生单中断激励场景。

4.根据权利要求1所述的基于risc-v架构的随机中断调试验证系统,其特征在于,所述中断序列器以中断请求序列类core_base_seq实现,用于生成随机化的中断请求,并控制其优先级和类型;定义用于表示中断请求之间的随机时间间隔和延迟时间的成员变量irq_interval和irq_delay;为core_base_seq类定义约束条件irq_acceptable_interval_c和irq_acceptable_delay_c,确保 irq_interval和 irq_delay的取值范围;实现方法body()、send_req()、stop()和wait_seq_stop();其中,body() 方法是序列的主体任务,通过循环发送中断请求,并根据停止条件判断是否终止序列;在每次循环中,send_req()方法负责发送中断请求,并随机化的irq_interval和 irq_delay值进行等待,当达到设定的循环次数或外部设置了停止标志时,循环终止;send_req()方法在派生类中进行具体的实现,在派生类中,根据需要随机化中断请求的类型和优先级,通过调用start_item()、randomize_item()和 finish_item()方法完成中断请求的生成和发送;stop()方法用于停止序列的执行,其设置了停止标志位,并等待序列完成,以确保所有中断请求都已发送完毕;wait_seq_stop()方法用...

【专利技术属性】
技术研发人员:彭轶群
申请(专利权)人:青岛本原微电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1