[Закрыть]
 
sim.1024.info - портал распределённого логического моделирования
Начало | Новости | Статьи | Форум | Контакты | Карта сайта
sim.1024.info - Статьи - Документация - Форматы файлов - Программа на языке диаграмм причинно-следственных связей (ПСС-программа) *.sr

Программа на языке диаграмм причинно-следственных связей (ПСС-программа) *.sr

Постоянный адрес статьи

В файлах *.sr содержатся программы на языке диаграмм причинно-следтсвенных связей (ПСС-программы). Эти программы создаются моделирующими процессорами и содержат информацию о ходе моделирования схемы. Во время моделирования на каждом МодПр создается свой раздел ПСС-программы. После завершения моделирования разделы автоматически собираются в один файл.

ПСС-программа состоит из последовательности команд. Каждая команда записывается в отдельной строке.

Команды ПСС-программы объединены в разделы. В одном разделе содержатся команды одного МодПр. Раздел начинается с установки переменной Processor. Значение этой переменной соответствует имени процессора, который записывал этот раздел ПСС-программы.

Команды ПСС-програмы в пределах одного раздела приводятся в порядке их появления в реальном времени. Команды следующего процессора начинаются с команды установки переменной Processor, которая задаёт новое имя процессора.

В зависимости от настроек в проекте МодПр и от типа загруженной схемы, в ПСС-диаграмме имена элементов и имена узлов схемы могут задаваться либо символическими именами, либо порядковыми номерами.

Содержание

Синтаксис команд ПСС-программы

Общий синтаксис команд ПСС-программы представлен на рисунке:

<realtime> <thread> <command> [<arg1>[ <arg2>[ <arg3>]]]

где:

  1. <realtime> - физическое время момента добавления команды в ПСС-программу. Это целое число, которое показывается количество миллисекунд, прошедших с момента начала моделирования до момента добавления этой компнды.

  2. <thread> - имя потока, который произвёл запись.

  3. <command> - имя одной из четырёх рассмотренных ниже команд.

  4. <arg1>, <arg2>, <arg3> - параметры команды. Смысл и назначение этих параметров зависит от самой команды.

Потоки моделирующего процессора

S

Сервисный поток.

Имя произошло от английского слова service.

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

Это основной поток, который создаётся автоматически при запуске программы.

P

Вычислительный поток.

Имя произошло от английского слова process.

В этом потоке выполняется координатор процесса моделирования, в нём производится работа с локальным списком событий, вычисления значений сигналов на выходах элементов. В этом же потоке производятся откаты при использовании оптимистических протоколов синхронизации.

Команды ПСС-программы

P <name> <val>

Изменить значение переменной.

Имя этой команды сложилось исторически. Более-менее достоверных фактов, указывающих на причины выбора именно этого имени, не сохранилось. Есть предположение, что это имя перекочевало из старых версий ПСС-программ, в которых не было чёткого разделения команд на типы и единственная более-менее похожая на установку значения переменной команда в старой версии ПСС-программы называлась P - установить имя процессора. В таком случае P - это первая буква английского слова processor. Сейчас устанавливается много разных переменных, а не только имена процессоров, но имя команды осталось старое.

<name> - имя переменной. При построении ПСС-диаграммы пользователи могут указывать, какие из переменных следует показывать на ПСС-диаграмме.

<val> - новое значение переменной

На ПСС-диаграммах значения переменных отображаются на осях соответствующего процессора.

E <type> <val>

Внутреннее событие на процессоре.

Е - от английского слова event (событие).

<type> - тип события. При построении ПСС-диаграммы пользователи могут указывать, какие типы событий показывать на ПСС-диаграмме.

<val> - значение события.

Примером внутреннего события может быть добавление и извлечение из очереди. Тогда «добавить» и «извлечь» - типы событий, а значения, которые были добавлены или извлечены - значения этих событий.

На ПСС-диаграммах внутренние события отображаются на оси соответсвующего процессора, между значениями переменных до и после наступления этого события.

S <proc> <type> <val>

Отправить сообщение по сети другому процессору.

S - от английского слова send (отправить).

<proc> - имя процессора - получателя этого сообщения.

