tests: add wrapper for axis
This commit is contained in:
108
axi/tb/axis_cocotb_loopback_test/tb_axis_loopback.sv
Normal file
108
axi/tb/axis_cocotb_loopback_test/tb_axis_loopback.sv
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
module tb_axis_loopback;
|
||||||
|
localparam int unsigned DATA_W = 64;
|
||||||
|
localparam int unsigned KEEP_W = DATA_W / 8;
|
||||||
|
localparam int unsigned ID_W = 8;
|
||||||
|
localparam int unsigned DEST_W = 8;
|
||||||
|
localparam int unsigned USER_W = 8;
|
||||||
|
|
||||||
|
|
||||||
|
logic clk = 1'b0;
|
||||||
|
logic rst = 1'b1;
|
||||||
|
logic rst_n;
|
||||||
|
|
||||||
|
assign rst_n = ~rst;
|
||||||
|
|
||||||
|
// Classic AXI-Stream flat input side
|
||||||
|
logic [DATA_W-1:0] s_axis_tdata;
|
||||||
|
logic [KEEP_W-1:0] s_axis_tkeep;
|
||||||
|
logic [KEEP_W-1:0] s_axis_tstrb;
|
||||||
|
logic s_axis_tlast;
|
||||||
|
logic [ID_W-1:0] s_axis_tid;
|
||||||
|
logic [DEST_W-1:0] s_axis_tdest;
|
||||||
|
logic [USER_W-1:0] s_axis_tuser;
|
||||||
|
logic s_axis_tvalid;
|
||||||
|
logic s_axis_tready;
|
||||||
|
|
||||||
|
// Classic AXI-Stream flat output side
|
||||||
|
logic [DATA_W-1:0] m_axis_tdata;
|
||||||
|
logic [KEEP_W-1:0] m_axis_tkeep;
|
||||||
|
logic [KEEP_W-1:0] m_axis_tstrb;
|
||||||
|
logic m_axis_tlast;
|
||||||
|
logic [ID_W-1:0] m_axis_tid;
|
||||||
|
logic [DEST_W-1:0] m_axis_tdest;
|
||||||
|
logic [USER_W-1:0] m_axis_tuser;
|
||||||
|
logic m_axis_tvalid;
|
||||||
|
logic m_axis_tready;
|
||||||
|
|
||||||
|
axis_if #(
|
||||||
|
.DATA_W(DATA_W),
|
||||||
|
.KEEP_W(KEEP_W),
|
||||||
|
.ID_W(ID_W),
|
||||||
|
.DEST_W(DEST_W),
|
||||||
|
.USER_W(USER_W)
|
||||||
|
) s_axis_if (
|
||||||
|
.aclk(clk),
|
||||||
|
.aresetn(rst_n)
|
||||||
|
);
|
||||||
|
|
||||||
|
axis_if #(
|
||||||
|
.DATA_W(DATA_W),
|
||||||
|
.KEEP_W(KEEP_W),
|
||||||
|
.ID_W(ID_W),
|
||||||
|
.DEST_W(DEST_W),
|
||||||
|
.USER_W(USER_W)
|
||||||
|
) m_axis_if (
|
||||||
|
.aclk(clk),
|
||||||
|
.aresetn(rst_n)
|
||||||
|
);
|
||||||
|
|
||||||
|
axis_flat_to_if #(
|
||||||
|
.DATA_W(DATA_W),
|
||||||
|
.KEEP_W(KEEP_W),
|
||||||
|
.ID_W(ID_W),
|
||||||
|
.DEST_W(DEST_W),
|
||||||
|
.USER_W(USER_W)
|
||||||
|
) axis_in_conv_inst (
|
||||||
|
.s_axis_tdata (s_axis_tdata),
|
||||||
|
.s_axis_tkeep (s_axis_tkeep),
|
||||||
|
.s_axis_tstrb (s_axis_tstrb),
|
||||||
|
.s_axis_tlast (s_axis_tlast),
|
||||||
|
.s_axis_tid (s_axis_tid),
|
||||||
|
.s_axis_tdest (s_axis_tdest),
|
||||||
|
.s_axis_tuser (s_axis_tuser),
|
||||||
|
.s_axis_tvalid (s_axis_tvalid),
|
||||||
|
.s_axis_tready (s_axis_tready),
|
||||||
|
.m_axis (s_axis_if)
|
||||||
|
);
|
||||||
|
|
||||||
|
axis_loopback #(
|
||||||
|
.DATA_W(DATA_W),
|
||||||
|
.KEEP_W(KEEP_W),
|
||||||
|
.ID_W(ID_W),
|
||||||
|
.DEST_W(DEST_W),
|
||||||
|
.USER_W(USER_W)
|
||||||
|
) axis_dut_inst (
|
||||||
|
.s_axis(s_axis_if),
|
||||||
|
.m_axis(m_axis_if)
|
||||||
|
);
|
||||||
|
|
||||||
|
axis_if_to_flat #(
|
||||||
|
.DATA_W(DATA_W),
|
||||||
|
.KEEP_W(KEEP_W),
|
||||||
|
.ID_W(ID_W),
|
||||||
|
.DEST_W(DEST_W),
|
||||||
|
.USER_W(USER_W)
|
||||||
|
) axis_out_conv_inst (
|
||||||
|
.s_axis (m_axis_if),
|
||||||
|
.m_axis_tdata (m_axis_tdata),
|
||||||
|
.m_axis_tkeep (m_axis_tkeep),
|
||||||
|
.m_axis_tstrb (m_axis_tstrb),
|
||||||
|
.m_axis_tlast (m_axis_tlast),
|
||||||
|
.m_axis_tid (m_axis_tid),
|
||||||
|
.m_axis_tdest (m_axis_tdest),
|
||||||
|
.m_axis_tuser (m_axis_tuser),
|
||||||
|
.m_axis_tvalid(m_axis_tvalid),
|
||||||
|
.m_axis_tready(m_axis_tready)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule : tb_axis_loopback
|
||||||
Reference in New Issue
Block a user