是否可以使用Verilog模块的modport创建SystemVerilog包装器?

时间:2014-01-11 08:41:09

标签: interface system-verilog

是否可以使用modports创建SystemVerilog包装器?

我们说我有一个界面:

interface axi_if(input clk, input rst);
  logic arlen;

  clocking mclk@(posedge clk);
    output arlen;
  endclocking

  modport Master(clocking mclk, input clk, input rst);

endinterface

在DUT包装中我有:

axi_if my_if(clk, rst)

my_dut you_dut(.arlen(my_if.Master.mclk.arlen));

我试过这样做但是我遇到了跨模块引用错误。有什么建议/线索有什么不对吗?

1 个答案:

答案 0 :(得分:1)

这里有两个不同的问题。

  1. Modport不是作用域,在通过分层引用访问接口成员时不会使用它,就好像它是模块实例一样。您只在连接接口端口或虚拟接口时使用modport来限制通过端口的访问。如果你的my_dut有一个接口端口,你可以写my_dut you_dut(.a_if(my_if.Master));来指定my_dut只能访问Master指定的接口信号。
  2. 您没有显示my_dut arlen端口是输入还是输出,但它不能是输出端口。这是因为mclk.arlen唯一能做的就是用同步驱动语句驱动它:mclk.arlen <- expression;。你无法阅读它。因此,如果arlen是输入端口,您可能想要编写my_dut you_dut(.arlen(my_if.arlen));