什么算作虚拟接口的非法分层引用



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是接口主体的一部分。我不确定如何解释引用其他接口部分的端口

下面是

引用另一个接口的端口示例

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委员会从未花时间澄清可以允许的具体情况;刚刚做出了广泛的全面禁止。

最新更新