hdldaemon

Управляйте сервером MATLAB, который поддерживает взаимодействия с симулятором HDL

Синтаксис

hdldaemon
hdldaemon(Name,Value)
hdldaemon(Option)
s=hdldaemon(___)

Описание

hdldaemon запускает сервер HDL Link MATLAB® с помощью межпроцессного взаимодействия общей памяти. Только один hdldaemon на сеанс работы с MATLAB может запускаться в любой момент времени.

пример

hdldaemon(Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары Name,Value.

  • Если вы не задаете тип памяти, сервер начинает использовать общую память.

  • Если вы задаете аргумент socket Name, Value, сервер начинает использовать память сокета.

Примечание

Если сервер уже запускается, выпускать hdldaemon с этими аргументами закрывает текущий сервер и затем запускает новый сеанс сервера с помощью общей памяти (если сокет не задан).

пример

hdldaemon(Option) принимает один дополнительный вход. Только одна опция может быть задана в одном вызове. Необходимо установить связь сервера прежде, чем вызвать hdldaemon с одной из этих опций.

пример

s=hdldaemon(___) возвращает связь состояния сервера в структуре s, с помощью любого из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Запустите сервер MATLAB с помощью коммуникации общей памяти и используйте целочисленное представление времени.

hdldaemon('time','int64')
HDLDaemon shared memory server is running with 0 connections

Запустите сервер MATLAB и задайте коммуникацию сокета на порте 4449.

hdldaemon('socket',4449)
HDLDaemon socket server is running on port 4449 with 0 connections

С одной или несколькими связями:

hdldaemon('status')
HDLDaemon socket server is running on port 4449 with 1 connections

Без связей:

hdldaemon('status')
HDLDaemon shared memory server is running with 0 connections

Сервер не был запущен:

hdldaemon('status')
HDLDaemon is NOT running

Проверяйте информацию о связи на коммуникационный режим, количество существующих связей и идентификатор межпроцессного взаимодействия (ipc_id), сервер MATLAB использует для ссылки.

Возвращенное сообщение для сокетного соединения:

x=hdldaemon('status')
x = 
           comm: 'sockets'
    connections: 0
         ipc_id: '4449'

Возвращенное сообщение для сопряжения с общей памятью:

x=hdldaemon('status')
x = 
           comm: 'shared memory'
    connections: 0
         ipc_id:  '\\.\pipe\E505F434-F023-42a6-B06D-DEFD08434C67'

Можно исследовать ipc_id путем ввода его в подсказке команды MATLAB:

x.ipc_id
 '\\.\pipe\E505F434-F023-42a6-B06D-DEFD08434C67'

Закройте сервер, не закрывая MATLAB.

hdldaemon('kill')
HDLDaemon server was shutdown

Дайте простые или комплексные команды Tcl.

Простой пример:

hdldaemon('tclcmd','puts "This is a test"')

Комплексный пример:

tclcmd = {['cd ',unixprojdir],...
           'vlib work',... % create library (if applicable)
          ['vcom -performdefaultbinding ' unixsrcfile1],...
          ['vcom -performdefaultbinding ' unixsrcfile2],...
          ['vcom -performdefaultbinding ' unixsrcfile3],...
           'vsimmatlab work.osc_top ',...
           'matlabcp u_osc_filter -mfunc oscfilter',...
           'add wave sim:/osc_top/clk',...
           'add wave sim:/osc_top/clk_enable',...
           'add wave sim:/osc_top/reset',...
          ['add wave -height 100 -radix decimal -format analog-step -scale 0.001 -offset 50000 ',...
           'sim:/osc_top/osc_out'],...
          ['add wave -height 100 -radix decimal -format analog-step -scale 0.00003125 -offset 50000 ',...
           'sim:/osc_top/filter1x_out'],...
          ['add wave -height 100 -radix decimal -format analog-step -scale 0.00003125 -offset 50000 ',...
           'sim:/osc_top/filter4x_out'],...
          ['add wave -height 100 -radix decimal -format analog-step -scale 0.00003125 -offset 50000 ',...
           'sim:/osc_top/filter8x_out'],...
           'force sim:/osc_top/clk_enable 1 0',...
           'force sim:/osc_top/reset 1 0, 0 120 ns',...
           'force sim:/osc_top/clk 1 0 ns, 0 40 ns -r 80ns',...
          };

Этот пример взят из "Реализации Компонента Фильтра Осциллятора в MATLAB". Смотрите полный пример для использования этой комплексной команды Tcl в контексте.

Входные параметры

свернуть все

Параметр сервера, чтобы закрыть состояние сервера сервера или отображения MATLAB, заданное как один из этих векторов символов:

'kill'Закрывает сервер MATLAB, не закрывая MATLAB.
'stop'Закрывает сервер MATLAB, не закрывая MATLAB. Нет никакого различия между использованием 'kill' и 'stop'.
'status'Состояние отображений сервера MATLAB. Можно также использовать s=hdldaemon('status'), который отображает состояние сервера MATLAB и возвращает состояние в структуре s.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'time','int64','quiet','true' указывает, что временные стоимости возвращены как 64-битные целые числа, и выходные сигналы подавлены.

Инструкция к серверу MATLAB о том, как это должно отправить и возвратить временные стоимости, заданные как пара, разделенная запятой, состоящая из 'time' и одно из этих значений:

'int64'

Указывает, что сервер MATLAB отправляет и возвращает временные стоимости в коллбэках функции MATLAB как 64-битные целые числа, представляющие количество шагов симуляции.
Смотрите matlabcp/matlabtb ссылка параметра tnow (Синтаксис функции MATLAB и Определения Аргумента функции).

'sec'

Указывает, что сервер MATLAB отправляет и возвращает временные стоимости в коллбэках функции MATLAB как значения double, которые HDL Verifier™ масштабирует к секундам на основе текущего разрешения симуляции HDL.

Если сервер уже запустится, то выпускать hdldaemon с одним только параметром time закроет текущий сервер и запустит сервер снова с помощью общей памяти.

Пример: 'time','int64'

Индикатор, чтобы подавить сообщения диагностики печати, заданные как пара, разделенная запятой, состоящая из 'quiet' и одно из следующих значений:

'true'

Подавите сообщения диагностики печати.

'false'

Не подавляйте сообщения диагностики печати.

Ошибки все еще появляются. Используйте эту опцию, чтобы подавить сообщение завершения работы сервера MATLAB при использовании hdldaemon, чтобы получить неиспользованный номер сокета. Если сервер уже запустится, то выпускать hdldaemon с одним только параметром quiet закроет текущий сервер и запустит сервер снова с помощью общей памяти.

Пример: 'quiet', 'true'

Порт TCP/IP используется для коммуникации, заданной как пара, разделенная запятой, состоящая из 'socket' и значения. Значением может быть любой 0, указав, что хост автоматически выбирает допустимый порт TCP/IP, явный номер порта (1024 <порт <49151) или сервис (псевдоним) имя из файла /etc/services.

Если вы задаете опцию операционной системы (0), используйте hdldaemon('status'), чтобы получить присвоенный номер порта сокета.

Пример: 'снабдите сокетом', 4449

Команда Tcl передается всем связанным клиентам, заданным как любой допустимый вектор управляющего символа Tcl или скаляр строки.

Команда Tcl, которую вы задаете, не может включать команды, которые загружают проект симулятора HDL или изменяют состояние средства моделирования. Например, вектор символов не может включать команды, такие как start, stop или restart (для ModelSim®) или run, stop или reset (для Incisive®).

Примечание

Можно дать эту команду только после того, как программное обеспечение установит связь сервера.

Внимание

Не вызывайте hdldaemon('tclcmd', 'Tcl command') из функции matlabcp или matlabtb. Выполнение так результатов в состоянии состязания и средства моделирования зависает.

Пример: 'tclcmd','puts' '"done"'

Выходные аргументы

свернуть все

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

'comm'Или 'shared memory' или 'sockets'
'connections'Количество открытых связей
'ipc_id'Если общая память, имя файловой системы для канала связи общей памяти. Если сокет, номер порта TCP/IP.

Введенный в R2008a