基于vmm验证方法学的mcu验证平台实现方法

文档序号:6582300阅读:4703来源:国知局
专利名称:基于vmm验证方法学的mcu验证平台实现方法
技术领域
本发明涉 及一种8位MCU (微控制器)的验证测试方法,特别是涉及一种可以自动 高效率严格验证MCU的基于VMM (VerificationMethodology Manual验证方法学手册)的 MCU验证平台实现方法。
背景技术
以MCU作为芯片核心,MCU的功能正确性往往是至关重要的,尤其每款重新设计或 者设计改动的MCU都需要经过大量的回归测试,甚至多次流片才能够真正使用到项目中。 因此MCU的验证通常需要大量时间和人力投入。通常验证MCU都会将应用程序读入ROM中,通过仿真观察波形以及输出来确认功 能正确;每次只能根据实际应用程序测试对应的一部分MCU功能,缺少一个量化的指标;而 且每次改动MCU需要重新检查结果,效率比较低,验证质量无法保证。

发明内容
本发明要解决的技术问题是提供一种基于VMM验证方法学的MCU验证平台实现方 法,能够搭建一个可移植,重用,扩展,完全自动检查的具有层次化结构的MCU验证平台。为解决上述技术问题,本发明的基于VMM验证方法学的MCU验证平台实现方法 是待验证模块MCU采用Verilog (硬件描述语言)代码编写,MCU的参照模型(或称 MCU的C模型)采用C语言编写,通过SystemVerilog(系统硬件描述语言)的直接程序接 口(DPI)调用待验证模块MCU或MCU的参照模型;使用文件读写方式,用磁盘文件作为中介进行待验证模块的自检;整体验证环境 使用 SystemVerilog 编写;SystemVerilog提供有约束的随机数生成,将MCU指令集进行分类,将同一格式的 指令归为一类;根据测试用例的约束,随机生成指令以及指令所需的参数,将所有指令数据 放入数据类VMM_DATA中;所述指令通过通道传递到执行模块;所述执行模块中采用C语言编写一个汇编 器,当通过直接程序接口将MCU的参照模型接入验证环境中时,汇编器将生成的汇编指令 实时转化为十六进制代码;当通过直接程序接口将MCU的参照模型接入验证环境中时,在每一条指令执行后 写出一个参照结果;MCU的参照模型通过存储单元保存数据,内部特殊功能寄存器单元保 存寄存器值,通过对比MCU的参照模型与待验证模块MCU的存储单元和特殊功能寄存器单 元中的数据,来保证待验证模块MCU的每一条指令的工作状态和参照模型都是一致的;实现包括ROM,RAM的SystemVerilog行为模型,并且通过后门直接将寄存器值通 过通道传递给自检记分板;通过MCU的参照模型写出每一条指令后的寄存器值会保存下 来,由自检记分板通过读取磁盘文件来读入,并同从存储单元行为模型通道传输过来的寄存器值进行自检; 将MCU的参照模型运行的结果和MCU的参照模型内部对应的特殊功能寄存器置位 作为功能覆盖率模块的收集点,将关注的特殊功能寄存器值描述为功能覆盖模型,在仿真 中自动监测,并在所有测试用例通过后给出一个最终的功能覆盖率。本发明用SystemVerilog来搭建一个基于VMM验证方法学的可移植,重用,扩展, 完全自动检查,具有层次化结构的MCU验证平台。本发明运用VMM验证方法学,能够实现年 一个层次化的验证结构,可以较简单的移植并验证其他类型的MCU,抽象了 MCU指令,并且 通过约束产生随机指令激励,可以实现遍历所有指令以及地址,另外功能覆盖率模型能够 收集并监测覆盖率。本发明能节约验证时间,更快完成验证计划。


