blob: 9be4400dd8456c55350018575b148865a816d16d [file] [log] [blame]
module axi_w_buffer
#(
parameter DATA_WIDTH = 64,
parameter USER_WIDTH = 6,
parameter BUFFER_DEPTH = 2,
parameter STRB_WIDTH = DATA_WIDTH/8 // DO NOT OVERRIDE
)
(
clk_i,
rst_ni,
test_en_i,
slave_valid_i,
slave_data_i,
slave_strb_i,
slave_user_i,
slave_last_i,
slave_ready_o,
master_valid_o,
master_data_o,
master_strb_o,
master_user_o,
master_last_o,
master_ready_i
);
//parameter DATA_WIDTH = 64;
//parameter USER_WIDTH = 6;
//parameter BUFFER_DEPTH = 2;
//parameter STRB_WIDTH = DATA_WIDTH / 8;
input wire clk_i;
input wire rst_ni;
input wire test_en_i;
input wire slave_valid_i;
input wire [DATA_WIDTH - 1:0] slave_data_i;
input wire [STRB_WIDTH - 1:0] slave_strb_i;
input wire [USER_WIDTH - 1:0] slave_user_i;
input wire slave_last_i;
output wire slave_ready_o;
output wire master_valid_o;
output wire [DATA_WIDTH - 1:0] master_data_o;
output wire [STRB_WIDTH - 1:0] master_strb_o;
output wire [USER_WIDTH - 1:0] master_user_o;
output wire master_last_o;
input wire master_ready_i;
wire [(DATA_WIDTH + STRB_WIDTH) + USER_WIDTH:0] s_data_in;
wire [(DATA_WIDTH + STRB_WIDTH) + USER_WIDTH:0] s_data_out;
assign s_data_in = {slave_user_i, slave_strb_i, slave_data_i, slave_last_i};
assign {master_user_o, master_strb_o, master_data_o, master_last_o} = s_data_out;
generic_fifo #(
.DATA_WIDTH(((1 + DATA_WIDTH) + STRB_WIDTH) + USER_WIDTH),
.DATA_DEPTH(BUFFER_DEPTH)
) buffer_i(
.clk(clk_i),
.rst_n(rst_ni),
.data_i(s_data_in),
.valid_i(slave_valid_i),
.grant_o(slave_ready_o),
.data_o(s_data_out),
.valid_o(master_valid_o),
.grant_i(master_ready_i),
.test_mode_i(test_en_i)
);
endmodule