modelsim 下的Coverage analysis
时间:10-02
整理:3721RD
点击:
用modelsim做coverage analysis, 部分代码如下:
always@(negedge rstn or posedge clk)
begin
if(!rstn)
begin
......
end
else
begin
......
499行if(a[28]==1'b0)
500行b<=16'd32767;
501行else
502行b<=16'd32768;
......
end
end
仿真完成后,查看coverage data in the source window。发现一个问题,第499行的Hits为×,BC为绿色的勾号,第500行和第502行的Hits都为×。我就有点想不明白,既然499行BC为勾好,就说明仿真时已经覆盖到了这一行,那么要么执行第500行,要么执行第502行。因此,第499行的Hits不应该为×,否则就自相矛盾了,而且第500行的Hits次数和第502行的Hits次数之和应该等于第499行Hits次数。不知道我的理解是否正确,还是确实另有玄机?
always@(negedge rstn or posedge clk)
begin
if(!rstn)
begin
......
end
else
begin
......
499行if(a[28]==1'b0)
500行b<=16'd32767;
501行else
502行b<=16'd32768;
......
end
end
仿真完成后,查看coverage data in the source window。发现一个问题,第499行的Hits为×,BC为绿色的勾号,第500行和第502行的Hits都为×。我就有点想不明白,既然499行BC为勾好,就说明仿真时已经覆盖到了这一行,那么要么执行第500行,要么执行第502行。因此,第499行的Hits不应该为×,否则就自相矛盾了,而且第500行的Hits次数和第502行的Hits次数之和应该等于第499行Hits次数。不知道我的理解是否正确,还是确实另有玄机?
请高手出手指点指点
另外,对于assign语句行,有的行Hits栏会被打上勾号,表明测试覆盖到了。而有的行则没有任何标记,即没有勾号,也没有×号,不知道是怎么回事?看帮助文件,也没找到有价值的东西。
请参考关于功能覆盖方面的知识