module half_adder(sum, carry, a, b);
input a, b;
output sum, carry;
xor sum1(sum, a, b);
and carry1(carry, a, b);
endmodule
module full_adder (fsum, fcarry_out, a, b, c);
input a, b, c;
output fsum, fcarry_out;
wire half_sum_1, half_carry_1, half_carry_2;
half_adder HA1(half_sum_1, half_carry_1, a, b);
half_adder HA2(fsum, half_carry_2, half_sum_1, c);
or or1(fcarry_out, half_carry_2, half_carry_1);
endmodule
module four_bit_binary_adder (full_sum_1, full_sum_2, full_sum_3, full_sum_4, carry_out_4, a, b, c, d, e, f, g, h, c_in);
input a, b, c, d,e,f,g,h, c_in;
output full_sum_1, full_sum_2, full_sum_3, full_sum_4, carry_out_4;
wire full_carry_1, full_carry_2, full_carry_3;
full_adder FA1(full_sum_1, full_carry_1, a, e, c_in);
full_adder FA2(full_sum_2, full_carry_2, b, f , full_carry_1);
full_adder FA3(full_sum_3, full_carry_3, c, g , full_carry_2);
full_adder FA4(full_sum_4, carry_out_4 , d, h, full_carry_3);
endmodule
module testbench_4_bit_binary_adder;
reg A,B,C,D,E,F,G,H,C_in;
wire a,b,c,d,e,f,g;
four_bit_binary_adder t6(S0,S1,S2,S3,C_out,A,B,C,D,E,F,G,H,C_in);
initial
begin
#100 A=1'B0;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B1;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B1;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B0;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
#100 A=1'B0;B=1'B1;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
end
endmodule
Это мой код Verilog. Сначала я инстанцировал половину сумматора в полном сумматоре, а затем инстанцировал полный сумматор в четырехбитном сумматоре и создал тестовый стенд для моделирования. Он компилируется, но я не могу получить точную форму волны из него. Я не могу понять, если проблема в дизайне или испытательном стенде.