A non-blocking assignment (<=) is used for assignment inside edge-sensitive always blocks. Within a block, the new values are not visible until the entire block has been processed. For example:
module flip(
input clk,
input reset
)
reg f1;
reg f2;
always @ (posedge clk) begin
...