Осторожнее с вашей терминологией. Когда вы говорите a
изменилось в другом «процессе», это имеет особое значение в VHDL (процесс - это ключевое слово в VHDL), и в вашем коде нет процессов.
Синтезаторы будут обрабатывать ваш код как:
a <= c and d;
b <= (c and d) and c;
Симуляторы обычно назначают a на первом проходе, а затем назначают b на втором проходе на одну 'дельту' позже. Дельта - это бесконечно малая временная задержка, которая имеет место в то же время моделирования, что и первоначальное присвоение.
Обратите внимание, что это грубое обобщение того, что действительно происходит ... если вы хотите получить полную информацию, прочтите документацию, прилагаемую к вашей цепочке инструментов.