Моделируйте дискретные события
events when EventPredicate AssignmentList end end
events
начинает раздел событий, который завершается end
ключевое слово. The events
раздел в файле компонента управляет обновлениями событий. Он выполняется на протяжении всей симуляции.
The events
раздел может содержать только when
пункты.
The when
предложение служит для обновления значений переменных события. Синтаксис:
when EventPredicate var1 = expr1; var2 = expr2; ... end
EventPredicate
- выражение, которое определяет, когда происходит событие. Это должно быть выражение данных о событиях типа, как описано в Данные о событиях Type и ребра Оператора.
Переменные в теле 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
ветвь имеет самый низкий приоритет.