If you are just trying to create a binary bit with two additions, then unary - also works.
a = 3'b001 ;
Tim also correctly pointed out that just because you use + or imply one through unary, synthesis tools can optimize this.
The full adder has 3 inputs (A, B, Carry_in) and 2 outputs (Sum Carry_out). Since for our use the second input is only 1 bit wide, and there is no carry in LSB, we do not need a “full adder”.
An absolute combiner that has 2 inputs (A, B) and 2 outputs (Sum Carry) is perfect.
For the low order, the inputs with half adders B will be high, +1 . The remaining inputs of bit B will be used to propagate Carry from the previous bit.
I don’t know how to write in verilog that you want to get half the sum, but for any size number plus 1 bit only a half adder is required, not a full one.
source share