Fonctions, tâches et portée
Factoriser les calculs et les séquences de test sans cacher les dépendances ni mélanger RTL et temporisation.
Une fonction pour calculer une valeur
Une fonction renvoie une valeur et s'exécute sans consommer de temps de simulation. Elle convient aux calculs combinatoires répétés.
function automatic logic [7:0] saturating_add8(
input logic [7:0] a,
input logic [7:0] b
);
logic [8:0] wide_sum;
wide_sum = {1'b0, a} + {1'b0, b};
if (wide_sum[8])
return 8'hFF;
return wide_sum[7:0];
endfunctionLe mot-clé automatic donne un stockage propre à chaque appel. C'est le comportement le plus sûr pour une fonction réentrante ou appelée en parallèle dans un testbench. Une fonction déclarée dans un module peut être utilisée par ce module. Une fonction placée dans un package peut être partagée.