exponenta event banner

matlabcp

Связать функцию компонента MATLAB с созданным проектом HDL

Синтаксис

matlabcp <instance>
[<time-specs>]
[-socket <tcp-spec>]
[-rising <port>[,<port>...]]
[-falling <port> [,<port>,...]] 
[-sensitivity <port>[,<port>,...]]
[-mfunc <name>]
[-use_instance_obj]
[-argument]

Описание

matlabcp имеет следующие характеристики:

  • Запускает клиентский компонент имитатора HDL программного обеспечения HDL Verifier™.

  • Связывает указанный экземпляр конструкции HDL, созданной в имитаторе HDL, с функцией MATLAB ®.

  • Создает процесс, который планирует вызовы указанной функции MATLAB.

  • Отменяет все ожидающие события, запланированные предыдущим matlabcp , которая указывала тот же экземпляр. Например, при выполнении команды matlabcp например, foo, все ранее запланированные события, инициированные matlabcp на foo отменены.

Эта команда выдается в имитаторе ЛПВП.

Функции компонента MATLAB моделируют поведение модулей в модели HDL. Модуль-заглушка (предоставляющий только определения портов) в модели HDL передает свои входные сигналы в функцию компонента MATLAB. Компонент MATLAB обрабатывает эти данные и возвращает результаты на выходы модуля-заглушки. Компонент MATLAB обычно обеспечивает некоторые функциональные возможности (например, фильтр), которые еще не реализованы в коде HDL. См. раздел Создание функции компонента MATLAB.

Примечания

Режим связи, указанный для matlabcp должен соответствовать режиму связи, указанному для hdldaemon при установлении соединения с сервером.

Для подключения сокетов укажите номер порта, выбранный для hdldaemon при выдаче запроса на ссылку с помощью matlabcp в имитаторе ЛПВП.

Аргументы

<instance>

Задает экземпляр конструкции HDL, связанный с функцией MATLAB. По умолчанию matlabcp связывает экземпляр с функцией MATLAB, имя которой совпадает с именем экземпляра. Например, если экземпляр myfirfilter, matlabcp связывает экземпляр с функцией MATLAB myfirfilter (обратите внимание, что имена иерархий игнорируются; например, если имя экземпляра top.myfirfilter, matlabcp будет связывать только myfirfilter с функцией MATLAB). Кроме того, можно указать другую функцию MATLAB с помощью -mfunc.

Примечание

Не указывайте экземпляр модуля HDL, который уже был связан с функцией MATLAB (через matlabcp или matlabtb). В этом случае новая связь перезаписывает существующую.

<time-specs>

Задает комбинацию временных спецификаций, состоящую из любого или всех следующих элементов:

<timen>,...

Задает одно или несколько дискретных значений времени, при которых имитатор HDL вызывает указанную функцию MATLAB. Каждое значение времени соответствует текущему времени моделирования. Даже если время не указано, имитатор HDL вызывает функцию MATLAB один раз в начале моделирования. Разделите несколько временных значений пробелом.

Например:

matlabtb vlogtestbench_top 10 ns, 10 ms, 10 sec

Функция MATLAB выполняется, когда время равно 0, а затем 10 наносекунд, 10 миллисекунд и 10 секунд от нулевого времени.

Примечание

Для параметров на основе времени можно указать любые стандартные единицы времени (ns, usи так далее). Если единицы измерения не указаны, команда обрабатывает значение времени как значение засечек моделирования HDL.

-repeat <time>Указывает, что имитатор HDL вызывает функцию MATLAB повторно на основе указанного <timen>,... шаблон. Значения времени относятся к значению tnow в то время как имитатор ЛПВП сначала вызывает функцию MATLAB.
-cancel <time>

Указывает время прекращения выполнения указанной функции MATLAB. Значение времени относительно значения tnow в то время как имитатор ЛПВП сначала вызывает функцию MATLAB. Если время отмены не указано, приложение вызывает функцию MATLAB до завершения моделирования, выхода из сеанса или выдачи nomatlabtb звоните.

Примечание

-cancel работает только с аргументами < time-specs >. Это не влияет ни на один из других аргументов планирования дляmatlabcp.

Примечание

Размещение временных спецификаций после matlabcp экземпляр и перед любыми дополнительными аргументами команды; в противном случае временные характеристики игнорируются.

