什么算作虚拟接口的非法层次结构引用?

时间:2019-02-11 09:17:34

标签: system-verilog

25.9虚拟接口部分中的 IEEE 1800-2017 LRM状态:

  

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

以下是这种不允许的层次结构引用的示例吗?

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 个答案:

答案 0 :(得分:2)

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

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委员会从未花费时间来澄清可以允许的特定用例;刚刚做了广泛的禁止。