下面结合附图与具体实施方式
对本发明作进一步详细的说明图1是VMM简要框架结构图;图2是本发明的验证平台框图。
具体实施例方式随着SystemVerilog成为IEEE(美国电气电子工程师学会)的P1800规范,越来 越多的项目开始采用基于SystemVerilog的验证方法学来获得更多的重用扩展性,更全面 的功能覆盖率,以及更合理的层次化验证结构。随着设计的复杂程度不断增加,需要把更多的资源放到验证上,不但要求验证能 够覆盖所有的功能,还希望能够给出大量的异常情况来检查待验证模块对应异常的处理状 态。在传统测试方法下,上述要求往往是难以实现的。此外设计不断地重用,而验证也希 望能够重用类似的验证模块,这就催生了层次化的验证方法。VMM验证方法学提供了基于 SystemVerilog的验证方法,包括了有约束的随机数生成,层次化的验证结构,以及以功能 覆盖率为指标的验证流程。VMM是Verification Methodology Manual (验证方法学手册)的缩写,是由新 思科技提出的基于SystemVerilog验证语言分支的方法学,其前身是基于Open Vera的 RVM(Reference Verification Methodology)(参考验证方法学)。VMM 提供了一整套验证 的基础类库以及一个完整的验证流程,在这个流程里已经做好了相应的功能划分,并且已 经做好基本类。从基本类可以扩展出针对项目的类,这样更加关注于功能验证而不必花费 时间在验证环境的基础框架上。VMM提出了层次化的验证方法,可以有效的提高验证模块的 移植性和继承性。另外利用SystemVerilog的有约束的随机数据生成的功能,配合功能覆 盖率能够很快达到需要的验证目标,即100%的功能覆盖率。VMM的简要的框架结构如图1 所示。VMM提供了最基本的数据类VMM_DATA,可以把所有的数据和流程控制都放在VMM_ DATA的扩展类里。另外可以在VMM_DATA的扩展类中封装对所述数据和流程控制的一些基 本操作的函数和任务;通过对VMM_DATA的约束可以生成相应的数据包,这些数据包就封装 在相应的类里面,随时可以通过内部的函数和任务对这些数据进行处理。这个封装了数据和函数的类就是执行模块。在图1中,执行模块层次中所有的经过通道传递的数据类都是 从VMM_DATA扩展出来的数据类。所述的通道可以根据数据类用宏定义生成。通道类似于 SystemVerilog中的信箱(mailbox),仅传输数据类也就是执行模块的通道。图1中所有实 心粗箭头都为通道,在执行模块层次中所有的数据和流程控制都在VMM_DATA的扩展类中, 通过控制扩展类里面的约束,甚至直接赋值来控制整个验证流程。在VMM_DATA的扩展类里 做对应的约束,也就是作为测试用例;不同的约束也就给出了不同的配置,形成针对各个功 能的测试用例。此外会有一个配置模块,针对整个验证环境配置数据都可以存放在这里,配 置模块会控制数据包产生数量,以及基本的配置信息,用来控制整个验证流程的进度。有了 这些配置信息和约束,接下来数据产生模块就会不断生成数据包,这些数据包都是在约束 范围内的随机化的数据。数据包在执行模块中被执行,也可以认为是解包。数据包被执行不但要取出对应 的数据包,还要根据数据包中的流程控制标志位来确定配置流程或者是工作模式,同时会 把数据包通过回调的方式发送给自检记分板做自检或是覆盖率模块做功能覆盖率收集。在 图1中回调都以空心粗箭头描述,回调提供了一个简单的入口,通过这个入口可以任意添 加或取消回调,对数据包进行复制,传递,更改。回调可以在不影响验证环境流程本身产生 的同时,插入额外的操作。执行模块解析数据包后,对应的驱动模块就会根据配置流程对待 验证模块的输入输出端口进行读写,这里的驱动模块可以为BFM(Bus Function Model总线 行为模型)。经待验证模块响应灌入的激励,接收模块就可以从待验证模块输出读出响应, 将数据重新赋予数据类,并通过通道传递给自检记分板进行自检,或者通过回调传递给覆 盖率模块统计覆盖率。VMM中主要就是由自检记分板的自检来保证数据的正确性,由功能覆 盖率模块来监测验证的进度,只有在功能覆盖率模块达到100%,并且代码覆盖率模块也达 到一个较高的百分率的情况下,才能认为整个验证是通过的。VMM方法学提出了一种层次化的验证结构,即将验证分为不同抽象层次,如图1中 所标示。在测试用例中都是抽象层次最高的约束,在数据产生模块中会由这些约束生成数 据,这就是通常所说的执行层。各个验证模块之间传递的都是数据类,之后驱动模块会再 次根据数据产生配置流程或是根据协议发送数据,同时也就是从执行层到信号层的一个转 换。接收模块会根据端口协议再次将数据组合成数据包,也就是从信号层到执行层的转换, 接下来传递给执行模块来处理,实际上又回到了执行层。当数据回到高抽象度层次,数据或 是控制位比对都不牵涉具体的时序关系,而所有的时序关系正确性可以在信号层通过总线 行为模型以及断言(Assertion)验证接口协议。这种结构就带来较为清晰的层次,可以将 整个验证分划为不同的验证模块,带来更高的效率,更好的继承移植性,对于同类型待验证 模块可以重用执行层,对于系统级可以重用信号层。此外VMM方法学提出了以覆盖率为目标,有约束的随机激励为途径的验证方法。 在约束的控制下,可以产生随机组合的激励,随机激励在触碰到更多难以用直接测试用例 验证的一些边界情况,能够利用VMM验证环境验证更多的测试用例。这里的覆盖率除了常 用的代码覆盖率还有功能覆盖率,只要将所有需要验证的功能点都转化为功能覆盖率模 型,那么在整个验证过程中,仿真工具会收集覆盖率信息。最后可以将功能覆盖率结果合 并,只有100%的功能覆盖率才代表验证过程结束。VMM方法学不但提供了建立验证环境的方法学,也提供了 一整套验证基本类库,包
5含了验证模块的基本类,以及验证的流程的框架,另外包含了一些宏定义和消息机制。类库 可以很快建立自己的验证环境,只要关注功能验证本身,而不需要过多考虑环境的底层运 作。基于VMM的MCU验证就需要充分利用VMM的特点,即有约束的随机数生成,自动数 据对比检查,和功能覆盖率收集。图2是本发明的一实施例,其中最上层区域是所有测试用例,最下部分是待测的 MCU(待验证模块),整个中间部分即为验证环境。待验证模块采用Verilog代码编写,MCU参照模型采用C代码编写,通过 SystemVerilog 的 DPI (Direct Program Interface 直接程序接口)调用待验证模块或 MCU 参照模型。考虑到存储单元数据量大,所述验证环境使用文件读写方式,用磁盘文件作为 中介来进行自检。整体验证环境都使用SystemVerilog编写,包括测试用例,指令生成,端 口驱动模块,ROM行为模型,RAM行为模型,寄存器行为模型,自检记分板以及功能覆盖率模 块。所述验证环境中VMM提供了有约束的随机数生成,可以将MCU指令集进行分类,将 同一格式的指令归为一类,如表1所示,这样就可以将指令抽象化,通过一定的约束,随机 生成指令以及指令所需的参数,将所有指令数据放入VMM_DATA中。表 权利要求
1.一种基于VMM验证方法学的MCU验证平台实现方法,其特征在于待验证模块采用Verilog代码编写,MCU的参照模型采用C语言编写,通过 SystemVerilog的直接程序接口调用待验证模块或MCU的参照模型;使用文件读写方式,用磁盘文件作为中介进行待验证模块的自检;整体验证环境使用 SystemVerilog 编写;SystemVerilog提供有约束的随机数生成,将MCU指令集进行分类,将同一格式的指令 归为一类;根据测试用例的约束,随机生成指令以及指令所需的参数,将所有指令数据放入 数据类VMM_DATA中;所述指令通过通道传递到执行模块;所述执行模块中采用C语言编写一个汇编器,当 通过直接程序接口将MCU的参照模型接入验证环境中时,汇编器将生成的汇编指令实时转 化为十六进制代码;当通过直接程序接口将MCU的参照模型接入验证环境中时,在每一条指令执行后写出 一个参照结果;MCU参照模型通过存储单元保存数据,内部特殊功能寄存器单元保存寄存 器值,通过对比所述参照模型与待验证模块的存储单元和特殊功能寄存器单元中的数据, 来保证待验证模块MCU的每一条指令的工作状态和参照模型都是一致的;实现包括ROM,RAM的SystemVerilog行为模型,并且通过后门直接将寄存器值通过通 道传递给自检记分板;通过MCU的参照模型写出每一条指令后的寄存器值会保存下来,由 自检记分板通过读取磁盘文件来读入,并同从存储单元行为模型通道传输过来的寄存器值 进行自检;将MCU的参照模型运行的结果和MCU的参照模型内部对应的特殊功能寄存器置位作为 功能覆盖率模块的收集点,将关注的特殊功能寄存器值描述为功能覆盖模型,在仿真中自 动监测,并在所有测试用例通过后给出一个最终的功能覆盖率。
2.如权利要求1所述的方法,其特征在于每次添加测试用例后都不需要观测波形或 是生成参照结果,甚至直接将应用程序放入验证环境中加以测试。
3.如权利要求1所述的方法,其特征在于所述自检有一定模糊性,在几个时钟周期内 值能够一致则通过检查,最后输出结果中写出自检结果。
4.如权利要求1所述的方法,其特征在于所述验证环境要求功能覆盖率和代码覆盖 率都为100%,功能覆盖率是所有从MCU特性中提炼出来的目标,是必须达到的全覆盖。
5.如权利要求1所述的方法,其特征在于所述执行模块、MCU参照模型和待验证模块 可以选择使用随机生成的汇编指令,或外部输入的汇编指令文件。
全文摘要
本发明公开了一种基于VMM验证方法学的MCU验证平台实现方法,输入所有可用应用程序代码或是由平台自身产生可约束的随机指令;实现MCU的C模型并给出所有存储单元以及特殊功能寄存器的值,通过直接程序接口(DPI)调用;根据存储单元模型为参照进行自动自检;描述各种功能覆盖率模型,并可以给出功能覆盖率结果。本发明能够搭建一个可移植,重用,扩展,完全自动检查的具有层次化结构的MCU验证平台。
文档编号G06F11/36GK102096628SQ200910201938
公开日2011年6月15日 申请日期2009年12月15日 优先权日2009年12月15日
发明者朱思良 申请人:上海华虹集成电路有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1