Все временные спецификации для matlabcp функции отображаются в виде числа и, при необходимости, единицы времени:

  • fs (фемтосекунды)

  • ps (пикосекунды)

  • ns (наносекунды)

  • us (микросекунды)

  • мс (миллисекунды)

  • сек (секунды)

  • без единиц (галочка)

-socket <tcp_spec>

Указывает, что средство проверки HDL использует сокеты TCP/IP для обмена данными между имитатором HDL и MATLAB. Общая память является режимом связи по умолчанию и вступает в силу, если не указать -socket <tcp_spec> в командной строке. Режим связи, указанный с помощью matlabcp команда должна соответствовать режиму связи, выданному с помощью hdldaemon команда.

-rising <signal>[, <signal>...]

Указывает, что приложение вызывает указанную функцию MATLAB на переднем крае (переход от '0' кому '1') любого из указанных сигналов. Определить -rising с именами трактов одного или нескольких сигналов, определенных как логический тип (STD_LOGIC, BIT, X01и так далее).

Для определения перехода сигнала в:

  • VHDL ®: Нарастающее ребро: {0 или L} в {1 или H}.

  • Verilog ®: Rising edge - это переход от 0 к x, z или 1 и от x или z к 1.

Примечание

При указании сигналов с помощью -rising, -falling, и -sensitivity укажите их в формате полного пути. Если полное имя пути не указано, команда применяет правила имитатора HDL для разрешения спецификаций сигнала.

-falling <signal>[, <signal>...]

Указывает, что приложение вызывает указанную функцию MATLAB всякий раз, когда какой-либо из указанных сигналов испытывает противоположный фронт - изменяется с'1' кому '0'. Определить -falling с именами трактов одного или нескольких сигналов, определенных как логический тип (STD_LOGIC, BIT, X01и так далее).

Для определения перехода сигнала в:

  • VHDL: падающий край равен {1 или H} {0 или L}.

  • Verilog: Falling edge - переход от 1 к x, z или 0 и от x или z к 0.

Примечание

При указании сигналов с помощью -rising, -falling, и -sensitivity укажите их в формате полного пути. Если полное имя пути не указано, команда применяет правила имитатора HDL для разрешения спецификаций сигнала.

-sensitivity <signal>[, <signal>...]

Указывает, что приложение вызывает указанную функцию MATLAB всякий раз, когда какой-либо из указанных сигналов изменяет состояние. Определить -sensitivity с именами трактов одного или нескольких сигналов. Сигналы любого типа могут появляться в списке чувствительности и располагаться на любом уровне иерархии модели ЛПВП.

Примечание

При указании сигналов с помощью -rising, -falling, и -sensitivity укажите их в формате полного пути. Если полное имя пути не указано, команда применяет правила имитатора HDL для разрешения спецификаций сигнала.

-mfunc <name>

Имя функции MATLAB, связанной с экземпляром модуля HDL, указанным для instance. По умолчанию программа HDL Verifier вызывает функцию MATLAB, имя которой совпадает с именем указанного экземпляра HDL. Таким образом, если имена совпадают, можно опустить -mfunc вариант. Если имена не совпадают, используйте этот аргумент при вызове matlabcp. Если опустить этот аргумент и matlabcp не находит функцию MATLAB с тем же именем, команда генерирует сообщение об ошибке.

-use_instance_obj

Инструктирует функцию, указанную в аргументе -mfunc для использования объекта экземпляра HDL, переданного в функцию средством проверки HDL. Этот аргумент имеет поля, показанные в следующей таблице. Примеры см. в разделе Запись функций с помощью объекта экземпляра HDL.

ОбластьДоступ для чтения/записиОписание
tnextТолько запись

Используется для планирования обратного вызова в течение заданного значения времени. Это поле эквивалентно старому tnext. Например:

hdl_instance_obj.tnext = hdl_instance_obj.tnow + 5e-9

запланирует обратный вызов в момент времени, равный 5 наносекундам от tnow.

userdataЧтение/записьСохраняет переменные состояния текущего matlabcp экземпляр. Переменные можно извлечь при следующем планировании обратного вызова этого экземпляра.
simstatusТолько для чтения

Сохраняет состояние имитатора ЛПВП. Программное обеспечение HDL Verifier устанавливает для этого поля значение 'Init' во время первого обратного вызова для этого конкретного экземпляра и 'Running' после этого. simstatus является свойством, доступным только для чтения.

