Тестирование со случайно сгенерированными входами является мощной техникой и является техникой, обычно используемой для проверки микросхем в наши дни.Обычно вы выполняете тест с известным, определенным начальным числом, тогда как вы хотите иметь возможность генерировать различное начальное число.Таким образом, вы абсолютно ДОЛЖНЫ записать это начальное значение при запуске теста и предоставить механизм для запуска теста с использованием этого начального значения.В противном случае, когда вы найдете ошибку, вы не сможете проверить, исправили ли вы ее.Вы можете найти его более полезным для фиксированного набора тестов с меньшим количеством сгенерированных вручную семян.
Вы можете использовать команду linux date
с спецификатором формата %s
, который выводит числосекунд с 01.01.1970 и перенаправить его в файл.
date +%s >! seed.txt
Затем прочитайте файл, например:
RAND_GEN : process(clk) is
variable seed1, seed2 : positive := 1;
variable re : real;
file F: TEXT;
variable L: LINE;
variable seed_RNG : boolean := false;
begin
if not seed_RNG then
file_open(F, "seed.txt", READ_MODE);
readline (F, L);
read (L, seed1); -- or seed2
file_close(F);
report "seed1 = " & integer'image(seed1);
seed_RNG := true;
end if;
if rising_edge(clk) then
uniform(seed1, seed2, re);
if (re < 0.5) then
rand_bit <= '0';
else
rand_bit <= '1';
end if;
end if;
end process;