为包含接口的System Verilog DUT创建Verilog包装器

时间:2016-06-03 22:20:09

标签: interface verilog wrapper system-verilog

基本上,我有一个系统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模块。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的DUT实例化语法不正确。使用接口实例化模块时,只需连接接口即可。您不包含modport。试试这个:

DUT dut(
    .in0(if0),
    .in1(if1),
    .out0(if0),
    .out1(if1)
);