2012-03-13 20 views
2

私はSystemVerilogを使用しています。私のコードは次のとおりです。void以外の関数がvoidコンテキストで使用されていますか?

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にキャストして警告を取り除くことができます。しかし、なぜこの警告を与えるのですか?

ありがとうございました。

答えて

4

関数をvoidと宣言しておらず、戻り値を何も指定せずに呼び出すと、このエラーが表示されます。簡単な修正:

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

慎重に、関数内で「時間がかかる」ということはできません。そのためにはtaskが必要です。

2

暗黙の型で宣言された関数は、logicを返します。それがあなたの意図であれば、返り値の型をvoidと明示的に宣言しなければなりません。