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

Получение базовых показателей производительности

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

Анализ производительности симуляции

В то время как cosimulation влечет за собой определенное количество издержек, иногда сама симуляция 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).

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

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

Cosimulating основанные на кадре сигналы с Simulink

Обзор к Cosimulation с основанными на кадре сигналами

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

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

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

См. “Работу с Сигналами” в документации DSP System Toolbox для получения дальнейшей информации об основанной на кадре обработке.

Используя основанную на кадре обработку

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

Использование основанных на кадре сигналов влияет только на сторону Simulink cosimulation. Поведение 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).

Основанный на кадре пример Cosimulation

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

Примечание

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

Файлы в качестве примера (в matlabroot):

  • Модель в качестве примера:

    \toolbox\edalink\extensions\modelsim\modelsimdemos\frame_filter_cosim 
  • Код VHDL для фильтра, чтобы быть cosimulated:

    \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.

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

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

Файл кода VHDL lp_fir_8k.vhd реализует простой lowpass КИХ-фильтр с частотой среза 1 500 Гц. Блок 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.

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

  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 для cosimulation:

    vsimulink lp_fir_8k
    

    ModelSim теперь создан для cosimulation.

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

    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. Выберите Simulation> Update diagram.

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

  14. Запустите ModelSim. В подсказке ModelSim ввести

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

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

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

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