CONSTANTc_ddr_ctlr_data_w:NATURAL:=func_tech_ddr_ctlr_data_w(g_ddr_MB_I);-- = 576, assume both MB_I and MB_II use the same ctlr_data_w
CONSTANTc_ddr_dp_data_w:NATURAL:=144;-- DDR4 with dq_w = 72, rsl = 8 so ctrl data width = 576 and therefore the mixed width FIFO ratio is 576 /144 = 4
CONSTANTc_ddr_dp_seq_dat_w:NATURAL:=17;-- >= 1, test sequence data width. Choose g_dp_seq_dat_w <= g_dp_data_w. The seq data gets replicated to fill g_dp_data_w.
CONSTANTc_ddr_dp_fifo_depth:NATURAL:=2048;-- >= 2048, write FIFO depth and read FIFO depth at DP side of the FIFOs
CONSTANTc_ddr_dp_seq_dat_w:NATURAL:=16;-- >= 1, test sequence data width. Choose c_ddr_dp_seq_dat_w <= c_ddr_dp_data_w. The seq data gets replicated to fill c_ddr_dp_data_w.
CONSTANTc_ddr_dp_wr_fifo_depth:NATURAL:=256*(c_ddr_ctlr_data_w/c_ddr_dp_data_w);-- defined at DP side of the FIFO, choose 256 * (ctrl_data_w/g_dp_data_w) to make full use of M9K which have at least 256 words
CONSTANTc_ddr_dp_rd_fifo_depth:NATURAL:=256*(c_ddr_ctlr_data_w/c_ddr_dp_data_w);-- defined at DP side of the FIFO, choose 256 * (ctrl_data_w/g_dp_data_w) or factors of 2 more to fit max number of read bursts
ASSERTc_ddr_mixed_width_ratio>0ANDis_pow2(c_ddr_mixed_width_ratio)REPORT"unb2_test: DDR4 data widths are not an integer ratio"SEVERITYFAILURE;
ASSERTfunc_tech_ddr_ctlr_data_w(g_ddr_MB_I)=func_tech_ddr_ctlr_data_w(g_ddr_MB_II)REPORT"unb2_test: DDR4 MB_I and MB_II must have the same ctlr data widths"SEVERITYFAILURE;
g_dp_data_w=>c_ddr_dp_data_w,-- DP data width, func_tech_ddr_ctlr_data_w(g_io_tech_ddr)/g_dp_data_w must be a power of 2 due to the mixed width FIFO
g_dp_seq_dat_w=>c_ddr_dp_seq_dat_w,-- >= 1, test sequence data width. Choose g_dp_seq_dat_w <= g_dp_data_w. The seq data gets replicated to fill g_dp_data_w.
g_dp_fifo_depth=>c_ddr_dp_fifo_depth,-- >= 2048, write FIFO depth and read FIFO depth at DP side of the FIFOs
g_dp_data_w=>c_ddr_dp_data_w,
g_dp_seq_dat_w=>c_ddr_dp_seq_dat_w,
g_dp_wr_fifo_depth=>c_ddr_dp_wr_fifo_depth,
g_dp_rd_fifo_depth=>c_ddr_dp_rd_fifo_depth,
-- IO_DDR
g_io_tech_ddr=>g_ddr_MB_I,
...
...
@@ -1048,9 +1067,10 @@ BEGIN
g_sim_model_ddr=>g_sim_model_ddr,
g_technology=>g_technology,
g_dp_data_w=>c_ddr_dp_data_w,-- DP data width, func_tech_ddr_ctlr_data_w(g_io_tech_ddr)/g_dp_data_w must be a power of 2 due to the mixed width FIFO
g_dp_seq_dat_w=>c_ddr_dp_seq_dat_w,-- >= 1, test sequence data width. Choose g_dp_seq_dat_w <= g_dp_data_w. The seq data gets replicated to fill g_dp_data_w.
g_dp_fifo_depth=>c_ddr_dp_fifo_depth,-- >= 2048, write FIFO depth and read FIFO depth at DP side of the FIFOs