2012-03-05 156 views
1

我想在我的SystemVerilog類中創建一個const對象。 SystemVerilog是否支持const對象(以及如何?),還是僅支持const基元類型。我可以在SystemVerilog中創建一個const對象嗎?

我想這樣做:

const my_object MY_CONST; 

const begin 
    MY_CONST = new(); 
    MY_CONST.param1 = "value1"; 
    MY_CONST.param2 = "value2"; 
end 
+0

我在[SystemVerilog.org](http://www.systemverilog.org/pdf/1a_DesignOverview.pdf#page=14)上看到它的引用,但VCS編譯器在2009年似乎不接受它,或者2011版本的工具。 – 2012-03-06 13:24:28

+0

也許'const'在System Verilog規範中,但是它沒有被編譯器實現。我認爲三種主要的SV仿真器(VCS,NCSim,ModelSim)都不支持SV規範的所有功能。目前,它們都支持不同的子集,afaik。 – 2012-03-06 17:29:27

回答

2

您可以創建不變類的實例。

一個類(對象句柄)的實例也可以與 const關鍵字聲明。

const class_name object = new(5,3); 

換句話說, 對象的行爲像不能被寫入的變量。新方法的參數 應爲常量表達式(見11.2.1)。對象的 成員可以寫入(除了那些 被聲明爲const的成員)。

2

我本來想評論Adam12的答案,但是我不能,所以我會發佈一個新的答案,而不是嘆息!

在SV MY_CONST只會是一個常量句柄。所以可能你不能將另一個對象分配給句柄,但是句柄所指向的對象的內容仍然可以被修改。

我還沒有聽說過任何const begin ... end構造。我認爲在調用new —時應該調用const句柄,或者如果const句柄是類的成員,則可以在構造函數中調用newconst句柄的成員函數可以在任何地方調用,我猜想。

相關問題