System verilog 使用虚拟接口变量赋值语句
我想使用assign语句将模块变量连接到虚拟接口中的端口 我创建了一个接口,并在顶部模块的config_db中将其设置为虚拟接口。我通过另一个模块中的config_db获得了虚拟接口,并尝试将另一个模块中的端口连接到虚拟接口中的端口System verilog 使用虚拟接口变量赋值语句,system-verilog,uvm,System Verilog,Uvm,我想使用assign语句将模块变量连接到虚拟接口中的端口 我创建了一个接口,并在顶部模块的config_db中将其设置为虚拟接口。我通过另一个模块中的config_db获得了虚拟接口,并尝试将另一个模块中的端口连接到虚拟接口中的端口 //Below is the sample code interface intf(); //Interface int values; endinterface module another_module(); //Ano
//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
标准不允许在
assign
语句中使用虚拟接口。
assign
在verilog中用于连接不同的RTL块。
虚拟接口
是一种系统verilog测试台概念。
因此,它们不能混合在一起
您必须澄清,为什么在此内容中确实需要虚拟
界面。它们是不可合成的。您正在编写测试台模块吗?在一般情况下,您应该使用常规接口来连接模块
但是,在您的示例中,您可以使用始终@*
执行分配:
always @* val = u_intf.values;
请格式化你的帖子并问一个问题。嗨,塞奇,这样可以吗?ThanksHi serge,如果我使用always_comb val=u_intf.values;,是否有效?在always_comb中使用虚拟接口有效吗?谢谢,萨默什