exponenta event banner

hdldaemon

Управление сервером MATLAB, поддерживающим взаимодействие с имитатором HDL

Описание

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 является именем аргумента и 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 значения, которые Verifier™ HDL масштабируются до секунд на основе текущего разрешения моделирования 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') изнутри matlabtb или matlabcp функция. Это приводит к состоянию гонки, и симулятор зависает.

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

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

свернуть все

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

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