Неблокирующий оператор присваивание

Обозначается <= и работает следующим образом: когда выполнение дошло до строки с неблокирующим оператором присваивания, вычисляется правая часть оператора. Затем в конец очереди инструкций этого такта времени добавляется инструкция «присвоить вычисленный результат в переменную слева от оператора», и само присвоение происходит в конце такта.

Пример

module non_blocking_race_cond_tb;
  reg [3:0] data = 4'h2;
  reg [3:0] y = 4'h3;
    
  initial begin
    y <= data;
    $display("1st block: data = %0h, y = %0h", data, y);
  end
  
  initial begin 
    data <= y;
    $display("2nd block: data = %0h, y = %0h", data, y);
  end  
endmodule

Результат исполнения

1st block: data = 2, y = 3
2nd block: data = 2, y = 3

Last updated