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 の両方が同時に値を変更するとどうなるでしょうか。たとえば、2ns です。
プロセスは 2 回トリガーされますか?
その場合、a、b にどの値を使用する必要がありますか、a イベントのプロセスを通過する場合、b 信号はその時点で変更されますか、それともプロセスが b に対して再度実行されるときに変更されますか?
また、ステートメント c <= a および b は 1ns 後です。はプロセス外ですが、アフターはどのように機能しますか? after がなければ、ただの AND 単位であり、遅延はありません。