<type> - тип сообщения. При построении ПСС-диаграммы пользователи могут указывать, сообщений каких типов показывать на ПСС-диаграмме.

<val> - значение сообщения.

Примером сообщения может быть сообщение о событии или сообщение-маркер. Тогда «событие» и «маркер» - типы сообщений, а информация о том, какое именно событие и какая информация хранится в маркере - это значение сообщения.

На ПСС-диаграмме отправленные сообщения отображаются под или над осью процессора, с которого это сообщение было отправлено.

R <proc> <type> <val>

Получить сообщение по сети от другого процессора.

R - от английского слова receive (получить).

<proc> - имя процессора - отправителя сообщения.

<type> - тип сообщения. При построении ПСС-диаграммы пользователи могут указывать, сообщений каких типов показывать на ПСС-диаграмме.

<val> - значение сообщения.

На ПСС-диаграмме полученные сообщения отображаются под или над осью процессора, который это сообщение получил. Если в ПСС-программе существует команда об отправке сообщения, соответствющего данному, то эти два сообщения будут соединены синей линией.

Полученное сообщение считается соответствующим отправленному, если совпадает тип и значение сообщения, а также соответствуют имена процессора-отправителя и процессора-получателя.

На ПСС-диаграммах события получения сообщения всегда отображаются правее соотвтствующего события отправки сообщения.

Пример команды ПСС-программы представлен на рисунке:

0 S P Processor P1

Эта команда означает, в течение 0 ms после начала процесса моделирования сервисный поток установил значение переменной Processor, равное P1.

Переменные ПСС-программы

LVT <ts>

Локальное виртуальное время изменилось и стало равным ts.

Версии КПМ: последовательный, консервативный, оптимистический.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство LVT.

Processor <name>

Установить имя процессора.

Версии КПМ: последовательный, консервативный, оптимистический.

Отключить запись этой переменной в ПСС-программу нельзя.

Каждый процессор начинает свой раздел ПСС-программы с указания своего имени путём установки значения этой переменной.

SE.CI.CC.<proc> <ts>

Канальные часы для канала связи с процессором <proc> изменили свое значение и стали показывать время <ts>.

Версии КПМ: консервативный.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SE.

SE.CI.LVTH <ts>

Изменился горизонт расширения локального виртуального времени и стал равным <ts>.

Версии КПМ: консервативный.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SE.

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

SE.Color <bool>

Цвет процессора. Значение «ложь» соответствует красному цвету, значение «истина» - белому.

Версии КПМ: консервативный с маркером.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SE.

В красный цвет процессор окрашивается после обработки события или отправки/получения сообщения о событии. В белый цвет процессор окрашивается после получения маркера.

SE.Executing <bool>

Эта переменная принимает значение «ложь», если процессор находится в состоянии тупика и не обрабатывает события.

Версии КПМ: консервативный.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SE.

Используя значения этих переменных, можно установить, какое количество времени процессор занимался полезными вычислениями, а сколько времени он простаивал.

SE.FinID <id>

Эта переменная записывается только на процессоре-инициализаторе завершения процесса моделирования. <id> - идентификатор последнего отправленного сообщения Fin.

Версии КПМ: консервативный.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SE.

Процесс моделирования считается завершенным, если на процессор-инициализатор пришло сообщение Fin с этим идентификатором.

SFSM.Suspend.<name> <bool>

Эта переменная принимает значение 1, когда на входах элемента <name> изменились значения сигналов, а на выходах значения сигналов еще не обновлены.

Версии КПМ: последовательный, консервативный, оптимистический.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SFSM.Suspend.

Когда сигналы на выходах пересчитаны в соответствие с новыми сигналами на входах, эта переменная снова принимает значение 0.

SFSM.Values.<name> <val>[@<ts>]

В узле схемы <name> сигнал принял значение <val>. Момент вируального времени <ts> указывается, если отключена запись значения переменной LVT.

Версии КПМ: последовательный, консервативный, оптимистический.

Для записи этой переменной в ПСС-программу, в проекте АПМ следует установить свойство SFSM.Values.

Последняя модификация: 28.12.06 12:48

Не проходите мимо! Оставьте Ваш комментарий в форуме! >>>

Вход
Поиск[?]: