s_: Less Clock versionv_: Verilog special syntaxhalf_subtractor(input A, B, output Bo, D);

full_subtractor(input A, B, Bi, output Bo, D);

module s_full_subtractor(input A, B, Bi, output D, Bo);
assign D = A ^ B ^ Bi;
assign Bo = (~A & B) | (~(A ^ B) & Bi);
endmodule
module v_full_subtractor(input A, B, Bi, output D, Bo);
assign {Bo, D} = A - B - Bi;
endmodule
rs_flip_flop(input R, S, output Q, Qbar);

nand_rs_flip_flop(input Rbar, Sbar, output Q, Qbar);

full_adder(input A, B, Ci, output Co, S)

module s_full_adder(input A, B, Ci, output Co, S);
assign S = A ^ B ^ Ci;
assign Co = (A & B) | ((A ^ B) & Ci);
endmodule

Verilog special syntax
module v_full_adder(input A, B, Ci, output Co, S);
assign {Co, S} = A + B + Ci;
endmodule

half_adder(input A, B, output C, S);
