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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top