`timescale 1 ns / 1 ns module shift_reg_var(clk, d, q); input clk, d; output q; reg a, b, c; always @(posedge clk) a = d; always @(posedge clk) b = a; always @(posedge clk) c = b; assign q = c; endmodule module shift_reg_var_ok(clk, d, q); input clk, d; output q; reg a, b, c; always @(posedge clk) begin c = b; b = a; a = d; end assign q = c; endmodule