定义包内的接口

Qiu*_*Qiu 6 system-verilog

IEEE Std 1800-2012中,我们可以找到包的描述和这些信息:

类型,网络,变量,任务,函数,序列,属性和检查器可以在包中声明

我想知道,如果有任何特殊原因导致无法在包内定义接口?在我看来它可能是有用的,但显然标准的创建者不会同意.

dav*_*_59 9

主要原因与SystemVerilog中存在的不同命名空间以及单独编译的要求有关.Interfaces是一种设计元素(参见1800-2012 LRM部分3.2设计元素),其定义存在于它们自己的命名空间中,在使用之前不需要编译.Packages适用于具有特定编译顺序要求的类型以及创建单独的命名空间.在标准的不同修订版本中,原始意图可能已丢失.

Verilog有一种configuration机制,允许您对不同库中存在的相同设计元素进行不同的实现.

  • SystemVerilog 是功能蠕变的一个很好的例子。每个功能本身似乎都是一个好主意,但从大局来看,由于不必要的复杂性,会使事情变得更糟。这不仅发生在委员会中,而且发生在实施扩展或成为扩展必须重新纳入标准的供应商中。 (3认同)
  • 同意.对于SV,我们似乎最终得到的东西仍然不允许合成RTL的良好抽象,但也不是一个非常好的软件语言,使得验证也变得混乱. (2认同)