/********************************************** _ _ Cook Darwin __
_ descript: author : Cook.Darwin Version: VERA.0.0 creaded: 2017/2/28 madified: ***********************************************/ `timescale 1ns/1ps `include “define_macro.sv” (* axi4 = “true” *) module axi4_packet_fifo #(
parameter PIPE = "OFF", parameter DEPTH = 4, `parameter_string MODE = "BOTH" //ONLY_WRITE ONLY_READ BOTH
)(
(* axi4_up = "true" *) axi_inf.slaver axi_in, (* axi4_down = "true" *) axi_inf.master axi_out
);
import SystemPkg::*;
initial begin
assert(axi_in.MODE == axi_out.MODE) else begin $error("SLAVER AXIS MODE != MASTER AXIS MODE"); $stop; end
end
`VCS_AXI4_CPT(axi_in,slaver,slaver_rd,Read) `VCS_AXI4_CPT(axi_in,slaver,slaver_wr,Write) `VCS_AXI4_CPT_LT(axi_out,master_rd,master,Read) `VCS_AXI4_CPT_LT(axi_out,master_wr,master,Write)
generate if(axi_in.MODE==“BOTH” || axi_in.MODE==“ONLY_WRITE”) axi4_wr_packet_fifo #(
.PIPE (PIPE ), .DEPTH (DEPTH )
)axi4_wr_packet_fifo_inst( /* axi_inf.slaver_wr */ .axi_in (`axi_in_vcs_cptWrite ), /* axi_inf.master_wr */ .axi_out (`axi_out_vcs_cptWrite ) ); endgenerate
generate if(axi_in.MODE==“BOTH” || axi_in.MODE==“ONLY_READ”) axi4_rd_packet_fifo #(
.DEPTH (DEPTH )
)axi4_rd_packet_fifo_inst( /* axi_inf.slaver_rd */ .slaver (`axi_in_vcs_cptRead ), /* axi_inf.master_rd */ .master (`axi_out_vcs_cptRead ) ); endgenerate
endmodule