Поскольку VHDL использует управляемую событиями семантику, фактически ничего не выполняется параллельно. Это просто похоже на параллелизм. Параллельные присвоения, которые вы показываете, выполняются всякий раз, когда изменяются операнды RHS - подразумеваемого упорядочения не существует. Если a
изменяется с 1 на 0, вы не можете зависеть от того, в каком порядке выполняются первые два оператора. Возможно, сначала выполняется назначение 2 nd , затем выполняется назначение 1 st , а затем третье назначение 3 rd (потому что Sig2
изменилось), а затем назначение 2 nd выполняется снова, поскольку Sig1
изменилось.
Большинство инструментов попытаются упорядочить операторы, чтобы минимизировать количество повторных выполнений присваивания, и могут даже оптимизировать его, как если бы вы написали:
Q <= a and b;
и исключили Sig1
и Sig2
из симуляции.