Большая часть рандомизации в SystemVerilog обычно выполняется внутри классов, где SV обладает мощной инфраструктурой рандомизации.Как правило, вы делаете что-то вроде этого:
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();
Преимущество состоит в том, что SV имеет отдельный генератор случайных чисел для каждого объекта, так что вы не изменяете остальную среду, когда изменяете этот объект.семя объекта.Конечно, вы можете также добавить ограничения к r_value, чтобы он попадал между диапазонами, например.