Each process has a driver for A
, and the result of driving from the two
processes is generated by the resolution function for std_logic
.
If you make separate versions of A
from the two processes, called A_1
and
A_2
, and then drive the common A
outside the processes with the code:
A <= A_1;
A <= A_2;
Then you can see the value driven from each of the processes in the figure below.
The resolution function then resolved the two sources A_1
and A_2
that
drives A
based on the table below:
U X 0 1 Z W L H -
-----------------
U | U U U U U U U U U
X | U X X X X X X X X
0 | U X 0 X 0 0 0 0 X
1 | U X X 1 1 1 1 1 X
Z | U X 0 1 Z W L H X
W | U X 0 1 W W W W X
L | U X 0 1 L W L W X
H | U X 0 1 H W W H X
- | U X X X X X X X X
The initial values driven from start of simulation and until first explicit assign in the process is 'U' (Uninitialized).
So for example, the reason that A
is not '0' after 10 ns, is that the value
driven to A
from proc1
is 'U', and the resolution table above shows that
('U', '0') results in 'U'.