如何将RTL模块内嵌的DV代码连接到测试平台

时间:2017-11-08 02:16:38

标签: system-verilog

我必须在RTL模块中嵌入DV代码以进行验证。这个RTL模块有很多(1000s)实例。如何从测试中基于每个实例使其可控? Testbench在SystemVerilog UVM中。我想远离CDPI?

任何建议都将不胜感激

-Hawki

2 个答案:

答案 0 :(得分:1)

使用bind构造将模块或接口插入RTL模块。在此绑定模块中,您可以使用与RTL模块交互的方法构造一个类。每个实例都将类对象设置为uvm_config_db。然后,您的测试平台从uvm_config_db获取这些对象,您可以从测试平台调用这些对象方法。

我写了一篇DVCon 2012论文The Missing Link: The Testbench to DUT Connection,上面有一个完整的例子。

答案 1 :(得分:0)

正如戴夫在回答中所说,bind陈述通常是最好的方式。

虽然还有其他方法,但在某些情况下可能会更方便。它们基于参数化模块。

1)使用参数直接实例化

 module rtl #(bit dvflag = 0) ();
    ...
    if (dvflag)
       dv_module dv_instance(...);
    ...
endmodule


module dut;
   rtl  rtl1();
   rtl #(.dvflag(1)) rtl2();
   ...
endmodule

2)用v2k配置语句覆盖实例。

module dut;
   rtl rtl1();
   rtl rtl2();
endmodule
...

config dv_cfg;
     instance dut.rtl2 use #(.dvflag(1));
     ...
 endocnfig