基本上,我有一个系统verilog设计,我需要将其集成到verilog中的模拟框架中。所以我需要创建一个包装器以便与DUT接口,但是在尝试这样做时遇到了问题。
DUT的接口有一个接口块以及其他输入和输出。 DUT的接口如下所示
interface ifc(input clk, input rst);
logic [`DATA_WIDTH-1:0] data;
logic valid;
modport in(
input data,
input valid
)
modport out(
output data,
output valid
)
endinterface
DUT使用接口
module DUT(
ifc.in in0,
ifc.in in1,
ifc.out out0,
ifc.out out1,
output error);
....
endmodule
我创建了一个接口块的实例,并将相应的信号分配给接口,并将接口传递给DUT。
module sim(input clk, input rst,
input in0, input in1,
input ivalid0, input ivalid1,
output out0, output out1
output ovalid0, output ovalid1 );
ifc if0(.clk(clk), .rst(rst));
ifc if1(.clk(clk), .rst(rst));
assign if0.data = in0;
assign if1.data = in1;
assign if0.valid = ivalid0;
assign if1.valid = ivalid1;
assign out0 = if0.data;
assign out1 = if1.data;
assign ovalid0 = if0.valid ;
assign ovalid1 = if1.valid ;
DUT dut(
.in0(if0.in),
.in1(if1.in),
.out0(if0.out),
.out1(if1.out)
);
endmodule
当我尝试在Modelsim中进行模拟时,我收到一个错误,即此错误或其他用法是' if0.in'与' modport'不一致宾语。在我看到的所有示例中,他们使用SystemVerilog包装器来运行Verilog DUT,但我还没有看到任何相反的方法。是否有可能以相反的方式做到这一点?我将如何在Verilog包装器中使用接口实例化systemverilog模块。
感谢您的帮助。
答案 0 :(得分:0)
您的DUT实例化语法不正确。使用接口实例化模块时,只需连接接口即可。您不包含modport。试试这个:
DUT dut(
.in0(if0),
.in1(if1),
.out0(if0),
.out1(if1)
);