Советы по улучшению скорости симуляции

Получение базовых чисел эффективности

Вы можете базировать номера эффективности, определяя время выполнения HDL и Simulink® моделировать отдельно и складывать их вместе; Вы, возможно, не ожидаете лучшей эффективности. Убедитесь, что отдельные симуляции являются репрезентативными: запуск симулятора только HDL с нереалистичным входным стимулом может быть намного быстрее, чем при предоставлении реалистичного входного стимула.

Анализ эффективности симуляции

В то время как косимуляция влечет за собой определенное количество накладных расходов, иногда сам HDL- симуляцию также эффективности замедляет. Задавайте себе следующие вопросы при попытке анализа и повышения эффективности:

ФакторПредложения по улучшению скорости
Вы используете NFS или другие удаленные файловые системы?Насколько быстро работает файл система? Рассмотрите использование другого типа или ожидайте, что используемая файловая система повлияет на эффективность.
Вы используете отдельные машины для Simulink и симулятора HDL?Насколько быстро работает сеть? Подождите, пока сеть станет тише, или обратитесь к системному администратору за советом по улучшению подключения.
Вы используете ту же машину для Simulink и симулятора HDL?
  • Вы используете общие трубопроводы вместо розеток? Общая память работает быстрее.

  • Являются ли процессы Simulink и HDL достаточно большими, чтобы вызвать обмен на диск? Рассмотрите добавление большего количества памяти; в противном случае обратите внимание, что вы запускаете огромный процесс и ожидаете, что он повлияет на эффективность.

Вы используете optimal (то есть как можно большие) скорости выборки Simulink на блоке HDL Cosimulation?

Для примера, если вы задаете частоту дискретизации выхода равную 1, но используете только каждую 10-ю выборку, можно сделать ставку 10 и уменьшить трафик между Simulink и Симулятором HDL.

Другой пример, если вы помещаете очень быстрый синхроимпульс как вход в блок HDL Cosimulation, но ни один из других входов не нуждается в такой быстрой скорости. В этом случае вы должны сгенерировать часы в HDL или (Incisive® и ModelSim® только пользователи) через панель Clocks или Simulation в блоке HDL Cosimulation.

Пользователи ModelSim: Вы компилируете/разрабатываете HDL с помощью vopt поток?Использование -voptargs=+acc оптимизировать ваш проект для максимальной (HDL) скорости симулятора (только для пользователей ModelSim).

Вы используете режим Accelerator™ Simulink?

Режим ускорения может ускорить выполнение вашей модели. См. «Ускорение моделей» в Руководстве пользователя Simulink.
Если у вас есть программное обеспечение Communications Toolbox™, вы рассматривали использование сигналов Framed?Кадровые сигналы сокращают количество взаимодействий Simulink/HDL.

Косимуляция основанных на кадрах сигналов с Simulink

Обзор косимуляции с основанными на кадрах сигналами

Основанная на кадрах обработка может улучшить вычислительное время ваших моделей Simulink, потому что несколько выборок могут быть обработаны сразу. Использование основанных на кадрах сигналов также позволяет более реалистично моделировать поведение систем, основанных на кадрах. Блок HDL Simulator поддерживает обработку одноканальных сигналов на основе кадров.

frame данных является набором последовательных выборок из одного канала или нескольких каналов. Одна система координат одноканального сигнала представлена M-by-1 вектору-столбцу. Сигнал frame based, если он распространяется через модель по одной системе координат за раз.

Для обработки на основе фреймов требуется программное обеспечение DSP System Toolbox™. Исходные блоки из библиотеки Sources позволяют вам задать сигнал на основе фрейма путем установки Samples per frame параметров блоков. Большинство других блоков обработки сигналов сохраняют состояние системы координат входного сигнала. Можно использовать блок Buffer, чтобы буферизировать последовательность выборок в системы координат.

Для получения подробной информации об обработке кадров см. раздел «Работа с сигналами» в документации DSP System Toolbox.

Использование обработки на основе фрейма

