106 lines
2.0 KiB
Coq
106 lines
2.0 KiB
Coq
![]() |
module tb_rchannel;
|
||
|
reg clk;
|
||
|
reg rst_n;
|
||
|
reg axi_s_arvalid;
|
||
|
reg [25:0] axi_s_araddr;
|
||
|
reg [7:0] axi_s_arlen;
|
||
|
wire axi_s_arready;
|
||
|
wire [63:0] axi_s_rdata;
|
||
|
wire axi_s_rvalid;
|
||
|
wire axi_s_rlast;
|
||
|
wire [159:0] rframe_data;
|
||
|
wire rframe_valid;
|
||
|
reg rframe_ready;
|
||
|
reg [127:0] array2axi_rdata;
|
||
|
reg array2axi_rdata_valid;
|
||
|
|
||
|
rchannel u_rchannel(
|
||
|
.clk (clk),
|
||
|
.rst_n (rst_n),
|
||
|
.axi_s_arvalid(axi_s_arvalid),
|
||
|
.axi_s_araddr(axi_s_araddr),
|
||
|
.axi_s_arlen(axi_s_arlen),
|
||
|
.axi_s_arready(axi_s_arready),
|
||
|
.axi_s_rdata(axi_s_rdata),
|
||
|
.axi_s_rvalid(axi_s_rvalid),
|
||
|
.axi_s_rlast(axi_s_rlast),
|
||
|
.rframe_data(rframe_data),
|
||
|
.rframe_valid(rframe_valid),
|
||
|
.rframe_ready(rframe_ready),
|
||
|
.array2axi_rdata(array2axi_rdata),
|
||
|
.array2axi_rdata_valid(array2axi_rdata_valid)
|
||
|
);
|
||
|
|
||
|
initial begin
|
||
|
clk = 1'd0;
|
||
|
forever begin
|
||
|
#10; clk = ~clk;
|
||
|
end
|
||
|
end
|
||
|
|
||
|
initial begin
|
||
|
rst_n = 1'b0;
|
||
|
axi_s_arvalid = 'd0;
|
||
|
axi_s_araddr = 'd0;
|
||
|
axi_s_arlen = 'd0;
|
||
|
rframe_ready = 1'b1;
|
||
|
array2axi_rdata = 'd0;
|
||
|
array2axi_rdata_valid = 'd0;
|
||
|
@(posedge clk) begin
|
||
|
rst_n <= 1'b1;
|
||
|
end
|
||
|
ar({16'h1,6'h3f,4'h0},8'd9);
|
||
|
@(posedge clk);
|
||
|
@(posedge clk);
|
||
|
@(posedge clk);
|
||
|
@(posedge clk);
|
||
|
@(posedge clk);
|
||
|
arrayrdata({64'h2,64'h1});
|
||
|
arrayrdata({64'h4,64'h3});
|
||
|
arrayrdata({64'h6,64'h5});
|
||
|
arrayrdata({64'h8,64'h7});
|
||
|
arrayrdata({64'ha,64'h9});
|
||
|
#15;
|
||
|
$finish;
|
||
|
end
|
||
|
|
||
|
task ar;
|
||
|
input [25:0] araddr;
|
||
|
input [7:0] arlen;
|
||
|
begin
|
||
|
@(posedge clk) begin
|
||
|
axi_s_arvalid <= 1'b1;
|
||
|
axi_s_araddr <= araddr;
|
||
|
axi_s_arlen <= arlen;
|
||
|
#1;
|
||
|
wait(axi_s_arready);
|
||
|
@(posedge clk) begin
|
||
|
axi_s_arvalid <= 1'b0;
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
endtask
|
||
|
|
||
|
task arrayrdata;
|
||
|
input [127:0] rdata;
|
||
|
begin
|
||
|
@(posedge clk) begin
|
||
|
array2axi_rdata <= rdata;
|
||
|
array2axi_rdata_valid <= 1'b1;
|
||
|
end
|
||
|
@(posedge clk) begin
|
||
|
array2axi_rdata_valid <= 1'b0;
|
||
|
end
|
||
|
end
|
||
|
endtask
|
||
|
|
||
|
initial begin
|
||
|
$fsdbDumpfile("tb.fsdb");
|
||
|
$fsdbDumpvars(0,tb_rchannel,"+all");
|
||
|
end
|
||
|
|
||
|
endmodule
|
||
|
|
||
|
|
||
|
|