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

Обозначается = и выполняются один за другим в процедурном блоке. Однако исполнение в различных процедурных блоках (например, при задании нескольких блоков initial) между собой не упорядочено.

Пример

module blocking_assignment_tb;
  reg [3:0] data; real r_value;
  integer i_value; time T;
  
  initial begin
    data = 4'h4;
    $monitor("Time [%0t] data = %0d, r_value = %0f, i_value = %0h", 
               T, data, r_value, i_value);
    r_value = 3.14;
    i_value = 4;
    #2 data = 4'h5;
    #3 data = 'd7;
    i_value = 10;
    i_value = 6;
    $finish;
  end  
  always #1 T = $time;
endmodule

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

Time [x] data = 4, r_value = 3.140000, i_value = 4
Time [1] data = 4, r_value = 3.140000, i_value = 4
Time [2] data = 5, r_value = 3.140000, i_value = 4
Time [3] data = 5, r_value = 3.140000, i_value = 4
Time [4] data = 5, r_value = 3.140000, i_value = 4
Time [4] data = 7, r_value = 3.140000, i_value = 6

Last updated