Как создать повторяющуюся последовательность случайных чисел между симуляторами SystemVerilog?
Я сотрудничаю с SystemVerilog проектом с кем-то. Однако я привык использовать симулятор Synopsys VCS SystemVerilog, а он использовал Cadence INCISIVE irun.
Один модуль testbench использует случайные числа для генерации тестового шаблона ввода в верхний модуль проектирования. Таким образом, я разработал класс для генерации случайных чисел:
class RandData;
rand logic [3:0] randIn;
function new(int seed);
this.srandom(seed);
endfunction
endclass
Я могу создать экземпляр класса RandData с начальным значением и получить фиксированную последовательность случайных чисел в симуляциях. Однако фиксированная последовательность случайных чисел, полученная с помощью VCS, отличается от фиксированной последовательности с помощью irun, даже если в двух симуляторах используется одно и то же начальное число.
К сожалению, золотой выходной шаблон модуля верхнего дизайна зависит от тестового входного шаблона. Таким образом, если золотой выходной шаблон генерируется с входным шаблоном, генерируемым VCS, золотой выходной шаблон будет не соответствовать верхнему проектному выходу, моделируемому irun.
Таким образом, как я могу заставить VCS и симуляторы irun генерировать дублирующую последовательность случайных чисел?
1 ответ
Вы не должны использовать золотые выходные файлы со случайным стимулом; Вам нужен тестовый стенд с самоконтролем. Любое изменение дизайна или тестового стенда может сделать недействительным предыдущий золотой вывод.