2012-03-13 4 views
2

Я использую SystemVerilog. Мой код:Функция non-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. 

Но я ничего не возвращает, я знаю, я может отбросить вызов функции в пустоту, чтобы избавиться от предупреждения. Но почему это дает это предупреждение ?? !!

Спасибо.

ответ

4

Если вы не объявили функцию как void, и вы вызываете ее, не присваивая возвращаемое значение ни на что, вы увидите эту ошибку. Простое исправить:

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

Осторожно, но вы не можете делать ничего, что «требует времени» в функции. Для этого вам понадобится task.

2

Функция, объявленная с неявным типом, возвращает logic. Вы должны явно объявить тип возврата недействительным, если это ваше намерение.