Настройка компонента косимуляции

Поместите функцию компонента в путь поиска файлов MATLAB

Используйте MATLAB, какая функция должна найти функцию компонента

MATLAB® функция, которую вы связываете с HDL- компонента, должна быть на путь поиска файлов MATLAB или находиться в текущей рабочей папке (см. MATLAB cd функция). Чтобы проверить, доступна ли функция, используйте MATLAB which функция. Следующий вызов для which проверяет, является ли функция MyVhdlFunction находится в пути поиска файлов MATLAB, например:

which MyVhdlFunction
/work/incisive/MySym/MyVhdlFunction.m

Если указанная функция находится в пути поиска файлов, which отображает полный путь к функции. Если функции нет в пути поиска файлов, which сообщает, что файл не найден.

Добавьте функцию компонента в MATLAB Пути поиска файлов

Чтобы добавить функцию MATLAB в путь поиска файлов MATLAB:

  • На вкладке Home, в разделе Environment, нажмите Set Path.

  • Используйте addpath функция.

  • Для временного доступа смените рабочую папку MATLAB на желаемое место с cd команда.

Связывание вызовов функций компонента с matlabcp

Вызов команды функции компонента MATLAB matlabcp

Вы вызываете matlabcp путем выдачи команды в симуляторе HDL. См. раздел Примеры matlabcp страница с описанием для нескольких примеров вызова matlabcp.

Обязательно следуйте спецификациям пути для сеансов функции компонента MATLAB при вызове matlabcp, как объяснено в Specify HDL Signal/Port and Module Path for MATLAB Component Function Cosimulation.

Для получения инструкций при выпуске matlabcp , см. «Запуск косимуляции MATLAB-HDL».

Задайте пути HDL-сигнала/порта и модуля для косимуляции функции компонента MATLAB

Программное обеспечение 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 модуля верхнего уровня.

 Примеры для пользователей ModelSim и Incisive

Привязка компонента модуля HDL к функции компонента MATLAB

По умолчанию программа 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 вызывает функцию.

Для просмотра документации необходимо авторизоваться на сайте