新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于VMM验证方法学的MCU验证环境

基于VMM验证方法学的MCU验证环境

作者:时间:2016-09-12来源:网络收藏

MCU指令一旦开始运行,尤其是随机指令,指令执行不是顺序,有时会跳入死循环,很难设定仿真中止时间,这里设定了两种机制,一种是仿真指令计数,另一种就是根据覆盖率分析,通过的覆盖率分析函数,可以动态的得到覆盖率情况,如果随机指令跳入死循环,覆盖率就会一直维持不变,每次覆盖率分析不变就进行计数,当计数超过限定,就会让ScoreBoard结束,通过环境对ScoreBoard的监测,一旦ScoreBoard停止,整个仿真也会停下。

4.7 功能覆盖率模型

对于MCU这样的DUT,代码覆盖率已经不能够代表验证进度,而功能覆盖率也只能代表相当一部分待验证的功能,这里对于基本的memory,功能覆盖率仅要求所有位都被指令操作过,对于特殊寄存器SFR,需要指定某些特定位有相应的“0”以及“1”状态。代码如下:

coverpoint memory[‘h87]

{

wildcard bins b87m_0_0 = {8’bxxxxxxx0};

wildcard bins b87m_1_0 = {8‘bxxxxxxx1};

wildcard bins b87m_0_1 = {8’bxxxxxx0x};

wildcard bins b87m_1_1 = {8‘bxxxxxx1x};

}

另外可以收集指令与指令参数的交叉覆盖率分析,例如:

covergroup gen_port_cov;

coverpoint addr_mode;

coverpoint kind;

cross addr_mode, kind;

option.weight = 0;

endgroup

可以说对于MCU这样的DUT,功能点很难被完全描述,但是功能覆盖率还是提供了一部分量化指标,供验证参考。

5 小结

本文实现了一个验证MCU指令的基于的验证环境,在这个环境里不但可以使用随机的指令生成来输入指令,也可以使用已有的应用程序代码,另外提供了 memory自检环境,可以在每一条指令执行后检查memory值,从最全面角度保证每条指令执行结果是正确的。此外还提供了功能覆盖率模型,收集覆盖率结果。这个环境可以被复用扩展,基于这个MCU开发的软件都可以在这个验证环境中先运行以保证软件的正确性。


上一页 1 2 3 下一页

关键词: SystemVerilog VMM

评论


相关推荐

技术专区

关闭