Косимуляция HDL-кода с Симуляторами HDL

Генерация блоков косимуляции HDL для использования с Симуляторами HDL

Кодер поддерживает генерацию Simulink® Блоки косимуляции HDL. Можно использовать сгенерированные блоки HDL Cosimulation для косимуляции создания фильтра с помощью Simulink с Симулятором HDL. Для использования этой функции необходимо иметь лицензию HDL- Verifier™.

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

Чтобы сгенерировать блоки HDL-косимуляции:

  1. Выберите панель Test Bench в диалоговом окне Генерация HDL.

  2. Выберите опцию Cosimulation blocks.

    Когда эта опция выбрана, кодер генерирует и открывает модель Simulink, которая содержит блок HDL Cosimulation для каждого поддерживаемого Симулятора HDL.

  3. Если вы хотите сгенерировать только блоки HDL Cosimulation (не генерируя HDL- испытательного стенда код), очистите HDL test bench.

    Следующий рисунок показывает HDL test bench и Cosimulation blocks выбранные.

  4. В диалоговом окне «Генерация HDL» нажмите кнопку Generate, чтобы сгенерировать HDL и испытательный стенд.

  5. В сложение к обычным файлам кода кодер генерирует модель Simulink, содержащую блок HDL Cosimulation для каждого Симулятора HDL, поддерживаемого HDL Verifier.

  6. Сгенерированная модель без названия и существует только в памяти. Обязательно сохраните его в целевой папке, если хотите сохранить модель и блоки для использования в будущих сеансах.

Для настройки параметров блоков HDL Cosimulation, таких как время, задержка и типы данных, смотрите Define HDL Cosimulation Block Interface (HDL Verifier).

Альтернатива командной строки: используйте generatehdl функция со свойством GenerateCosimBlock для генерации блоков HDL-косимуляции.

Генерация модели Simulink для косимуляции с Симулятором HDL

Примечание

Для использования этой функции необходимо иметь лицензию HDL Verifier.

Кодер генерирует модель Simulink, которая запускает симуляцию Simulink вашего создания фильтра, а также косимуляцию вашего проекта с Симулятором HDL. Модель сравнивает выходы фильтра Simulink с результатами симуляции HDL.

Сгенерированная модель включает в себя:

  • Поведенческая модель создания фильтра, реализованная в подсистеме Simulink. Подсистема реализует создание фильтра, используя основные блоки, такие как сумматоры и задержки.

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

    • Менторская графика® ModelSim®

    • Каденция Incisive®

  • Тестовые воздействия, рассчитанные из указанного вами стимула испытательного стенда. Кодер сохраняет тестовые данные в переменном рабочем пространстве модели inputdata. Блок From Workspace направляет тестовые данные в подсистему фильтра и блоки HDL Cosimulation.

  • Блок Scope, который позволяет вам наблюдать и сравнивать сигнал тестового воздействия с выходами блока Filter и HDL-косимуляции. Область возможностей также показывает различие (ошибку) между этими двумя выходами.

Генерация модели

Генерация модели косимуляции требует зарегистрированных входных и/или выходов (см. Ограничения). Прежде чем генерировать модель, убедитесь, что ваша модель соответствует этому требованию, следующим образом:

  1. Выберите панель Global Settings диалогового окна Генерация HDL.

  2. На панели Global Settings перейдите на вкладку Ports. Появляются опции порта.

  3. Выберите обе из следующих опций:

    • Add input register

    • Add output register

Чтобы сгенерировать модель:

  1. В диалоговом окне Generate HDL сконфигурируйте другие параметры генерации кода и испытательного стенда в соответствии с требованиями вашего проекта.

  2. Выберите панель Test bench диалогового окна Генерация HDL.

  3. Выберите опцию Cosimulation model for use with:. Выбор этой опции включает соседнее раскрывающееся меню, где можно выбрать Mentor Graphics ModelSim или Cadence Incisive.

  4. Используя раскрывающееся меню, выберите тип блока HDL Cosimulation, который необходимо использовать в сгенерированной модели. Выберите один из Mentor Graphics ModelSim (по умолчанию) или Cadence Incisive.

    На следующем рисунке тип модели косимуляции Mentor Graphics ModelSim, и сигнал стимула White noise response.

  5. В диалоговом окне «Генерация HDL» нажмите кнопку Generate, чтобы сгенерировать HDL и испытательный стенд.

    В дополнение к обычным файлам кода кодер генерирует и открывает модель Simulink. Следующий рисунок показывает модель, сгенерированную из строения кодера, показанной на предыдущем шаге.

  6. Сгенерированная модель без названия и существует только в памяти. Обязательно сохраните его в целевой папке, если хотите сохранить модель и блоки для использования в будущих сеансах.

