【问题标题】:Is it possible to create SystemVerilog wrappers with modports for Verilog modules?是否可以为 Verilog 模块创建带有 modports 的 SystemVerilog 包装器?
【发布时间】:2014-01-11 08:41:08
【问题描述】:

是否可以使用 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));

我尝试这样做,但出现跨模块引用错误。有什么建议/线索有什么问题吗?

【问题讨论】:

    标签: interface system-verilog


    【解决方案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));

    【讨论】:

    • 嗨,戴夫,在这种情况下,我该如何进行绑定?然后不可能使用 arlen (如果其他人需要)绑定接口,因为 axi_if 没有端口 arlen我>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多