VHDL — когда процесс () запускается в первый раз?

Рассмотрим: процесс (а) В соответствии с текстом у меня есть:

Процесс сначала запускается во время моделирования, и в это время он выполняется до тех пор, пока не приостановит себя из-за оператора ожидания или списка конфиденциальности.

Правильно ли я делаю вывод, что процесс ДОЛЖЕН быть запущен один раз даже без каких-либо событий в списке чувствительности? Кроме того, что, если в архитектуре есть несколько процессов, все ли они выполняются один раз?


person n a    schedule 30.11.2009    source источник
comment
Да, я знаю, что процесс всегда либо активен, либо ожидает. Я спрашиваю, выполняются ли последовательные операторы внутри него один раз в любом случае при моделировании?   -  person n a    schedule 30.11.2009


Ответы (2)


Насколько мне известно, список чувствительности (например, process (x,y)) - это просто сокращение для wait on x,y; непосредственно перед end process процедуры (стр. 152, «Руководство дизайнера по VHDL», 3-е издание). Таким образом, все процедуры будут выполняться хотя бы один раз.

person Marty    schedule 30.11.2009

Запуск симуляции VHDL включает 3 этапа. Это разработка, инициализация и моделирование.

В начале фазы инициализации текущее время устанавливается равным 0. Затем ядро ​​моделирования помещает все процессы моделирования в очередь активных процессов. Затем каждый процесс моделирования берется из этой очереди и выполняется до тех пор, пока не приостановится. Порядок выполнения процессов моделирования при инициализации не важен. Первоначальное выполнение каждого процесса моделирования гарантирует, что все начальные транзакции запланированы так, чтобы моделирование могло продолжаться.

Процесс моделирования приостанавливается либо имплицитно, либо явно. Процесс со списком конфиденциальности приостанавливается неявно после того, как его последовательные операторы были выполнены до конца процесса. Процесс с одним или несколькими операторами ожидания явно приостанавливается при выполнении его первого оператора ожидания.

Когда очередь активных процессов пуста, фаза инициализации завершена.

Итак, чтобы ответить на ваш вопрос, все процессы будут запускаться один раз на этапе инициализации.

person Justin    schedule 02.12.2009