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