# Is it possible to design an n-bit full adder using SystemVerilog?

+1

−0

I am trying to design a full adder in SystemVerilog.

I searched on Wikipedia and I found this https://en.wikibooks.org/w/index.php?title=Microprocessor_Design/Add_and_Subtract_Blocks

```
module full_adder(a, b, cin, cout, s);
input a, b, cin;
output cout, s;
wire temp;
temp = a ^ b;
s = temp ^ cin;
cout = (cin & temp) | (a & b);
endmodule
```

But this code seems quite lengthy, and works for only the 1-bit case. Is there code which is shorter and can work for the n-bit case?

## 1 answer

+0

−0

```
module full_adder
#(parameter WIDTH = 4)
(input logic [WIDTH - 1: 0] a,
b,
input logic carry_in,
output logic carry_out,
output logic [WIDTH - 1: 0] sum);
assign {carry_out, sum} = a + b + carry_in;
endmodule
```

The above design is parameterised, so full adders of any positive integral widths can be obtained by changing the value of the `WIDTH`

parameter.

## 0 comments