Exams/ece241 2014 q1c
module top_module (
input [7:0] a,
input [7:0] b,
output [7:0] s,
output overflow
); //
wire [8:0] c;
assign c[0] = 0;
genvar i;
generate
for(i=1;i<8;i++)begin : add_full
assign c[i] = a[i-1]&b[i-1] | a[i-1]&c[i-1] | b[i-1]&c[i-1];
assign s[i-1] = a[i-1] ^ b[i-1] ^ c[i-1];
end
endgenerate
assign s[7] = a[7] ^ b[7] ^ c[7];
//assign c[8] = a[7]&b[7] | a[7]&c[7] | b[7]&c[7];
assign overflow = a[7]&b[7]&~s[7] | ~a[7]&~b[7]&s[7];
endmodule
Adder100
module top_module(
input [99:0] a, b,
input cin,
output cout,
output [99:0] sum );
wire [99:0] c;
assign c[0] = cin;
genvar i;
generate
for(i=1;i<100;i++) begin:full_add
assign c[i] = a[i-1]&b[i-1]|a[i-1]&c[i-1]|b[i-1]&c[i-1];
assign sum[i-1] = a[i-1]^b[i-1]^c[i-1];
end
endgenerate
assign sum[99] = a[99]^b[99]^c[99];
assign cout = a[99]&b[99]|a[99]&c[99]|b[99]&c[99];
endmodule