Vhdl 带inout端口的systemverilog接口周围的verilog包装器
我刚从micron下载了一个DDR4接口的行为模型。令我惊讶的是,他们将端口完全转换为系统接口,这在将此模型与Verilog或VHDL的混合语言模拟接口时产生了问题 我的问题是。如何围绕包含inout端口的DDR4 SystemVerilog接口创建verilog或VHDL包装器?下面是我尝试做的一个例子:Vhdl 带inout端口的systemverilog接口周围的verilog包装器,vhdl,verilog,Vhdl,Verilog,我刚从micron下载了一个DDR4接口的行为模型。令我惊讶的是,他们将端口完全转换为系统接口,这在将此模型与Verilog或VHDL的混合语言模拟接口时产生了问题 我的问题是。如何围绕包含inout端口的DDR4 SystemVerilog接口创建verilog或VHDL包装器?下面是我尝试做的一个例子: //SystemVerilog Interface interface micron_ddr4_if(); wire [7:0] DQ; wire DQS_t;
//SystemVerilog Interface
interface micron_ddr4_if();
wire [7:0] DQ;
wire DQS_t;
wire DQS_c;
modport system (inout DQ, DQS_t, DQS_c);
endinterface
// System Verilog Module
module micron_ddr4_model(
micron_ddr4_if ddr4_if
);
// ...
endmodule
// Convert SystemVerilog Interface into Verilog Interface
module my_verilog2001_wrapper(
inout wire [7:0] DQ,
inout wire DQS_t,
inout wire DQS_c
);
micron_ddr4_if ddr4_if();
micron_ddr4_model ddr4_model(ddr4);
// How to connect this part?
//
// DQ <=> ddr4_if.DQ;
// DQS_t <=> ddr4_if.DQS_t;
// DQS_c <=> ddr4_if.DQS_c;
//
endmodule
//SystemVerilog接口
接口micron_ddr4_if();
导线[7:0]DQ;
电线DQS_t;
电线DQS_c;
modport系统(输入DQ、输出DQS_t、输出DQS_c);
端接口
//系统Verilog模块
模块micron\u ddr4\u型号(
微米ddr4如果ddr4如果
);
// ...
端模
//将SystemVerilog接口转换为Verilog接口
模块my_verilog2001_包装器(
输入输出导线[7:0]DQ,
输入输出导线DQS\U t,
inout导线DQS\U c
);
微米ddr4如果ddr4如果();
微米ddr4型ddr4型(ddr4);
//如何连接此部件?
//
//DQ ddr4_if.DQ;
//DQS_t ddr4_if.DQS_t;
//DQS_c ddr4_if.DQS_c;
//
端模
您可以使用端口表达式。人们在模块实例上看到了这种语法,但没有意识到他们也可以在端口声明中使用它
module my_verilog2001_wrapper(
inout .DQ(ddr4_if.DQ),
inout .DQS_t(ddr4_if.DQS_t),
inout .DQS_c(ddr4_if.DQS)
);
micron_ddr4_if ddr4_if();
micron_ddr4_model ddr4_model(ddr4_if);
endmodule
您显示的接口代码不应该工作。不能使用变量对双向输入输出端口建模。它们必须是电线。酷,那是SystemVerilog功能,还是Verilog-95功能?那是Verilog-1986功能。
module my_verilog2001_wrapper(
inout .DQ(ddr4_if.DQ),
inout .DQS_t(ddr4_if.DQS_t),
inout .DQS_c(ddr4_if.DQS)
);
micron_ddr4_if ddr4_if();
micron_ddr4_model ddr4_model(ddr4_if);
endmodule