// Verilog : 32x24[bits] Multiplier Test for Simulation // generated by Multiplier Generator // Copyright 2003 Mitsuru Nishibe (Takagi Lab.) `timescale 1ns / 1ns `include "mac56_32x24.v" module test; reg [31:0]in1; reg [23:0]in2; reg [31:0]in3; wire [55:0]out; wire [55:0]x1,x2,x3,xout,xd; assign x1={24'b0,in1},x2={32'b0,in2},x3={in3,24'b0},xout=(x3+(x1*x2))>>0; assign xd=out>xout?out-xout:xout-out; mac56_32x24 mac(out,in1,in2,in3); initial begin $monitor( "%x * %x + %x = %x(%x) %d(%s)",in1,in2,in3,out,xout[55:0],xd,out>xout? "+":"-" ); in1 = 32'b11001000001111111010100100100110; in2 = 24'b101011101101101110100111; in3 = 32'b11100100000000010100011011000000; #10 in1 = 32'b10010110001111100010101100011110; in2 = 24'b001011101000100011111111; in3 = 32'b11101000001001010101011100100001; #10 in1 = 32'b01001011000011010111011010110110; in2 = 24'b010001101111110100000001; in3 = 32'b10110000010101100100010000111000; #10 in1 = 32'b10011110011000111011110101001100; in2 = 24'b101101001101101001111011; in3 = 32'b11011110010010010101111100011010; #10 in1 = 32'b00100011101001011000110100001101; in2 = 24'b011000000110110110100100; in3 = 32'b11011110101110111100000010100011; #10 in1 = 32'b10011000101100001001100010010001; in2 = 24'b010110010011101110100010; in3 = 32'b11110000001111100001010101001110; #10 in1 = 32'b01101010111000101010100011000101; in2 = 24'b111100101011111110011000; in3 = 32'b00110111111010100111111000110011; #10 in1 = 32'b10100101001011110011000101011000; in2 = 24'b100111001011011010001101; in3 = 32'b01111001101111101011111001010010; #10 in1 = 32'b10001101110101100011100001111001; in2 = 24'b001011100010111010100011; in3 = 32'b00010111110111011011111100001000; #10 in1 = 32'b00110001011010110011100100111110; in2 = 24'b010011000000110100111001; in3 = 32'b00000001110111100000110000101010; #10 in1 = 32'b00111000000110101101100100011101; in2 = 24'b011111001101001010011111; in3 = 32'b11001011110100001000011111001010; #10 in1 = 32'b01101011000011011111010100110001; in2 = 24'b101011000001100010101101; in3 = 32'b01101100001110000100010001001010; #10 in1 = 32'b10001011010010000100001110010000; in2 = 24'b010000110101010100110100; in3 = 32'b01011010000001011111100010101011; #10 in1 = 32'b01011010101000111110110000110100; in2 = 24'b000010011111111100110010; in3 = 32'b10111100010000010001100001000101; #10 in1 = 32'b11110010100100010101100010100010; in2 = 24'b100011101010100001000100; in3 = 32'b11101001010101101101010111100101; #10 in1 = 32'b00111111000010110001011111110000; in2 = 24'b010010101000000101110110; in3 = 32'b00011010111100100000100101100001; #10 in1 = 32'b00001010011111100011011000110010; in2 = 24'b011110010100011101100101; in3 = 32'b11110100000101110000101101000111; #10 in1 = 32'b00110001010001010000100100101101; in2 = 24'b110000101011110011011001; in3 = 32'b10011100100011100110011111000110; #10 in1 = 32'b01100111110000111011011100100100; in2 = 24'b011111101100011000100011; in3 = 32'b01110110010111100100100101101010; #10 in1 = 32'b00011111011110011110110110011011; in2 = 24'b001011010000100100101010; in3 = 32'b11000001001101001111001110010101; #10 in1 = 32'b01011110100010010011111011111011; in2 = 24'b100111010001100011010100; in3 = 32'b11111101100100111010001010100010; #10 in1 = 32'b00000100011010011010101011001010; in2 = 24'b100000100011111011111101; in3 = 32'b11101100001100101101001010001110; #10 in1 = 32'b11101001101011100111111011011000; in2 = 24'b010011001110111111110110; in3 = 32'b01111010000110001001100101100011; #10 in1 = 32'b10010111100010001101000101100111; in2 = 24'b101010111101011000110010; in3 = 32'b01110001110111111101110011111000; #10 in1 = 32'b01101110110101101110000100100110; in2 = 24'b101000011111101101110101; in3 = 32'b00010110110110110101011110100011; #10 in1 = 32'b11010101100101001010000110100100; in2 = 24'b011111010011100101010010; in3 = 32'b00101101011110010111001000010101; #10 in1 = 32'b00001001111000000110011001111011; in2 = 24'b100110000110100110110111; in3 = 32'b00101100111101010111101110111001; #10 in1 = 32'b11111101000101001000011011010000; in2 = 24'b011100011101011010111101; in3 = 32'b00101011111101011110101101001010; #10 in1 = 32'b01010100110101001011100010110000; in2 = 24'b011011111000110010010010; in3 = 32'b01011101011011011001100001011010; #10 in1 = 32'b10101010110111101101101001001001; in2 = 24'b110100100101011101010001; in3 = 32'b00111001101011111011011110110011; #10 in1 = 32'b10100001100010101100110111100001; in2 = 24'b110000001010010110000010; in3 = 32'b00100000110010010001000110110010; #10 in1 = 32'b00101011110101011100011011101010; in2 = 24'b101000110110011111011001; in3 = 32'b01010101100110101110100010010111; #10 $finish; end endmodule