代码覆盖率
代码覆盖率测试一般包括行覆盖,条件覆盖,FSM覆盖,翻转覆盖率等。在不同的代码级别有不同的覆盖率,Behavioral code包含line+condition+path(branch)+FSM;在RTL code包含line+condition+path+toggle+FSM;Gate-level Code只包含Toggle覆盖率。
What is Code Coverage?
- Have all the line of the RTL been stimulated?
- Have all the states of a FSM been exercised?
- Have all the conditions of an “if” statement in the RTL simulated?
- Have all the blocks of a “case” statement been exercised?
What code Coverage is NOT?
- Functional Coverage, which answer questions such as:
- Have all possible combinations of instructions been verified on a processor?
- Have all the “Corner-cases” been tested for a design?
- Did all asynchronous interrupt occur when a cache miss was being handled by the processor?
如果用VCS去查看代码覆盖率,只需在VCS 编译和执行时加入代码覆盖率参数: -cm line+cond+fsm+branch+tgl
VCS 查看代码覆盖率
VCS 会在工作目录下默认生成simv.vdb 文件夹,其中包含了代码覆盖率相关的信息,可以用以下命令来查看代码覆盖率:
dve –covdir *.vdb &
问题:
用什么方法和工具来解决功能覆盖率问题?