31 lines
506 B
Coq
31 lines
506 B
Coq
|
module uut_forgen02(a, b, cin, y, cout);
|
||
|
|
||
|
parameter WIDTH = 8;
|
||
|
|
||
|
input [WIDTH-1:0] a, b;
|
||
|
input cin;
|
||
|
|
||
|
output [WIDTH-1:0] y;
|
||
|
output cout;
|
||
|
|
||
|
genvar i;
|
||
|
wire [WIDTH-1:0] carry;
|
||
|
|
||
|
generate
|
||
|
for (i = 0; i < WIDTH; i=i+1) begin:adder
|
||
|
wire [2:0] D;
|
||
|
assign D[1:0] = { a[i], b[i] };
|
||
|
if (i == 0) begin:chain
|
||
|
assign D[2] = cin;
|
||
|
end else begin:chain
|
||
|
assign D[2] = carry[i-1];
|
||
|
end
|
||
|
assign y[i] = ^D;
|
||
|
assign carry[i] = &D[1:0] | (^D[1:0] & D[2]);
|
||
|
end
|
||
|
endgenerate
|
||
|
|
||
|
assign cout = carry[WIDTH-1];
|
||
|
|
||
|
endmodule
|