首页 文章

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

提问于
浏览 1543
0

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

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

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

相关问题