HDL Cosimulation

Cosimulate HDL проект путем соединения Simulink с симулятором HDL

  • Библиотека:
  • HDL-верификатор/для использования с каденцией Incisive

    HDL-верификатор/для использования с Mentor Graphics ModelSim

  • HDL Cosimulation block
  • HDL Cosimulation block

Описание

Блок HDL Cosimulation косимулирует оборудование компонент путем применения входных сигналов к и считывания выхода сигналов от HDL- модели под симуляцией в Симулятор HDL. Можно использовать этот блок для моделирования исходного или приемного устройства путем конфигурирования блока только с входными или выходными портами.

Можно сконфигурировать следующие опции на блоке:

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

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

  • Отношение времени между модулями времени симуляции в Simulink® и симулятор HDL.

  • Часы с восходящим или падающим фронтом для применения к вашей модели. Можно задать период для каждого синхросигнала.

  • Команды Tcl для выполнения до и после симуляции.

Совместимость с генерацией кода Simulink

  • Этот блок участвует в генерации HDL-кода с HDL- Coder™. Кодер генерирует интерфейс к вашему вручную написанному или унаследованному HDL-коду. Он не участвует в генерации кода C с Simulink Coder™.

Порты

Порты, показанные на блоке, соответствуют сигналам от вашего HDL- проекта, работающего в Симулятор HDL. Можно добавить и удалить порты и сконфигурировать их типы данных и шаги расчета, изменив параметры блоков. На вкладке Ports отображаются HDL-сигналы, соответствующие портам. Можно добавлять, удалять и изменять порядок портов. Используйте кнопку Auto Fill, чтобы заполнить таблицу с помощью запроса информации о порте на симулятор HDL. Этот запрос возвратов имена портов и информацию от вашего HDL- проекта, работающего в Симулятор HDL. Подробное описание этой функции смотрите в разделе «Получение информации о сигнале из Симулятор HDL».

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

При импорте VHDL® сигналы от симулятора HDL, HDL Verifier™ возвращают имена сигналов во всех столицах.

Вход

расширить все

Порты в блоке соответствуют портам в проекте HDL. Добавьте или удалите порты на вкладке Ports.

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | Fixed-point

Выход

расширить все

Порты в блоке соответствуют портам в проекте HDL. Добавьте или удалите порты на вкладке Ports.

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | Fixed-point

Параметры

расширить все

Порты

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

Укажите имя пути сигнала с помощью синтаксиса имени пути симулятора HDL. Для примера, manchester.samp для резца® Симуляторы HDL. Сигнал может быть на любом уровне иерархии проекта. Порт HDL Cosimulation блока, относящийся к сигналу, помечается этим именем.

Для правил определения имен путей портов и модулей в Simulink, смотрите «Задайте HDL-сигнал/порт и пути к модулю для косимуляции».

Можно скопировать имена пути сигнала непосредственно из окна Симулятора HDL wave и вставить их в поле Full HDL Name. Используйте Path.Name просмотр и не Db::Path.Name посмотреть. После вставки имени пути сигнала в Full HDL Name, нажмите Apply, чтобы завершить операцию вставки и обновить список сигналов.

Чтобы добавить двунаправленный порт, добавьте порт в список дважды, как вход, так и выход.

Input - HDL сигналы, которые Simulink управляет. Simulink отложит значения на заданный сигнал симулятора HDL с заданной частотой дискретизации.

Примечание

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

Output - HDL-сигналы, которые считывает Simulink. Для выходных сигналов необходимо задать явный шаг расчета. Можно также задать тип данных, но ширина должна совпадать с шириной сигнала в HDL. Для получения дополнительной информации об указании типа данных смотрите параметры Data Type и Fraction Length.

Сигналы Simulink не имеют тристатического семантика, потому что нет 'Z' значение. Для взаимодействия с двунаправленными сигналами подключите к входу и включите сигналы как выходного драйвера, так и выходного сигнала входного драйвера. Этот подход оставляет фактический тристатный буфер в HDL, где функции разрешения могут обрабатывать взаимодействие с другими тристатными буферами.

Временной интервал между последовательными выборками, примененными к порту выхода.

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

В целом Simulink обрабатывает периоды дискретизации портов следующим образом:

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

  • Если вы соединяете вход порт с сигналом, который не имеет явного периода дискретизации, Simulink назначает период дискретизации, который равен наименее распространенному нескольким (LCM) из всех идентифицированных входов периодов дискретизации портов в модели.

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

Точная интерпретация шага расчета выходного порта зависит от настроек параметров Timescales блока HDL Cosimulation. Смотрите также Simulation Timescales.

Зависимости

