2016-12-20 48 views
1

在QuestaSIM用戶手冊版本10.5A它是336頁指出:如何在AMS中將多個對象類型驅動到網上?

In the most recent SystemVerilog standard (Std IEEE 1800-2012), two important concepts were established:

User-Defined Nettype (UDN) — UDN allows a definition of a net type that can carry arbitrarily complex data using a built-in type (such as real) or a user-defined type (such as struct). Consequently, UDN is a generalization of the wreal net type from Verilog-AMS. In order to allow connectivity of models that rely on UDNs, a more generic connectivity mechanism is needed—the interconnect object.

但他們真的不指定UDN是如何構建的。 'nettype'和'interconnect'的語法似乎與這個描述非常接近,但都不能滿足它 - 我不能分配互連,而且我無法將自己的類型與nettype一起使用。我正在創建一個模型,需要將用戶定義的對象驅動到規範中定義的UDN上。

module SomeModel(output nettype ObjectContainingProperties outputToInterconnect); 

class ObjectContainingProperties; 

endclass 

ObjectContainingProperties ocp; 
assign outputToInterconnect=ocp; 

initial begin 
    ocp=new(); 
end 

endmodule 

,但我得到的錯誤:

QuestaSim-64 vlog 10.5a Compiler 2016.04 Apr 4 2016 
Start time: 18:55:05 on Dec 19,2016 
vlog -ams -wireasinterconnect SomeModel.sv 
-- Compiling module SomeModel 
** Error: (vlog-13069) SomeModel.sv(11): near "nettype": syntax error, unexpected nettype, expecting IDENTIFIER. 

如何創建和附加一個對象到UDN - 什麼是語法?或者我如何可靠地將不同類型的物體驅動到網絡上?

+0

您引用的文本不是IEEE 1800-2012標準。你看過_6.6.7用戶定義的nettypes_中的例子嗎? –

+0

我在編輯時不小心剪掉了問題的頂部。我不確定它是否值得爲此付出代價,我糾正了它。 – Joe

+0

做喲有IEEE 1800-2012手冊嗎? –

回答

2

用戶自定義的nettypes不是SystemVerilog的OOP class類型系統的一部分。您只能定義結構或包含位或實數組合的數組的nettypes。類僅用於訪問參數化函數。 (請參閱13.8參數化的任務和功能)。

您只能在網上駕駛類似的類型。如果你看一個解析功能(從6.6.7節)的原型

function automatic T Tsum (input T driver[]); 

您將看到該函數有一個輸入參數是一個數組。這將填充網絡中所有驅動程序的值 - 它們必須全部是相同的類型。

interconnect構造只是一個連接的渠道。它將假設它所連接的類型,並且您將無法將具有不同nettypes的信號連接到相同的interconnect

+0

公平地說,如果我將T的所有東西都劃分子類,那麼我的對象就可以毫無問題地被應用了?所以基本上創建一個所有從其繼承的基礎NetTypeObject?我假設這與多個使用'with'作爲分辨率的驅動程序一起工作。 – Joe

+0

除了T不能是類類型。 –

+0

好吧,所以這聽起來像用戶定義的類型駕駛網絡不支持。爲了解決這個問題,如果我在頂部有一個單身人士,並在網上開車,網上的價值可能是一個對象的查找鍵?這看起來公平嗎? – Joe

相關問題