testbench.v 1.45 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
module testbench;
    reg clk;

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

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

        $display("OKAY");    
    end
   
    
    reg [24:0] dinA;
    reg [17:0] dinB;
    reg carryin;
    reg rst;
22
	wire [47:0] p;
23

24
    top uut_macc (
25 26 27 28 29 30 31 32 33 34 35 36 37
        .p (p),
        .a (dinA),
        .b (dinB),
        .carryin (carryin ),
        .clk (clk),
        .rst (rst)
    );
    
    initial begin
        rst <= 0;
        #5
        rst <= 1;
        #5
38 39 40
        
        @(posedge clk);
        
41 42 43
        dinA <= 38;
        dinB <= 22;
        carryin <= 1;
44 45 46
        
        repeat (10) @(posedge clk);
        
47 48 49
        dinA <= 0;
        dinB <= 0;
        carryin <= 0;
50 51 52
        
        repeat (10) @(posedge clk);
        
53 54 55
        dinA <= 33;
        dinB <= 12;
        carryin <= 0;
56 57 58
        
        repeat (10) @(posedge clk);
        
59 60 61 62
        dinA <= 0;
        dinB <= 0;
        carryin <= 0;
    end
63
	
64
	uut_macc_checker macc_check(.clk(clk), .A(dinA), .B(dinB), .C(carryin), .P(p));
65 66 67 68
  
endmodule


69
module uut_macc_checker(input clk, input [24:0] A, input [17:0] B, input C, input [47:0] P);
70 71 72
	reg [47:0] p;
	always @(posedge clk)
    begin
73 74
		#20
		p <= (A * B) + C; 
75 76
        if (P != p)
        begin
77
            $display("ERROR: ASSERTION FAILED in %m:",$time," ",P," ",p);
Miodrag Milanovic committed
78
            $stop;
79 80
        end
    end
81
endmodule