diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/hdllib.cfg b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/hdllib.cfg index bc61a12970a8de2d4875ed134c8fc20b517dcb0c..86cd5c864bae11956880c80d28f3be47ad002d44 100644 --- a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/hdllib.cfg +++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/hdllib.cfg @@ -2,7 +2,7 @@ hdl_lib_name = unb2_test_10GbE hdl_library_clause_name = unb2_test_10GbE_lib hdl_lib_uses_synth = common mm technology unb2_board unb2_test hdl_lib_uses_sim = -hdl_lib_excludes = ip_arria10_ddr4_4g_1600 ip_arria10_ddr4_8g_2400 ip_arria10_ddr4_4g_2000 +hdl_lib_excludes = ip_arria10_ddr4_4g_1600 ip_arria10_ddr4_8g_2400 ip_arria10_ddr4_4g_2000 ip_arria10_phy_10gbase_r ip_arria10_transceiver_reset_controller_1 hdl_lib_technology = ip_arria10 diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/unb2_test_10GbE.vhd b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/unb2_test_10GbE.vhd index dad36de7900a8dd1c6078fe20091d823c9be0f91..d9dcea6b2ba5040ffc11d957b5bed132d514c159 100644 --- a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/unb2_test_10GbE.vhd +++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_10GbE/unb2_test_10GbE.vhd @@ -31,7 +31,7 @@ USE technology_lib.technology_pkg.ALL; ENTITY unb2_test_10GbE IS GENERIC ( g_design_name : STRING := "unb2_test_10GbE"; - g_design_note : STRING := "10GbE: 3xQSFP"; + g_design_note : STRING := "10GbE: 6xQSFP"; g_sim : BOOLEAN := FALSE; --Overridden by TB g_sim_unb_nr : NATURAL := 0; g_sim_node_nr : NATURAL := 0; diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/ddr_stream.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/ddr_stream.vhd deleted file mode 100644 index 93bb8470fbf7ed9dec32f1849bf98e5c4d7fca77..0000000000000000000000000000000000000000 --- a/boards/uniboard2/designs/unb2_test/src/vhdl/ddr_stream.vhd +++ /dev/null @@ -1,350 +0,0 @@ -------------------------------------------------------------------------------- --- --- Copyright (C) 2015 --- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> --- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> --- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. --- -------------------------------------------------------------------------------- - -LIBRARY IEEE, common_lib, unb2_board_lib, dp_lib, technology_lib, tech_ddr_lib, diag_lib, io_ddr_lib, reorder_lib; -USE IEEE.STD_LOGIC_1164.ALL; -USE IEEE.NUMERIC_STD.ALL; -USE common_lib.common_pkg.ALL; -USE common_lib.common_mem_pkg.ALL; -USE common_lib.common_interface_layers_pkg.ALL; -USE common_lib.common_network_layers_pkg.ALL; -USE common_lib.common_field_pkg.ALL; -USE common_lib.common_mem_pkg.ALL; -USE unb2_board_lib.unb2_board_pkg.ALL; -USE technology_lib.technology_pkg.ALL; -USE technology_lib.technology_select_pkg.ALL; -USE tech_ddr_lib.tech_ddr_pkg.ALL; -USE dp_lib.dp_stream_pkg.ALL; -USE diag_lib.diag_pkg.ALL; -USE reorder_lib.reorder_pkg.ALL; -USE work.unb2_test_pkg.ALL; - -ENTITY ddr_stream IS - GENERIC ( - g_sim : BOOLEAN := FALSE; - g_technology : NATURAL := c_tech_arria10; - g_nof_streams : NATURAL; - g_data_w : NATURAL; - - g_bg_block_size : NATURAL := 1024; - g_bg_gapsize : NATURAL := 0; - g_bg_blocks_per_sync : NATURAL := 200000; - - g_tech_ddr : t_c_tech_ddr := c_tech_ddr4_4g_1600m; -- FIXME ??? - g_ena_pre_transp : BOOLEAN := FALSE; - g_reorder_seq : t_reorder_seq := c_reorder_seq_same - ); - PORT ( - -- System - mm_rst : IN STD_LOGIC; - mm_clk : IN STD_LOGIC; - - dp_rst : IN STD_LOGIC; - dp_clk : IN STD_LOGIC; - - -- blockgen mm - reg_diag_bg_mosi : IN t_mem_mosi := c_mem_mosi_rst; -- BG control register (one for all streams) - reg_diag_bg_miso : OUT t_mem_miso; - ram_diag_bg_mosi : IN t_mem_mosi := c_mem_mosi_rst; -- BG buffer RAM (one per stream) - ram_diag_bg_miso : OUT t_mem_miso; - reg_diag_tx_seq_mosi : IN t_mem_mosi := c_mem_mosi_rst; - reg_diag_tx_seq_miso : OUT t_mem_miso; - - -- bsn - reg_bsn_monitor_mosi : IN t_mem_mosi := c_mem_mosi_rst; - reg_bsn_monitor_miso : OUT t_mem_miso; - - -- databuffer - reg_diag_data_buf_mosi : IN t_mem_mosi := c_mem_mosi_rst; - reg_diag_data_buf_miso : OUT t_mem_miso; - ram_diag_data_buf_mosi : IN t_mem_mosi := c_mem_mosi_rst; - ram_diag_data_buf_miso : OUT t_mem_miso; - reg_diag_rx_seq_mosi : IN t_mem_mosi := c_mem_mosi_rst; - reg_diag_rx_seq_miso : OUT t_mem_miso; - - -- IO DDR register map - reg_io_ddr_mosi : IN t_mem_mosi := c_mem_mosi_rst; - reg_io_ddr_miso : OUT t_mem_miso; - - -- Reorder transpose - ram_ss_ss_transp_mosi : IN t_mem_mosi := c_mem_mosi_rst; - ram_ss_ss_transp_miso : OUT t_mem_miso; - - -- SO-DIMM Memory Bank I - MB_I_IN : IN t_tech_ddr4_phy_in; - MB_I_IO : INOUT t_tech_ddr4_phy_io; - MB_I_OU : OUT t_tech_ddr4_phy_ou - ); -END ddr_stream; - - - -ARCHITECTURE str OF ddr_stream IS - - -- Block generator - CONSTANT c_bg_ctrl : t_diag_block_gen := ('0', -- enable (disabled by default) - '0', -- enable_sync - TO_UVEC( g_bg_block_size, c_diag_bg_samples_per_packet_w), - TO_UVEC(g_bg_blocks_per_sync, c_diag_bg_blocks_per_sync_w), - TO_UVEC( g_bg_gapsize, c_diag_bg_gapsize_w), - TO_UVEC( 0, c_diag_bg_mem_low_adrs_w), - TO_UVEC( g_bg_block_size-1, c_diag_bg_mem_high_adrs_w), - TO_UVEC( 0, c_diag_bg_bsn_init_w)); - - CONSTANT c_max_nof_words_per_block : NATURAL := g_bg_block_size; - CONSTANT c_min_nof_words_per_block : NATURAL := 1; - CONSTANT c_def_nof_blocks_per_packet : NATURAL := 1; - - - -- ddr - CONSTANT c_wr_fifo_depth : NATURAL := 128; -- >=16 , defined at DDR side of the FIFO. - CONSTANT c_rd_fifo_depth : NATURAL := 256; -- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO. - - - SIGNAL block_gen_src_out_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); - SIGNAL block_gen_src_in_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); - SIGNAL fifo_block_gen_src_out_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); - SIGNAL fifo_block_gen_src_in_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy); - - SIGNAL diag_data_buf_snk_in_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); - SIGNAL diag_data_buf_snk_out_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0); - - -- Signals to interface with the DDR conroller and memory model. - SIGNAL ctlr_dvr_miso : t_mem_ctlr_miso; - SIGNAL ctlr_dvr_mosi : t_mem_ctlr_mosi; - - SIGNAL to_mem_siso : t_dp_siso := c_dp_siso_rdy; - SIGNAL to_mem_sosi : t_dp_sosi; - - 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; - -BEGIN - - ----------------------------------------------------------------------------- - -- TX: Block generator and DP fifo - ----------------------------------------------------------------------------- - u_mms_diag_block_gen: ENTITY diag_lib.mms_diag_block_gen - GENERIC MAP ( - g_nof_streams => g_nof_streams, - g_buf_dat_w => g_data_w, - g_buf_addr_w => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)), - g_file_index_arr => array_init(0, g_nof_streams), - g_file_name_prefix => "hex/counter_data_" & NATURAL'IMAGE(g_data_w), - g_diag_block_gen_rst => c_bg_ctrl, - g_use_tx_seq => TRUE - ) - PORT MAP ( - mm_rst => mm_rst, - mm_clk => mm_clk, - - dp_rst => dp_rst, - dp_clk => dp_clk, - en_sync => '1', - - 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_bg_ctrl_miso => reg_diag_bg_miso, - ram_bg_data_mosi => ram_diag_bg_mosi, - ram_bg_data_miso => ram_diag_bg_miso, - reg_tx_seq_mosi => reg_diag_tx_seq_mosi, - reg_tx_seq_miso => reg_diag_tx_seq_miso - ); - - - - u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor - GENERIC MAP ( - g_nof_streams => g_nof_streams, - g_cross_clock_domain => TRUE, - --g_sync_timeout => g_bg_blocks_per_sync*(g_bg_block_size+g_bg_gapsize), - g_cnt_sop_w => c_word_w,--ceil_log2(g_bg_blocks_per_sync+1), - g_cnt_valid_w => c_word_w,--ceil_log2(g_bg_blocks_per_sync*g_bg_block_size+1), - g_log_first_bsn => TRUE - ) - PORT MAP ( - mm_rst => mm_rst, - mm_clk => mm_clk, - reg_mosi => reg_bsn_monitor_mosi, - reg_miso => reg_bsn_monitor_miso, - - dp_rst => dp_rst, - dp_clk => dp_clk, - in_siso_arr => diag_data_buf_snk_out_arr, - in_sosi_arr => diag_data_buf_snk_in_arr - ); - - diag_data_buf_snk_out_arr <= (OTHERS=>c_dp_siso_rdy); - - u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer - GENERIC MAP ( - g_nof_streams => g_nof_streams, - g_data_w => 32, --g_data_w, --FIXME - g_buf_nof_data => 1024, - g_buf_use_sync => FALSE, -- sync by reading last address of data buffer - g_use_rx_seq => TRUE - ) - PORT MAP ( - mm_rst => mm_rst, - mm_clk => mm_clk, - dp_rst => dp_rst, - dp_clk => dp_clk, - - ram_data_buf_mosi => ram_diag_data_buf_mosi, - ram_data_buf_miso => ram_diag_data_buf_miso, - reg_data_buf_mosi => reg_diag_data_buf_mosi, - reg_data_buf_miso => reg_diag_data_buf_miso, - reg_rx_seq_mosi => reg_diag_rx_seq_mosi, - reg_rx_seq_miso => reg_diag_rx_seq_miso, - - in_sync => diag_data_buf_snk_in_arr(0).sync, - in_sosi_arr => diag_data_buf_snk_in_arr - ); - - - u_transpose: ENTITY reorder_lib.reorder_transpose - GENERIC MAP( - g_nof_streams => g_nof_streams, - g_in_dat_w => g_data_w, - g_frame_size_in => g_reorder_seq.wr_chunksize, - g_frame_size_out => g_reorder_seq.wr_chunksize, - g_use_complex => FALSE, - g_ena_pre_transp => g_ena_pre_transp, - g_reorder_seq => g_reorder_seq - ) - PORT MAP ( - mm_rst => mm_rst, - mm_clk => mm_clk, - - dp_rst => ddr_out_rst_i, - dp_clk => ddr_out_clk_i, - - -- ST sink - snk_out_arr => block_gen_src_in_arr, - snk_in_arr => block_gen_src_out_arr, - - -- ST source - src_in_arr => (OTHERS => c_dp_siso_rdy), - src_out_arr => diag_data_buf_snk_in_arr, - - ram_ss_ss_transp_mosi => ram_ss_ss_transp_mosi, - ram_ss_ss_transp_miso => ram_ss_ss_transp_miso, - - -- Control interface to the external memory - dvr_miso => ctlr_dvr_miso, - dvr_mosi => ctlr_dvr_mosi, - - -- Data interface to the external memory - to_mem_src_out => to_mem_sosi, - to_mem_src_in => to_mem_siso, - - from_mem_snk_in => from_mem_sosi, - from_mem_snk_out => from_mem_siso - - ); - - 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 - ------------------------------------------------------------------------------ - u_ddr_mem_ctrl : ENTITY io_ddr_lib.io_ddr - GENERIC MAP( - g_technology => g_technology, - g_tech_ddr => g_tech_ddr, - g_cross_domain_dvr_ctlr => FALSE, - --g_wr_data_w => g_data_w, - g_wr_fifo_depth => c_wr_fifo_depth, - g_rd_fifo_depth => c_rd_fifo_depth, - --g_rd_data_w => g_data_w, - g_wr_flush_mode => "SYN", - g_wr_flush_use_channel => FALSE, - g_wr_flush_start_channel => 0, - g_wr_flush_nof_channels => 1 - ) - PORT MAP ( - mm_rst => mm_rst, - mm_clk => mm_clk, - - -- MM register map for DDR controller status info - reg_io_ddr_mosi => reg_io_ddr_mosi, - reg_io_ddr_miso => reg_io_ddr_miso, - - -- DDR reference clock - ctlr_ref_clk => dp_clk, - ctlr_ref_rst => ddr_ref_rst, - - -- DDR controller clock domain - ctlr_clk_out => ddr_out_clk_i, - ctlr_rst_out => ddr_out_rst_i, - - ctlr_clk_in => ddr_out_clk_i, - ctlr_rst_in => ddr_out_rst_i, - - - -- Driver clock domain - dvr_clk => ddr_out_clk_i, - dvr_rst => ddr_out_rst_i, - - dvr_miso => ctlr_dvr_miso, - dvr_mosi => ctlr_dvr_mosi, - - -- Write FIFO clock domain - wr_clk => ddr_out_clk_i, - wr_rst => ddr_out_rst_i, - - wr_fifo_usedw => OPEN, - wr_sosi => to_mem_sosi, - wr_siso => to_mem_siso, - - -- Read FIFO clock domain - rd_clk => ddr_out_clk_i, - rd_rst => ddr_out_rst_i, - - rd_fifo_usedw => OPEN, - rd_sosi => from_mem_sosi, - rd_siso => from_mem_siso, - - term_ctrl_out => OPEN, - term_ctrl_in => OPEN, - - phy4_in => MB_I_IN, - phy4_io => MB_I_IO, - phy4_ou => MB_I_OU - ); -END str; - diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd index 716fb49cf5290a075407439e5179c912835ee515..009fd4d7990b9f8fee13dae6b8b22a1da35188d1 100644 --- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd @@ -20,7 +20,7 @@ -- ------------------------------------------------------------------------------- -LIBRARY IEEE, common_lib, unb2_board_lib, dp_lib, eth_lib, tr_10GbE_lib, diag_lib, technology_lib, tech_ddr_lib, io_ddr_lib, tech_clkbuf_lib; +LIBRARY IEEE, common_lib, unb2_board_lib, dp_lib, eth_lib, tr_10GbE_lib, diag_lib, technology_lib, tech_ddr_lib, io_ddr_lib; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; @@ -221,8 +221,6 @@ ARCHITECTURE str OF unb2_test IS SIGNAL dp_clk : STD_LOGIC; SIGNAL dp_rst : STD_LOGIC; - SIGNAL SA_CLK_buf : STD_LOGIC; - SIGNAL mb_I_ref_rst : STD_LOGIC; SIGNAL mb_II_ref_rst : STD_LOGIC; diff --git a/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd b/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd index d439accf217c984644ff98c75f6429b0cf0404a4..cf4c5decef1f79342a05275dd2fe701f0167c70d 100644 --- a/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd @@ -231,16 +231,16 @@ BEGIN -- Serial I/O QSFP_0_TX => si_lpbk_0, QSFP_0_RX => si_lpbk_0, --- QSFP_1_TX => si_lpbk_1, --- QSFP_1_RX => si_lpbk_1, --- QSFP_2_TX => si_lpbk_2, --- QSFP_2_RX => si_lpbk_2, --- QSFP_3_TX => si_lpbk_3, --- QSFP_3_RX => si_lpbk_3, --- QSFP_4_TX => si_lpbk_4, --- QSFP_4_RX => si_lpbk_4, --- QSFP_5_TX => si_lpbk_5, --- QSFP_5_RX => si_lpbk_5, + QSFP_1_TX => si_lpbk_1, + QSFP_1_RX => si_lpbk_1, + QSFP_2_TX => si_lpbk_2, + QSFP_2_RX => si_lpbk_2, + QSFP_3_TX => si_lpbk_3, + QSFP_3_RX => si_lpbk_3, + QSFP_4_TX => si_lpbk_4, + QSFP_4_RX => si_lpbk_4, + QSFP_5_TX => si_lpbk_5, + QSFP_5_RX => si_lpbk_5, -- -- RING_0_TX => si_lpbk_6, -- RING_0_RX => si_lpbk_6,