exponenta event banner

Проверка конструкции ЛПВП с помощью испытательного стенда SystemVerilog DPI

В этом примере показано, как использовать тестовый стенд SystemVerilog DPI для проверки кода HDL, где требуется большой набор данных.

В некоторых приложениях для проверки кода HDL, генерируемого Coder™ HDL, для вашего алгоритма требуется моделирование большого количества выборок. Например, эти приложения требуют большого количества выборок для проверки алгоритма:

а) Расчет радиолокационных астрономических частотных каналов с использованием набора многофазных фильтров.

b) Получение частоты битовых ошибок (BER) от декодера Витерби в системе связи.

c) Алгоритмы обработки потокового пиксельного видео на видео высокого разрешения.

Создание испытательного стенда ЛПВП для проверки такой конструкции занимает много времени, поскольку кодер должен моделировать модель в Simulink для сбора данных испытательного стенда.

Более быстрой альтернативой испытательного стенда является испытательный стенд HDL Verifier™ SystemVerilog DPI. Тестовый стенд SystemVerilog DPI не требует моделирования Simulink, поэтому для больших наборов данных он генерирует тестовый стенд за меньшее время, чем тестовый стенд HDL.

Тестовый стенд HDL Verifier™ SystemVerilog DPI интегрируется с Simulink Coder™ для экспорта системы Simulink в виде сгенерированного кода C внутри компонента SystemVerilog с интерфейсом прямого программирования (DPI). В компоненте DPI-C стимулы генерируются и применяются к подсистеме C, а также применяются к сгенерированному коду HDL для системы Simulink. Испытательный стенд сравнивает выходные данные моделирования ЛПВП с выходными данными компонента DPI-C для проверки конструкции ЛПВП.

Банк полифазных фильтров

Набор полифазных фильтров является широко используемым методом снижения неточности в БПФ из-за утечки и потерь гребешков. Набор многофазных фильтров обеспечивает более плоский отклик по сравнению с нормальным ДПФ путем значительного подавления внеполосных сигналов.

Модель представляет собой банк полифазных фильтров, который состоит из фильтра и БПФ, который обрабатывает 16 выборок одновременно. Дополнительные сведения о банке многофазных фильтров см. в разделе Высокопроизводительный канализатор для FPGA.

modelname = 'hdlcoder_DPIC_testbench';
open_system(modelname);

Настройка модели

Обратный вызов InitFcn (Свойства модели > Обратные вызовы > InitFcn) настраивает модель. В этом примере используется 512-точечный БПФ с фильтром с четырьмя отводами для каждого диапазона. DSP. Объект каналообразователя используется для формирования коэффициентов.

Алгоритм требует 512 фильтров (по одному фильтру для каждого диапазона). Для векторного ввода 16 выборок реализация фильтра совместно использует 16 фильтров 32 раза. Входные данные состоят из двух синусоидальных волн, 200KHz и 250 кГц.

Создание кода HDL, тестового стенда HDL и тестового стенда SystemVerilog DPI

Используйте временный каталог для созданных файлов:

workingdir = tempname;

Проверьте совместимость создания кода HDL в подсистеме PolyphaseFilterBank:

checkhdl('hdlcoder_DPIC_testbench/PolyPhaseFilterBank','TargetDirectory',workingdir);

Для создания кода HDL выполните следующую команду:

makehdl('hdlcoder_DPIC_testbench/PolyPhaseFilterBank','TargetDirectory',workingdir);

Для создания стенда выполните следующую команду:

makehdltb('hdlcoder_DPIC_testbench/PolyPhaseFilterBank','TargetDirectory',workingdir);

Это приведет к созданию тестового стенда HDL путем моделирования модели в Simulink и последующего сбора данных тестового стенда.

Выполните следующую команду для создания тестового стенда SystemVerilog DPI:

HDLSimulator = 'ModelSim'; % Supported Simulator Options = 'ModelSim', 'Incisive', 'VCS', 'Vivado'
makehdltb('hdlcoder_DPIC_testbench/PolyPhaseFilterBank','TargetDirectory',workingdir, 'GenerateSVDPITestBench', HDLSimulator, 'GenerateHDLTestBench', 'Off');

Эта команда создает тестовый стенд SystemVerilog без выполнения моделирования Simulink. Вместо моделирования код экспортирует систему Simulink как сгенерированный код C внутри компонента SystemVerilog. Испытательный стенд проверяет выходные данные, сравнивая их с выходными данными конструкции ЛПВП. Функция makehdltb также генерирует специфичные для симулятора сценарии для компиляции и моделирования.

Тестовый стенд SystemVerilog DPI может использоваться для проверки конструкций HDL обоих целевых языков - VHDL и Verilog.

