我想在SystemVerilog类中创建一个 const 对象。 SystemVerilog是否支持const对象(以及如何?),或者它是否仅支持const基元类型。
我想做点什么:
const my_object MY_CONST;
const begin
MY_CONST = new();
MY_CONST.param1 = "value1";
MY_CONST.param2 = "value2";
end
答案 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
句柄的成员函数,我猜。