// // Title : 16-bit ALU test fixture // Design : Homework 6 // Author : Carl Ebeling // Company : CSE 370 // //------------------------------------------------------------------------------------------------- // // File : alu16_tf.v // // Description : This test fixture tests the 16-bit ALU // Execute for 100000 ns. //------------------------------------------------------------------------------------------------- `timescale 1ns / 1ns module alu16_tf (A, B, op, Result); output [15:0] A, B; // Data input to ALU output [2:0] op; // ALU op code input [15:0] Result; // Result of ALU reg [15:0] A, B; // Data input to ALU reg [2:0] op; // ALU op code integer errors; integer count; reg [15:0] good; parameter ADD = 0, SUB = 6, INC = 2, PASSA = 3, XOR = 1; initial begin errors = 0; // Perform 10,000 random tests: for (count = 0; count < 10000; count = count + 1) begin A = $random; if ($random & 1'b1) B = ~A; else B = $random; op = $random; // Don't waste time on unused op codes while ((op == 4) || (op == 7) || (op == 5)) op = $random; #12 case (op) ADD : good = A + B; SUB : good = B - A; INC : good = A + 1; PASSA : good = A; XOR : good = A ^ B; endcase if (Result !== good) begin $display("***Error*** A:%b, B:%b, op:%d, Result:%b", A, B, op, Result); $display(" Result should be:%b", good); errors = errors + 1; $stop; end end if (errors == 0) $display("Test passed - No errors!!"); else $display("**** %d Errors****", errors); end endmodule