Кроме того, можно задать параметры испытательного стенда SystemVerilog DPI на панели «Создание кода HDL» > «Испытательный стенд» в окне «Параметры конфигурации».

Созданные артефакты тестового стенда SystemVerilog DPI

При запросе тестового стенда SystemVerilog DPI кодер генерирует следующие артефакты:

a.) PolyPhaseFilterBank_dpi_tb.sv - тестовый стенд SystemVerilog, проверяющий код HDL.

б.) PolyPhaseFilterBank_dpi_tb.do - это макро-файл, который Mentor Graphics ModelSim ® использует для компиляции кода HDL и запуска моделирования тестового стенда.

На основе выбранного симулятора кодер генерирует другой файл для компиляции и моделирования тестового стенда. Например, если выбран параметр «Incisive», кодер генерирует «PolyPhaseFilterBank _ dpi _ tb.sh» для компиляции и моделирования на Cadence Incisive ®.

(Необязательно) Создание отчета о покрытии кода HDL и базы данных

Для создания отчета о покрытии кода HDL и базы данных с помощью имитатора HDL выполните одно из следующих действий:

a.) На панели «Создание кода HDL > Испытательный стенд» установите флажок «Покрытие кода HDL».

б.) При вызове makehdltb установите значение HDLCodeCoverage на on. Например:

makehdltb('hdlcoder_DPIC_testbench/PolyPhaseFilterBank','TargetDirectory',workingdir, 'GenerateSVDPITestBench', HDLSimulator, 'GenerateHDLTestBench', 'Off', 'HDLCodeCoverage', 'On');

Артефакты покрытия кода HDL генерируются в исходном каталоге после моделирования тестового стенда.

Сравнение времени генерации испытательного стенда HDL и испытательного стенда SystemVerilog DPI

Время моделирования модели устанавливается в режиме обратного вызова перед загрузкой (Свойства модели > Обратные вызовы > PreLoadFcn)

simTime = 1000;

Частота дискретизации составляет 2e + 6 Гц, что означает, что при моделировании для генерации испытательного стенда ЛВП собираются 2e + 9 выборки.

Для некоторых применений требуется больше выборок для получения правильной частоты из полифазного фильтра. Увеличение требуемого simTime также увеличило бы время, необходимое для создания стенда для испытаний ЛПВП.

Решением для таких приложений является использование испытательного стенда SystemVerilog DPI. Время генерации для тестового стенда остается прежним независимо от того, сколько образцов требуется в тестовом сценарии.

Можно увеличить время моделирования, изменив переменную simTime. Например, для создания испытательного стенда ЛПВП для 2e + 12 образцов установите:

simTime = 1000000;

В таблице показано сравнение времени, взятого (в секундах) для формирования стенда для испытаний ЛПВП, и стенда для испытаний SystemVerilog DPI для увеличения количества образцов (от 2e + 9 до 2e + 15):

columns = {'NumberOfSamples';'GenerationTimeHDLTestBench';'GenerationTimeSystemVerilogDPITestbench'};
numSamples = [2e9;2e10;2e11;2e12;2e13;2e14;2e15];
HDLTBtime= [10;12;59;504;4994;52200;505506];
DPICTBtime=[47;47;47;47;47;47;47];
CompareTestBenchTimes = table(numSamples,HDLTBtime,DPICTBtime,'VariableNames',columns);
disp(CompareTestBenchTimes);
    NumberOfSamples    GenerationTimeHDLTestBench    GenerationTimeSystemVerilogDPITestbench
    _______________    __________________________    _______________________________________

         2e+09                         10                              47                   
         2e+10                         12                              47                   
         2e+11                         59                              47                   
         2e+12                        504                              47                   
         2e+13                       4994                              47                   
         2e+14                      52200                              47                   
         2e+15                 5.0551e+05                              47                   

Логарифмический график времени генерации для обоих типов испытательного стенда по отношению к количеству выборок показывает, что, хотя испытательный стенд ЛПВП требует больше времени генерации с увеличением числа выборок, время генерации для испытательного стенда SystemVerilog DPI остается постоянным независимо от количества выборок.

loglog(numSamples,HDLTBtime,'b-o', numSamples,DPICTBtime, 'r-o' );
xlim([2e09 2e15]);
legend('HDL Test Bench','SystemVerilog DPI Test Bench','Location','northwest');
xlabel('Number Of Samples');
ylabel('Generation time (in seconds)');
close_system(modelname,0);

Заключение

В то время как испытательная скамья HDL очень эффективна для небольшого количества образцов, если Ваш испытательный сценарий требует большого количества образцов, испытательная скамья точек на дюйм HDL Verifier™ SystemVerilog предоставляет более быстрому испытательному поколению скамьи.