我想使用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
答案 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 @*