针对硬核mcu的中断控制器的仿真验证系统及方法

文档序号:6491750阅读:349来源:国知局
针对硬核mcu的中断控制器的仿真验证系统及方法
【专利摘要】本发明公开了一种针对硬核MCU的中断控制器的仿真验证系统,包括:测试软件和仿真验证环境模块;测试软件包括主程序和中断服务程序;主程序采用随机的方式对相关中断寄存器进行赋值,并将中断寄存器配置,中断处理信息,软件准备好信号传递给所述仿真验证环境模块;中断服务程序记录中断标号与中断顺序;仿真验证环境模块,采用随机方式产生中断置位信息,直接对仿真验证系统中的各中断标志位进行设置;测试软件和仿真验证环境模块配合获取中断处理信息,在一定流程控制下协同完成对中断控制器的仿真验证。本发明还公开了一种针对硬核MCU的中断控制器的仿真验证方法。本发明能提高验证效率和覆盖率,且具有很强的可复用性。
【专利说明】针对硬核MCU的中断控制器的仿真验证系统及方法
【技术领域】
[0001]本发明涉及SOC (芯片上系统)的功能验证领域,特别是涉及一种针对硬核MCU(Micro Control Unit微控制单元)的中断控制器的仿真验证系统。本发明还涉及一种针对硬核MCU的中断控制器的仿真验证方法。
【背景技术】
[0002]中断系统是MCU的重要组成部分,实时控制、故障自动处理、与外围设备间的数据传送一般都会采用中断系统。一次完整的中断过程包括,中断源产生,中断源向MCU提出中断请求,MCU暂停现行程序而转为响应中断请求,处理中断源对应的中断服务程序,中断返回。MCU中往往包含多个中断源,通常由中断控制器负责根据中断标志和寄存器进行判断,告知MCU内核此时应当处理哪一个中断。中断控制器功能的正确与否,直接关系着MCU能否正确处理中断。因此,对中断控制器的详细验证是必不可少的。
[0003]当前的MCU设计经常采用购买的内核与自主设计的外设进行组装,而内核可能为硬核或者加密核,这时将无法单独提取中断控制器模块进行验证。如果只通过人工手动撰写系统级验证测试例,会降低验证效率,且很难覆盖到大量可能发生的中断源触发情况,因而难以确保中断控制器模块的功能是否正确。

【发明内容】

[0004]本发明要解决的技术问题是提供一种针对硬核MCU的中断控制器的仿真验证系统,能够基于随机的方式针对硬核MCU的中断控制器进行仿真验证,提高验证效率和覆盖率;为此,本发明还要提供一种针对硬核MCU的中断控制器的仿真验证方法。
[0005]为解决上述技术问题,本发明的针对硬核MCU的中断控制器的仿真验证系统包括:测试软件和仿真验证环境模块;
[0006]所述测试软件包括主程序和中断服务程序;所述主程序采用随机的方式对相关中断寄存器进行赋值,并将中断寄存器配置,中断处理信息,软件准备好信号传递给所述仿真验证环境模块;所述中断服务程序记录中断标号与中断顺序;
[0007]所述仿真验证环境模块,采用随机方式产生中断置位信息,直接对仿真验证系统中的各中断标志位进行设置;
[0008]所述测试软件和仿真验证环境模块配合获取中断处理信息,在一定流程控制下协同完成对中断控制器的仿真验证。
[0009]本发明的针对硬核MCU的中断控制器的仿真验证方法,包括如下步骤:
[0010]步骤一、测试软件开始运行后,首先进行各相关中断寄存器的设置,在随机设置好各中断寄存器的值后,向特定RAM地址写入设置的中断寄存器值,该中断寄存器设置信息将由仿真验证环境模块的监视模块收集;
[0011]步骤二、所述监视模块将发送软件准备好信号给仿真验证环境模块的中断产生器模块,由中断产生器模块产生随机置位信息,对中断标志进行置位,并将置位信息传递给仿真验证环境模块的记分板模块;
[0012]根据不同的中断寄存器设置和中断标志位置位,若触发了中断,则相应的中断服务子程序将被执行;通过在中断服务子程序里预先写入适当的标志位,由测试软件记录下中断的触发和执行顺序;所有被触发的中断服务子程序执行结束之后,由测试软件发送结束标志告知仿真验证环境模块,由监视模块来获取之前由测试软件收集的相关中断信息,并送入记分板模块;若中断未触发,则直接由测试软件发送结束信号,将中断未执行的信息传递给监视模块,然后由监视模块送入记分板模块;
[0013]步骤三、记分板模块将通过中断寄存器设置信息和中断标志位置位信息收集覆盖率,并计算出正常情况下中断的触发以及执行顺序,将其与经仿真得到的真实中断产生情况进行对比,得出判断结果,结束一个随机测试例的仿真。
[0014]本发明针对硬核MCU的中断控制器难以进行全面验证的困难,提取整个MCU中与中断相关的电路部分(包括MCU内核,外围中断控制器,ROM程序存储器模型,RAM存储器模型,ROM总线控制器等),运用测试软件和仿真验证环境模块协同随机的方式对中断控制器进行验证。随机性的引入将大大提升仿真验证中对不同中断发生处理情况的覆盖率,且这样的仿真验证具有很强的可复用性,适用于大部分硬核MCU的中断控制器的仿真验证,能极大提高验证效率和覆盖率,增强设计的信心。
【专利附图】

