Моделирование в VHDL осуществляется событийным методом. Реализуется этот метод, благодаря не только учету задержек, но и специальным механизмам таким, как оператор process или охраняемые блоки.
Оператор process — это блок, выполняемый только тогда, когда происходят изменения его входных параметров (хотя бы с одним из них). Структура этого блока:
[<метка>:] process [(<список_параметров>)]
<тело_процесса> -- здесь описываются вложенные в процесс типы и операторы
end process [<метка>];
Охраняемый (guarded) блок имеет вид:
<метка>: block (<охранное_выражение>)
begin <операторы>
end block <метка>;
Рис. 1.  
Пример архитектурного тела для модели схемы рис. 1 с использованием оператора process:
architecture alg of schema is
signal z1,z2: BIT;
begin process (a,b,d,e,c)
begin
z1 <= not ((a and c) or (b and c));
z2 <= not ((d and c) or (e and c));
y <= not (z1 or z2);
end process;
end alg;
Операторы блока выполняются только при истинном значении охранного выражения.
При поведенческом описании сущностей архитектурное тело представляет алгоритмы, реализуемые в схеме. Подразумевается, что все операторы в архитектурном теле выполняются параллельно (последовательное выполнение имеет место внутри процессов и подпрограмм).
Нижеследующий пример D-триггера — это пример использования охраняемого блока. D-триггер при R = '1' переходит в состояние '0', иначе, если C = '1', на выходе Q устанавливается значение входного сигнала S.
D: block (C='1' or R='1')
begin
Q <= guarded '0' when R='1' else S when C='1' else Q;
end block D;