73use ieee.std_logic_1164.
all;
74use ieee.numeric_std.
all;
84 DATA_MODE : std_logic_vector(3 downto 0) := "0010";
100 BEGIN_ADDRESS : std_logic_vector(31 downto 0) := X"00000000";
101 END_ADDRESS : std_logic_vector(31 downto 0) := X"00ffffff";
103 CMD_WDT : std_logic_vector(31 downto 0) := X"000003ff";
104 WR_WDT : std_logic_vector(31 downto 0) := X"00001fff";
105 RD_WDT : std_logic_vector(31 downto 0) := X"000003ff";
122 RANKS : integer := 1;
152 TCQ : integer := 100;
183 ddr3_dq : inout std_logic_vector(15 downto 0);
184 ddr3_dqs_p : inout std_logic_vector(1 downto 0);
185 ddr3_dqs_n : inout std_logic_vector(1 downto 0);
188 ddr3_addr : out std_logic_vector(13 downto 0);
189 ddr3_ba : out std_logic_vector(2 downto 0);
194 ddr3_ck_p : out std_logic_vector(0 downto 0);
195 ddr3_ck_n : out std_logic_vector(0 downto 0);
196 ddr3_cke : out std_logic_vector(0 downto 0);
197 ddr3_cs_n : out std_logic_vector(0 downto 0);
198 ddr3_dm : out std_logic_vector(1 downto 0);
199 ddr3_odt : out std_logic_vector(0 downto 0);
227 function clogb2 (size :
integer)
return integer is
228 variable base : integer := 1;
229 variable inp : integer := 0;
237 end function;
function STR_TO_INT(BM : string) return integer is
250 function XWIDTH return integer is
265 constant tPRDI : integer := 1000000;
284 ddr3_dq :
inout std_logic_vector(
15 downto 0);
285 ddr3_dqs_p :
inout std_logic_vector(
1 downto 0);
286 ddr3_dqs_n :
inout std_logic_vector(
1 downto 0);
288 ddr3_addr :
out std_logic_vector(
13 downto 0);
289 ddr3_ba :
out std_logic_vector(
2 downto 0);
294 ddr3_ck_p :
out std_logic_vector(
0 downto 0);
295 ddr3_ck_n :
out std_logic_vector(
0 downto 0);
296 ddr3_cke :
out std_logic_vector(
0 downto 0);
297 ddr3_cs_n :
out std_logic_vector(
0 downto 0);
298 ddr3_dm :
out std_logic_vector(
1 downto 0);
299 ddr3_odt :
out std_logic_vector(
0 downto 0);
300 app_addr :
in std_logic_vector(
27 downto 0);
301 app_cmd :
in std_logic_vector(
2 downto 0);
335 component mig_7series_v4_2_traffic_gen_top
341 TST_MEM_INSTR_MODE :
string;
343 nCK_PER_CLK :
integer;
344 NUM_DQ_PINS :
integer;
345 MEM_BURST_LEN :
integer;
346 MEM_COL_WIDTH :
integer;
347 DATA_WIDTH :
integer;
348 ADDR_WIDTH :
integer;
349 MASK_SIZE :
integer :=
8;
350 DATA_MODE :
std_logic_vector(
3 downto 0);
351 BEGIN_ADDRESS :
std_logic_vector(
31 downto 0);
352 END_ADDRESS :
std_logic_vector(
31 downto 0);
353 PRBS_EADDR_MASK_POS :
std_logic_vector(
31 downto 0);
354 CMDS_GAP_DELAY :
std_logic_vector(
5 downto 0) := "
000000";
355 SEL_VICTIM_LINE :
integer :=
8;
356 CMD_WDT :
std_logic_vector(
31 downto 0) := X"
000003ff";
357 WR_WDT :
std_logic_vector(
31 downto 0) := X"
00001fff";
358 RD_WDT :
std_logic_vector(
31 downto 0) := X"
000003ff";
361 DATA_PATTERN :
string;
367 tg_only_rst :
in std_logic;
368 manual_clear_error :
in std_logic;
369 memc_init_done :
in std_logic;
370 memc_cmd_full :
in std_logic;
371 memc_cmd_en :
out std_logic;
372 memc_cmd_instr :
out std_logic_vector(
2 downto 0);
373 memc_cmd_bl :
out std_logic_vector(
5 downto 0);
374 memc_cmd_addr :
out std_logic_vector(
31 downto 0);
375 memc_wr_en :
out std_logic;
376 memc_wr_end :
out std_logic;
377 memc_wr_mask :
out std_logic_vector((DATA_WIDTH/
8)
-1 downto 0);
378 memc_wr_data :
out std_logic_vector(DATA_WIDTH
-1 downto 0);
379 memc_wr_full :
in std_logic;
380 memc_rd_en :
out std_logic;
381 memc_rd_data :
in std_logic_vector(DATA_WIDTH
-1 downto 0);
382 memc_rd_empty :
in std_logic;
383 qdr_wr_cmd_o :
out std_logic;
384 qdr_rd_cmd_o :
out std_logic;
385 vio_pause_traffic :
in std_logic;
386 vio_modify_enable :
in std_logic;
387 vio_data_mode_value :
in std_logic_vector(
3 downto 0);
388 vio_addr_mode_value :
in std_logic_vector(
2 downto 0);
389 vio_instr_mode_value :
in std_logic_vector(
3 downto 0);
390 vio_bl_mode_value :
in std_logic_vector(
1 downto 0);
391 vio_fixed_bl_value :
in std_logic_vector(
9 downto 0);
392 vio_fixed_instr_value :
in std_logic_vector(
2 downto 0);
393 vio_data_mask_gen :
in std_logic;
394 fixed_addr_i :
in std_logic_vector(
31 downto 0);
395 fixed_data_i :
in std_logic_vector(
31 downto 0);
396 simple_data0 :
in std_logic_vector(
31 downto 0);
397 simple_data1 :
in std_logic_vector(
31 downto 0);
398 simple_data2 :
in std_logic_vector(
31 downto 0);
399 simple_data3 :
in std_logic_vector(
31 downto 0);
400 simple_data4 :
in std_logic_vector(
31 downto 0);
401 simple_data5 :
in std_logic_vector(
31 downto 0);
402 simple_data6 :
in std_logic_vector(
31 downto 0);
403 simple_data7 :
in std_logic_vector(
31 downto 0);
404 wdt_en_i :
in std_logic;
405 bram_cmd_i :
in std_logic_vector(
38 downto 0);
406 bram_valid_i :
in std_logic;
407 bram_rdy_o :
out std_logic;
408 cmp_data :
out std_logic_vector(DATA_WIDTH
-1 downto 0);
409 cmp_data_valid :
out std_logic;
410 cmp_error :
out std_logic;
411 wr_data_counts :
out std_logic_vector(
47 downto 0);
412 rd_data_counts :
out std_logic_vector(
47 downto 0);
413 dq_error_bytelane_cmp :
out std_logic_vector((NUM_DQ_PINS/
8)
-1 downto 0);
414 error :
out std_logic;
415 error_status :
out std_logic_vector((
64+(
2*DATA_WIDTH))
-1 downto 0);
416 cumlative_dq_lane_error :
out std_logic_vector((NUM_DQ_PINS/
8)
-1 downto 0);
417 cmd_wdt_err_o :
out std_logic;
418 wr_wdt_err_o :
out std_logic;
419 rd_wdt_err_o :
out std_logic;
420 mem_pattern_init_done :
out std_logic
422 end component mig_7series_v4_2_traffic_gen_top;
430 signal app_addr_i : std_logic_vector(31 downto 0);
431 signal app_cmd : std_logic_vector(2 downto 0);
432 signal app_en : std_logic;
455 signal cmp_data_r : std_logic_vector(63 downto 0);
464 signal tg_rst : std_logic;
468 signal clk : std_logic;
469 signal rst : std_logic;
481 signal vio_tg_rst : std_logic_vector(0 downto 0);
496 signal all_zeros1 : std_logic_vector(31 downto 0):= (others => '0');
497 signal all_zeros2 : std_logic_vector(38 downto 0):= (others => '0');
498 signal wdt_en_w : std_logic_vector(0 downto 0);
502 signal device_temp : std_logic_vector(11 downto 0);
631 memc_wr_mask =>
app_wdf_mask(((PAYLOAD_WIDTH*2*nCK_PER_CLK
)/8
)-
1 downto 0),
632 memc_wr_data =>
app_wdf_data((PAYLOAD_WIDTH*2*nCK_PER_CLK
)-
1 downto 0),
635 memc_rd_data =>
app_rd_data((PAYLOAD_WIDTH*2*nCK_PER_CLK
)-
1 downto 0),
637 qdr_wr_cmd_o =>
open,
638 qdr_rd_cmd_o =>
open,
string := "ON" CMD_PIPE_PLUS1
std_logic_vector( APP_MASK_WIDTH- 1 downto 0) app_wdf_mask
std_logic_vector( 2 downto 0) data_mode_manual_sel
std_logic_vector( 0 downto 0) manual_clear_error
std_logic_vector( 3 downto 0) vio_instr_mode_value
integer := XWIDTH+ 3+ ROW_WIDTH+ COL_WIDTH TG_ADDR_WIDTH
std_logic_vector(( PAYLOAD_WIDTH/ 8)- 1 downto 0) cumlative_dq_lane_error
std_logic_vector( 31 downto 0) app_addr_i
std_logic_vector( 0 downto 0) vio_data_mask_gen
integer := clogb2( RANKS ) RANK_WIDTH
std_logic_vector( 0 downto 0) dbg_sel_po_incdec
std_logic_vector( 0 downto 0) vio_dbg_po_f_dec
std_logic_vector( 38 downto 0) :=( others => '0') all_zeros2
std_logic_vector( 2 downto 0) vio_fixed_instr_value
std_logic_vector( 0 downto 0) vio_dbg_po_f_stg23_sel
std_logic cmp_data_valid_r
std_logic_vector( 11 downto 0) device_temp
std_logic app_rd_data_end
std_logic_vector( BL_WIDTH- 1 downto 0) vio_fixed_bl_value
std_logic_vector(( 2* nCK_PER_CLK)- 1 downto 0) app_ecc_single_err
std_logic_vector( 0 downto 0) dbg_po_f_inc
std_logic_vector( 1 downto 0) vio_bl_mode_value
std_logic_vector(( PAYLOAD_WIDTH/ 8)- 1 downto 0) dq_error_bytelane_cmp
integer := STR_TO_INT( BURST_MODE ) BURST_LENGTH
integer := DATA_WIDTH PAYLOAD_WIDTH
std_logic_vector( 0 downto 0) vio_tg_rst
std_logic tg_compare_error_i
std_logic_vector( 0 downto 0) dbg_clear_error
migui_arty u_migui_artyu_migui_arty
std_logic app_rd_data_valid
std_logic modify_enable_sel
std_logic_vector( 0 downto 0) vio_dbg_sel_po_incdec
std_logic_vector( 47 downto 0) tg_rd_data_counts
std_logic_vector( 0 downto 0) vio_dbg_pi_f_dec
std_logic_vector( 0 downto 0) vio_dbg_pi_f_inc
std_logic_vector(( 2* nCK_PER_CLK)- 1 downto 0) app_ecc_multiple_err
mig_7series_v4_2_traffic_gen_top u_traffic_gen_topu_traffic_gen_top
std_logic_vector( 0 downto 0) dbg_pi_f_dec
std_logic_vector( 47 downto 0) tg_wr_data_counts
std_logic_vector( 2 downto 0) addr_mode_manual_sel
std_logic_vector( 0 downto 0) wdt_en_w
std_logic_vector(( PAYLOAD_WIDTH* 2* nCK_PER_CLK)- 1 downto 0) cmp_data
std_logic_vector( APP_DATA_WIDTH- 1 downto 0) app_rd_data
std_logic_vector( 0 downto 0) dbg_pi_f_inc
std_logic_vector( 3 downto 0) vio_data_mode_value
std_logic app_rd_data_valid_i
std_logic_vector( 0 downto 0) vio_modify_enable
std_logic_vector( 0 downto 0) dbg_po_f_stg23_sel
integer := APP_DATA_WIDTH/ 8 APP_MASK_WIDTH
std_logic_vector( 0 downto 0) vio_dbg_po_f_inc
std_logic_vector( 31 downto 0) :=( others => '0') all_zeros1
std_logic init_calib_complete_i
integer := 2* nCK_PER_CLK* PAYLOAD_WIDTH APP_DATA_WIDTH
std_logic_vector( ADDR_WIDTH- 1 downto 0) app_addr
std_logic_vector( 0 downto 0) vio_pause_traffic
std_logic_vector( 2 downto 0) vio_addr_mode_value
std_logic_vector( 0 downto 0) dbg_po_f_dec
std_logic_vector(( 64+( 4* PAYLOAD_WIDTH* nCK_PER_CLK))- 1 downto 0) error_status
std_logic_vector( APP_DATA_WIDTH- 1 downto 0) app_wdf_data
std_logic_vector( 0 downto 0) mem_pattern_init_done
std_logic_vector( 63 downto 0) cmp_data_r
std_logic_vector( 0 downto 0) dbg_sel_pi_incdec
std_logic_vector( 2 downto 0) app_cmd
std_logic_vector( 0 downto 0) vio_dbg_sel_pi_incdec
integer := DATA_WIDTH/ 8 MASK_SIZE
BEGIN_ADDRESS std_logic_vector( 31 downto 0) := X"00000000"
in device_temp_i std_logic_vector( 11 downto 0)
inout ddr3_dqs_p std_logic_vector( 1 downto 0)
SIMULATION string := "FALSE"
DATA_PATTERN string := "DGEN_ALL"
END_ADDRESS std_logic_vector( 31 downto 0) := X"00ffffff"
out ddr3_ck_n std_logic_vector( 0 downto 0)
out ddr3_cs_n std_logic_vector( 0 downto 0)
CMD_WDT std_logic_vector( 31 downto 0) := X"000003ff"
WR_WDT std_logic_vector( 31 downto 0) := X"00001fff"
out ddr3_dm std_logic_vector( 1 downto 0)
out ddr3_cke std_logic_vector( 0 downto 0)
out init_calib_complete std_logic
CMD_PATTERN string := "CGEN_ALL"
PRBS_EADDR_MASK_POS std_logic_vector( 31 downto 0) := X"ff000000"
EYE_TEST string := "FALSE"
DRAM_TYPE string := "DDR3"
inout ddr3_dqs_n std_logic_vector( 1 downto 0)
inout ddr3_dq std_logic_vector( 15 downto 0)
TEMP_MON_CONTROL string := "EXTERNAL"
RD_WDT std_logic_vector( 31 downto 0) := X"000003ff"
out ddr3_odt std_logic_vector( 0 downto 0)
out tg_compare_error std_logic
PORT_MODE string := "BI_MODE"
DATA_MODE std_logic_vector( 3 downto 0) := "0010"
TST_MEM_INSTR_MODE string := "R_W_INSTR_MODE"
out ddr3_reset_n std_logic
out ddr3_ba std_logic_vector( 2 downto 0)
DEBUG_PORT string := "OFF"
out ddr3_ck_p std_logic_vector( 0 downto 0)
out ddr3_addr std_logic_vector( 13 downto 0)
DQS_CNT_WIDTH integer := 1
in device_temp_i std_logic_vector( 11 downto 0)
inout ddr3_dqs_p std_logic_vector( 1 downto 0)
in app_cmd std_logic_vector( 2 downto 0)
out device_temp std_logic_vector( 11 downto 0)
out app_wdf_rdy std_logic
out ddr3_ck_n std_logic_vector( 0 downto 0)
out ddr3_cs_n std_logic_vector( 0 downto 0)
in app_wdf_data std_logic_vector( 127 downto 0)
out app_rd_data_end std_logic
out ddr3_dm std_logic_vector( 1 downto 0)
out ddr3_cke std_logic_vector( 0 downto 0)
out init_calib_complete std_logic
out app_sr_active std_logic
inout ddr3_dqs_n std_logic_vector( 1 downto 0)
out app_rd_data_valid std_logic
inout ddr3_dq std_logic_vector( 15 downto 0)
out app_rd_data std_logic_vector( 127 downto 0)
out ddr3_odt std_logic_vector( 0 downto 0)
in app_addr std_logic_vector( 27 downto 0)
out app_ref_ack std_logic
in app_wdf_mask std_logic_vector( 15 downto 0)
out ddr3_reset_n std_logic
out ddr3_ba std_logic_vector( 2 downto 0)
out ddr3_ck_p std_logic_vector( 0 downto 0)
in app_wdf_wren std_logic
out ddr3_addr std_logic_vector( 13 downto 0)
out ui_clk_sync_rst std_logic