Вам не нужно конфигурировать HDL Simulator блок каким-либо специальным способом для обработки на основе фрейма. Чтобы использовать обработку на основе фрейма в косимуляции, соедините один или несколько одноканальных сигналов на основе фрейма с одним или несколькими входными портами блока HDL Simulator. Все такие сигналы должны удовлетворять требованиям, описанным в «Требования к обработке на основе фреймов» и «Ограничения». Блок HDL Simulator конфигурирует любые выходы для операции на основе фрейма при подходящем формате кадра.

Использование основанных на кадрах сигналов влияет только на сторону Simulink косимуляции. Поведение HDL-кода под симуляцией в Симулятор HDL никак не меняется. Simulink принимает, что обработка Симулятора HDL основана на выборке. Simulink собирает выборки, полученные из Симулятора HDL, в системы координат по мере необходимости. И наоборот, Simulink передает выходы данные в Симулятор HDL систем координат, которые распаковываются и обрабатываются Симулятором HDL одной выборкой за раз.

Требования и ограничения к обработке на основе фреймов

При соединении основанных на кадрах сигналов с блоком HDL Simulator соблюдайте следующие ограничения и требования:

  • Соединение сигналов, основанных на смешанных кадрах и основанных на дискретизации, с одним и тем же блоком HDL Simulator не поддерживается.

  • К блоку HDL Simulator могут быть подключены только одноканальные сигналы, основанные на кадрах. Использование многоканальных (матричных) сигналов на основе фрейма не поддерживается в этом релизе.

  • Все сигналы на основе фрейма, подключенные к блоку HDL Simulator, должны иметь одинаковый формат кадра.

Основанная на кадрах обработка в модели Simulink прозрачна для операции HDL-модели, находящейся под симуляцией в Симуляторе HDL. Модель HDL считается основанной на выборке. Следующее ограничение также применяется к HDL- модели, находящемуся под симуляцией в Симуляторе HDL:

Настройка VHDL® сигналы как скалярные значения, а не векторы или массивы (за исключением битовых векторов. VHDL и Verilog® битовые векторы преобразуются в подходящий тип скаляра данных с фиксированной точкой блоком HDL Cosimulation).

Пример косимуляции на основе кадров

Этот пример показывает использование блока HDL Simulator для косимуляции реализации VHDL простого lowpass. В примере вы сравните эффективность симуляции с помощью основанных на кадре и основанных на выборке сигналов.

Примечание

Это руководство характерно для пользователей ModelSim; однако большая часть процесса будет тем же самым для пользователей Incisive.

Примерами файлов являются (в matlabroot):

  • Пример модели:

    \toolbox\edalink\extensions\modelsim\modelsimdemos\frame_filter_cosim 
  • VHDL код для фильтра, который будет косимулирован:

    \toolbox\edalink\extensions\modelsim\modelsimdemos\VHDL\frame_demos\lp_fir_8k.vhd

    Фильтр был разработан с помощью Filter Designer, и код был сгенерирован Filter Design HDL Coder™.

В примере используется файл данных matlabroot\toolbox\signal\signal\mtlb.mat как входной сигнал. Этот файл содержит речевой сигнал. Эти выборочные данные относятся к типу данных double, дискретизированный со скоростью 8 кГц.

Следующий рисунок показывает frame_filter_cosim модель.

The Audio Source Signal From Workspace блок обеспечивает входной сигнал от переменной рабочей области mtlb. Блок сконфигурирован для частоты дискретизации 8 кГц с форматом кадра 80, как показано на этом рисунке.

Скорость дискретизации и формат кадра входного сигнала распространяются по всей модели.

Файл кода VHDL lp_fir_8k.vhd реализует простую lowpass конечную импульсную характеристику фильтр с частотой отключения 1500 Гц. Блок HDL Simulator моделирует этот HDL-модуль. Порты блоков HDL Simulator и синхросигнал сконфигурированы так, чтобы соответствовать соответствующим сигналам на сущность VHDL.

Чтобы симуляция ModelSim выполнялась, как мы хотим, clk_enable сигнал lp_fir_8k сущность должен быть принудительно высоким. Сигнал форсируется командой предварительной симуляции, переданной блоком HDL Simulator. Команда была введена в Simulation панели блока HDL Simulator, как показано на следующем рисунке (пример показан для использования с ModelSim).