>> hdl_instance_obj.simstatus

ans=
      Init
instanceТолько для чтения

Сохраняет полный путь экземпляра Verilog/VHDL, связанного с обратным вызовом. экземпляр является свойством, доступным только для чтения. Значение этого поля равно значению экземпляра модуля, указанного при вызове функции. Например:

В имитаторе ЛПВП:

hdlsim> matlabcp osc_top -mfunc oscfilter use_instance_obj

В MATLAB:

>> hdl_instance_obj.instance

ans=
		osc_top
argumentТолько для чтения

Сохраняет аргумент, заданный -argument вариант matlabcp. Например:

matlabtb osc_top -mfunc oscfilter -use_instance_obj -argument foo
Программное обеспечение канала поддерживает -argument опция, только если она используется с -use_instance_obj, в противном случае аргумент игнорируется. аргумент является свойством только для чтения.

>> hdl_instance_obj.argument

ans= 
    	foo
portinfoТолько для чтения

Сохраняет информацию о портах VHDL и Verilog, связанных с этим экземпляром. portinfo является свойством только для чтения, которое имеет структуру полей, описывающую порты, определенные для связанного модуля HDL. Для каждого порта, portinfo структура передает такую информацию, как тип, направление и размер порта. Дополнительные сведения о данных порта см. в разделе Получение доступа к информации о порте и ее применение.

hdl_instance_obj.portinfo.field1.field2.field3

Примечание

При использовании use_instance_obj, вы получаете доступ tscale через объект экземпляра HDL. Если вы не используете use_instance_obj, вы по-прежнему можете получить доступ tscale через portinfo.

tscaleТолько для чтения

Сохраняет предел разрешения (отметку) в секундах имитатора ЛПВП. tscale является свойством, доступным только для чтения.

>> hdl_instance_obj.tscale

ans=
	1.0000e-009

Примечание

При использовании use_instance_obj, вы получаете доступ tscale через объект экземпляра HDL. Если вы не используете use_instance_obj, вы по-прежнему можете получить доступ tscale через portinfo.

tnowТолько для чтения

Сохраняет текущее время. tnow является свойством, доступным только для чтения.

hdl_instance_obj.tnext = hld_instance_obj.tnow + fastestrate;
portvaluesЧтение/запись

Сохраняет текущие значения и устанавливает новые значения для выходного и входного портов для matlabcp экземпляр. Например:

>> hdl_instance_obj.portvalues

ans =
Read Only Input ports:
	clk_enable: []
	clk: []
	reset: []
Read/Write Output ports:
	sine_out: [22x1 char]
linkmodeТолько для чтения

Сохраняет состояние обратного вызова. Программное обеспечение HDL Verifier устанавливает для этого поля значение 'testbench' если обратный вызов связан с matlabtb и 'component' если обратный вызов связан с matlabcp. linkmode является свойством, доступным только для чтения.

>> hdl_instance_obj.linkmode

ans=
	component
-argument

Используется для передачи пользовательских аргументов из matlabcp вызов на стороне HDL для обратного вызова функции MATLAB. Поддерживается с -use_instance_obj только. См. список полей под -use_instance_obj собственность.

Примеры

Следующие примеры демонстрируют некоторые способы использования matlabcp функция.

Используя matlabcp с -mfunc Возможность связать компонент HDL с функцией MATLAB с другим именем

Этот пример явно связывает модуль Verilog vlogtestbench_top.u_matlab_component с функцией MATLAB vlogmatlabc с использованием -mfunc вариант. '-socket' определяет использование соединения сокетов на порту 4449.

hdlsim>matlabcp vlogtestbench_top.u_matlab_component -mfunc vlogmatlabc -socket 4449

Используя matlabcp с явным временем и -cancel Выбор

Этот пример включает явное время с -cancel вариант.

hdlsim>matlabcp vlogtestbench_top 1e6 fs  3 2e3 ps -repeat 3 ns -cancel 7ns

Используя matlabcp с растущими и падающими краями

В этом примере неявно связывается модуль Verilog, vlogtestbench_top, с функцией MATLAB vlogtestbench_top, а также использует поднимающиеся и падающие края.

hldsim> matlabcp vlogtestbench_top  1 2 3 4 5 6 7 -rising outclk3 
          -falling u_matlab_component/inoutclk
Представлен в R2008a