功能覆盖可以在仿真过程中收集所关心的功能是否被激活过(具体就是相关的信号是否被激励到,是否有跳变)。
功能覆盖的好处是不需要查看波形,就能够在覆盖报告里看到这些功能的覆盖情况。在覆盖summary里看是否覆盖率是100%,就可以知道是否有功能在仿真中被漏掉了。
覆盖率代码:
功能覆盖最基础的用法就是用cover语句。我们这里只讲cover语句里最基础的用法,cover可以有很丰富灵活的用法。
在不改动RTL代码,在TB里收集RTL里的功能覆盖情况下,用concurrent coverage最适合了。例如收集DUT里一个ram的写信号是否被激活过,可以在tb里写如下语句:
cov_ram_wr: cover property(@(posedge dut.ram.clk) disable iff(dut.rst)
$rose(dut.ram_wen)
);
上面的语句中:
cov_ram_wr是自己定义的coverage的名称,可以省略,但是强