2014-12-08 46 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