SystemVerilog接口-模块声明后传递参数

时间:2019-02-27 09:46:28

标签: module interface system-verilog

给出以下模块声明:

module ( myinterface.mymodport mybus, ... );

并假设myinterface有参数,如何指定它们?

接口实例化仅在测试平台中发生,但是现在我要合成DUT,因此TB消失了。

2 个答案:

答案 0 :(得分:3)

这是SystemVerilog LRM中的一个疏忽。没有语法为模块头中的接口指定必需的参数集。

您可能会检查综合工具,以查看它们是否提供任何方式为顶级综合实例指定参数替代。

答案 1 :(得分:0)

在实例化接口时指定参数;您未在模块的端口列表中指定它。给定

interface myinterface #(parameter DATA_SIZE = 0);
...

您需要的只是

module mymodule (myinterface.mymodport mybus);
...

因为你在其他地方

myinterface #(.DATA_SIZE(64)) i();

interface myinterface #(parameter DATA_SIZE = 0);
  logic [DATA_SIZE-1:0]  AWID;
  logic [31:0] AWADDR;
  modport mymodport (input AWID, AWADDR);
endinterface

module mymodule (myinterface.mymodport mybus);
  initial
    $display("mymodule");
endmodule

module top;
  myinterface #(.DATA_SIZE(64)) i();
  mymodule m (.mybus(i));
endmodule

https://www.edaplayground.com/x/528x