Программное обеспечение HDL Verifier™ предоставляет средство для визуализации компонентов в MATLAB® окружение. Вы делаете это, кодируя HDL- модели и функцию MATLAB, которая может делиться данными с HDL- моделями. В этой главе рассматриваются соглашения о программировании, интерфейсах и планировании для функций компонента MATLAB, которые взаимодействуют с симулятором HDL.
MATLAB component функции моделируют поведение компонентов в HDL- модели. Модуль-заглушка (обеспечивающий только определения портов) в модели HDL передает свои входные сигналы в функцию компонента MATLAB. Компонент MATLAB обрабатывает эти данные и возвращает результаты к выходам модуля-заглушки. Компонент MATLAB обычно предоставляет некоторые функциональные возможности (такие как фильтр), которые еще не реализованы в HDL-коде.
Следующий рисунок показов, как Симулятор HDL оборачивается вокруг функции компонента MATLAB и как MATLAB общается с Симулятором HDL во время сеанса моделирования компонента.
При соединении с MATLAB Симулятора HDL функционирует как клиент, а MATLAB - как сервер. Следующий рисунок показывает сценарий с несколькими клиентами, соединяющийся с сервером в порте 4449 сокета TCP/IP.
MATLAB-сервер может обслуживать несколько одновременных сеансов Симулятора HDL и HDL-модулей. Однако необходимо следовать рекомендуемым рекомендациям, чтобы помочь серверу отслеживать вводы-выводы, связанные с каждым модулем и сеансом. Сервер MATLAB, который вы начинаете с предоставленной функции hdldaemon
, ожидает запросов на подключение от образцов из Симуляторов HDL, работающих на том же или других компьютерах. Когда сервер получает запрос, он выполняет указанную функцию MATLAB, которую вы закодировали, чтобы выполнять задачи от имени модуля в вашем HDL- проекта. Параметры, которые вы задаете при запуске сервера, указывают, устанавливает ли сервер общую память или коммуникационные ссылки TCP/IP сокета.
Для получения информации о действительных Строениях машины см. Строения косимуляции.
Примечание
Соглашения о программировании, интерфейсах и планировании для функций испытательного стенда и функций компонента практически идентичны. По большей части одни и те же процедуры применяются к обоим типам функций.
Следуйте этим шагам рабочего процесса, чтобы создать функцию компонента MATLAB для косимуляции с Симулятором HDL.
Создайте HDL-модуль. Компилируйте, разрабатывайте и симулируйте модель в HDL-симуляторе. Смотрите Запись HDL-модулей для визуализации MATLAB.
Создайте функцию MATLAB компонента. См. Запись функции компонента.
Поместите функцию компонента в путь поиска файлов MATLAB. Смотрите Поместите функцию компонента на MATLAB Пути поиска файлов.
Связать HDL- образцом с функцией компонента используя matlabcp
. См. «Связывание вызовов функций компонента с matlabcp».
Добавьте опции планирования. См. раздел «Опции расписания для сеанса компонента».
Установите точки останова для интерактивной отладки HDL (необязательно).
Запустите косимуляцию с симулятора HDL. См. «Запуск косимуляции MATLAB-HDL».
Выберите имя модуля HDL для использования с функцией компонента MATLAB
Задайте режимы направления портов в HDL-модуле для использования с функциями компонента
Задайте типы данных портов в модулях HDL для использования с функциями компонента
Компилируйте и разрабатывайте проект для использования с функциями компонента
Самым базовым элементом связи в интерфейсе HDL Verifier является HDL-модуль. Интерфейс передает все данные между симулятором HDL и MATLAB в качестве данных порта. Программное обеспечение HDL Verifier работает с любым существующим HDL-модулем. Однако при кодировании модуля HDL, предназначенного для верификации MATLAB, следует учитывать его имя, типы данных, которые будут использоваться совместно между этими двумя окружениями, и режимы направления. Разделы этой главы посвящены этим темам.
Процесс кодирования HDL-модулей для визуализации MATLAB заключается в следующем:
Выберите имя модуля HDL для использования с функцией компонента MATLAB
Задайте режимы направления портов в HDL-модуле для использования с функциями компонента
Задайте типы данных портов в модулях HDL для использования с функциями компонента
Компилируйте и разрабатывайте проект для использования с функциями компонента
Хотя и не требуется, при присвоении имени HDL-модулю рассмотрите выбор имени, которое также может использоваться в качестве имени функции MATLAB. (Обычно правила именования для VHDL® или Verilog® и MATLAB совместимы.) По умолчанию программное обеспечение HDL Verifier предполагает, что HDL-модуль и его функция симуляции имеют то же имя. См. Bind Test Bench Function Calls With matlabtb.
Для получения дополнительной информации о руководствах по названию функций MATLAB, смотрите «Советы программирования MATLAB» о файлах и именах файлов в документации MATLAB.
В операторе модуля необходимо задать каждый порт с режимом направления (вход, вывод или двунаправленный). Следующая таблица определяет эти три режима.
Использовать режим VHDL... | Использовать режим Verilog... | Для портов, которые... |
---|---|---|
IN | input | Представление сигналов, которые могут управляться функцией MATLAB |
OUT | output | Представление значений сигналов, которые передаются в функцию MATLAB |
INOUT | inout | Представление двунаправленных сигналов, которые могут управляться или передавать значения в функцию MATLAB |
Типы данных портов для сущностей VHDL. В оператора сущности необходимо задать каждый порт, который планируется тестировать с MATLAB с типом данных VHDL, поддерживаемым программным обеспечением HDL Verifier. Интерфейс может преобразовывать скалярные и массивные данные следующих типов VHDL в сопоставимые типы MATLAB:
STD_LOGIC
, STD_ULOGIC
, BIT
, STD_LOGIC_VECTOR
, STD_ULOGIC_VECTOR
, и BIT_VECTOR
INTEGER
и NATURAL
REAL
TIME
Перечисляемые типы, включая пользовательские перечисляемые типы и CHARACTER
Интерфейс также поддерживает все подтипы и массивы предыдущих типов.
Примечание
Программное обеспечение HDL Verifier не поддерживает расширенные идентификаторы VHDL для следующих компонентов:
Имена портов и сигналов, используемые в косимуляции
Перечисление литералов при использовании в качестве индексов массивов имен портов и сигналов, используемых в косимуляции
Однако программное обеспечение поддерживает основные идентификаторы для VHDL.
Типы данных портов для модулей Verilog. В определении модуля необходимо определить каждый порт, который вы планируете тестировать с MATLAB с типом данных порта Verilog, который поддерживается программным обеспечением HDL Verifier. Интерфейс может преобразовывать данные следующих типов портов Verilog в сопоставимые типы MATLAB:
reg
целое число
провод
Примечание
Программное обеспечение HDL Verifier не поддерживает идентификаторы Verilog escaped для имен портов и сигналов, используемых в косимуляции. Однако он поддерживает простые идентификаторы для Verilog.
После создания или редактирования исходных файлов HDL используйте компилятор Симулятора HDL для компиляции и отладки кода.
Дополнительные примеры см. в руководствах HDL Verifier и демонстрациях. Для получения дополнительной информации об использовании HDL-компилятора смотрите документацию симулятора.
Кодирование функции MATLAB, которая должна визуализировать HDL-модуль или компонент, требует, чтобы вы следовали определенным соглашениям о кодировании. Вы также должны понять происходящие преобразования типов данных и программные преобразования типов данных для работы с данными и возврата данных в Симулятор HDL.
Чтобы кодировать функцию MATLAB, которая предназначена для проверки HDL-модуля или компонента, выполните следующие шаги:
Изучение синтаксиса функции MATLAB HDL Verifier. См. Синтаксис функции компонента.
Осмыслите, как программное обеспечение HDL Verifier преобразует данные из Симулятора HDL для использования в окружение MATLAB. См. «Поддерживаемые типы данных».
Выберите имя для функции компонента MATLAB. Смотрите Invoke MATLAB Component Function Command matlabcp.
Задайте ожидаемые параметры в линии определения функции компонента. См. «Синтаксис функции MATLAB и определения аргументов функции».
Определите типы данных портов, передаваемых в функцию. См. «Синтаксис функции MATLAB и определения аргументов функции».
Извлеките и, если применимо к симуляции, примените информацию, полученную в portinfo
структура. См. Раздел «Получение доступа к информации о портах и применение».
Преобразуйте данные для манипуляций в среде MATLAB, как применимо. См. раздел Преобразование данных HDL в MATLAB.
Преобразуйте данные, которые нужно вернуть в Симулятор HDL. Смотрите Преобразование данных для возврата в Симулятор HDL.
Для получения дополнительной информации смотрите Испытательный Стенд и Component Function Writing.
Синтаксис функции компонента MATLAB:
function [iport, tnext] = MyFunctionName(oport, tnow, portinfo)
Входные/выходные аргументы, iport
и oport
, для функции компонента MATLAB являются противоположными аргументам порта для функции испытательного стенда MATLAB. То есть, функция компонента MATLAB возвращает данные сигнала на выходы и получает данные от входов связанного модуля HDL.
Инициализируйте выходы функции в пустые значения в начале функции, как в следующем примере:
tnext = []; oport = struct();
Смотрите Синтаксис Функции MATLAB и Определения аргументов функции для объяснения каждого из аргументов функции. Для получения дополнительной информации об использовании tnext
и tnow
для планирования симуляции с matlabcp
, см. «Планирование функций компонента» Использование параметра tnext.