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