signal a:bit:='1'; signal b:bit:='0'; signal c:bit:='0';
begin
process
variable d:bit:='0';
begin
if (a='1')or(b='0') then a <= inertial not d after 1ns;
else a<=inertial not c after 1.5ns;
end if;
d := a and b;
b <= inertial (b)nand(a or d) after 1ns;
wait on a,b,c;end process;
c <= a and b after 1ns;
end Behavioral;
Что произойдет, если значения a и b изменятся одновременно, например, за 2 нс.
Будет ли процесс запускаться 2 раза?
Если это так, какие значения следует использовать для a, b, если мы проходим через процесс для события a, изменяется ли сигнал b в это время или он будет изменен, когда процесс снова запустится для b?
Также оператор c ‹= a и b через 1 нс; находится вне процесса, как это работает с after? Если бы не было after, это была бы просто единица AND без задержки.