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;
What happens if both a and b change their value at the same time, 2ns for ex.
Will the process trigger 2 times?
If it does, which values should be used for a,b, if we are going trough the process for the a event, is b signal changed at that time, or it will be changed when the process runs again for b?
Also the statement c <= a and b after 1ns; is outside of the process, how does it work with after? If there was no after, it would just be an AND unit, with no delay.