基于Verilog的TB的功能覆盖率

基于Verilog的TB的功能覆盖率,verilog,system-verilog,test-coverage,test-bench,Verilog,System Verilog,Test Coverage,Test Bench,我目前正在为DUT开发基于Verilog的测试台模型, 我有系统Verilog TB和验证IP的经验,这是我第一次开发纯Verilog TB 我已经完成了运行模拟及其按预期工作的基本模块。 但是我一直在实现功能覆盖(我想在示例监视器块中实现),我已经从规范中提取了功能覆盖,但是如何在Verilog代码中实现它呢 我们在System verilog中为功能覆盖提供了以下(显示语法的示例代码)支持 covergroup example_group @ (posedge en); parity :

我目前正在为DUT开发基于Verilog的测试台模型, 我有系统Verilog TB和验证IP的经验,这是我第一次开发纯Verilog TB

我已经完成了运行模拟及其按预期工作的基本模块。 但是我一直在实现功能覆盖(我想在示例监视器块中实现),我已经从规范中提取了功能覆盖,但是如何在Verilog代码中实现它呢

我们在System verilog中为功能覆盖提供了以下(显示语法的示例代码)支持

covergroup example_group @ (posedge en);
  parity : coverpoint  par {
    bins even  = {0};
    bins odd   = {1};
  }
endgroup
是否有一种方法可以将功能覆盖率实现为BIN、点和组(在系统verilog中),以跟踪基于verilog的代码中的总体功能覆盖率

编辑:
我知道verilog中没有替代的覆盖语法,我不想通过实现覆盖计数器来使事情复杂化和花费更多的时间。此外,由于一些内部协议问题,我无法将我的verilog TB转换为System verilog。

是的,covergroup相当于此verilog代码

always @(posedge en) begin : example_group
                       integer even=0;
                       integer odd=0;
                       if (par == 0) even = even + 1;
                       if (par == 1) odd = odd + 1;
                     end

但真正耗时的部分是编写收集所有这些计数器、合并来自不同测试的数据并生成报告的代码。重新发明这个似乎很愚蠢。大多数工具在SystemVerilog中都提供了这种功能。

No.Verilog是一种简单得多的语言。SystemVerilog是Verilog的超集。bins用于统计某些事件。因此,您可以编写verilog来执行类似的任务。但一般来说,这可能需要大量的工作和代码(不过您的示例很简单,只需要两个计数器)。此外,还有用于system verilog的覆盖率报告工具。您还需要了解如何在verilog中创建报告。“偶数”和“奇数”都必须初始化为0。上面的代码使用系统verilog语义。如果只是“verilog”,则必须将这两个声明移动到模块范围。挑剔!此代码符合Verilog-2001。但我不指望有人会写。我打赌:-)!我说的是v95。但是,内联初始化似乎不适用于v2k。但你是对的,根本没有理由写它。