Образцовые дискретные события
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
имеет самый низкий приоритет.