使用虚拟接口变量

时间:2019-03-23 11:55:47

标签: system-verilog uvm

我想使用Assign语句将模块变量连接到虚拟接口中的端口。

我创建了一个接口,并在顶部模块的config_db中将其设置为虚拟。我通过另一个模块中的config_db获得了虚拟接口,并尝试将另一个模块中的端口连接到虚拟接口中的端口

//Below is the sample code

  interface intf();   //Interface

       int values;

  endinterface

  module another_module();   //Another module

       virtual intf u_intf;

       int val;

       assign val = u_intf.values; //I am getting ERROR here

       initial begin
             uvm_config_db#(virtual intf)::get(null,"","assoc_array",u_intf);
       end

  endmodule

  module tb();           // Top TB

       intf u_intf();
       another_module u_another_module();

       initial begin
            uvm_config_db#(virtual intf)::set(uvm_root::get(),"","assoc_array",u_intf);
       end

  endmodule

1 个答案:

答案 0 :(得分:1)

标准不允许在class Category(): def __init__(self): self.cat = self.key = self.desc = [] self.categories = {1:"Coffee",2: "Tesco"} self.descriptions = {} def index(...): # code ... # dialog = AddCategory(self) # I pass the parent onto the dialog dialog.wait_window() print(self.key) print(self.cat) 语句中使用虚拟接口。 assign在Verilog中用于连接不同的RTL块。 assign是系统Verilog测试平台的概念。 因此,它们不能混合在一起。

您必须弄清楚,为什么在此内容中确实需要virtual interface接口。它们是不可合成的。您在编写测试平台模块吗?通常,应使用常规接口连接模块。

但是,在您的示例中,您可以使用virtual进行分配:

always @*