Чтобы включить этот параметр, установите I/O Mode равным Output.

Выберите Inherit для автоматического определения типа данных. Блок проверяет, соответствует ли унаследованный размер слова размера слова, запрошенной с HDL-симулятора. Если они не совпадают, Simulink генерирует сообщение об ошибке. Например, если вы соединяете Signal Specification блок с выходом, Inherit формирует тип данных, заданный блоком Signal Specification, на порт выхода.

Если Simulink не может определить тип данных сигнала, подключенного к порту выхода, он запрашивает Симулятор HDL для типа данных порта. В качестве примера, если Симулятор HDL возвращает тип данных VHDL STD_LOGIC_VECTOR для сигнала размера N биты, тип данных ufixN принудительно подключается к выходному порту. Неявная длина дроби 0.

Можно также назначить явный тип данных с необязательными Fraction Length. Путем явного назначения типа данных можно принудительно использовать типы данных с фиксированной точкой для выходных портов блока HDL Cosimulation. Для примера для 8-битного выхода порта установите значение Sign Signed и установка значения Fraction Length 5 заставляет тип данных sfix8_En5. Вы не можете принудительно использовать ширину. Ширина всегда наследуется от симулятора HDL.

Зависимости

Чтобы включить этот параметр, установите I/O Mode равным Output.

Свойства Data Type и Fraction Length применяются только к следующим типам HDL-сигналов:

  • VHDL-сигналы любого логического типа, такие как STD_LOGIC или STD_LOGIC_VECTOR

  • Verilog® сигналы wire или reg напечатать

Обозначение знака для явного типа данных выходного порта.

Зависимости

Чтобы включить этот параметр, установите I/O Mode равным Output, и установите Data Type равным Fixedpoint.

Размер, в битах, дробной части выходного сигнала с фиксированной точкой. Для примера для 8-битного выхода порта установите значение Sign Signed и установка значения Fraction Length 5 заставляет тип данных sfix8_En5. Вы не можете форсировать ширину; ширина всегда наследуется от симулятора HDL.

Зависимости

Чтобы включить этот параметр, установите I/O Mode равным Output, и Data Type свойство к Fixedpoint.

Свойства Data Type и Fraction Length применяются только к следующим типам HDL-сигналов:

  • VHDL-сигналы любого логического типа, такие как STD_LOGIC или STD_LOGIC_VECTOR

  • Верилоговые сигналы wire или reg напечатать

Часы

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

Задайте каждый синхроимпульс как имя пути сигнала, используя синтаксис имени пути симулятора HDL. Для примера: /manchester/clk или manchester.clk.

Для получения информации и требований к спецификациям пути в Simulink, смотрите «Задайте HDL-сигнал/порт и пути к модулю для косимуляции».

Можно скопировать имена пути сигнала непосредственно из окна Симулятора HDL wave и вставить их в поле Full HDL Name. Используйте Path.Name просмотр и не Db::Path.Name посмотреть. После вставки имени пути сигнала в Full HDL Name, нажмите Apply, чтобы завершить операцию вставки и обновить список сигналов.

Выберите Rising или Falling чтобы задать часы нарастающего края или часы падающего края.

Чтобы задать явный период времени, введите шаг расчета, равное или больше двух единиц разрешения ( такта).

Если период времени не является четным целым числом, Simulink не может создать 50% коэффициент заполнения. Вместо этого программное обеспечение HDL Verifier создает падающее ребро в clockperiod/2 (округлено до ближайшего целого числа).

Временные рамки

Выберите отношение синхронизации между Simulink и Симулятором HDL вручную или автоматически. Эти параметры задают соответствие между одной секундой времени Simulink и некоторой величиной времени симулятора HDL. Такое количество времени симулятора HDL может быть выражено одним из следующих способов:

  • Отношение относительного времени (секунды Simulink соответствуют определяемому HDL-симулятором интервалу такта)

  • Абсолютная временная зависимость (секунды Simulink соответствуют абсолютному модулю времени симулятора HDL)

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

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

Если вы выбираете эту опцию, HDL Verifier вычисляет шкалу времени при запуске симуляции Simulink. Если эта опция не выбрана, щелкните Determine Timescale Now, чтобы вычислить шкалу времени сразу же, не запустив симуляцию. Также можно вручную выбрать шкалу времени. Для руководства с помощью автоматического вычисления шкалы времени смотрите Автоматическое определение временных отношений.

Этот параметр состоит из Time значения и TimeUnit значения.

Чтобы сконфигурировать относительный режим синхронизации для косимуляции:

  1. Проверьте, что Tick, параметр по умолчанию для TimeUnit, выбран. Если его нет, выберите его из списка справа.

  2. Введите коэффициент шкалы в текстовое поле Time слева. Коэффициент шкалы по умолчанию является 1.

