60 lines
2.0 KiB
Coq
60 lines
2.0 KiB
Coq
|
|
/*
|
||
|
|
Registros
|
||
|
|
*/
|
||
|
|
`include "./register_file/register_file.v"
|
||
|
|
module register_file_tb;
|
||
|
|
reg clk, rst, wr_en;
|
||
|
|
reg [3:0] wr_addr;
|
||
|
|
reg [15:0] wr_data;
|
||
|
|
reg [3:0] rd_addr1, rd_addr2;
|
||
|
|
wire [15:0] rd_value1, rd_value2;
|
||
|
|
|
||
|
|
register_file register(
|
||
|
|
.clk(clk),
|
||
|
|
.rst(rst),
|
||
|
|
.wr_addr(wr_addr),
|
||
|
|
.wr_data(wr_data),
|
||
|
|
.wr_en(wr_en),
|
||
|
|
.rd_addr1(rd_addr1),
|
||
|
|
.rd_data1(rd_value1),
|
||
|
|
.rd_addr2(rd_addr2),
|
||
|
|
.rd_data2(rd_value2)
|
||
|
|
);
|
||
|
|
|
||
|
|
initial clk = 0;
|
||
|
|
always #5 clk = ~clk;
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
$dumpfile("register_file/register_file.vcd");
|
||
|
|
$dumpvars(0, register_file_tb);
|
||
|
|
|
||
|
|
rst = 1; wr_en = 0; wr_addr = 0; wr_data = 0;
|
||
|
|
rd_addr1 = 0; rd_addr2 = 0;
|
||
|
|
@(posedge clk);
|
||
|
|
$display("rst=%b, wr_en=%b, wr_add=%d, wr_data=%d", rst, wr_en, wr_addr, wr_data);
|
||
|
|
$display("rd_addr1=%d, rd_addr2=%d, rd_value1=%d, rd_value2=%d", rd_addr1, rd_addr2, rd_value1, rd_value2);
|
||
|
|
|
||
|
|
rst = 0;
|
||
|
|
@(posedge clk);
|
||
|
|
$display("rst=%b, wr_en=%b, wr_add=%d, wr_data=%d", rst, wr_en, wr_addr, wr_data);
|
||
|
|
$display("rd_addr1=%d, rd_addr2=%d, rd_value1=%d, rd_value2=%d", rd_addr1, rd_addr2, rd_value1, rd_value2);
|
||
|
|
|
||
|
|
wr_en = 1; wr_addr = 1; wr_data = 16'hBEEF;
|
||
|
|
@(posedge clk);
|
||
|
|
$display("rst=%b, wr_en=%b, wr_add=%d, wr_data=%d", rst, wr_en, wr_addr, wr_data);
|
||
|
|
$display("rd_addr1=%d, rd_addr2=%d, rd_value1=%d, rd_value2=%d", rd_addr1, rd_addr2, rd_value1, rd_value2);
|
||
|
|
|
||
|
|
wr_en = 0;
|
||
|
|
@(posedge clk);
|
||
|
|
$display("rst=%b, wr_en=%b, wr_add=%d, wr_data=%d", rst, wr_en, wr_addr, wr_data);
|
||
|
|
$display("rd_addr1=%d, rd_addr2=%d, rd_value1=%d, rd_value2=%d", rd_addr1, rd_addr2, rd_value1, rd_value2);
|
||
|
|
|
||
|
|
rd_addr1 = 1;
|
||
|
|
@(posedge clk);
|
||
|
|
$display("rst=%b, wr_en=%b, wr_add=%d, wr_data=%d", rst, wr_en, wr_addr, wr_data);
|
||
|
|
$display("rd_addr1=%d, rd_addr2=%d, rd_value1=%d, rd_value2=%d", rd_addr1, rd_addr2, rd_value1, rd_value2);
|
||
|
|
|
||
|
|
repeat(100) @(posedge clk);
|
||
|
|
$finish;
|
||
|
|
end
|
||
|
|
endmodule
|