Настройте компонент Cosimulation

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

Используйте MATLAB который Функция Найти Функцию Компонента

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

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

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

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

Чтобы добавить функцию MATLAB в путь поиска файлов MATLAB, откройте окно Set Path путем нажатия на File> Set Path или используйте addpath команда. В качестве альтернативы для временного доступа, можно изменить MATLAB рабочая папка в желаемое местоположение с cd команда.

Свяжите Вызовы функции Компонента С matlabcp

Вызовите MATLAB Component Function Command matlabcp

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

Обязательно следуйте за спецификациями пути для компонента MATLAB функциональные сеансы при вызове matlabcp, как объяснено в Задают Пути к Сигналу/Порту и Модулю HDL для Функции Компонента MATLAB Cosimulation.

Для инструкций в издании matlabcp команда, смотрите HDL MATLAB Запуска Cosimulation.

Задайте Пути к Сигналу/Порту и Модулю 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 модуля верхнего уровня.

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

Свяжите компонент модуля 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

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 вызывает функцию.

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