hdldaemon

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

Описание

hdldaemon запускает HDL-канал 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 - имя аргумента и 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') для получения назначенного номера порта сокета.

Пример: 'socket', 4449

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

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

Примечание

Эту команду можно ввести только после того, как программное обеспечение установит подключение к серверу.

Внимание

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

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

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

свернуть все

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

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