I am working on 4-bit adder/subtractor (depends on my input). I used 4-bit ripple carry adder method to achieve that. I am testbenching all 4-bit numbers so there is a overflow in some cases. I want the testbench to $display("overflow")
whenever the overflow appears as 1 on output. I am attaching the testbench code here.
module yxz;
reg [3:0] A;
reg [3:0] B;
wire [3:0] S;
reg Op;
wire V;
U2_add_sub xyz(.A(A), .B(B), .S(S), .Op(Op), .V(V));
initial begin
Op = 0; // Op = 0 ->adder; Op = 1 ->subtractor
if (V == 1) begin
$display("overflow");
end
A = 4'b0000; B = 4'b0000; #10
A = 4'b0000; B = 4'b0001; #10
A = 4'b0000; B = 4'b0010; #10
A = 4'b0000; B = 4'b0011; #10
A = 4'b0000; B = 4'b0100; #10
A = 4'b0000; B = 4'b0101; #10
A = 4'b0000; B = 4'b0110; #10
A = 4'b0000; B = 4'b0111; #10
A = 4'b0000; B = 4'b1000; #10
A = 4'b0000; B = 4'b1001; #10
A = 4'b0000; B = 4'b1010; #10
A = 4'b0000; B = 4'b1011; #10
A = 4'b0000; B = 4'b1100; #10
A = 4'b0000; B = 4'b1101; #10
A = 4'b0000; B = 4'b1110; #10
A = 4'b0000; B = 4'b1111; #10
A = 4'b0001; B = 4'b0000; #10
A = 4'b0001; B = 4'b0001; #10
A = 4'b0001; B = 4'b0010; #10
A = 4'b0001; B = 4'b0011; #10
A = 4'b0001; B = 4'b0100; #10
A = 4'b0001; B = 4'b0101; #10
A = 4'b0001; B = 4'b0110; #10
A = 4'b0001; B = 4'b0111; #10
A = 4'b0001; B = 4'b1000; #10
A = 4'b0001; B = 4'b1001; #10
A = 4'b0001; B = 4'b1010; #10
A = 4'b0001; B = 4'b1011; #10
A = 4'b0001; B = 4'b1100; #10
A = 4'b0001; B = 4'b1101; #10
A = 4'b0001; B = 4'b1110; #10
A = 4'b0001; B = 4'b1111; #10
A = 4'b0010; B = 4'b0000; #10
A = 4'b0010; B = 4'b0001; #10
A = 4'b0010; B = 4'b0010; #10
A = 4'b0010; B = 4'b0011; #10
A = 4'b0010; B = 4'b0100; #10
A = 4'b0010; B = 4'b0101; #10
A = 4'b0010; B = 4'b0110; #10
A = 4'b0010; B = 4'b0111; #10
A = 4'b0010; B = 4'b1000; #10
A = 4'b0010; B = 4'b1001; #10
A = 4'b0010; B = 4'b1010; #10
A = 4'b0010; B = 4'b1011; #10
A = 4'b0010; B = 4'b1100; #10
A = 4'b0010; B = 4'b1101; #10
A = 4'b0010; B = 4'b1110; #10
A = 4'b0010; B = 4'b1111; #10
A = 4'b0011; B = 4'b0000; #10
A = 4'b0011; B = 4'b0001; #10
A = 4'b0011; B = 4'b0010; #10
A = 4'b0011; B = 4'b0011; #10
A = 4'b0011; B = 4'b0100; #10
A = 4'b0011; B = 4'b0101; #10
A = 4'b0011; B = 4'b0110; #10
A = 4'b0011; B = 4'b0111; #10
A = 4'b0011; B = 4'b1000; #10
A = 4'b0011; B = 4'b1001; #10
A = 4'b0011; B = 4'b1010; #10
A = 4'b0011; B = 4'b1011; #10
A = 4'b0011; B = 4'b1100; #10
A = 4'b0011; B = 4'b1101; #10
A = 4'b0011; B = 4'b1110; #10
A = 4'b0011; B = 4'b1111; #10
A = 4'b0100; B = 4'b0000; #10
A = 4'b0100; B = 4'b0001; #10
A = 4'b0100; B = 4'b0010; #10
A = 4'b0100; B = 4'b0011; #10
A = 4'b0100; B = 4'b0100; #10
A = 4'b0100; B = 4'b0101; #10
A = 4'b0100; B = 4'b0110; #10
A = 4'b0100; B = 4'b0111; #10
A = 4'b0100; B = 4'b1000; #10
A = 4'b0100; B = 4'b1001; #10
A = 4'b0100; B = 4'b1010; #10
A = 4'b0100; B = 4'b1011; #10
A = 4'b0100; B = 4'b1100; #10
A = 4'b0100; B = 4'b1101; #10
A = 4'b0100; B = 4'b1110; #10
A = 4'b0100; B = 4'b1111; #10
A = 4'b0101; B = 4'b0000; #10
A = 4'b0101; B = 4'b0001; #10
A = 4'b0101; B = 4'b0010; #10
A = 4'b0101; B = 4'b0011; #10
A = 4'b0101; B = 4'b0100; #10
A = 4'b0101; B = 4'b0101; #10
A = 4'b0101; B = 4'b0110; #10
A = 4'b0101; B = 4'b0111; #10
A = 4'b0101; B = 4'b1000; #10
A = 4'b0101; B = 4'b1001; #10
A = 4'b0101; B = 4'b1010; #10
A = 4'b0101; B = 4'b1011; #10
A = 4'b0101; B = 4'b1100; #10
A = 4'b0101; B = 4'b1101; #10
A = 4'b0101; B = 4'b1110; #10
A = 4'b0101; B = 4'b1111; #10
A = 4'b0110; B = 4'b0000; #10
A = 4'b0110; B = 4'b0001; #10
A = 4'b0110; B = 4'b0010; #10
A = 4'b0110; B = 4'b0011; #10
A = 4'b0110; B = 4'b0100; #10
A = 4'b0110; B = 4'b0101; #10
A = 4'b0110; B = 4'b0110; #10
A = 4'b0110; B = 4'b0111; #10
A = 4'b0110; B = 4'b1000; #10
A = 4'b0110; B = 4'b1001; #10
A = 4'b0110; B = 4'b1010; #10
A = 4'b0110; B = 4'b1011; #10
A = 4'b0110; B = 4'b1100; #10
A = 4'b0110; B = 4'b1101; #10
A = 4'b0110; B = 4'b1110; #10
A = 4'b0110; B = 4'b1111; #10
A = 4'b0111; B = 4'b0000; #10
A = 4'b0111; B = 4'b0001; #10
A = 4'b0111; B = 4'b0010; #10
A = 4'b0111; B = 4'b0011; #10
A = 4'b0111; B = 4'b0100; #10
A = 4'b0111; B = 4'b0101; #10
A = 4'b0111; B = 4'b0110; #10
A = 4'b0111; B = 4'b0111; #10
A = 4'b0111; B = 4'b1000; #10
A = 4'b0111; B = 4'b1001; #10
A = 4'b0111; B = 4'b1010; #10
A = 4'b0111; B = 4'b1011; #10
A = 4'b0111; B = 4'b1100; #10
A = 4'b0111; B = 4'b1101; #10
A = 4'b0111; B = 4'b1110; #10
A = 4'b0111; B = 4'b1111; #10
A = 4'b1000; B = 4'b0000; #10
A = 4'b1000; B = 4'b0001; #10
A = 4'b1000; B = 4'b0010; #10
A = 4'b1000; B = 4'b0011; #10
A = 4'b1000; B = 4'b0100; #10
A = 4'b1000; B = 4'b0101; #10
A = 4'b1000; B = 4'b0110; #10
A = 4'b1000; B = 4'b0111; #10
A = 4'b1000; B = 4'b1000; #10
A = 4'b1000; B = 4'b1001; #10
A = 4'b1000; B = 4'b1010; #10
A = 4'b1000; B = 4'b1011; #10
A = 4'b1000; B = 4'b1100; #10
A = 4'b1000; B = 4'b1101; #10
A = 4'b1000; B = 4'b1110; #10
A = 4'b1000; B = 4'b1111; #10
A = 4'b1001; B = 4'b0000; #10
A = 4'b1001; B = 4'b0001; #10
A = 4'b1001; B = 4'b0010; #10
A = 4'b1001; B = 4'b0011; #10
A = 4'b1001; B = 4'b0100; #10
A = 4'b1001; B = 4'b0101; #10
A = 4'b1001; B = 4'b0110; #10
A = 4'b1001; B = 4'b0111; #10
A = 4'b1001; B = 4'b1000; #10
A = 4'b1001; B = 4'b1001; #10
A = 4'b1001; B = 4'b1010; #10
A = 4'b1001; B = 4'b1011; #10
A = 4'b1001; B = 4'b1100; #10
A = 4'b1001; B = 4'b1101; #10
A = 4'b1001; B = 4'b1110; #10
A = 4'b1001; B = 4'b1111; #10
A = 4'b1010; B = 4'b0000; #10
A = 4'b1010; B = 4'b0001; #10
A = 4'b1010; B = 4'b0010; #10
A = 4'b1010; B = 4'b0011; #10
A = 4'b1010; B = 4'b0100; #10
A = 4'b1010; B = 4'b0101; #10
A = 4'b1010; B = 4'b0110; #10
A = 4'b1010; B = 4'b0111; #10
A = 4'b1010; B = 4'b1000; #10
A = 4'b1010; B = 4'b1001; #10
A = 4'b1010; B = 4'b1010; #10
A = 4'b1010; B = 4'b1011; #10
A = 4'b1010; B = 4'b1100; #10
A = 4'b1010; B = 4'b1101; #10
A = 4'b1010; B = 4'b1110; #10
A = 4'b1010; B = 4'b1111; #10
A = 4'b1011; B = 4'b0000; #10
A = 4'b1011; B = 4'b0001; #10
A = 4'b1011; B = 4'b0010; #10
A = 4'b1011; B = 4'b0011; #10
A = 4'b1011; B = 4'b0100; #10
A = 4'b1011; B = 4'b0101; #10
A = 4'b1011; B = 4'b0110; #10
A = 4'b1011; B = 4'b0111; #10
A = 4'b1011; B = 4'b1000; #10
A = 4'b1011; B = 4'b1001; #10
A = 4'b1011; B = 4'b1010; #10
A = 4'b1011; B = 4'b1011; #10
A = 4'b1011; B = 4'b1100; #10
A = 4'b1011; B = 4'b1101; #10
A = 4'b1011; B = 4'b1110; #10
A = 4'b1011; B = 4'b1111; #10
A = 4'b1100; B = 4'b0000; #10
A = 4'b1100; B = 4'b0001; #10
A = 4'b1100; B = 4'b0010; #10
A = 4'b1100; B = 4'b0011; #10
A = 4'b1100; B = 4'b0100; #10
A = 4'b1100; B = 4'b0101; #10
A = 4'b1100; B = 4'b0110; #10
A = 4'b1100; B = 4'b0111; #10
A = 4'b1100; B = 4'b1000; #10
A = 4'b1100; B = 4'b1001; #10
A = 4'b1100; B = 4'b1010; #10
A = 4'b1100; B = 4'b1011; #10
A = 4'b1100; B = 4'b1100; #10
A = 4'b1100; B = 4'b1101; #10
A = 4'b1100; B = 4'b1110; #10
A = 4'b1100; B = 4'b1111; #10
A = 4'b1101; B = 4'b0000; #10
A = 4'b1101; B = 4'b0001; #10
A = 4'b1101; B = 4'b0010; #10
A = 4'b1101; B = 4'b0011; #10
A = 4'b1101; B = 4'b0100; #10
A = 4'b1101; B = 4'b0101; #10
A = 4'b1101; B = 4'b0110; #10
A = 4'b1101; B = 4'b0111; #10
A = 4'b1101; B = 4'b1000; #10
A = 4'b1101; B = 4'b1001; #10
A = 4'b1101; B = 4'b1010; #10
A = 4'b1101; B = 4'b1011; #10
A = 4'b1101; B = 4'b1100; #10
A = 4'b1101; B = 4'b1101; #10
A = 4'b1101; B = 4'b1110; #10
A = 4'b1101; B = 4'b1111; #10
A = 4'b1110; B = 4'b0000; #10
A = 4'b1110; B = 4'b0001; #10
A = 4'b1110; B = 4'b0010; #10
A = 4'b1110; B = 4'b0011; #10
A = 4'b1110; B = 4'b0100; #10
A = 4'b1110; B = 4'b0101; #10
A = 4'b1110; B = 4'b0110; #10
A = 4'b1110; B = 4'b0111; #10
A = 4'b1110; B = 4'b1000; #10
A = 4'b1110; B = 4'b1001; #10
A = 4'b1110; B = 4'b1010; #10
A = 4'b1110; B = 4'b1011; #10
A = 4'b1110; B = 4'b1100; #10
A = 4'b1110; B = 4'b1101; #10
A = 4'b1110; B = 4'b1110; #10
A = 4'b1110; B = 4'b1111; #10
A = 4'b1111; B = 4'b0000; #10
A = 4'b1111; B = 4'b0001; #10
A = 4'b1111; B = 4'b0010; #10
A = 4'b1111; B = 4'b0011; #10
A = 4'b1111; B = 4'b0100; #10
A = 4'b1111; B = 4'b0101; #10
A = 4'b1111; B = 4'b0110; #10
A = 4'b1111; B = 4'b0111; #10
A = 4'b1111; B = 4'b1000; #10
A = 4'b1111; B = 4'b1001; #10
A = 4'b1111; B = 4'b1010; #10
A = 4'b1111; B = 4'b1011; #10
A = 4'b1111; B = 4'b1100; #10
A = 4'b1111; B = 4'b1101; #10
A = 4'b1111; B = 4'b1110; #10
A = 4'b1111; B = 4'b1111;
$monitor($time, ": %b + %b = %b, %b", A, B, S, Op, V);
end
endmodule
Your testbench currently only checks if
V
is 1 at time 0 because the check is done only once in theinitial
block. Move the code out of theinitial
block into its ownalways
block:Every time
V
changes, the check will be done. I added$time
to your message because it is helpful for debugging.You can simplify your testbench using
for
loops: