aboutsummaryrefslogtreecommitdiffstats
path: root/projects/U200/U200.ip_user_files/ipstatic/hdl/verilog/dma_defines.svh
diff options
context:
space:
mode:
Diffstat (limited to 'projects/U200/U200.ip_user_files/ipstatic/hdl/verilog/dma_defines.svh')
-rwxr-xr-xprojects/U200/U200.ip_user_files/ipstatic/hdl/verilog/dma_defines.svh387
1 files changed, 387 insertions, 0 deletions
diff --git a/projects/U200/U200.ip_user_files/ipstatic/hdl/verilog/dma_defines.svh b/projects/U200/U200.ip_user_files/ipstatic/hdl/verilog/dma_defines.svh
new file mode 100755
index 0000000..1199d24
--- /dev/null
+++ b/projects/U200/U200.ip_user_files/ipstatic/hdl/verilog/dma_defines.svh
@@ -0,0 +1,387 @@
+`ifndef DMA_DEFINES_SVH
+`define DMA_DEFINES_SVH
+
+`include "dma_defines.vh"
+`include "pcie_dma_attr_defines.svh"
+
+// Interface Includes at bottom of file (use some structures defined in this file)
+
+`define IF_MI_CONVERSION_M \
+ always_comb begin \
+ ifc.wadr = wadr;\
+ ifc.wen = wen;\
+ ifc.wpar = wpar;\
+ ifc.wdat = wdat;\
+ ifc.ren = ren;\
+ ifc.radr = radr;\
+ rpar = ifc.rpar;\
+ rdat = ifc.rdat;\
+ rsbe = ifc.rsbe;\
+ rdbe = ifc.rdbe;\
+ end
+
+`define IF_MI_CONVERSION_S \
+ always_comb begin \
+ wadr = ifc.wadr;\
+ wen = ifc.wen;\
+ wpar = ifc.wpar;\
+ wdat = ifc.wdat;\
+ ren = ifc.ren;\
+ radr = ifc.radr;\
+ ifc.rpar = rpar;\
+ ifc.rdat = rdat;\
+ ifc.rsbe = rsbe;\
+ ifc.rdbe = rdbe;\
+ end
+
+typedef struct packed {
+ logic spl;
+ logic [`ADR_WIDTH-1:0] adr;
+ logic [`RID_WIDTH-1:0] rid;
+ logic [`LEN_WIDTH-1:0] byte_len; // byte length
+ logic [`DID_WIDTH-1:0] did;
+ logic [7:0] fnc; // function
+} rrq_t;
+
+// Descriptor Sideband Info (Context RAM to DSC_CPLI_RAM)
+typedef struct packed {
+ logic wbi; // Do writeback/interrupt on descriptor completion
+ logic wbi_chk; // Check status before writeback/interrupt
+ logic [`QID_WIDTH-1:0] qid; // Q ID
+ logic [3:0] qst;
+ logic [7:0] fnc;
+ logic [15:0] cidx;
+} dsc_sbi_t; // 10 + 4 + 8 + 16 = 54
+
+typedef struct packed {
+ logic sop;
+ logic eop;
+ logic wbk;
+ logic [4:0] err;
+ logic [3:0] errc;
+ //logic [`DAT_WIDTH/32-1:0] wen; // dword write enable
+ logic [`RID_WIDTH-1:0] rid;
+ logic [`DID_WIDTH-1:0] did;
+ logic [5:0] lba; // Last beat length adjustment (AXI ST C2H)
+ logic [`DAT_WIDTH/8-1:0] par;
+ logic [`DAT_WIDTH-1:0] dat;
+} rcp_t;
+
+typedef struct packed {
+ logic err;
+ logic [`ADR_WIDTH-1:0] adr;
+ logic [`RID_WIDTH-1:0] rid;
+ logic [`LEN_WIDTH-1:0] byte_len; // byte length
+ logic [5:0] aln; // Source alignment
+ logic eop;
+ logic eod;
+ logic eor;
+} wrq_t;
+
+typedef struct packed {
+ logic [`DAT_WIDTH/8-1:0] par;
+ logic [`DAT_WIDTH-1:0] dat;
+} wpl_t;
+
+typedef struct packed {
+ logic [`RID_WIDTH-1:0] rid;
+ logic [4:0] err;
+} wcp_t;
+
+typedef struct packed {
+ logic [31:0] dat;
+} wbrq_t;
+
+typedef struct packed {
+ logic [3:0] be;
+ logic rd;
+ logic wr;
+ logic [31:0] dat;
+ logic [31:0] adr;
+ logic [7:0] func;
+} trq_t;
+
+typedef struct packed {
+ logic vld;
+ logic [31:0] dat;
+} tcp_t;
+
+typedef struct packed {
+ logic run;
+ logic c2h_wbk_ena;
+ logic noninc;
+ logic [`ADR_WIDTH-1:0] cdc_wbk_adr;
+} creg_t;
+
+typedef struct packed {
+ logic [63:0] par; // 136:73 Parity filled later
+ logic [5:0] seq1; // 72:67 Sequence Num 1
+ logic [5:0] seq0; // 66:61 Sequence Num 0
+ logic [23:0] tph; // 60:45 TPH St Tag
+ // 44:43 TPH Ind Tag
+ // 42:39 TPH Type
+ // 38:37 TPH Present
+ logic disc; // 36 Discontinue
+ logic [3:0] eop1_ptr; // 35:32 EOP 1 Ptr
+ logic [3:0] eop0_ptr; // 31:28 EOP 0 Ptr
+ logic eop1; // 27 EOP 1
+ logic eop0; // 26 EOP 0
+ logic [1:0] sop1_ptr; // 25:24 SOP 1 Ptr
+ logic [1:0] sop0_ptr; // 23:22 SOP 0 Ptr
+ logic sop1; // 21 SOP 1
+ logic sop0; // 20 SOP 0
+ logic [3:0] adr; // 19:16 Address offset - Address aligned mode only
+ logic [3:0] lbe1;
+ logic [3:0] lbe0;
+ logic [3:0] fbe1;
+ logic [3:0] fbe0;
+} rq_usr_straddle_t;
+
+typedef struct packed {
+ logic [76:0] rsv;
+ logic [31:0] par; // 59:28
+ logic [3:0] seq; // 27:24
+ logic [11:0] tph; // 23:12
+ logic dis; // 11
+ logic [2:0] adr; // 10:8
+ logic [3:0] lbe; // 7:4
+ logic [3:0] fbe; // 3:0
+} rq_usr_nostraddle_t;
+
+typedef union packed {
+ rq_usr_straddle_t rqu_str;
+ rq_usr_nostraddle_t rqu_nstr;
+} rq_usr_t;
+
+typedef struct packed {
+ logic [12:0] pcie_mrrs;
+ logic [12:0] pcie_mps;
+ logic [12:0] axi_mrrs;
+ logic [12:0] axi_mps;
+} cfg_dma_t;
+
+typedef struct packed {
+ logic ecrc;
+ logic [2:0] attr;
+ logic [2:0] tc;
+ logic rid_en;
+ logic [15:0] cpl_id;
+ logic [7:0] tag;
+ logic [15:0] req_id;
+ logic poison;
+ logic [3:0] req;
+ logic [10:0] len;
+ logic [63:0] adr;
+} rq_hdr_fields_t;
+
+typedef struct packed {
+ logic [23:0] dw3_misc;
+ logic [7:0] tag;
+ logic [16:0] dw2_misc;
+ logic [3:0] req;
+ logic [10:0] len;
+ logic [63:0] adr;
+} rq_hdr_compact_t;
+
+typedef struct packed {
+ logic [31:0] dw3;
+ logic [31:0] dw2;
+ logic [31:0] dw1;
+ logic [31:0] dw0;
+} rq_hdr_dwords_t;
+
+typedef union packed {
+ rq_hdr_fields_t rqh_f;
+ rq_hdr_compact_t rqh_c;
+ rq_hdr_dwords_t rqh_d;
+} rq_hdr_t;
+
+typedef struct packed {
+ logic tlast;
+ logic [`MULTQ_C2H_TUSER_WIDTH-1:0] tuser;
+ logic [`DAT_WIDTH/8-1:0] tkeep;
+ logic [`DAT_WIDTH/8-1:0] tparity;
+ logic [`DAT_WIDTH-1:0] tdata;
+} dma_s_axis_t;
+
+typedef struct packed {
+ logic [`DID_WIDTH-1:0] waddr;
+ logic [`DID_WIDTH-1:0] raddr;
+ logic [`DAT_WIDTH/8-1:0] wen;
+} dat_bram_cmd_t;
+
+typedef struct packed {
+ logic [`DAT_WIDTH-1:0] dat;
+ logic [`DAT_WIDTH/8-1:0] parity; // Even parity
+}dat_bram_dat_t;
+
+
+typedef struct packed {
+
+ logic tlast;
+ logic [`MULTQ_H2C_TUSER_WIDTH-1:0] tuser;
+ logic [`DAT_WIDTH/8-1:0] tkeep;
+ logic [`DAT_WIDTH/8-1:0] tparity;
+ logic [`DAT_WIDTH-1:0] tdata;
+} dma_m_axis_t;
+
+
+// Descriptor Completion Memory Interface
+typedef struct packed {
+ logic [`DAT_WIDTH-1:0] rdat;
+ logic rbe;
+}dsc_cpl_bram_out_t;
+
+typedef struct packed {
+ logic wen;
+ logic [`DSC_DID_WIDTH-1:0] waddr;
+ logic [`DAT_WIDTH-1:0] wdat;
+ logic [`DSC_RID_WIDTH-1:0] raddr;
+}dsc_cpl_bram_in_t;
+
+// XDMA Descriptor Memory Interface
+//typedef struct packed {
+ //logic [255:0] rdat;
+ //logic rbe;
+//}dsc_bram_out_t;
+
+typedef struct packed {
+ logic wen;
+ logic [`DSC_DID_WIDTH-1:0] waddr;
+ logic [255:0] wdat;
+ logic [`DSC_RID_WIDTH-1:0] raddr;
+}dsc_bram_in_t;
+
+
+//
+typedef struct packed {
+ logic [7:0] func;
+ //logic [3:0] be;
+} dma_axil_user_t;
+
+// Descriptor Completion
+typedef struct packed {
+ logic [63:0] wadr;
+ logic [63:0] radr;
+ logic [27:0] len;
+ logic eop;
+ logic cpl;
+ logic stp;
+} dcp_t;
+
+// Descriptor In (user descriptors -> dma)
+typedef struct packed {
+ logic [`QID_WIDTH-1:0] qid; // Q ID
+ logic [1:0] chn; // Channel
+ logic [3:0] qst; // Q status
+ logic [2:0] fmt; // Format
+ logic [255:0] dsc;
+ logic [3:0] vld;
+} dma_dsc_in_t;
+
+// Descriptor In Credits (dma credits -> user)
+typedef struct packed {
+ logic vld;
+ logic [8:0] num;
+ logic [`QID_WIDTH-1:0] qid;
+} dma_dsc_in_crd_t;
+
+// Descriptor Out (dma descriptors -> user)
+typedef struct packed {
+ logic wbi;
+ logic wbi_chk;
+ logic [15:0] cidx;
+ logic [`QID_WIDTH-1:0] qid; // Q ID
+ logic [1:0] chn; // Channel
+ logic [3:0] qst; // Q status
+ logic [2:0] siz; // Format
+ logic dir; // Direction
+ logic [3:0] vld;
+ logic [255:0] dsc;
+} dma_dsc_block_t;
+
+typedef struct packed {
+ logic wbi;
+ logic wbi_chk;
+ logic [15:0] cidx;
+ logic [`QID_WIDTH-1:0] qid; // Q ID
+ logic [1:0] chn; // Channel
+ logic [3:0] qst; // Q status
+ logic [2:0] siz; // Format
+ logic dir; // Direction
+ logic [255:0] dsc;
+} dma_dsc_t;
+
+// Descriptor Out Credits (user credits -> dma)
+typedef struct packed {
+ logic vld;
+ logic [8:0] num;
+ logic [`QID_WIDTH-1:0] qid;
+ logic [1:0] chn;
+ logic clr;
+} dma_dsc_out_crd_t;
+
+
+// Interface Conversion
+
+`define PCIE_CC_TO_DMA_CC_IF(pcie_cc, dma_cc) \
+assign pcie_cc.axis_cc_tvalid = dma_cc.tvalid; \
+assign pcie_cc.axis_cc_tdata = 'h0 | dma_cc.tdata; \
+assign pcie_cc.axis_cc_tuser = 'h0 | dma_cc.tuser; \
+assign pcie_cc.axis_cc_tkeep = 'h0 | dma_cc.tkeep; \
+assign pcie_cc.axis_cc_tlast = dma_cc.tlast; \
+assign dma_cc.tready = 'h0 | pcie_cc.axis_cc_tready;
+
+`define PCIE_CQ_TO_DMA_CQ_IF(pcie_cq, dma_cq) \
+assign dma_cq.tvalid = | pcie_cq.axis_cq_tvalid; \
+assign dma_cq.tdata = 'h0 | pcie_cq.axis_cq_tdata; \
+assign dma_cq.tuser = 'h0 | pcie_cq.axis_cq_tuser; \
+assign dma_cq.tkeep = 'h0 | pcie_cq.axis_cq_tkeep; \
+assign dma_cq.tlast = | pcie_cq.axis_cq_tlast; \
+assign pcie_cq.axis_cq_tready = 'h0 | dma_cq.tready;
+
+`define PCIE_RC_TO_DMA_RC_IF(pcie_rc, dma_rc) \
+assign dma_rc.tvalid = | pcie_rc.axis_rc_tvalid; \
+assign dma_rc.tdata = 'h0 | pcie_rc.axis_rc_tdata; \
+assign dma_rc.tuser = 'h0 | pcie_rc.axis_rc_tuser; \
+assign dma_rc.tkeep = 'h0 | pcie_rc.axis_rc_tkeep; \
+assign dma_rc.tlast = | pcie_rc.axis_rc_tlast; \
+assign pcie_rc.axis_rc_tready = 'h0 | dma_rc.tready;
+
+`define PCIE_RQ_TO_DMA_RQ_IF(pcie_rq, dma_rq) \
+assign pcie_rq.axis_rq_tvalid = dma_rq.tvalid; \
+assign pcie_rq.axis_rq_tdata = 'h0 | dma_rq.tdata; \
+assign pcie_rq.axis_rq_tuser = 'h0 | dma_rq.tuser; \
+assign pcie_rq.axis_rq_tkeep = 'h0 | dma_rq.tkeep; \
+assign pcie_rq.axis_rq_tlast = dma_rq.tlast; \
+assign dma_rq.tready = 'h0 | pcie_rq.axis_rq_tready;
+
+`include "dma_pcie_axis_cc_if.svh"
+`include "dma_pcie_axis_cq_if.svh"
+`include "dma_pcie_axis_rc_if.svh"
+`include "dma_pcie_axis_rq_if.svh"
+//`include "dma_pcie_c2h_axis_if.svh"
+`include "dma_pcie_c2h_crdt_if.svh"
+`include "dma_pcie_dsc_in_if.svh"
+`include "dma_pcie_dsc_out_if.svh"
+`include "dma_pcie_fabric_input_if.svh"
+`include "dma_pcie_fabric_output_if.svh"
+`include "dma_pcie_gic_if.svh"
+//`include "dma_pcie_h2c_axis_if.svh"
+`include "dma_pcie_h2c_crdt_if.svh"
+`include "dma_pcie_mi_16Bx2048_4Bwe_ram_if.svh"
+`include "dma_pcie_mi_2Bx2048_ram_if.svh"
+`include "dma_pcie_mi_4Bx2048_4Bwe_ram_if.svh"
+`include "dma_pcie_mi_64Bx128_32Bwe_ram_if.svh"
+`include "dma_pcie_mi_64Bx256_32Bwe_ram_if.svh"
+`include "dma_pcie_mi_64Bx512_32Bwe_ram_if.svh"
+`include "dma_pcie_mi_64Bx1024_32Bwe_ram_if.svh"
+`include "dma_pcie_mi_64Bx2048_32Bwe_ram_if.svh"
+`include "dma_pcie_mi_8Bx2048_4Bwe_ram_if.svh"
+`include "dma_pcie_mi_dsc_cpld_if.svh"
+`include "dma_pcie_mi_dsc_cpli_if.svh"
+`include "dma_pcie_misc_input_if.svh"
+`include "dma_pcie_misc_output_if.svh"
+`endif
+
+