(2) 惯性延迟

  
在进行与传输延迟相同的处理的同时,还要考察其前面所有的的元素:若新安排的事项处理的值与之前的原有事项处理的值不同,则删除原有事项处理;若值相同,则仍保留原事项处理。

  例1:
    signal S: Integer := 0;
    P1: process
    begin
      S <= 1 after 1 ns;
      S <= 2 after 2 ns;
      wait;
    end process;
  执行第2个语句时,安排(2,2ns),其前面的(1, 1ns)的值1与新安排的事项处理的值2不同,原事项处理被删除(图2.12)。
图2.12 惯性延迟的事项处理表

  例2:例1中将两个赋值语句互换位置:
    signal S: Integer := 0;
    P1: process
    begin
      S <= 2 after 2 ns;
      S <= 1 after 1 ns;
      wait;
    end process;
  执行第2个语句时,(1,1ns)安排在(2,2ns)之前,并把原(2, 2ns)删除。与传输延迟的情况相同(图2.13)。
图2.13 例2的事项处理表与传输延迟情况相同

   例3:例1中两个信号赋值语句改为:
    signal S: Integer := 0;
    P1: process
    begin
      S <= 1 after 1 ns, 3 after 3 ns, 5 after 5 ns;
      S <= 3 after 4 ns, 4 after 5 ns;
      wait;
    end process;
  执行第2个语句时, (3,4ns)安排在(5,5ns)之前,并把原(5, 5ns)删除。之前安排的(1, 1ns)的值1与(3,4ns)的3不同,删除,但(3, 3ns)保留。最后将(4,5ns)加在尾部(图2.14)。

图2.14 例3的事项处理表