Simplified-RISC-V-processor / RegFile_tb.v
RegFile_tb.v
Raw
`include "RegFile.v"

module regFile_tb;

    reg clk;
    reg reset;
    reg [4:0] rs1_addr;
    reg [4:0] rs2_addr;
    reg [4:0] write_addr;
    reg [31:0] write_data;
    reg we;
    wire [31:0] rs1;
    wire [31:0] rs2;
    integer i;

    regFile uut (
        .clk(clk),
        .reset(reset),
        .we(we),
        .rs1_addr(rs1_addr),
        .rs2_addr(rs2_addr),
        .write_addr(write_addr),
        .write_data(write_data),
        .rs1(rs1),
        .rs2(rs2)
    );

    always #5 clk = ~clk;

    initial begin
        $dumpfile("regFile_waveform.vcd");
        $dumpvars(0, regFile_tb);
        clk = 1'b0;
        reset = 1'b1;
        rs1_addr = 0;
        rs2_addr = 0;
        write_addr = 0;
        write_data = 0;
        we = 1'b1;
        i = 0;

        #10
        reset = 1'b0;
        rs1_addr = 5'b1;
        rs2_addr = 5'b11111;

        #10
        we = 1'b1;
        write_addr = 5'b1;
        write_data = 32'b1;
        for(i=0; i<32; i=i+1) begin
            $display("Register %d: %h", i, uut.Reg_mem[i]);
        end

        #10
        we = 1'b1;
        write_addr = 5'b11110;
        write_data = 32'b111111;
        for(i=0; i<32; i=i+1) begin
            $display("Register %d: %h", i, uut.Reg_mem[i]);
        end

        #10
        write_addr = 5'b11101;
        write_data = 32'b111101;
        for(i=0; i<32; i=i+1) begin
            $display("Register %d: %h", i, uut.Reg_mem[i]);
        end

        #10
        $finish;

    end

endmodule