Моделирование дискретных событий
events
when EventPredicate
AssignmentList
end
end
events начинает раздел событий, который завершается end ключевое слово. events раздел в файле компонента управляет обновлениями событий. Она выполняется на протяжении всего моделирования.
events раздел может содержать только when пункты.
when служит для обновления значений переменных события. Синтаксис:
when EventPredicate var1 = expr1; var2 = expr2; ... end
EventPredicate - выражение, определяющее момент возникновения события. Это должно быть выражение типа данных события, как описано в разделе Тип данных события и пограничный оператор.
Переменные в теле when предложение должно быть объявлено как переменные события. Когда предикат события возвращает значение true, все переменные в теле when предложение одновременно обновляется до новых значений.
A when предложение может дополнительно иметь один или несколько elsewhen ветви:
when EventPredicate var1 = expr1; var2 = expr2; ... elsewhen EventPredicate var1 = expr3; ... end
Примечание
Дефолт else ветвь в when предложение является недопустимым.
Применяются следующие правила:
Порядок when клаузулы не имеют значения.
Порядок назначений переменных в теле when предложение не имеет значения, так как все обновления происходят одновременно.
A when предложение не может обновлять переменную события более одного раза в одном списке назначений.
Два независимых when предложения не могут обновлять одну и ту же переменную события. Необходимо использовать elsewhen ветвь для этого.
Порядок elsewhen филиалы имеют значение. Если несколько предикатов становятся истинными в один и тот же момент времени, активируется только ветвь с наивысшим приоритетом. Приоритет ветвей в when условие определяется порядком их объявления. То есть, when ветвь имеет наивысший приоритет, в то время как последняя elsewhen ветвь имеет наименьший приоритет.