mirror of
https://github.com/olofk/serv.git
synced 2026-01-21 17:55:16 +00:00
46 lines
924 B
Verilog
46 lines
924 B
Verilog
module serv_top_tb;
|
|
reg clk = 1'b1;
|
|
always #5 clk <= !clk;
|
|
|
|
vlog_tb_utils vtu();
|
|
|
|
reg [1023:0] firmware_file;
|
|
reg [31:0] memory [0:16383];
|
|
|
|
reg [31:0] i_data;
|
|
reg i_valid = 1'b0;
|
|
wire i_ready;
|
|
|
|
wire [31:0] pc_data;
|
|
wire pc_valid;
|
|
reg pc_ready = 1'b0;
|
|
|
|
|
|
initial begin
|
|
firmware_file = "firmware.hex";
|
|
$readmemh(firmware_file, memory);
|
|
end
|
|
|
|
always @(posedge clk) begin
|
|
pc_ready <= 1'b1; //Fuck knows
|
|
|
|
if (i_valid & i_ready)
|
|
i_valid <= 1'b0;
|
|
if (pc_valid & pc_ready) begin
|
|
i_data <= memory[pc_data>>2];
|
|
i_valid <= 1'b1;
|
|
pc_ready <= 1'b0;
|
|
end
|
|
end
|
|
|
|
serv_top dut
|
|
(.clk (clk),
|
|
.i_i_data (i_data),
|
|
.i_i_valid (i_valid),
|
|
.o_i_ready (i_ready),
|
|
.o_pc_data (pc_data),
|
|
.o_pc_valid (pc_valid),
|
|
.i_pc_ready (pc_ready));
|
|
|
|
endmodule
|