Функция MATLAB ®, ассоциированная с компонентом HDL, должна находиться в пути поиска MATLAB или находиться в текущей рабочей папке (см. MATLABcd функция). Для проверки доступности функции используйте MATLAB. which функция. Следующий вызов which проверяет, является ли функция MyVhdlFunction находится в пути поиска MATLAB, например:
which MyVhdlFunction /work/incisive/MySym/MyVhdlFunction.m
Если указанная функция находится в пути поиска, which отображает полный путь к функции. Если функция отсутствует в пути поиска, which сообщает, что файл не найден.
Для добавления функции MATLAB к пути поиска MATLAB:
На вкладке Главная (Home) в разделе Среда (Environment) щелкните Задать путь (Set Path).
Используйте addpath функция.
Для временного доступа измените рабочую папку MATLAB на требуемое расположение с помощью cd команда.
Определение трактов сигналов/портов HDL и модулей для косимуляции компонентной функции MATLAB
Связывание компонента модуля HDL с функцией компонента MATLAB
matlabcpВы вызываете matlabcp выдачей команды в имитаторе ЛПВП. См. раздел Примеры в matlabcp справочная страница для нескольких примеров вызова matlabcp.
При вызове обязательно следуйте указаниям пути для сеансов функций компонента MATLAB. matlabcp, как описано в разделе Определение трактов сигналов/портов HDL и модулей для косимуляции компонентной функции MATLAB.
Для получения инструкций по выпуску matlabcp см. раздел Запуск Cosimulation MATLAB-HDL.
Программное обеспечение HDL Verifier™ имеет особые требования к определению иерархии дизайна HDL, синтаксис которой описан в следующих разделах: один для Verilog ® на верхнем уровне и один для VHDL ® на верхнем уровне. Не используйте иерархию имен файлов вместо имени иерархии конструкции.
Правила, изложенные в этом разделе, применяются к спецификациям сигналов/портов и трактов модулей для сеансов косимуляции MATLAB. Другие спецификации могут работать, но программное обеспечение HDL Verifier официально не распознает и не поддерживает их.
В следующем примере:
matlabtb u_osc_filter -mfunc oscfilter
u_osc_filter является компонентом верхнего уровня. При указании подкомпонента необходимо следовать допустимым спецификациям пути модуля для сеансов косимуляции MATLAB.
Спецификации пути для сеансов связи MATLAB с верхним уровнем Verilog
Спецификация пути должна начинаться с имени модуля верхнего уровня.
Спецификация пути может включать разделители пути. «» или «/», но не может включать смешанные разделители.
Конечный модуль или сигнал должен соответствовать языку HDL модуля верхнего уровня.
В следующих примерах показаны допустимые характеристики сигнала и тракта модуля:
top.port_or_sig /top/sub/port_or_sig top top/sub top.sub1.sub2
В следующих примерах показаны недопустимые характеристики сигнала и тракта модуля:
top.sub/port_or_sig
Причина недопустимости этой спецификации: нельзя использовать смешанные разделители.
:sub:port_or_sig
:
:sub
Почему эта спецификация недействительна: При использовании разделителей VHDL вы ограничиваете совместимость с путями при перемещении между имитаторами HDL и между VHDL и Verilog.
Спецификации тракта для сеансов связи MATLAB с VHDL верхнего уровня
Спецификация пути может включать имя модуля верхнего уровня, но не обязательно включать его.
Спецификация пути может включать разделители пути. «» или «/», но не может включать смешанные разделители.
Конечный модуль или сигнал должен соответствовать языку HDL модуля верхнего уровня.
По умолчанию программное обеспечение HDL Verifier предполагает, что имя функции MATLAB совпадает с именем модуля HDL, проверяемого функцией. При создании тестового стенда или функции компонента, имя которой отличается от имени тестируемой конструкции, необходимо связать конструкцию с функцией MATLAB с помощью -mfunc аргумент для matlabtb. Этот аргумент связывает экземпляр модуля HDL с функцией MATLAB, имя которой отличается от имени экземпляра HDL.
Для получения дополнительной информации о -mfunc и для полного списка matlabtb параметры, см. matlabtb ссылка на функцию.
Для получения более подробной информации о правилах именования функций MATLAB см. «Советы по программированию MATLAB» по файлам и именам файлов в документации MATLAB.
Пример привязки вызовов тестового стенда и функций компонентов. В этом первом примере создается связь между inverter_vl компонент и функция испытательного стенда MATLAB inverter_tb путем вызова функции matlabtb с -mfunc при настройке моделирования.
matlabtb inverter_vl -mfunc inverter_tb
matlabtb команда дает команду имитатору ЛПВП перезвонить inverter_tb функция при inverter_vl выполняется в моделировании.
Во втором примере выполняется привязка модели. osc_top.u_osc_filter к функции компонента oscfilter:
matlabcp osc_top.u_osc_filter -mfunc oscfilter
Когда имитатор HDL вызывает oscfilter обратный вызов, функция знает, что должна работать с моделью osc_top.u_osc_filter.
Существует два способа планирования вызова функции MATLAB:
Использование аргументов для функции проверки HDL matlabtb или matlabcp
Внутри функции MATLAB с помощью tnext параметр
Два типа планирования не являются взаимоисключающими. Вы можете объединить matlabtb или matlabcp аргументы по времени и tnext параметр функции MATLAB для планирования обратного вызова тестового стенда или сеанса компонента.
matlabcp АргументыПо умолчанию программное обеспечение HDL Verifier вызывает тестовый стенд MATLAB или функцию компонента один раз (во время выполнения вызова matlabtb или matlabcp). Если требуется применить больше элементов управления и выполнить функцию MATLAB несколько раз, используйте опции планирования команд. С помощью этих опций можно указать, когда и как часто программное обеспечение HDL Verifier вызывает соответствующую функцию MATLAB. Если применимо, измените функцию или укажите аргументы синхронизации при запуске тестового стенда MATLAB или сеанса функции компонента с помощью matlabtb или matlabcp функция.
Можно запланировать выполнение тестового стенда или функции компонента MATLAB с использованием аргументов команды при любом из следующих условий:
Дискретные значения времени - на основе временных характеристик, которые также могут включать интервалы повторения и время остановки
Передний фронт - когда указанный сигнал испытывает передний фронт
VHDL: передний край {0 или L} в {1 или H}.
Verilog: Rising edge - переход от 0 к x, z или 1 и от x или z к 1.
Задний фронт - когда указанный сигнал испытывает задний фронт
VHDL: падающий край равен {1 или H} {0 или L}.
Verilog: Falling edge - переход от 1 к x, z или 0 и от x или z к 0.
Изменение состояния сигнала - когда указанный сигнал изменяет состояние на основе списка с использованием -sensitivity аргумент для matlabtb.
tnext ПараметрМожно управлять синхронизацией обратного вызова функции MATLAB с помощью этой функции tnext параметр. Этот параметр передает значение времени в имитатор ЛПВП, и это значение добавляется в график моделирования для этой функции. Если функция возвращает нулевое значение ([]), программа не добавляет новые записи в расписание.
Можно задать значение tnext в значение типа double или int64. Определить double для выражения времени обратного вызова в секундах. Например, чтобы запланировать обратный вызов в 1 нс, укажите:
tnext = 1e-9
Определить int64 для преобразования в целое число, кратное текущему пределу разрешения времени имитатора ЛПВП. Например: если точность времени имитатора ЛПВП равна 1 нс, для планирования обратного вызова в 100 нс укажите:
tnext=int64(100)
Примечание
tnext параметр представляет время от начала моделирования. Поэтому tnext всегда должно быть больше, чем tnow. Если это меньше, программное обеспечение не планирует обратный вызов.
Для получения дополнительной информации о tnext и прототип функции см. в разделе Синтаксис функции MATLAB и определения аргументов функции.
Примеры планирования с помощью tnext. В этом первом примере каждый раз, когда имитатор ЛПВП вызывает функцию тестового стенда (через верификатор ЛПВП), tnext планирует следующий обратный вызов функции MATLAB на 1 нс позже относительно текущего времени моделирования:
tnext = []; . . . tnext = tnow+1e-9;
Используя tnext можно динамически определять планирование обратного вызова на основе критериев, специфичных для работы тестового стенда. Например, можно решить прекратить планирование обратных вызовов, если сигнал данных имеет определенное значение:
if qsum == 17,
qsum = 0;
disp('done');
tnext = []; % suspend callbacks
testisdone = 1;
return;
endВ следующем примере показано планирование сеанса компонента с использованием tnext. В примере осциллятора oscfilter функция вычисляет интервал времени, в течение которого имитатор ЛПВП вызывает обратные вызовы. Функция компонента вычисляет этот интервал при первом вызове oscfilter и сохраняет результат в переменной fastestrate. Переменная fastestrate представляет период выборки самой быстрой скорости избыточной дискретизации, поддерживаемой фильтром. Функция извлекает эту скорость из базового периода выборки 80 нс.
Следующая инструкция назначения устанавливает параметр синхронизации tnext. Этот параметр планирует следующий обратный вызов функции компонента MATLAB относительно текущего времени моделирования (tnow).
tnext = tnow + fastestrate;
Функция возвращает новое значение для tnext каждый раз, когда имитатор ЛПВП вызывает функцию.