Fonction non vide utilisée dans un contexte vide ?
-
13-12-2019 - |
Question
J'utilise SystemVerilog.Mon code est :
function write_pixel_data(datastr ds);
/* some stuff here... but no return */
endfunction
alors j'appelle ma fonction comme :
write_pixel_data(someval);
Et je reçois l'avertissement VCS :
Warning-[SV-NFIVC] Non-void function used in void context.
Mais je ne renvoie rien, je sais que je peux lancer l'appel de fonction sur void pour supprimer l'avertissement.Mais pourquoi donne-t-il cet avertissement ??!!
Merci.
La solution
Si vous n'avez pas déclaré la fonction comme void
et vous l'appelez sans attribuer la valeur de retour à quoi que ce soit, vous verrez cette erreur.Solution simple :
function void write_pixel_data(datastr ds);
/* some stuff here... but no return */
endfunction
Attention cependant, vous ne pouvez rien faire qui « prenne du temps » dans une fonction.Vous aurez besoin d'un task
pour ça.
Autres conseils
Une fonction déclarée avec un type implicite renvoie logic
.Vous devez déclarer explicitement que le type de retour est nul si telle est votre intention.