2014-12-08 52 views
0

多继承是非常通用的OOPS概念,那么为什么它不在systemverilog中实现,并且只允许单继承?systemverilog中的继承和虚拟接口?

第二为什么接口不允许在课堂内部?是因为存储实现像类中的动态存储和模块,程序,接口中的静态存储?

回答

4

这真的应该是两个独立的职位,为您的两个不同的问题。不幸的是,关键字接口将用于以完全分离的含义回答它们两者。

我写了一个2010 DVCon paper,其中描述了原始SystemVerilog LRM中没有多重继承的原因以及可能的解决方案。 SystemVerilog 1800-2012确实添加了多个接口类的继承,这里是a link,以很好地描述该特性。在第二个问题中,使用关键字接口作为一种类别与接口无关。

对于为什么不允许在类中使用接口实例,你大部分都是正确的。 SV 接口与作为分层容器的实例的设计元件模块程序非常类似。在制定过程中,这些容器在模拟开始之前变平。类实例只能在运行时通过执行程序代码来构造。

阐述过程特别针对硬件描述语言,并且是代码生成和复制过程的一部分。它也可以让您在整个设计中分层次地引用信号,而无需使用指针。另一方面,类对象只能通过动态创建的句柄来引用。

+0

在你的论文中你提到了钻石形状的问题,但仍然使用虚拟类概念来解决它,所以只有一个副本将被实例化。那么在systemverilog中是不可能的? 而对于虚拟接口的答案,我无法得到类的运行时行为与不允许类中的接口有关,因为最终关于内存的所有内容都将仅在运行时分配? – 2014-12-08 10:10:14

+0

不幸的是,在运行时构造的类意味着参数化函数通常不被综合工具支持(DC除外)。对于一个精心设计的可参数化容器来说,这是一个非常强大的例子,就像要添加到该语言中的包一样,因为似乎不可能说服合成供应商为此目的支持类。 – Chiggs 2014-12-08 13:32:00

+0

用委员会设计的语言,任何事情都是可能的,有些事情是不可能的。无论增加哪种语言,供应商都需要花费时间和金钱。 @maheshShah,我会在上面添加更多信息 – 2014-12-08 16:22:31