[SV]SystemVerilog中forever begin end導致的Hang死

              SystemVerilog中forever begin end導致的Hang死

 

 一、當if條件不成立的時候,肯定會hang死。

forever begin

  if(expre == 1) begin

    run();

  end

end

 

1、如果run()這個task值耗時的,當if條件成立時,不會hang死。

2、如果if條件不成立,肯定會hang死。

3、防守的辦法是給if條件後面加上else分支,在else中做一個延時:@axi_if_cb;如果if條件不成立,走一T再進行下一次判斷:

forever begin

  if(expre == 1) begin

    run();

  end
  else begin
    @axi_if_cb;
  end

end

 

你可能感兴趣的:(SystemVerilog)