是否可以在SystemVerilog中将函数作为参数传递?
这段代码有希望证明它虽然不起作用。有帮助吗?感谢。
module funcparam;
int result;
function int xxx(int x, ref fun);
return fun(x);
endfunction
function int yyy(int y);
return y * (y + y);
endfunction
initial begin
result = xxx(5, yyy);
$display("result: %d", result);
end
endmodule
答案 0 :(得分:5)
您可以通过引用传递的内容受到限制:
- 变量,
- 一个类属性,
- 解压缩结构的成员,或
- 解包数组的元素。
您可能能够传入基类的句柄,但我怀疑这会起作用。
class base;
function yyy(int x);
endfunction
endclass
class class1 extends base;
function yyy(int x);
endfunction
endclass
class class2 extends base;
function yyy(int x);
endfunction
endclass
module funcparam;
result;
function int xxx(int x,input base fun);
return fun.yyy(x);
endfunction
class1 cls = new;
//class2 cls = new;
initial begin
result = xxx(5, cls);
$display("result: %d", result);
end
endmodule
答案 1 :(得分:4)
没有
任务和函数只能接受数据类型作为参数,而函数不是数据类型。此外,无法将函数转换为数据类型。