// alu8_grader_tb.v // ALU testbench // ------------------------------------------------------------------ // Copyright (c) 2007 Susan Lysecky, University of Arizona // Permission to copy is granted provided that this header remains // intact. This software is provided with no warranties. // ------------------------------------------------------------------ `timescale 1ns / 1ps module Testbench2; // --------------------------------------------------------------------------- // ALU test module // --------------------------------------------------------------------------- reg [7:0] A_t, B_t; reg x_t, y_t, z_t; wire [7:0] Result_t; wire Overflow_t; ALU8_struct ALU8_struct_1(A_t, B_t, x_t, y_t, z_t, Overflow_t, Result_t); initial begin // ---------------------------------------------- //case xyz = 000, Result = A // ---------------------------------------------- x_t <= 0; y_t <= 0; z_t <= 0; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000000) $display("Error: xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b11110000; B_t <= 8'b00001111; #1 if (Result_t != 8'b11110000) $display("Error: xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b00000000; #1 if (Result_t != 8'b11111111) $display("Error: xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11111111; #1 if (Result_t != 8'b11111111) $display("Error: xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 001, Result = B // ---------------------------------------------- x_t <= 0; y_t <= 0; z_t <= 1; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000000) $display("Error: xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b11110000; B_t <= 8'b01001111; #1 if (Result_t != 8'b01001111) $display("Error: xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11110000; #1 if (Result_t != 8'b11110000) $display("Error: xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b11001111; B_t <= 8'b11111111; #1 if (Result_t != 8'b11111111) $display("Error: xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 010, Result = A + B // ---------------------------------------------- x_t <= 0; y_t <= 1; z_t <= 0; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000000) $display("Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b00000110; B_t <= 8'b00000100; #1 if (Result_t != 8'b00001010) $display("Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b00000001; B_t <= 8'b00001111; #1 if (Result_t != 8'b00010000) $display("Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); A_t <= 8'b00110000; B_t <= 8'b00010000; #1 if (Result_t != 8'b01000000) $display("Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); A_t <= 8'b00010001; B_t <= 8'b00010001; #1 if (Result_t != 8'b00100010) $display("Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); A_t <= 8'b01111111; B_t <= 8'b00000001; #1 if (Result_t != 8'b10000000) $display("Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); if (Overflow_t != 1) $display("Overflow Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); A_t <= 8'b11111100; B_t <= 8'b11111011; #1 if (Result_t != 8'b11110111) $display("Error: Case xyz = %b%b%b, Case 7", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 7", x_t, y_t, z_t); A_t <= 8'b10010000; B_t <= 8'b00010000; #1 if (Result_t != 8'b10100000) $display("Error: Case xyz = %b%b%b, Case 8", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 8", x_t, y_t, z_t); A_t <= 8'b10011100; B_t <= 8'b11001110; #1 if (Result_t != 8'b01101010) $display("Error: Case xyz = %b%b%b, Case 9", x_t, y_t, z_t); if (Overflow_t != 1) $display("Overflow Error: Case xyz = %b%b%b, Case 9", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11111111; #1 if (Result_t != 8'b11111110) $display("Error: Case xyz = %b%b%b, Case 10", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 10", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 011, Result = A - B // ---------------------------------------------- x_t <= 0; y_t <= 1; z_t <= 1; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000000) $display("Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11111111; #1 if (Result_t != 8'b0000) $display("Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b00000111; B_t <= 8'b00000010; #1 if (Result_t != 8'b00000101) $display("Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b00010001; B_t <= 8'b00000100; #1 if (Result_t != 8'b00001101) $display("Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); A_t <= 8'b11100111; B_t <= 8'b11111011; #1 if (Result_t != 8'b11101100) $display("Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); A_t <= 8'b11011000; B_t <= 8'b11001110; #1 if (Result_t != 8'b00001010) $display("Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); A_t <= 8'b00001010; B_t <= 8'b00110010; #1 if (Result_t != 8'b11011000) $display("Case xyz = %b%b%b, Case 7", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 7", x_t, y_t, z_t); A_t <= 8'b01111100; B_t <= 8'b11110000; #1 if (Result_t != 8'b10001100) $display("Case xyz = %b%b%b, Case 8", x_t, y_t, z_t); if (Overflow_t != 1) $display("Overflow Error: Case xyz = %b%b%b, Case 8", x_t, y_t, z_t); A_t <= 8'b00110001; B_t <= 8'b11111101; #1 if (Result_t != 8'b00110100) $display("Case xyz = %b%b%b, Case 9", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 9", x_t, y_t, z_t); A_t <= 8'b10000000; B_t <= 8'b00001010; #1 if (Result_t != 8'b01110110) $display("Case xyz = %b%b%b, Case 10", x_t, y_t, z_t); if (Overflow_t != 1) $display("Overflow Error: Case xyz = %b%b%b, Case 10", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 100, Result = A + 1 // ---------------------------------------------- x_t <= 1; y_t <= 0; z_t <= 0; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000001) $display("Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11111111; #1 if (Result_t != 8'b00000000) $display("Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b00000110; B_t <= 8'b00000001; #1 if (Result_t != 8'b00000111) $display("Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b00001111; B_t <= 8'b00000001; #1 if (Result_t != 8'b00010000) $display("Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); A_t <= 8'b01111111; B_t <= 8'b00111100; #1 if (Result_t != 8'b10000000) $display("Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); if (Overflow_t != 1) $display("Overflow Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); A_t <= 8'b10100111; B_t <= 8'b11001100; #1 if (Result_t != 8'b10101000) $display("Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 101, Result = A' // ---------------------------------------------- x_t <= 1; y_t <= 0; z_t <= 1; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b11111111) $display("Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11100001; #1 if (Result_t != 8'b00000000) $display("Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b01101111; B_t <= 8'b01010000; #1 if (Result_t != 8'b10010000) $display("Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b11001100; B_t <= 8'b01100110; #1 if (Result_t != 8'b00110011) $display("xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 110, Result = A AND B // ---------------------------------------------- x_t <= 1; y_t <= 1; z_t <= 0; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000000) $display("Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b00000000; B_t <= 8'b00001111; #1 if (Result_t != 8'b00000000) $display("Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b00000110; B_t <= 8'b00000010; #1 if (Result_t != 8'b00000010) $display("Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b00001010; B_t <= 8'b00001111; #1 if (Result_t != 8'b00001010) $display("Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); A_t <= 8'b10011001; B_t <= 8'b11110000; #1 if (Result_t != 8'b10010000) $display("Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); A_t <= 8'b11110000; B_t <= 8'b10001101; #1 if (Result_t != 8'b10000000) $display("Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11111111; #1 if (Result_t != 8'b11111111) $display("Error: Case xyz = %b%b%b, Case 7", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 7", x_t, y_t, z_t); // ---------------------------------------------- //case xyz = 111, Result = A OR B // ---------------------------------------------- x_t <= 1; y_t <= 1; z_t <= 1; A_t <= 8'b00000000; B_t <= 8'b00000000; #1 if (Result_t != 8'b00000000) $display("Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 1", x_t, y_t, z_t); A_t <= 8'b00000000; B_t <= 8'b00001111; #1 if (Result_t != 8'b00001111) $display("Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 2", x_t, y_t, z_t); A_t <= 8'b00000110; B_t <= 8'b00000010; #1 if (Result_t != 8'b00000110) $display("Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 3", x_t, y_t, z_t); A_t <= 8'b10101010; B_t <= 8'b00001111; #1 if (Result_t != 8'b10101111) $display("Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 4", x_t, y_t, z_t); A_t <= 8'b11110000; B_t <= 8'b10100000; #1 if (Result_t != 8'b11110000) $display("Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 5", x_t, y_t, z_t); A_t <= 8'b11111111; B_t <= 8'b11111111; #1 if (Result_t != 8'b11111111) $display("Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); if (Overflow_t != 0) $display("Overflow Error: Case xyz = %b%b%b, Case 6", x_t, y_t, z_t); end endmodule