我正在尝试编写一个函数,该函数接受作为const对象句柄的参数。
function void example(const MyClass ob);
//--
endfunction
当我尝试运行此代码时,出现错误:
syntax error, unexpected type name. The type 'MyClass' is defined at test.sv(1).
您可以创建一个const对象句柄,但是为什么不能在函数参数列表中做到这一点呢? 顺便说一句-我知道这只是一个const对象句柄,而不是const类对象,并且(不幸的)在SystemVerilog中使const类对象成为不可能。
答案 0 :(得分:2)
没有 const对象 handle 这样的东西。有 const类变量 。像任何 const变量一样,它们会在声明中分配一次值,然后在声明后变为只读。
类变量的值是类对象的 handle 。您希望能够复制带有传递为函数输入的句柄的函数参数。如果SystemVerilog允许您将参数声明为const变量,则无法对其进行赋值。
有const ref
函数参数的概念,但是它的价值很小,因为它只能防止修改本地参数变量。您仍然可以写入给定对象句柄的任何类成员。