Для настройки параметров блоков HDL Cosimulation, таких как время, задержка и типы данных, смотрите Define HDL Cosimulation Block Interface (HDL Verifier).

Детали сгенерированной модели

Сгенерированная модель содержит следующие блоки:

  • Test Stimulus: Это From Workspace блока маршруты тестовых данных в переменном рабочем пространстве модели inputdata в подсистему фильтра и блоки HDL Cosimulation.

  • Filter: Эта подсистема реализует поведенческую модель создания фильтра.

  • HDL Cosimulation: Этот блок косимулирует сгенерированный HDL-код. Таблица HDL Параметры блока косимуляции описывает, как кодер конфигурирует параметры блоков косимуляции.

  • Reset Delay: Команды Tcl, заданные в HDL Cosimulation блок применить сигнал сброса. Сброс высокий на 0 нс и низкий на 22 нс (перед третьим поднимающимся ребром синхроимпульса). Симуляция Simulink начинает подавать вход с 0, 10, 20 нс. Reset Delay блок добавляет задержку, так что первая выборка доступна для симуляции RTL, когда она готова после применения сброса.

  • HDL Latency: Эта задержка представляет различие между задержкой симуляции RTL и поведенческим блоком Simulink.

  • Error: Вычисляет различие между выходами Filter блок и HDL Cosimulation блок.

  • Abs: Абсолютное значение расчета ошибки.

  • Error margin:: Индикатор сравнения абсолютного значения ошибки с испытательным стендом значением запаса ошибки (см. «Установка запаса ошибки для оптимизированного кода фильтра»).

  • Scope: Отображает входной сигнал, выходы от Filter блок и HDL Cosimulation блоки и различие (если она существует) между ними.

  • Start HDL Simulator кнопка: Запускает программное обеспечение для косимуляции HDL.

Настройки блоков косимуляции HDL

ПанельНастройки
Ports

Имена портов: те же, что и имена в сгенерированном коде для фильтра.

Типы данных ввода/вывода: Inherit

Входной шаг расчета: Inherit

Выходной шаг расчета: Тот же, что и Simulink фиксированный размер шага.

Clocks

Имя порта синхроимпорта: то же, что и имя в сгенерированном коде для фильтра.

Активное ребро синхроимпульса: Rising

Период: тот же, что и шаг расчета Simulink.

Timescales1 секунда в Simulink соответствует 1 такту в симуляторе HDL
Connection

Режим подключения: Full Simulation

Метод соединения: Shared memory

Tcl (Команды предварительной симуляции)
force /Hlp/clk_enable 1;
force /Hlp/reset 1 0 ns, 0 22 ns;
puts -----------------------------------------
puts "Running Simulink Cosimulation block.";
puts [clock format [clock seconds]]
Tcl (Постсимуляции)
force /Hlp/reset 1
puts [clock format [clock seconds]]

Сгенерированные настройки модели.  Сгенерированная модель имеет следующие настройки без ограничений:

  • Solver: Discrete (no continuous states).

  • Type решателя: Fixed-step.

  • Stop Time: Ts * StimLen, где Ts - это шаг расчета и StimLen Simulink - длина стимула.

  • Sample Time Colors: включено

  • Port Data Types: включено

  • Hardware Implementation: ASIC/FPGA

Ограничения

  • Косимуляция, которая запускается, не сталкиваясь с ошибками, требует, чтобы выходы из сгенерированного HDL-кода были синхронными с часами. Перед генерацией кода убедитесь, что выбраны обе из следующих опций:

    • Add input register

    • Add output register

    Если вы не выбираете одну из этих опций, кодер завершает генерацию модели с ошибкой. Однако генерация испытательного стенда кода завершена.

  • Кодер не поддерживает генерацию модели косимуляции, когда целевой язык является Verilog, и генерируются данные типа double.

Альтернатива командной строки

Используйте generatehdl function, передающая одно из следующих значений для свойства GenerateCosimModel.

  • generatehdl(filtSysObj,'InputDataType',numerictype(1,16,15), ...
        'GenerateCosimModel','Incisive');
  • generatehdl(filtSysObj,'InputDataType',numerictype(1,16,15), ...
        'GenerateCosimModel','ModelSim');