Une grande partie de la randomisation dans SystemVerilog est généralement effectuée dans les classes, où SV dispose d'une puissante infrastructure de randomisation. Vous souhaitez généralement faire quelque chose comme ceci:
class Foo;
rand int r_value;
function void reseed(int seed);
srandom(seed);
endfunction
function void do_something();
randomize();
$display("something: %0d", value);
endfunction
function void do_something_else();
randomize();
$display("something: %0d", value);
endfunction
endclass
....
Foo foo = new();
foo.reseed(seed);
foo.do_something();
foo.reseed(seed);
foo.do_something_else();
L'avantage est que SV a un générateur de nombres aléatoires séparés pour chaque objet, de sorte que vous ne changez pas le reste de l'environnement lorsque vous changez qu'une semence de l'objet . Bien sûr, vous pouvez également ajouter des contraintes à r_value pour le faire tomber entre une plage, par exemple.