csosz33@axelero.hu wrote:
> Ok, in but the second case I have got waveform starting at 2ns: '0' in
> (0-2ns) and '1' after 2 ns. Why?
>
> STIMULUS: process
> begin
> a <= '0';
> wait for 0 ns;
> a <= '1' after 2 ns; -- (*)
> a <= '0' after 4 ns;
> wait for 20 ns;
> wait;
> end process;
> When I change the STIMULUS process to this one:
> STIMULUS: process
> begin
> a <= '0';
> wait for 0 ns;
> a <= '1' after 2 ns;
> a <= '1' after 4 ns;
> wait for 20 ns;
> wait;
> end process;
Why? Again, look up how transactions are scheduled. The quick answer
is: in the first process, the assignment
a <= '0' after 4 ns;
overrides the assignment:
a <= '1' after 2 ns;
Keywords: "inertial" and "transport."
-a