System verilog 在包内定义接口

System verilog 在包内定义接口,system-verilog,System Verilog,在中,我们可以找到包装说明和此类信息: 类型、网络、变量、任务、函数、序列、属性和 checker可以在包中声明 我想知道,为什么不能在包中定义接口,是否有什么特别的原因?在我看来,它可能有用,但显然标准的创建者不会同意。主要原因与SystemVerilog中存在的不同名称空间以及单独编译的要求有关接口是一种设计元素(参见第3.2节设计元素),其定义存在于自己的名称空间中,使用前不需要编译包用于具有特定编译顺序要求以及创建单独命名空间的类型。在本标准的不同修订中,该原始意图可能已经丢失 Veri

在中,我们可以找到包装说明和此类信息:

类型、网络、变量、任务、函数、序列、属性和 checker可以在包中声明


我想知道,为什么不能在包中定义接口,是否有什么特别的原因?在我看来,它可能有用,但显然标准的创建者不会同意。

主要原因与SystemVerilog中存在的不同名称空间以及单独编译的要求有关<代码>接口是一种设计元素(参见第3.2节设计元素),其定义存在于自己的名称空间中,使用前不需要编译<代码>包用于具有特定编译顺序要求以及创建单独命名空间的类型。在本标准的不同修订中,该原始意图可能已经丢失


Verilog有一个
配置
机制,允许您在不同的库中使用相同设计元素的不同实现

+1表示上下文和“原始意图可能已丢失”!接口、软件包、模块的SystemVerilog规则中存在如此多的不对称性,不参与标准委员会的人很难理解或推断其原因。。。为什么我不能参数化一个包?为什么I不能将模块或接口作为参数传递?对于一个典型的用户来说,这些看起来像是疏忽,但也许这些是明智的决定!SystemVerilog是特性爬行的一个很好的例子。每个特性本身似乎都是一个好主意,但从总体上看,它们会让事情变得更糟,带来不必要的复杂性。这种情况不仅发生在委员会中,还发生在实现扩展的供应商中,或者发生了成为扩展的bug,必须重新纳入标准。同意。有了SV,我们似乎最终得到了一些东西,这些东西仍然不允许对可合成的RTL进行良好的抽象,但也不是一种很好的软件语言,这使得验证也很混乱。