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 the initial
block. Move the code out of the initial
block into its own always
block:
always @* if (V == 1) $display($time, " overflow");
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:
integer i, j;
initial begin
for (i=0; i<16; i=i+1) begin
for (j=0; j<16; j=j+1) begin
A = i;
B = j;
#10;
end
end
end