Блок HDL Simulator возвращает выход в переменной рабочей области audiobuff1 через Filtered Signal To Workspace блок.

Чтобы запустить косимуляцию, выполните следующие шаги:

  1. Запуск MATLAB® и сделать его своим активным окном.

  2. Настройте и измените рабочую папку с возможностью записи, которая находится вне контекста установочной папки MATLAB.

  3. Добавьте папку с примером в путь MATLAB:

    matlabroot\toolbox\edalink\extensions\modelsim\modelsimdemos\frame_cosim
  4. Скопируйте файл VHDL lp_fir_8k.vhd в рабочую папку.

  5. Откройте пример модели.

    open frame_filter_cosim.mdl
    
  6. Загрузите исходный речевой сигнал, который будет фильтроваться, в рабочее пространство MATLAB.

     load mtlb
    

    Если у вас есть совместимая звуковая карта, можно воспроизвести сигнал источника, набрав следующие команды в командной строке MATLAB:

    a = audioplayer(mtlb,8000);
    play(a);
  7. Запустите ModelSim, набрав следующую команду в командной строке MATLAB:

    vsim

    Теперь окно ModelSim должно быть активным. Если нет, начинайте.

  8. В приглашении ModelSim создайте библиотеку проекта и скомпилируйте код VHDL-фильтра из исходного файла lp_fir_8k.vhd, путем ввода следующих команд:

    vlib work
    vmap work work
    vcom lp_fir_8k.vhd
    
  9. Моделируемый фильтр lowpass определяется как сущность lp_fir_8k. В приглашении ModelSim загрузите экземпляр сущности lp_fir_8k для косимуляции:

    vsimulink lp_fir_8k
    

    Теперь ModelSim настроен для косимуляции.

  10. Запустите MATLAB. Запустите симуляцию и измерьте прошедшее время следующим образом:

    t = clock; sim(gcs); etime(clock,t)
    
    ans =
    
        2.7190

    Время в этом фрагменте кода типично для запуска этой модели при Stop time симуляции 1 секунду и формате кадра 80 выборок. Тайминги зависят от системы и будут незначительно варьироваться от одного запуска симуляции до следующего.

    Обратите внимание на полученное вами время. Для следующего прогона симуляции вы измените модель на основанную на выборке операцию и получите сравнительное время.

  11. MATLAB сохраняет отфильтрованный аудиосигнал, возвращенный из ModelSim, в переменной рабочей области audiobuff1. Если у вас есть совместимая звуковая карта, можно воспроизвести отфильтрованный сигнал, чтобы услышать эффект lowpass. Воспроизведение сигнала осуществляется путем ввода следующих команд в командной строке MATLAB:

    b = audioplayer(audiobuff1,8000);
    play(b);
  12. Откройте диалоговое окно параметров блоков Audio Source Signal From Workspace блокируйте и установите свойство Samples per frame равным 1, как показано на этом рисунке.

  13. Закройте диалоговое окно и выберите окно Simulink. На вкладке Modeling, в разделе Compile, нажмите Update Model.

    Теперь сигнал источника (и все сигналы, наследующие от него) является скаляром.

  14. Запустите ModelSim. В приглашении ModelSim введите

    restart
    
  15. Запустите MATLAB. Запустите симуляцию и измерьте прошедшее время следующим образом:

    t = clock; sim(gcs); etime(clock,t)
    
    ans =
    
        3.8440

    Заметьте, что прошедшее время значительно увеличилось с основанным на дискретизации входным сигналом. Время в этом фрагменте кода типично для выборочного запуска этой модели при Stop time симуляции 1 секунду. Тайминги зависят от системы и будут незначительно варьироваться от одного запуска симуляции до следующего.

  16. Закройте симуляцию упорядоченным способом. В ModelSim остановите симуляцию, выбрав Simulate > End Simulation и выйдя из ModelSim. Затем закройте окно модели Simulink.

Для просмотра документации необходимо авторизоваться на сайте