Чтобы сконфигурировать абсолютный режим синхронизации для косимуляции:

  1. Установите TimeUnit в модуль абсолютного времени: fs (фемтосекунды), ps (пикосекунды), ns (наносекунды), us (микросекунды), ms (миллисекунды), или s (секунды).

  2. Введите коэффициент шкалы в текстовое поле Time слева. Коэффициент шкалы по умолчанию является 1.

Связь

Тип соединения между Simulink и Симулятором HDL.

  • Full Simulation: Подтвердите интерфейс и запустите симуляцию HDL.

  • Confirm Interface Only: Подключитесь к симулятору HDL и проверьте имена сигналов, размерности и типы данных, но не запускайте симуляцию HDL. Во время симуляции Simulink контакт с Симулятором HDL отсутствует.

  • No Connection: Не общайтесь с симулятором HDL. Запуск Симулятора HDL не требуется.

Когда оба приложения запускаются на одном компьютере, можно выбрать общую память или TCP-сокеты для канала связи между приложениями. Если вы не выбираете эту опцию, доступен только режим разъема TCP/IP, и список Connection method становится недоступным.

  • Socket: Simulink и симулятор HDL взаимодействуют через назначенный TCP/IP сокет. Режим разъема TCP/IP более универсален. Его можно использовать для односистемных и сетевых строений. Эта опция обеспечивает наибольшую масштабируемость. Для получения дополнительной информации о коммуникации разъемов TCP/IP см. раздел «Порты разъемов TCP/IP».

  • Shared memory: Simulink и симулятор HDL взаимодействуют через общую память. Связь с общей памятью обеспечивает оптимальную эффективность и является режимом связи по умолчанию.

Зависимости

Этот параметр показывает, когда вы выбираете HDL Simulator is running on this computer.

Этот параметр применяется, если Simulink и Симулятор HDL запускаются на разных компьютерах.

Укажите допустимый номер порта TCP-сокета или службы для вашей компьютерной системы, если вы не используете общую память. Для получения информации о выборе портов разъема TCP см. раздел Порты разъема TCP/IP.

Когда вы выбираете эту опцию, значок HDL Cosimulation блока отображает текущие настройки параметра связи. Если вы выбираете общую память, значок отображается SharedMem. Если вы выбираете коммуникацию сокетов TCP, отображается значок Socket и отображает имя хоста и номер порта в формате hostname:port.

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

Симуляция

Задает время выполнения Симулятора HDL перед началом симуляции в Simulink. Установка этого времени правильно выравнивает сигнал блока Simulink и HDL-сигнала так, чтобы они могли сравниваться и проверяться непосредственно без дополнительных задержек.

Эта настройка состоит из PreRunTime значения и PreRunTimeUnit значения.

  • PreRunTime: Любое допустимое значение времени. Значение по умолчанию 0.

  • PreRunTimeUnit: Определяет модули времени для PreRunTime.

    • Tick

    • s

    • ms

    • us

    • ns

    • ps

    • fs

Инструмент косимуляции выполняет эти команды в Симулятор HDL, перед симуляцией HDL- компонента вашей модели Simulink. Если вы вводите несколько команд в одной линии, добавьте каждую команду с точки с запятой (;), стандартного оператора конкатенации Tcl.

Например, используйте этот параметр, чтобы сгенерировать однострочную команду echo, чтобы подтвердить, что симуляция выполняется, или сложный скрипт, который выполняет обширную последовательность инициализации и запуска симуляции. Вы не можете использовать эти команды для изменения состояния симуляции.

Можно задать любую допустимую команду Tcl. Заданная команда Tcl не может включать команды, которые загружают Симулятор HDL проект или изменяют состояние симулятора. Например, вектор символов не может включать такие команды, как start, stop, или restart (для ModelSim®) или run, stop, или reset (для Incisive).

Инструмент косимуляции выполняет эти команды в Симулятор HDL, после симуляции HDL- компонента вашей модели Simulink.

Можно задать любую допустимую команду Tcl. Заданная команда Tcl не может включать команды, которые загружают Симулятор HDL проект или изменяют состояние симулятора. Например, строка не может включать такие команды, как start, stop, или restart (для ModelSim) или run, stop, или reset (для Incisive).

Примечание

После каждой симуляции ModelSim, симулятору требуется время, чтобы обновить результат покрытия. Чтобы предотвратить потенциальный конфликт между этим процессом и следующим сеансом косимуляции, добавьте короткую паузу между каждой последующей симуляцией.

Расширенные возможности

Введенный в R2008a