module tb_register_file();
reg clk;
reg [4:0] a1, a2, a3;
wire [31:0] rd1, rd2;
reg we3;
reg [31:0] wd3;
register_file uut(
.clk(clk),
.a1(a1),
.a2(a2),
.a3(a3),
.we3(we3),
.wd3(wd3),
.rd1(rd1),
.rd2(rd2)
);
initial begin
clk = 0;
forever #5 clk = ~clk;
end
initial begin
$dumpfile("waves/tb_register_file.vcd");
$dumpvars;
a1 = 0;
a2 = 0;
a3 = 0;
#10 // r0 is always 0, even on write
a3 = 0;
wd3 = 200;
we3 = 1;
#10 // r1 is writable
a3 = 1;
a1 = 1;
#10 // r2 is writable
a3 = 2;
a2 = 2;
#10 // r1 is overridable
a3 = 1;
wd3 = 100;
#10 // r1 is not overriden if not we
wd3 = 150;
we3 = 0;
#10
a2 = 1;
a1 = 2;
#10 $finish;
end
endmodule