From 706199a83adb0538e99b9e03b397c2d2ef1ab857 Mon Sep 17 00:00:00 2001 From: Leon Hiemstra <hiemstra@astron.nl> Date: Tue, 28 Apr 2015 15:33:26 +0000 Subject: [PATCH] testing the DDR stream --- .../revisions/unb1_test_10GbE/hdllib.cfg | 7 +---- .../unb1_test/src/vhdl/ddr_stream_test.vhd | 27 +++++++++++++------ .../unb1_test/src/vhdl/udp_stream_test.vhd | 16 +++++------ .../designs/unb1_test/src/vhdl/unb1_test.vhd | 17 +++++++++++- .../unb1_test/tb/python/tc_unb1_test.py | 21 +++++++++++++++ 5 files changed, 63 insertions(+), 25 deletions(-) diff --git a/boards/uniboard1/designs/unb1_test/revisions/unb1_test_10GbE/hdllib.cfg b/boards/uniboard1/designs/unb1_test/revisions/unb1_test_10GbE/hdllib.cfg index 955e472351..532b58bf58 100644 --- a/boards/uniboard1/designs/unb1_test/revisions/unb1_test_10GbE/hdllib.cfg +++ b/boards/uniboard1/designs/unb1_test/revisions/unb1_test_10GbE/hdllib.cfg @@ -2,7 +2,7 @@ hdl_lib_name = unb1_test_10GbE hdl_library_clause_name = unb1_test_10GbE_lib hdl_lib_uses_synth = unb1_board unb1_test hdl_lib_uses_sim = -hdl_lib_excludes = ip_stratixiv_ddr3_uphy_4g_800_slave +hdl_lib_excludes = ip_stratixiv_ddr3_uphy_4g_800_slave ip_stratixiv_ddr3_uphy_4g_single_rank_800_master ip_stratixiv_ddr3_uphy_4g_single_rank_800_slave hdl_lib_technology = ip_stratixiv @@ -51,8 +51,3 @@ quartus_qip_files = modelsim_compile_ip_files = $RADIOHDL/libraries/technology/ip_stratixiv/ddr3_uphy_4g_800_master/copy_hex_files.tcl - -modelsim_search_libraries = -# stratixiv only - altera_ver lpm_ver sgate_ver altera_mf_ver altera_lnsim_ver stratixiv_ver stratixiv_hssi_ver stratixiv_pcie_hip_ver - altera lpm sgate altera_mf altera_lnsim stratixiv stratixiv_hssi stratixiv_pcie_hip diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd index 45e61614e8..cc482ef0d6 100644 --- a/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/ddr_stream_test.vhd @@ -134,6 +134,7 @@ ARCHITECTURE str OF ddr_stream_test IS SIGNAL from_mem_siso : t_dp_siso := c_dp_siso_rdy; SIGNAL from_mem_sosi : t_dp_sosi; + SIGNAL ddr_ref_rst : STD_LOGIC; SIGNAL ddr_out_clk_i : STD_LOGIC; SIGNAL ddr_out_rst_i : STD_LOGIC; @@ -158,13 +159,13 @@ BEGIN dp_clk => dp_clk, en_sync => '1', - out_sosi_arr => block_gen_src_out_arr,--block_gen_src_1GbE_out_arr, - out_siso_arr => block_gen_src_in_arr,--block_gen_src_1GbE_in_arr, + out_sosi_arr => block_gen_src_out_arr, + out_siso_arr => block_gen_src_in_arr, - reg_bg_ctrl_mosi => reg_diag_bg_mosi,--reg_diag_bg_1GbE_mosi, - reg_bg_ctrl_miso => reg_diag_bg_miso,--reg_diag_bg_1GbE_miso, - ram_bg_data_mosi => ram_diag_bg_mosi,--ram_diag_bg_1GbE_mosi, - ram_bg_data_miso => ram_diag_bg_miso --ram_diag_bg_1GbE_miso + reg_bg_ctrl_mosi => reg_diag_bg_mosi, + reg_bg_ctrl_miso => reg_diag_bg_miso, + ram_bg_data_mosi => ram_diag_bg_mosi, + ram_bg_data_miso => ram_diag_bg_miso ); @@ -210,7 +211,6 @@ BEGIN reg_data_buf_mosi => reg_diag_data_buf_mosi, reg_data_buf_miso => reg_diag_data_buf_miso, - --in_sync => diag_data_buf_snk_in_arr(0).sop, in_sync => diag_data_buf_snk_in_arr(0).sync, in_sosi_arr => diag_data_buf_snk_in_arr ); @@ -257,6 +257,17 @@ BEGIN ); + u_areset_ddr_ref_rst : ENTITY common_lib.common_areset + GENERIC MAP( + g_rst_level => '1', + g_delay_len => 40 + ) + PORT MAP( + clk => dp_clk, + in_rst => '0', + out_rst => ddr_ref_rst + ); + ------------------------------------------------------------------------------ -- DDR3 MODULE 0, MB_I ------------------------------------------------------------------------------ @@ -284,7 +295,7 @@ BEGIN -- DDR reference clock ctlr_ref_clk => dp_clk, - ctlr_ref_rst => dp_rst, + ctlr_ref_rst => ddr_ref_rst, -- DDR controller clock domain ctlr_clk_out => ddr_out_clk_i, diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/udp_stream_test.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/udp_stream_test.vhd index b7cb00e69c..f0e63d91b8 100644 --- a/boards/uniboard1/designs/unb1_test/src/vhdl/udp_stream_test.vhd +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/udp_stream_test.vhd @@ -166,13 +166,13 @@ BEGIN dp_rst => dp_rst, dp_clk => dp_clk, - out_sosi_arr => block_gen_src_out_arr,--block_gen_src_1GbE_out_arr, - out_siso_arr => block_gen_src_in_arr,--block_gen_src_1GbE_in_arr, + out_sosi_arr => block_gen_src_out_arr, + out_siso_arr => block_gen_src_in_arr, - reg_bg_ctrl_mosi => reg_diag_bg_mosi,--reg_diag_bg_1GbE_mosi, - reg_bg_ctrl_miso => reg_diag_bg_miso,--reg_diag_bg_1GbE_miso, - ram_bg_data_mosi => ram_diag_bg_mosi,--ram_diag_bg_1GbE_mosi, - ram_bg_data_miso => ram_diag_bg_miso --ram_diag_bg_1GbE_miso + reg_bg_ctrl_mosi => reg_diag_bg_mosi, + reg_bg_ctrl_miso => reg_diag_bg_miso, + ram_bg_data_mosi => ram_diag_bg_mosi, + ram_bg_data_miso => ram_diag_bg_miso ); gen_dp_fifo_sc : FOR i IN 0 TO g_nof_streams-1 GENERATE @@ -196,9 +196,6 @@ BEGIN ); END GENERATE; - --gen_bg_src_out_arr : FOR i IN 0 TO g_nof_streams-1 GENERATE - -- bg_src_out_arr(i) <= fifo_block_gen_src_out_arr(i); - --END GENERATE; ----------------------------------------------------------------------------- -- TX: dp_offload_tx @@ -336,7 +333,6 @@ BEGIN reg_data_buf_mosi => reg_diag_data_buf_mosi, reg_data_buf_miso => reg_diag_data_buf_miso, - --in_sync => diag_data_buf_snk_in_arr(0).sop, in_sync => diag_data_buf_snk_in_arr(0).sync, in_sosi_arr => diag_data_buf_snk_in_arr ); diff --git a/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd b/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd index 919dd5e424..d8e8c22cb3 100644 --- a/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd +++ b/boards/uniboard1/designs/unb1_test/src/vhdl/unb1_test.vhd @@ -169,6 +169,21 @@ ARCHITECTURE str OF unb1_test IS CONSTANT c_max_nof_blocks_per_packet_10GbE : NATURAL := c_max_udp_payload_nof_words_10GbE/c_min_nof_words_per_block; + -- ddr + CONSTANT c_wr_chunksize : POSITIVE := 256; + CONSTANT c_wr_nof_chunks : POSITIVE := 1; + CONSTANT c_rd_chunksize : POSITIVE := 32; + CONSTANT c_rd_nof_chunks : POSITIVE := 8; + CONSTANT c_rd_interval : POSITIVE := 32; + CONSTANT c_gapsize : NATURAL := 0; + CONSTANT c_nof_blocks : POSITIVE := 32; + CONSTANT c_reorder_seq_conf : t_reorder_seq := (c_wr_chunksize, + c_rd_chunksize, + c_rd_nof_chunks, + c_rd_interval, + c_gapsize, + c_nof_blocks); + -- System SIGNAL cs_sim : STD_LOGIC; SIGNAL xo_clk : STD_LOGIC; @@ -824,7 +839,7 @@ BEGIN g_bg_gapsize => c_bg_gapsize, g_bg_blocks_per_sync => c_bg_blocks_per_sync, g_tech_ddr => c_ddr_master, - g_reorder_seq => c_reorder_seq_same, + g_reorder_seq => c_reorder_seq_conf,--c_reorder_seq_same, g_ena_pre_transp => FALSE ) PORT MAP ( diff --git a/boards/uniboard1/designs/unb1_test/tb/python/tc_unb1_test.py b/boards/uniboard1/designs/unb1_test/tb/python/tc_unb1_test.py index 1e175e50fa..814ccb8d9f 100644 --- a/boards/uniboard1/designs/unb1_test/tb/python/tc_unb1_test.py +++ b/boards/uniboard1/designs/unb1_test/tb/python/tc_unb1_test.py @@ -63,6 +63,7 @@ import pi_bsn_monitor import pi_diag_block_gen import pi_diag_data_buffer import pi_debug_wave +import pi_io_ddr from tools import * from common import * @@ -122,6 +123,10 @@ def test_BG_to_DB(tc,io,cmd): Bg.write_enable() + ddr = pi_io_ddr.PiIoDdr(tc,io,nof_inst=1) + if tc.sim == True: + do_until_eq(ddr.read_init_done, ms_retry=1000, val=1, s_timeout=13600) # 110000 + bg_ram = [] for s in tc.gpNumbers: ram = Bg.read_waveform_ram(channelNr=s,vLevel=5) @@ -133,6 +138,12 @@ def test_BG_to_DB(tc,io,cmd): rram.append(ram_10G) bg_ram.append(rram) + + # Poll the databuffer to check if the response is there. + # Retry after 3 seconds so we don't issue too many MM reads in case of simulation. + do_until_ge(Db.read_nof_words, ms_retry=3000, val=blocksize, s_timeout=3600) + + db_ram = [] for s in tc.gpNumbers: databuf = Db.read_data_buffer(streamNr=s,vLevel=5) @@ -278,6 +289,15 @@ def test_tr_10GbE(tc,io,cmd): verify_10GbE_status(tc,stat_name,tr10.read_reg(tc.nodeNrs,'REG_TR_10GBE',inst_offs+(REGMAP[stat_name][2][0]),1)) +def test_ddr_stat(tc,io,cmd): + tc.set_section_id('DDR3 status - ') + tc.append_log(3, '>>>') + tc.append_log(1, '>>> %s' % help_text(tc,io,cmd)) + tc.append_log(3, '>>>') + + from pi_io_ddr import REGMAP,PiIoDdr + on_execute(class_definition=PiIoDdr,regmap=REGMAP) + def test_bsn_mon(tc,io,cmd): tc.set_section_id('Read BSN monitor status - ') @@ -483,6 +503,7 @@ Cmd['REMU'] = (test_remu, 'using pi_remu to load user image (access REG_RE Cmd['WDI'] = (test_wdi, 'using pi_wdi to reset to image in bank 0 (access REG_WDI)','') Cmd['XAUI'] = (test_tr_xaui, 'using pi_tr_xaui to read xaui status (access REG_TR_XAUI)','(-r for addressing streams)') Cmd['10GBE'] = (test_tr_10GbE,'using pi_tr_10GbE to read 10GbE status (access REG_TR_10GBE)','(-r for addressing streams)') +Cmd['DDR'] = (test_ddr_stat,'using pi_io_ddr to read DDR3 status (access REG_IO_DDR)','') Cmd['BSN'] = (test_bsn_mon, 'using pi_bsn_monitor to read BSN monitor (access REG_BSN_MONITOR)','') Cmd['BGDB'] = (test_BG_to_DB,'using BG (pi_diag_block_gen.py) and DB (pi_diag_data_buffer.py)','(-r and -s for addressing streams, -n1 for use pps)') Cmd['BGs00100'] = (write_BG_00100,'set test BG pattern ...000000000010000000000...','(-r and -s for addressing streams)') -- GitLab