Files
IC_PRJ/tb/tb_frame_arbiter.v

102 lines
2.0 KiB
Coq
Raw Normal View History

module tb_frame_arbiter;
reg clk;
reg rst_n;
reg [159:0] wframe_data;
reg wframe_valid;
wire wframe_ready;
reg [159:0] rframe_data;
reg rframe_valid;
wire rframe_ready;
wire [152:0] axi2array_frame_data;
wire axi2array_frame_valid;
reg axi2array_frame_ready;
reg mc_work_en;
reg [1:0] axi_bus_rw_priority;
frame_arbiter u_frame_arbiter(
.clk (clk),
.rst_n (rst_n),
.wframe_data (wframe_data),
.wframe_valid (wframe_valid),
.wframe_ready (wframe_ready),
.rframe_data (rframe_data),
.rframe_valid (rframe_valid),
.rframe_ready (rframe_ready),
.axi2array_frame_data(axi2array_frame_data),
.axi2array_frame_valid(axi2array_frame_valid),
.axi2array_frame_ready(axi2array_frame_ready),
.mc_work_en(mc_work_en),
.axi_bus_rw_priority(axi_bus_rw_priority)
);
task wframe;
input [159:0] wdata;
begin
@(posedge clk) begin
wframe_data <= wdata;
wframe_valid <= 1'b1;
end
#0.1;
wait(wframe_ready);
@(posedge clk) begin
wframe_valid <= 1'b0;
end
end
endtask
task rframe;
input [159:0] rdata;
begin
@(posedge clk) begin
rframe_data <= rdata;
rframe_valid <= 1'b1;
end
#0.1;
wait(rframe_ready);
@(posedge clk) begin
rframe_valid <= 1'b0;
end
end
endtask
initial begin
clk = 0;
forever begin
#10; clk = ~clk;
end
end
initial begin
rst_n = 'd0;
wframe_data = 'd0;
wframe_valid = 'd0;
rframe_data = 'd0;
rframe_valid = 'd0;
axi2array_frame_ready = 1'b1;
mc_work_en = 1'b1;
axi_bus_rw_priority = 2'b01;
@(posedge clk) begin
rst_n <= 1'b1;
end
wframe({152'd3,8'd5});
wframe({152'd4,8'd5});
wframe({152'd5,8'd5});
rframe({152'd6,8'd1});
fork
wframe({152'd7,8'd1});
rframe({152'd8,8'd1});
join
$fsdbDumpfile("tb.fsdb");
$fsdbDumpvars(0,tb_frame_arbiter,"+all");
#10
$finish;
end
endmodule