用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次数。不知道我的理解是否正确,还是确实另有玄机?