MATLAB® функция, которую вы связываете с HDL- компонента, должна быть на путь поиска файлов MATLAB или находиться в текущей рабочей папке (см. MATLAB cd
функция). Чтобы проверить, доступна ли функция, используйте MATLAB which
функция. Следующий вызов для which
проверяет, является ли функция MyVhdlFunction
находится в пути поиска файлов MATLAB, например:
which MyVhdlFunction /work/incisive/MySym/MyVhdlFunction.m
Если указанная функция находится в пути поиска файлов, which
отображает полный путь к функции. Если функции нет в пути поиска файлов, which
сообщает, что файл не найден.
Чтобы добавить функцию MATLAB в путь поиска файлов MATLAB:
На вкладке Home, в разделе Environment, нажмите Set Path.
Используйте addpath
функция.
Для временного доступа смените рабочую папку MATLAB на желаемое место с cd
команда.
matlabcp
Вы вызываете matlabcp
путем выдачи команды в симуляторе HDL. См. раздел Примеры matlabcp
страница с описанием для нескольких примеров вызова matlabcp
.
Обязательно следуйте спецификациям пути для сеансов функции компонента MATLAB при вызове matlabcp
, как объяснено в Specify HDL Signal/Port and Module Path for MATLAB Component Function Cosimulation.
Для получения инструкций при выпуске matlabcp
, см. «Запуск косимуляции MATLAB-HDL».
Программное обеспечение HDL Verifier™ имеет специфические требования к указанию иерархии проекта, синтаксис которой описан в следующих разделах: один для 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
The matlabtb
команда предписывает Симулятору HDL перезвонить 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 Verifier 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}.
Верилог: Восходящее ребро - это переход от 0 к x, z, или 1, и от x или z к 1.
Падающее ребро - когда заданный сигнал испытывает падающее ребро
VHDL: падение ребра с {1 или H} до {0 или L}.
Верилог: Падающее ребро - это переход от 1 к x, z, или 0, и от x или z к 0.
Изменение состояния сигнала - Когда заданный сигнал изменяет состояние, основываясь на списке, использующем -sensitivity
аргумент в matlabtb
.
tnext
ПараметрМожно управлять коллбэк синхронизацией функции MATLAB при помощи tnext
этой функции параметр. Этот параметр передает значение времени симулятору HDL, и значение добавляется к графику симуляции для этой функции. Если функция возвращает значение null ([]), программа не добавляет в расписание новых записей.
Можно задать значение tnext
в значение типа double
или int64
. Задайте double
для выражения времени коллбэка в секундах. Для примера, чтобы запланировать коллбэк в 1 нс, задайте:
tnext = 1e-9
Задайте int64
для преобразования в целое число, кратное текущему пределу разрешения симулятора HDL. Для примера: если точность времени Симулятора HDL составляет 1 нс, чтобы запланировать коллбэк на 100 нс, задайте:
tnext=int64(100)
Примечание
The tnext
параметр представляет время от начала симуляции. Поэтому tnext
всегда должно быть больше tnow
. Если это меньше, программа не планирует коллбэк.
Для получения дополнительной информации о tnext
и прототип функции, см. Функцию MATLAB синтаксиса и Аргумента функции Определений.
Примеры планирования с tnext
. В этом первом примере каждый раз, когда Симулятор HDL вызывает функцию испытательного стенда (через HDL Verifier), 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
функция вычисляет временной интервал, в который Симулятор HDL вызывает коллбэки. Функция компонента вычисляет этот интервал при первом вызове oscfilter
и сохраняет результат в переменной fastestrate
. Переменная fastestrate
представляет период дискретизации самой быстрой скорости сверхчастоты дискретизации, поддерживаемой фильтром. Функция выводит эту скорость из базового периода дискретизации 80 нс.
Следующий оператор назначения устанавливает параметр timing tnext
. Этот параметр планирует следующий коллбэк функции компонента MATLAB относительно текущего времени симуляции (tnow
).
tnext = tnow + fastestrate;
Функция возвращает новое значение для tnext
каждый раз, когда симулятор HDL вызывает функцию.