我可以在SystemVerilog中创建一个const对象吗?

时间:2012-03-05 22:31:19

标签: verilog system-verilog

我想在SystemVerilog类中创建一个 const 对象。 SystemVerilog是否支持const对象(以及如何?),或者它是否仅支持const基元类型。

我想做点什么:

const my_object MY_CONST;

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

2 个答案:

答案 0 :(得分:2)

您可以创建常量类实例。

  

也可以声明类的实例(对象句柄)   const关键字。

const class_name object = new(5,3);
     

换句话说,   该对象就像一个无法写入的变量。争论   新方法应为常数表达式(见11.2.1)。该   可以写入对象的成员(除了那些成员)   被声明为const)。

答案 1 :(得分:2)

我本来想评论Adam12的答案,但我不能这样,我会发布一个新的答案,感叹!

在SV MY_CONST中只会是一个常量句柄。因此,您可能无法将另一个对象分配给句柄,但句柄指向的对象的内容仍然可以修改。

我没有听说过任何const begin ... end构造。我认为调用new有一个限制 - 它应该在分配给const句柄时调用,或者new可以在构造函数中调用{} const 1}} handle是类的成员。可以在任何地方调用const句柄的成员函数,我猜。