testbench.v 1.09 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
module testbench;
    reg clk;

    initial begin
       // $dumpfile("testbench.vcd");
       // $dumpvars(0, testbench);

        #0 clk = 0;
        repeat (10000) begin
            #5 clk = 1;
            #5 clk = 0;
        end

        $display("OKAY");
    end


	reg [63:0] A, B, C, D = 0;
	reg [127:0] E, F = 0;
	reg [127:0] X_p, Y_p;
	wire [127:0] X,Y;

    always @(posedge clk)
    begin
		A = A + 248;
		B = B + 338;
		C = C + 435;
		D = D + 282;
		E = E + 1248;
		F = F + 2148;
    end


    integer i;
        always @* begin
                X_p = A*B + E;
                Y_p = F;
                for (i = 0; i < 64; i=i+1)
                        Y_p = Y_p + C[i]*D[i];
        end

	top uut (A,B,C,D,E,F,X,Y);

	uut_checker X_test(.clk(clk), .A(X), .B(X_p));
	uut_checker Y_test(.clk(clk), .A(Y), .B(Y_p));

endmodule

module uut_checker(input clk, input [127:0] A, input [127:0] B);
    always @(posedge clk)
    begin
        #1;
        if (A != B)
        begin
            $display("ERROR: ASSERTION FAILED in %m:",$time,"      ",A," != ",B);
            $stop;
        end
    end
endmodule