мы можем использовать $ random в системном verilog с аргументом seed? - PullRequest
0 голосов
/ 01 апреля 2020

могу ли я использовать $ random (seed) для генерации того же значения для переменной в системном verilog?

module test();
logic[1:0] a,b:
integer seed;
initial begin
repeat (3)
begin
seed = 20;
a = $random(seed);
b=$random;
$display("a=%h,b=%h",a,b):
end
end
endmodule

Для приведенного выше кода я всегда получаю значение 'a' как '0' , Не можем ли мы использовать $ random с seed? Потому что, когда я изменил его на $ urandom (seed), он работает как положено. Я читаю во многих местах, что могу использовать $ random с аргументом seed. Может ли кто-нибудь, пожалуйста, помочь в этом

Также для $ urandom (seed) в приведенном ниже коде

module test();
logic[1:0] a,b:
integer seed,seed1;
initial begin
repeat (3)
begin
seed = 20;
seed1 = 55;
a = $urandom(seed);
$display("a first random=%h",a);
a = $urandom(seed1);
$display("a second random =%h",a);
b=$random;
$display("a=%h,b=%h",a,b);
end
end
endmodule

для приведенного выше кода, даже если я даю seed1 и seed2 в качестве аргумента для $ urandom в при другой рандомизации она принимает одно и то же значение, даже если внутри модуля изменяется число семян? Ожидается ли это, или если в качестве аргумента $ urandom мы приводим разные начальные значения, нужно ли это значение зависать или нет?

1 Ответ

0 голосов
/ 01 апреля 2020

Проблема с вашим кодом в том, что вы устанавливаете seed=20 каждый раз через l oop, поэтому вы всегда получаете одни и те же случайные значения. В SystemVerilog просто используйте $urandom; и установите глобальное начальное число из командной строки вашего симулятора.

...