Как создать повторяющуюся последовательность случайных чисел между симуляторами 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 ответ

Решение

Вы не должны использовать золотые выходные файлы со случайным стимулом; Вам нужен тестовый стенд с самоконтролем. Любое изменение дизайна или тестового стенда может сделать недействительным предыдущий золотой вывод.

Другие вопросы по тегам