Лекция 11. Событийное моделирование
Событием называется любое изменение значения сигнала и неважно, в каком месте схемы оно произошло: на входе, выходе или внутри схемы. При двузначном алфавите {0,1} возможны только два события: 0®1 и 1®0. Обычно их обозначают символами «/», «\» или «», «¯» или «R» (от англ. Rise - фронт) и «F» (от англ. Fall - спад).
Для многозначного алфавита типов переключений может быть гораздо больше, например: 0®Х, 1®Х, Х®0, Х®1, 0®Z, 1®Z, Z®0, Z®1, X®Z, Z®X и т. п.
Способ, основанный на моделировании событий, называют событийным моделированием. Основная его идея заключается в том, чтобы проследить, каким образом изменения на входах схемы передаются на выходы. При этом элементы, на входах которых нет изменений, вообще не моделируются (их состояния остаются неизменными), а таких элементов в цифровых схемах по разным оценкам от 90 до 98%. Это означает, что, отслеживая только пути переключений в схеме и моделируя только активные элементы (а их 2…10% в схеме), можно существенно повысить эффективность моделирования (примерно в 10…50 раз).
Итак, первая особенность событийного моделирования заключается в том, что при прогоне модели схемы обрабатываются только 2…10% её элементов. Это так называемые активные элементы, у которых в текущий момент времени изменились входные сигналы.
Вторая особенность заключается в механизме продвижения модельного времени. Оно движется не равномерно с ранее заданным шагом Dt, а скачками разной величины от текущего события до ближайшего будущего (принцип dz). В этом случае говорят, что время движется, опираясь на события, которые должны быть отсортированы в хронологическом порядке.
Все события можно разделить на безусловные и возможные (предполагаемые, условные). Безусловное событие, например, переключение выхода инвертора (рис.1,а) при изменении сигнала на его входе, неминуемо произойдет. Конечно, не сразу, а с задержкой, определяемой временем распространения сигнала в элементе.
Возможные события происходят только при выполнении определенных условий и зависят от состояния сигналов на других входах элемента. Например, выход логического элемента 2И (рис.1,б) переключится только в том случае, если значение сигнала на пассивном входе равно лог.1.
События делятся также на отработанные, текущие и будущие (рис.1, в).
На рис.1, в показана ситуация, когда моделятор уже обработал первые три события: С1, С2, С3. Модельное время «перепрыгнуло» на событие С4, которое стало текущим. Очередной цикл работы моделятора связан теперь с обработкой реакции схемы на это событие.

