From e5cf88869e2fb0b995cde71dce466202de8dfc7b Mon Sep 17 00:00:00 2001 From: Leon Hiemstra <hiemstra@astron.nl> Date: Tue, 17 Feb 2015 15:59:48 +0000 Subject: [PATCH] this design: 4xQSFP + 4xBack. Synthese ok --- .../unb2_test/src/vhdl/mmm_unb2_test.vhd | 2 +- .../designs/unb2_test/src/vhdl/unb2_test.vhd | 152 +++++++++--------- .../unb2_test/tb/vhdl/tb_unb2_test.vhd | 9 +- 3 files changed, 87 insertions(+), 76 deletions(-) diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd index a406a4a49e..9358667f7c 100644 --- a/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd @@ -289,7 +289,7 @@ BEGIN -- Procedure that polls a sim control file that can be used to e.g. get -- the simulation time in ns ---------------------------------------------------------------------------- - mmf_poll_sim_ctrl_file(c_mmf_unb_file_path & "sim.ctrl", c_mmf_unb_file_path & "sim.stat"); + mmf_poll_sim_ctrl_file(mm_clk,c_mmf_unb_file_path & "sim.ctrl", c_mmf_unb_file_path & "sim.stat"); END GENERATE; 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 ee4a1629f5..3fff3c144e 100644 --- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd @@ -49,7 +49,7 @@ ENTITY unb2_test IS g_factory_image : BOOLEAN := FALSE; g_nof_streams_qsfp : NATURAL := 4;--c_unb2_board_tr_qsfp.nof_bus * c_unb2_board_tr_qsfp.bus_w; g_nof_streams_ring : NATURAL := 0; --FIXME - g_nof_streams_back : NATURAL := 0 --FIXME + g_nof_streams_back : NATURAL := 4 --FIXME ); PORT ( -- GENERAL @@ -79,11 +79,11 @@ ENTITY unb2_test IS BCK_REF_CLK : IN STD_LOGIC; -- -- back transceivers --- BCK_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 downto 0); --- BCK_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 downto 0); --- BCK_SDA : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0); --- BCK_SCL : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0); --- BCK_ERR : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0); + BCK_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 downto 0); + BCK_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 downto 0); + BCK_SDA : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0); + BCK_SCL : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0); + BCK_ERR : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0); -- ring transceivers -- RING_0_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0); @@ -97,8 +97,8 @@ ENTITY unb2_test IS -- front transceivers QSFP_0_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); QSFP_0_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); --- QSFP_1_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); --- QSFP_1_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); +-- QSFP_1_RX : IN STD_LOGIC_VECTOR(1 downto 0); --c_unb2_board_tr_qsfp.bus_w-1 downto 0); +-- QSFP_1_TX : OUT STD_LOGIC_VECTOR(1 downto 0); --c_unb2_board_tr_qsfp.bus_w-1 downto 0); -- QSFP_2_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); -- QSFP_2_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); -- QSFP_3_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0); @@ -130,6 +130,7 @@ ARCHITECTURE str OF unb2_test IS CONSTANT c_use_10GbE : BOOLEAN := TRUE; --g_design_name = "unb2_test_10GbE"; CONSTANT g_nof_streams : NATURAL := (g_nof_streams_qsfp + g_nof_streams_ring + g_nof_streams_back); CONSTANT g_nof_qsfp_bus : NATURAL := ceil_div(g_nof_streams_qsfp,c_unb2_board_tr_qsfp.bus_w); + CONSTANT g_nof_back_bus : NATURAL := ceil_div(g_nof_streams_back,c_unb2_board_tr_back.bus_w); CONSTANT c_data_w : NATURAL := sel_a_b(c_use_lpbk, c_lpbk_data_w, -- Select correct c_data_w when one interface is used sel_a_b(c_use_1GbE, c_eth_data_w, sel_a_b(c_use_10GbE, c_xgmii_data_w, 0))); @@ -278,11 +279,13 @@ ARCHITECTURE str OF unb2_test IS SIGNAL serial_10G_rx_qsfp_arr : STD_LOGIC_VECTOR(g_nof_streams_qsfp-1 DOWNTO 0); SIGNAL serial_10G_tx_ring_arr : STD_LOGIC_VECTOR(g_nof_streams_ring-1 DOWNTO 0) := (OTHERS=>'0'); SIGNAL serial_10G_rx_ring_arr : STD_LOGIC_VECTOR(g_nof_streams_ring-1 DOWNTO 0); - SIGNAL serial_10G_tx_back_arr : STD_LOGIC_VECTOR(g_nof_streams_back-1 DOWNTO 0) := (OTHERS=>'0'); - SIGNAL serial_10G_rx_back_arr : STD_LOGIC_VECTOR(g_nof_streams_back-1 DOWNTO 0); + SIGNAL serial_10G_tx_back_arr : STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); + SIGNAL serial_10G_rx_back_arr : STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 DOWNTO 0); SIGNAL reg_tr_10GbE_mosi : t_mem_mosi; SIGNAL reg_tr_10GbE_miso : t_mem_miso; + SIGNAL reg_tr_10GbE_mosi2 : t_mem_mosi; + SIGNAL reg_tr_10GbE_miso2 : t_mem_miso; SIGNAL reg_dp_ram_from_mm_mosi : t_mem_mosi; SIGNAL reg_dp_ram_from_mm_miso : t_mem_miso := c_mem_miso_rst; @@ -330,10 +333,6 @@ ARCHITECTURE str OF unb2_test IS 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); - --SIGNAL tmp_dp_offload_tx_src_out_arr : t_dp_sosi_arr(4*g_nof_streams-1 DOWNTO 0); - --SIGNAL tmp_dp_offload_tx_src_in_arr : t_dp_siso_arr(4*g_nof_streams-1 DOWNTO 0); - --SIGNAL tmp_dp_offload_rx_snk_in_arr : t_dp_sosi_arr(4*g_nof_streams-1 DOWNTO 0); - SIGNAL user_green_led_arr : STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.nof_bus-1 DOWNTO 0); SIGNAL user_red_led_arr : STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.nof_bus-1 DOWNTO 0); @@ -343,7 +342,6 @@ ARCHITECTURE str OF unb2_test IS SIGNAL eth1g_udp_rx_sosi_arr : t_dp_sosi_arr(g_nof_streams-1 DOWNTO 0); SIGNAL eth1g_udp_rx_siso_arr : t_dp_siso_arr(g_nof_streams-1 DOWNTO 0); - BEGIN ----------------------------------------------------------------------------- @@ -808,43 +806,43 @@ BEGIN serial_rx_arr => i_serial_10G_rx_qsfp_ring_arr ); --- u_tr_10GbE_back: ENTITY unb2_board_lib.unb2_board_10gbe --- GENERIC MAP ( --- g_technology => g_technology, --- g_sim => g_sim, --- g_sim_level => 1, --- g_nof_macs => g_nof_streams_back, --- g_tx_fifo_fill => c_def_10GbE_block_size, --- g_tx_fifo_size => c_def_10GbE_block_size*2 --- ) --- PORT MAP ( --- tr_ref_clk => SB_CLK, --- --- -- MM interface --- mm_rst => mm_rst, --- mm_clk => mm_clk, --- --- reg_mac_mosi => reg_tr_10GbE_mosi, -- FIXME use separate --- reg_mac_miso => reg_tr_10GbE_miso, --- --- -- DP interface --- dp_rst => dp_rst, --- dp_clk => dp_clk, --- --- src_out_arr => dp_offload_rx_snk_in_arr((g_nof_streams_back-1) DOWNTO 0), --- src_in_arr => dp_offload_rx_snk_out_arr((g_nof_streams_back-1) DOWNTO 0), --- --- snk_out_arr => dp_offload_tx_src_in_arr((g_nof_streams_back-1) DOWNTO 0), --- snk_in_arr => dp_offload_tx_src_out_arr((g_nof_streams_back-1) DOWNTO 0), --- --- -- Serial IO --- serial_tx_arr => i_serial_10G_tx_back_arr, --- serial_rx_arr => i_serial_10G_rx_back_arr --- ); + u_tr_10GbE_back: ENTITY unb2_board_lib.unb2_board_10gbe + GENERIC MAP ( + g_technology => g_technology, + g_sim => g_sim, + g_sim_level => 1, + g_nof_macs => g_nof_streams_back, + g_tx_fifo_fill => c_def_10GbE_block_size, + g_tx_fifo_size => c_def_10GbE_block_size*2 + ) + PORT MAP ( + tr_ref_clk => SB_CLK, + -- MM interface + mm_rst => mm_rst, + mm_clk => mm_clk, + reg_mac_mosi => reg_tr_10GbE_mosi2, -- FIXME use separate + reg_mac_miso => reg_tr_10GbE_miso2, - gen_wires: FOR i IN 0 TO g_nof_streams_qsfp-1 GENERATE + -- DP interface + dp_rst => dp_rst, + dp_clk => dp_clk, + + src_out_arr => dp_offload_rx_snk_in_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring), + src_in_arr => dp_offload_rx_snk_out_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring), + + snk_out_arr => dp_offload_tx_src_in_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring), + snk_in_arr => dp_offload_tx_src_out_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring), + + -- Serial IO + serial_tx_arr => i_serial_10G_tx_back_arr, + serial_rx_arr => i_serial_10G_rx_back_arr + ); + + + + gen_qsfp_wires: FOR i IN 0 TO g_nof_streams_qsfp-1 GENERATE serial_10G_tx_qsfp_arr(i) <= i_serial_10G_tx_qsfp_ring_arr(i); i_serial_10G_rx_qsfp_ring_arr(i) <= serial_10G_rx_qsfp_arr(i); END GENERATE; @@ -859,6 +857,8 @@ BEGIN ) PORT MAP ( + --serial_tx_arr(g_nof_streams_qsfp-1 downto 0) => serial_10G_tx_qsfp_arr, + --serial_rx_arr(g_nof_streams_qsfp-1 downto 0) => serial_10G_rx_qsfp_arr, serial_tx_arr => serial_10G_tx_qsfp_arr, serial_rx_arr => serial_10G_rx_qsfp_arr, @@ -869,8 +869,11 @@ BEGIN -- front transceivers QSFP_RX(0) => QSFP_0_RX, QSFP_TX(0) => QSFP_0_TX, --- QSFP_RX(1) => QSFP_1_RX, --- QSFP_TX(1) => QSFP_1_TX, +-- QSFP_RX(1)(0) => QSFP_1_RX(0), +-- QSFP_RX(1)(1) => QSFP_1_RX(1), +-- QSFP_TX(1)(0) => QSFP_1_TX(0), +-- QSFP_TX(1)(1) => QSFP_1_TX(1), + -- QSFP_RX(2) => QSFP_2_RX, -- QSFP_TX(2) => QSFP_2_TX, -- QSFP_RX(3) => QSFP_3_RX, @@ -888,11 +891,7 @@ BEGIN ); - --tmp_dp_offload_tx_src_out_arr(0) <= dp_offload_tx_src_out_arr(0); - --tmp_dp_offload_tx_src_in_arr(0) <= dp_offload_tx_src_in_arr(0); - --tmp_dp_offload_rx_snk_in_arr(0) <= dp_offload_rx_snk_in_arr(0); - - u_front_led : ENTITY work.unb2_board_qsfp_leds + u_front_led : ENTITY unb2_board_lib.unb2_board_qsfp_leds GENERIC MAP ( g_sim => g_sim, g_factory_image => g_factory_image, @@ -907,6 +906,9 @@ BEGIN --pulse_ms => pulse_ms, --pulse_s => pulse_s, -- lane status + --tx_siso_arr(g_nof_streams_qsfp-1 downto 0) => dp_offload_tx_src_in_arr(g_nof_streams_qsfp-1 DOWNTO 0), + --tx_sosi_arr(g_nof_streams_qsfp-1 downto 0) => dp_offload_tx_src_out_arr(g_nof_streams_qsfp-1 DOWNTO 0), + --rx_sosi_arr(g_nof_streams_qsfp-1 downto 0) => dp_offload_rx_snk_in_arr(g_nof_streams_qsfp-1 DOWNTO 0), tx_siso_arr => dp_offload_tx_src_in_arr(g_nof_streams_qsfp-1 DOWNTO 0), tx_sosi_arr => dp_offload_tx_src_out_arr(g_nof_streams_qsfp-1 DOWNTO 0), rx_sosi_arr => dp_offload_rx_snk_in_arr(g_nof_streams_qsfp-1 DOWNTO 0), @@ -915,24 +917,28 @@ BEGIN red_led_arr => user_red_led_arr(g_nof_qsfp_bus-1 DOWNTO 0) ); + gen_back_wires: FOR i IN 0 TO g_nof_streams_back-1 GENERATE + serial_10G_tx_back_arr(i) <= i_serial_10G_tx_back_arr(i); + i_serial_10G_rx_back_arr(i) <= serial_10G_rx_back_arr(i); + END GENERATE; --- u_back_io : ENTITY unb2_board_lib.unb2_board_back_io --- GENERIC MAP ( --- g_nof_back_io => g_nof_streams_back --- ) --- PORT MAP ( --- serial_tx_arr => serial_10G_tx_back_arr, --- serial_rx_arr => serial_10G_rx_back_arr, --- --- -- Serial I/O --- -- back transceivers --- BCK_RX => BCK_RX, --- BCK_TX => BCK_TX, --- --- BCK_SDA => BCK_SDA, --- BCK_SCL => BCK_SCL, --- BCK_ERR => BCK_ERR --- ); + u_back_io : ENTITY unb2_board_lib.unb2_board_back_io + GENERIC MAP ( + g_nof_back_bus => g_nof_back_bus + ) + PORT MAP ( + serial_tx_arr => serial_10G_tx_back_arr, + serial_rx_arr => serial_10G_rx_back_arr, + + -- Serial I/O + -- back transceivers + BCK_RX(0) => BCK_RX,--(g_nof_streams_back-1 downto 0), + BCK_TX(0) => BCK_TX,--(g_nof_streams_back-1 downto 0), + + BCK_SDA => BCK_SDA, + BCK_SCL => BCK_SCL, + BCK_ERR => BCK_ERR + ); -- -- u_ring_io : ENTITY unb2_board_lib.unb2_board_ring_io -- GENERIC MAP ( 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 82592af4c4..d36b0616c0 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 @@ -104,7 +104,9 @@ ARCHITECTURE tb OF tb_unb2_test IS --SIGNAL si_fn_lpbk_1 : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); --SIGNAL si_fn_lpbk_2 : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); --SIGNAL si_fn_lpbk_3 : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); - SIGNAL si_lpbk_0 : STD_LOGIC_VECTOR(0 DOWNTO 0); + SIGNAL si_lpbk_0 : STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 DOWNTO 0); + SIGNAL si_lpbk_1 : STD_LOGIC_VECTOR(3 DOWNTO 0); + -- Model I2C sensor slaves as on the UniBoard @@ -189,7 +191,10 @@ BEGIN -- Serial I/O QSFP_0_TX => si_lpbk_0, - QSFP_0_RX => si_lpbk_0 + QSFP_0_RX => si_lpbk_0, + + BCK_TX => si_lpbk_1, + BCK_RX => si_lpbk_1 ); ------------------------------------------------------------------------------ -- GitLab