//-------------------------------------------------------------------------------------------------- // // Title : addsub4_tf // Design : // Author : // Company : // //------------------------------------------------------------------------------------------------- // // File : test_fixture.v // Generated : Wed Aug 14 09:03:05 2002 // From : interface description file // By : Itf2Vhdl ver. 1.20 // //------------------------------------------------------------------------------------------------- // // Description : This test fixture takes input from a 4-bit Ripple Add or Subtract and compares the sum from // adder with the expected sum. Additionally, it accepts an overflow input and signals // when an overflow occurs. // // Note: negative numbers will be printed to the screen in decimal form, therefore, // they may appear incorrect but this will not affect comparisons (i.e. -1 will print // to the screen as 15 since it will interpret the twos compliment version of 1111 as // a decimal 15) of the sum generated by the adder since the output is equivalent to // the twos compliment of the decimal number entered into the code below. If this // seems confusing, change all of the %d symbols to %b, and this will print the binary // version of the numbers to the screen instead of the decimal. // //------------------------------------------------------------------------------------------------- `timescale 1ns / 1ns module addsub4_tf ( A ,B ,AddSub ,Overflow ,Sum ); input Overflow ; wire Overflow ; input [3:0] Sum ; wire [3:0] Sum ; output [3:0] A ; reg [3:0] A ; output [3:0] B ; reg [3:0] B ; output AddSub; reg AddSub; integer results; initial begin results = $fopen("addsub4_tf_output.txt"); if (results == 0) begin $display("Error: Unable to open file."); $finish; end results = results | 1; A = 3; B = 4; AddSub = 0; $fdisplay(results, "Calculating: 3 + 4...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A + B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 1 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = 1; B = 1; AddSub = 1; $fdisplay(results, "Calculating: 1 - 1...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A - B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 2 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = 7; B = -8; AddSub = 0; $fdisplay(results, "Calculating: 7 + -(8)...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A + B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 3 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = -1; B = 1; AddSub = 1; $fdisplay(results, "Calculating: -(1) - 1...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A - B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 4 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = 6; B = 5; AddSub = 0; $fdisplay(results, "Calculating: 6 + 5...\n"); #10 if((Overflow == 1) && (Sum == (A + B))) $fdisplay(results, "Overflow detected!\n Case 5 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); else $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); A = 2; B = 6; AddSub = 1; $fdisplay(results, "Calculating: 2 - 6...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A - B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 6 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = -7; B = 3; AddSub = 0; $fdisplay(results, "Calculating: -(7) + 3...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A + B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 7 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = 7; B = 5; AddSub = 1; $fdisplay(results, "Calculating: 7 - 5...\n"); #10 if(Overflow == 1) $fdisplay(results, "ERROR: undesired Overflow detected A =%d, B =%d, Sum =%d\n", A, B, Sum); else if(Sum != (A - B)) $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); else $fdisplay(results, "Case 8 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); A = 4; B = 4; AddSub = 0; $fdisplay(results, "Calculating: 4 + 4...\n"); #10 if((Overflow == 1) && (Sum == (A +B))) $fdisplay(results, "Overflow detectied!\n Case 9 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); else $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); A = -4; B = 5; AddSub = 1; $fdisplay(results, "Calculating: -(4) - 5...\n"); #10 if((Overflow == 1) && (Sum == (A - B))) $fdisplay(results, "Overflow detected!\n Case 10 Succeeded! A =%d, B =%d, Sum =%d\n", A, B, Sum); else $fdisplay(results, "Error: A=%d, B=%d, Sum=%d\n", A, B, Sum); $fdisplay(results, "END of test."); $fclose(results); end endmodule