Будущие события – это те, которые ещё предстоит обрабатывать. Среди них выделим ближайшее будущее событие, то есть то событие, на которое моделятор собирается перевести модельные часы в следующем цикле работы.
При моделировании схемы в текущий момент времени могут произойти новые события, которые добавляются в очередь будущих событий в хронологическом порядке. Если новое событие появится на интервале tС4…tС5, то оно и станет ближайшим.
Рассмотрим фрагмент моделируемой схемы (рис.2,а), на которую подаются входные сигналы IN1, IN2, IN3, IN4, показанные на рис.2,б.
Очередь будущих событий (ОБС)
Мы уже говорили, что ОБС - это отсортированный в порядке возрастания времени список будущих событий. Иногда ОБС называют календарем событий. В общем случае каждое событие в ОБС задается тремя параметрами:
· именем события (обычно это имя цепи, в которой происходят изменения);
· временем наступления события;
· типом события.
Перед началом моделирования (tm= 0) в ОБС заносятся события на входах схемы, и для нашего примера она будет включать семь событий (рис.3,а).
![]() |
tm = 0ns | tm = 200ns | |||||
IN3 | 200ns | 0->1 | Fj | 218ns | 0->1 | |
IN1 | 400ns | 1->0 | Fi | 220ns | 0->1 | |
IN2 | 700ns | 1->0 | IN1 | 400ns | 1->0 | |
IN4 | 700ns | 1->0 | IN2 | 700ns | 1->0 | |
IN3 | 900ns | 1->0 | IN4 | 700ns | 1->0 | |
IN1 | 1000ns | 0->1 | IN3 | 900ns | 1->0 | |
IN4 | 1100ns | 0->1 | IN1 | 1000ns | 0->1 | |
IN4 | 1100ns | 0->1 |
а) б)
Рис.3. Содержимое ОБС перед началом моделирования и после
обработки первого события.
В вершине очереди находится событие (IN3 200ns 0->1), которое должно произойти раньше других – ближайшее будущее событие.
Планирование новых событий в ходе моделирования
В процессе моделирования содержимое ОБС будет изменяться, так как. переключения на входах могут порождать в будущем другие (новые) события – переключения на выходах элементов схемы.
Кроме того, из ОБС будут удаляться текущие события и запоминаться в списке отработанных событий (СОС).
Например, стартовав с момента времени tm= 0, моделятор извлечет из ОБС ближайшее событие IN3 и переведет стрелки модельных часов на время его наступления (tm= 200ns). Событие IN3 станет текущим.
Затем моделятор отыщет по табличному описанию схемы элементы, которые принимают переключающийся сигнал IN3. Они так и называются: элементы-приемники. В нашем примере таких элементов два – Fi и Fj (рис.2,а).
Моделятор вызовет одну за другой подпрограммы моделей этих элементов и определит, изменятся ли в будущем их выходы. Понятно, что модели элементов прогоняются на текущем наборе входных сигналов, причем вход IN3 уже переключился на новое значение.
Будущие события на выходах Fi и Fj (если они произойдут) будут удалены от текущего времени на величину задержки этих элементов, то есть на время 20ns и 18ns соответственно.
Добавляя эти задержки к текущему времени, моделятор спланирует два новых события:
Fi tm + tзi 0 ->1 Þ Fi 220 ns 0->1
Fj tm + tзj 0 ->1 Þ Fj 218 ns 0->1
и добавит их в ОБС ( рис. 3,б)
Закончив текущий цикл работы, моделятор вновь обратится к ОБС, извлечет ближайшее событие ( Fj 218ns 0 ->1), найдет и промоделирует элемент Fk. Выяснит, что на его выходе произойдет событие:
Fk 243ns 1->0 (243 = 218+25) и включит его в ОБС.
Моделирование будет продолжаться описанным выше способом до тех пор, пока в ОБС не останется ни одного события или модельное время не достигнет финального значения.
Список отработанных событий (СОС)
В процессе работы моделятор накапливает все события, которые произошли в схеме. По ним легко восстановить «картину» работы схемы, а, значит, их удобно использовать при выводе результатов моделирования.
Массив состояний сигналов (МСС)
В отличие от потактового метода событийное моделирование использует не двумерный, а одномерный массив данных. Он хранит только текущие состояния всех сигналов, действующих в моделируемой схеме. Для каждого сигнала (цепи) резервируется по одной ячейки в МСС.
Перед началом моделирования в этот массив заносятся исходные значения входных сигналов для tm = 0, по которым моделятор пытается выполнить начальную инициализацию схемы (выяснить ее исходное состояние). На рис.4,а показано содержимое МСС перед началом моделирования.
Выходы Fi, Fj, Fk имеют конкретные значения. Это говорит о том, что моделятору удалось выполнить начальную инициализацию схемы. В противном случае некоторые сигналы будут сохранять Х-значения.
На рис.4,б показано состояние схемы после обработки первого события (IN3 200ns 0 ->). Видно, что сигнал IN3 уже переключился на новый уровень: IN3 = 1, а модельное время равно tm = 200ns – времени наступления события IN3.
МСС (tm = 0) МСС (tm = 200ns)
Имя сигнала | Значение | Имя сигнала | Значение | |
IN1 | 1 | IN1 | 1 | |
IN2 | 1 | IN2 | 1 | |
IN3 | 0 | IN3 | [1] | |
IN4 | 1 | IN4 | 1 | |
. | . | . | . | |
. | . | . | . | |
Fi | 1 | Fi | 1 | |
Fj | 0 | Fj | 0 | |
Fk | 1 | Fk | 1 | |
. | . | . | . |
а) б)
Рис.4. Содержимое массива состояния сигналов для различных
моментов tm
Обратите внимание, что выходы Fi, Fj, Fk сохраняют пока ещё старые значения из-за задержек распространения сигналов внутри элементов.
Табличное представление моделируемой схемы
Для событийного моделирования необходимо именно такое (табличное) описание схемы, так как оно содержит не только списки элементов и цепей, но и списки элементов-приёмников сигналов. Понятно, что информация о задержках для каждого элемента схемы должна быть также доступна моделятору.
![]() |
Заканчивая разговор о данном виде моделирования, приведем для него наиболее популярную реализацию (рис.5).
![]() |





