void上下文中使用的非void函数?

时间:2012-03-13 15:15:45

标签: function void system-verilog

我正在使用SystemVerilog。我的代码是:

function write_pixel_data(datastr ds);
 /* some stuff here... but no return */
endfunction

然后我调用我的函数:

write_pixel_data(someval);

我得到了vcs警告:

Warning-[SV-NFIVC] Non-void function used in void context.

但是我没有返回任何东西,我知道我可以将函数调用转换为void来摆脱警告。但是为什么它会给出这个警告?? !!

感谢。

2 个答案:

答案 0 :(得分:4)

如果您尚未将该函数声明为void并且在没有将返回值赋给任何内容的情况下调用它,您将看到此错误。简单修复:

function void write_pixel_data(datastr ds);
 /* some stuff here... but no return */
endfunction

但是要小心,你不能做任何“需要时间”的功能。你需要task

答案 1 :(得分:2)

使用隐式类型声明的函数返回logic。如果这是你的意图,你必须明确地声明返回类型是无效的。