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