【附图说明】
[0015]下面结合附图与【具体实施方式】对本发明作进一步详细的说明:
[0016]图1是所述针对硬核MCU的中断控制器的仿真验证系统架构图;
[0017]图2是图1所示仿真验证系统的验证流程图。
【具体实施方式】
[0018]在硬核MCU的实际应用中,中断的产生情况是纷繁多样的,人工撰写中断测试例通常仅能针对特殊应用对中断寄存器进行配置,进而在一定条件下触发中断,这会导致仿真验证上大量可能状况的遗漏。本发明采用随机方式对中断控制器进行仿真验证,可减少人工撰写测试例的工作量,高效的提升仿真验证的覆盖范围,因此是十分有必要的。
[0019]所述随机包括软测试件中对各相关中断寄存器的随机设置;硬核MCU中断标志位的随机设置。
[0020]参见图1所示,在一实施例中,所述针对硬核MCU的中断控制器的仿真验证系统,包括:DUT (Design Under Test:待测设计)模块(图1中虚线框内所包括的部分),测试软件和仿真验证环境模块。
[0021]为验证硬核MCU的中断控制器,DUT模块需要包括整个MCU中与中断相关的电路设计部分,在本实施例中包括=MCU内核及MCU内核自带的中断控制器(即图1中的内部中断控制器,该“内部中断控制器”就是要进行仿真验证的中断控制器)、外围中断控制器、ROM总线控制器和ROM程序存储器模型、RAM存储器模型(R0M/RAM都只是行为级模型);其中,ROM程序存储器模型用于存储仿真验证所需的测试软件,MCU内核通过ROM总线控制器访问所述测试软件,RAM存储器模型用于存放所述测试软件中使用的变量。
[0022]所述测试软件包括主程序和中断服务程序。[0023]所述主程序采用随机的方式对相关中断寄存器进行赋值(或称设置),并将中断寄存器配置,中断处理信息,软件准备好信号传递给所述仿真验证环境模块,等待所有服务程序执行结束,发送中断处理信息,发送测试软件处理结束信号。
[0024]所述中断服务程序包括η个中断服务子程序,每个中断服务子程序包括中断标号记录,中断顺序记录等。
[0025]所述仿真验证环境模块包括中断产生器模块,监视模块和记分板模块;可以采用System Verilog语言来搭建开发。
[0026]所述中断产生器模块,通过随机方式产生中断置位信息,直接在环境代码中对系统中的各中断标志位进行设置(可使用System Verilog语言中的force语句),其中,中断标志位信息可分为两组,一组直接输入MCU内核自带的中断控制器(即图1中的中断标志位组2);另一组通过外围中断控制器处理,再将处理结果输入到MCU的内部中断控制器中(SP图1中的中断标志位组1),最终触发在测试软件中已由寄存器配置使能的中断。该中断产生器模块将把各次随机产生的随机数值,即对应的随机中断标志位设置信息送入所述记分板模块;所述记分板模块将记录下各次随机的中断标志位设置信息信息。
[0027]所述监视模块,用于抓取由主程序中特定指令定义的内核行为,如向某一特定RAM地址写数据的动作,而写入的数值可以作为所述测试软件的主程序中随机产生的各中断寄存器的配置数值,也是中断服务程序内当前执行的中断标号,两者皆可通过向不同RAM地址写数据的动作来区分。由此,该监视模块可以获取所述测试软件向验证环境模块传递的中断信息,这些中断信息最终将一并送入所述记分板模块。所述中断信息包括各中断寄存器的配置信息以及中断的产生和执行顺序等。
[0028]所述记分板模块,对中断产生器模块产生的随机中断标志位设置信息和获取的中断信息进行处理,以实现中断验证的结果判断和覆盖率收集。为实现该目的,所述记分板模块包括:
[0029]覆盖率收集模块,通过各相关中断寄存器设置信息和中断标志置位信息收集覆盖率。
[0030]标准值推算模块,在不同的中断寄存器设置(主要包括优先级和使能)和中断标志位设置下,计算标准的中断产生数据,即正常情况下中断的触发以及执行顺序。
[0031 ] 检查模块,将经仿真得到的真实中断产生数据与标准的中断产生数据进行对比,得出判断结果,即单个测试例的仿真验证结果,结束一个随机测试例的仿真验证。
[0032]所述推算模块和检查模块从本质上来说都是有穷的组合逻辑形式,通过撰写处理任务(task)或函数(fucntion)可以实现;而覆盖率收集模块则可以直接通过由中断产生器模块和监视模块送入的数据拼接成一串0,I序列来进行表征。对于每一个待验证的硬核MCU的中断控制器,这个序列都将会是定长的,假定为n,此时将会有2n种可能情况,故只需要将已经覆盖到的情况数除以2n即可得到测试的覆盖率。由此可以看出覆盖率的计算也是十分简便可行的。
[0033]结合图2所示,所述针对硬核MCU的中断控制器的验证系统的整个仿真验证过程将按如下流程进行:
[0034]所述测试软件开始运行后,首先进行各相关中断寄存器的设置,一般情况下,包括使能寄存器,优先级寄存器等。在随机设置好各中断寄存器的值后,向特定RAM地址写入设置的中断寄存器值,该中断寄存器设置信息将由监视模块收集。
[0035]之后,监视模块将发送软件准备好(ready )信号给中断产生器模块,由中断产生器模块产生随机置位信息,对中断标志进行置位,并将置位信息传递给所述记分板模块。根据不同的中断寄存器设置和中断标志位置位,可能触发中断,如随机产生的使能寄存器置位且相应的中断标志位也置位;但也可能不触发中断,如随机产生的使能寄存器或中断标志位均未置位。若触发了中断,则相应的中断服务子程序将被执行;通过在中断服务子程序里预先写入适当的标志位,由测试软件记录下中断的触发和执行顺序情况;所有被触发的中断服务子程序执行结束之后,由测试软件发送结束标志告知仿真验证环境模块,由监视模块来获取之前由测试软件收集的相关中断信息,并送入记分板模块;若中断未触发,则直接由测试软件发送结束信号,将中断未执行的信息传递给监视模块,然后由监视模块送入记分板模块。
[0036]最后,记分板模块将通过中断寄存器设置信息和中断标志位置位信息收集覆盖率,并计算出正常情况下中断的触发以及执行顺序,将其与经仿真得到的真实中断产生情况进行对比,得出判断结果,结束一个随机测试例的仿真。通过在记分板模块强制(可使用force语句)MCU内核的PC (程序计数器)值至初始值,可以不断的进行该随机测试,直至覆盖率达到可接受的水平。
[0037]所有硬核MCU产品几乎都会包含中断控制器,因而对中断控制器的全面仿真验证在仿真验证环节是不可或缺的。由上面所述也可以看出,所述仿真验证环境模块的搭建和测试软件的编程都具有良好的可复用性,可以适用于大部分的硬核MCU的中断控制器的仿真验证。
[0038]以上通过具体实施例对本发明进行了详细的描述说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可以做出许多改进和变形,这些均视为本发明的保护范围。
【权利要求】
1.一种针对硬核MCU的中断控制器的仿真验证系统,其特征在于,包括:测试软件和仿真验证环境模块; 所述测试软件包括主程序和中断服务程序;所述主程序采用随机的方式对相关中断寄存器进行赋值,并将中断寄存器配置,中断处理信息,软件准备好信号传递给所述仿真验证环境模块;所述中断服务程序记录中断标号与中断顺序; 所述仿真验证环境模块,采用随机方式产生中断置位信息,直接对仿真验证系统中的各中断标志位进行设置; 所述测试软件和仿真验证环境模块配合获取中断处理信息,在一定流程控制下协同完成对中断控制器的仿真验证。
2.如权利要求1所述的仿真验证系统,其特征在于:待测设计DUT模块,包括:MCU内核及MCU内核自带的中断控制器、外围中断控制器、ROM总线控制器、ROM程序存储器模型和RAM存储器模型;其中,ROM程序存储器模型用于存储仿真验证所需的所述测试软件,MCU内核通过ROM总线控制器访问所述测试软件,RAM存储器模型用于存放所述测试软件中使用的变量。
3.如权利要求1所述的仿真验证系统,其特征在于:所述仿真验证环境模块采用System Verilog语言来搭建开发。
4.如权利要求1-3任一所述的仿真验证系统,其特征在于,所述仿真验证环境模块,包括: 中断产生器模块,通过随机方式产生中断置位信息,直接在环境代码中对系统中的各中断标志位进行设置;其中,中断标志位信息分为两组,一组直接输入MCU内核自带的中断控制器,另一组通过外围中断控制器处理,再将处理结果送入MCU内核自带的中断控制器中,最终将触发在所述测试软件中已由寄存器配置使能的中断;该中断产生器模块将各次随机产生的随机数值,即对应的随机中断标志位设置信息送入记分板模块;所述记分板模块将记录下各次随机的中断标志位设置信息; 监视模块,用于抓取由主程序中特定指令定义的内核行为,获取所述测试软件向验证环境模块传递的中断信息,并将其送入所述记分板模块; 所述记分板模块,对中断产生器模块产生的随机中断标志位设置信息和获取的中断信息进行处理,以实现中断验证的结果判断和覆盖率收集。
5.如权利要求4所述的仿真验证系统,其特征在于:所述监视模块抓取由主程序中特定指令定义的内核行为,是指向某一特定RAM地址写数据的动作,而写入的数值既可以作为所述主程序中随机产生的各中断寄存器的配置数值,也可以是中断标号和执行顺序信息,两者皆可通过向不同RAM地址写数据的动作来区分。
6.如权利要求4所述的仿真验证系统,其特征在于:所述中断信息包括:各中断寄存器的配置信息以及中断的产生和执行顺序。
7.如权利要求4所述的仿真验证系统,其特征在于,所述记分板模块,包括: 覆盖率收集模块,通过各相关中断寄存器设置信息和中断标志置位信息收集覆盖率; 标准值推算模块,在不同的中断寄存器设置和中断标志位设置下,计算标准的中断产生数据,即正常情况下中断的触发以及执行顺序; 检查模块,将经仿真得到的真实中断产生数据与标准的中断产生数据进行对比,得出判断结果,即单个测试例的仿真验证结果,结束一个随机测试例的仿真验证。
8.如权利要求1所述的仿真验证系统,其特征在于,所述测试软件和仿真验证环境模块两者在一定流程控制下协同完成对中断控制器的仿真验证是指,在测试软件对各相关中断寄存器设置完成后,由测试软件向仿真验证环境模块发送软件准备好信号,产生对中断标志位的随机置位信息,在所有中断服务程序执行完毕之后,由测试软件发送结束标志告知仿真验证环境模块,最终给出单个测试例的验证结果。
9.一种针对硬核MCU的中断控制器的仿真验证方法,其特征在于,包括如下步骤: 步骤一、测试软件开始运行后,首先进行各相关中断寄存器的设置,在随机设置好各中断寄存器的值后,向特定RAM地址写入设置的中断寄存器值,该中断寄存器设置信息将由仿真验证环境模块的监视模块收集; 步骤二、所述监视模块将发送软件准备好信号给中断产生器模块,由仿真验证环境模块的中断产生器模块产生随机置位信息,对中断标志进行置位,并将置位信息传递给仿真验证环境模块的记分板模块; 根据不同的中断寄存器设置和中断标志位置位,若触发了中断,则相应的中断服务子程序将被执行;通过在中断服务子程序里预先写入适当的标志位,由测试软件记录下中断的触发和执行顺序;所有被触发的中断服务子程序执行结束之后,由测试软件发送结束标志告知仿真验证环境模块,由监视模块来获取之前由测试软件收集的相关中断信息,并送入记分板模块;若中断未触发,则直接由测试软件发送结束信号,将中断未执行的信息传递给监视模块,然后由监视模块送入记分板模块; 步骤三、记分板模块将通过中断寄存器设置信息和中断标志位置位信息收集覆盖率,并计算出正常情况下中断的触发以及执行顺序,将其与经仿真得到的真实中断产生情况进行对比,得出判断结果,结束一个随机测试例的仿真。
10.如权利要求 9所述的方法,其特征在于:通过在记分板模块强制MCU内核的程序计数器PC值至初始值,不断的进行该随机测试,直至覆盖率达到能接受的水平。
【文档编号】G06F17/50GK103838899SQ201210489046
【公开日】2014年6月4日 申请日期:2012年11月27日 优先权日:2012年11月27日
【发明者】唐旸, 杨宁昕, 陈磊 申请人:上海华虹集成电路有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1