corde coverage

来源:互联网 发布:域名绑定服务器 编辑:程序博客网 时间:2024/06/04 01:25
用ModelSim做硬件设计验证的时候,需要了解待测设计(DUT)的代码覆盖率(code coverage),这就需要用到ModelSim自带的Code Coverage功能,ModelSim代码覆盖率功能Code coverage,能报告出statement(语句) 、branch(分支)、condition(条件)、 expression(表达式)、toggle(信号反转)、fsm(有限状态机)等多种覆盖率情况,进一步提高了测试的完整性。本文简要介绍ModelSim Code Coverage的使用方法,写的不对的地方希望有朋友留言指教。

步骤:

1、编译选项(compile options):

在ModelSim的Workspace里选中需要查看代码覆盖率的文件,使用Ctrl键选择多个文件,然后点击右键选择compile->compile  prperties->coverage,选择前四项(statement,brances,condition,expression)。

 corde coverage - 靖harry - 靖harry的博客
 


2、编译(compile):

对所选择的文件进行编译,可在命令行窗口敲compile -all,也可在编译菜单里选择compile all。

3、仿真(simulate ):

在命令行窗口输入vsim -coverage work.top,然后run -all,仿真一段时间之后break。

4、观察结果(coverage result):

选中View菜单,选择Code Coverage,然后打开Instance coverage和Missing coverage,就可以看到有两个coverage的窗口。其中,Instance coverage是对每个模块的语句覆盖率进行统计的结果,Missing coverage则显示了每个模块未覆盖部分的情况。
corde coverage - 靖harry - 靖harry的博客
 

其中,每个统计项都有自己的含义,可根据英文意思理解,比如Stmt hits代表被执行的语句条数,这里主要看四个统计项:

Stmt,Brances,Condition和Expression的%覆盖率,覆盖率高于90%显示为绿色,低于90%则显示为红色。另外,在Instance coverage窗口中选中某个模块之后,会在ModelSim的代码编辑窗口中很方便地了解这个模块的代码执行情况,其中Hits表示这一行的语句被执行,BC表示到达这一条分支。

Missing coverage窗口如下图所示:

在Workspace中选择Files,在Files中选择需要查看的模块,打开Missing Coverage窗口即可查看。可以查看的选项包括:Statment,Branches,Expreession,Condition,Troggle,分别描述了这个模块里未执行的语句、分支、表达式等等,按行大小序号排列。