testbench.v 1.54 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
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 [4:0] a;
    reg [4:0] b;    
    reg [4:0] c;
    reg rst;
    wire [4:0] x;
    wire [4:0] y;
    wire [4:0] z;
        
26
    top uut_fsm (
27 28 29 30 31 32 33 34 35 36 37
        .clk (clk),
        .rst (rst),
        .a (a),
        .b (b),
        .c (c),
        .x(x),
        .y(y),
        .z(z)
    );
    
    initial begin
38
		rst <= 0;
39 40 41
        #5
        rst <= 1;
        #5
42 43
        rst <= 0;
        #5
44 45 46
        
        @(posedge clk);
        
47 48 49
        a <= 4'b1111;
        b <= 4'b1010;        
        c <= 4'b1011;
50 51 52
        
        repeat (10) @(posedge clk);
        
53 54 55
        a <= 4'b1000;
        b <= 4'b1100;        
        c <= 4'b1010;
56 57 58
        
        repeat (10) @(posedge clk);
        
59 60 61
        a <= 4'b1100;
        b <= 4'b0100;
        c <= 4'b1011;
62 63 64
        
        repeat (10) @(posedge clk);
        
65 66 67 68 69
        a <= 4'b1101;
        b <= 4'b1110;
        c <= 4'b0000;
    end
    
70 71 72
    uut_fsm_checker x_test(.clk(clk), .A(x));
	uut_fsm_checker y_test(.clk(clk), .A(y));
	uut_fsm_checker z_test(.clk(clk), .A(z));
73 74 75 76
  
endmodule


77
module uut_fsm_checker(input clk, input [4:0] A);
78 79 80 81 82
    always @(posedge clk)
    begin
        //#1;
        if (A == 4'b0000)
        begin
83 84
            $display("ERROR: ASSERTION FAILED in %m:",$time," ",A);
            $stop;
85 86
        end
    end
87
endmodule