2014-01-11 139 views
2

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

比方说,我有一个接口:

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

    clocking [email protected](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

这里有两个独立的问题。

  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));
+0

嗨戴夫,在那种情况下,我该怎么做一个绑定?然后,不可能使用say _arlen_(如果需要由其他人)绑定接口,因为_axi_if_没有端口_arlen_ – justrajdeep

相关问题