В Verilog существует системная функция $random, применяемая для генерации псевдослучайных данных размером до 32-х бит. Например, если в TestBench проинициализировать 2 регистра и обработать их функцией $random: reg a;
reg [31:0] b;
a = $random;
b = $random;
$monitor("a = %d | b = %d"); То результат будет похожим на: a = -152 | b = 2302104082 Т.е. функция $random возвращает новое 32-битное значение при каждом вызове в диапазоне от -(2^32 – 1) до +(2^32). Однако, такой диапазон редко когда бывает необходимым, поэтому можно указать желаемый диапазон возвращаемых значений с помощью оператора %. integer a = $random % 10; В данном примере функция возвращает диапазон значений от 0 до 10. Однако, необходимо помнить, что функция также вернет и отрицательные числа. Чтобы этого избежать, необходимо использовать функцию $unsigned. integer a = $unsigned($random) % 10; Все предыдущие примеры возвращали от 0 до какого-то значения. Чтобы начать генерацию не от нулевого значения, можно воспользо