代码之家  ›  专栏  ›  技术社区  ›  Tudor Timi

对于虚拟接口来说,什么是非法的层次结构引用?

  •  2
  • Tudor Timi  · 技术社区  · 5 年前

    这个 IEEE 1800—2017 部分中的LRM状态 25.9虚拟接口 那就是:

    尽管接口可能包含对其主体之外的对象或引用的端口的分层引用 其他接口,在声明中使用包含这些引用的接口是非法的。 虚拟接口。

    下面是这样一个不允许的层次引用的例子吗?

    interface some_other_intf();
      bit some_signal;
    endinterface
    
    
    interface some_intf();
    
      some_other_intf intf();
    
      task foo();
        intf.some_signal <= 0;
      endtask
    
    endinterface
    
    
    virtual some_intf some_vif;
    

    我有一个工具抱怨这行包含 intf.some_signal <= 0 . 同时 intf.some_signal 是一个层次引用,它是一个相对引用,所以我不明白为什么不允许这样做。

    intf 是接口主体的一部分。我不知道如何解释 引用其他接口的端口 部分。

    1 回复  |  直到 5 年前
        1
  •  2
  •   dave_59    5 年前

    下面是一个引用另一个接口的端口示例

    interface some_other_intf();
      bit some_signal;
      parameter T = int;
    endinterface
    
    interface some_intf(some_other_interface intf);    
      task foo();
        intf.some_signal <= 0;
      endtask
    typefef intf.T myT;
    myT another_signal;
    endinterface
    virtual some_intf some_vif;
    

    这个问题涉及到 some_vif.another_signal 它的类型可能会随着T的参数化而改变。 intf .

    对于大多数用例来说,这不是问题,但是SystemVerilog委员会从未花时间澄清可以允许的特定用例;刚刚作出了广泛的禁止。