diff --git a/boards/uniboard2/designs/unb2_test/build/quartus/unb2_test.qsf b/boards/uniboard2/designs/unb2_test/build/quartus/unb2_test.qsf index aed2de0d9bed152d1ab4332a06d651a10432d403..3903ee4ffc1444cd0f0ba3a08c484d1358acbba9 100644 --- a/boards/uniboard2/designs/unb2_test/build/quartus/unb2_test.qsf +++ b/boards/uniboard2/designs/unb2_test/build/quartus/unb2_test.qsf @@ -1569,6 +1569,73 @@ set_location_assignment PIN_J37 -to "RING_1_RX[0](n)" set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA set_global_assignment -name DEVICE_FILTER_PIN_COUNT 1932 + +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_xonoff.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_pipeline.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_shiftreg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_tail_remove.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_ram_to_mm.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_hdr_remove.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_frame_remove.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_pad_insert.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/mdio/src/vhdl/mdio_ctlr.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/mdio/src/vhdl/mdio_phy_reg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/mdio/src/vhdl/mdio_phy.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/vhdl/tr_xaui_align_dly.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_gap.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/vhdl/tr_xaui_deframer.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/vhdl/tr_xaui_framer.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_nonbonded/tb/vhdl/deserializer.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_nonbonded/tb/vhdl/serializer.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/tb/vhdl/sim_xaui.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_mem_mux.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/ip/megawizard/reconfig_soft.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/ip/megawizard/phy_xaui_soft.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/ip/megawizard/phy_xaui_2.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/ip/megawizard/phy_xaui_1.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/ip/megawizard/reconfig.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/ip/megawizard/phy_xaui_0.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/vhdl/phy_xaui.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/mdio/src/vhdl/mdio_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/mdio/src/vhdl/mdio_vitesse_vsc8486_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/vhdl/tr_xaui.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_10GbE/src/ip/megawizard/mac_10g/mac_10g.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_fifo_sc.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_fifo_sc.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_fifo_fill.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_ready.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_split.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_pad_remove.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_hold_ctrl.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_hold_input.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_concat.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_ram_from_mm_reg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_ram_cr_cw_ratio.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_ram_from_mm.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/mms_dp_ram_from_mm.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_hdr_insert.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_fifo_dc.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_fifo_dc.vhd +set_global_assignment -name VHDL_FILE ../../../../../../libraries/base/common/src/vhdl/common_network_layers_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd +set_global_assignment -name VHDL_FILE ../../../../../../libraries/technology/transceiver/tech_transceiver_arria10_48.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_spulse.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_reg_cross_domain.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/diag/src/vhdl/diag_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/diagnostics/src/vhdl/diagnostics_reg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_mon.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/diag/src/vhdl/diag_rx_seq.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/Lofar/diag/src/vhdl/diag_tx_seq.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_block_gen.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_latency_increase.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/dp/src/vhdl/dp_latency_adapter.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/diagnostics/src/vhdl/diagnostics.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_lfsr_sequences_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/diagnostics/src/vhdl/mms_diagnostics.vhd +set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/tr_xaui/src/vhdl/tr_xaui_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../libraries/technology/technology_select_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../libraries/technology/technology_pkg.vhd +set_global_assignment -name VHDL_FILE ../../../../../../libraries/io/node_unb_tr_10GbE/src/vhdl/node_unb_tr_10GbE.vhd set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/MegaWizard/mem/ram_cr_cw.vhd set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/MegaWizard/mem/ram_crw_crw.vhd set_global_assignment -name VHDL_FILE ../../../../../../../../UniBoard/trunk/Firmware/modules/common/src/vhdl/common_ram_crw_crw_a_stratix4.vhd @@ -1607,4 +1674,4 @@ set_global_assignment -name QSYS_FILE ../../src/ip/ddr4.qsys set_global_assignment -name SIP_FILE ../../src/ip/ddr4.sip set_global_assignment -name VHDL_FILE ../../src/vhdl/unb2_test.vhd set_global_assignment -name SOURCE_FILE db/unb2_test.cmp.rdb -set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file 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 1436016738c776fa0a39d21a73de7ded947e68d6..5ee029e6706c90ba18ec11e714ce6cc6f3e06f65 100644 --- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd +++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd @@ -20,11 +20,18 @@ -- ------------------------------------------------------------------------------- -LIBRARY IEEE, unb_common_lib; +LIBRARY IEEE, common_lib, unb_common_lib, diagnostics_lib, dp_lib, tr_xaui_lib, tr_10GbE_lib, technology_lib, tech_memory_lib; use unb_common_lib.unb_common_pkg.all; USE IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; +USE common_lib.common_pkg.ALL; +USE common_lib.common_mem_pkg.ALL; +USE unb_common_lib.unb_common_pkg.ALL; +USE tr_xaui_lib.tr_xaui_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; +USE technology_lib.technology_select_pkg.ALL; +USE technology_lib.technology_pkg.ALL; ENTITY unb2_test IS @@ -180,69 +187,6 @@ architecture str of unb2_test is ); end component ddr4; - component transceiver_phy is - port ( - tx_analogreset : in std_logic_vector(47 downto 0) := (others => 'X'); -- tx_analogreset - tx_digitalreset : in std_logic_vector(47 downto 0) := (others => 'X'); -- tx_digitalreset - rx_analogreset : in std_logic_vector(47 downto 0) := (others => 'X'); -- rx_analogreset - rx_digitalreset : in std_logic_vector(47 downto 0) := (others => 'X'); -- rx_digitalreset - tx_cal_busy : out std_logic_vector(47 downto 0); -- tx_cal_busy - rx_cal_busy : out std_logic_vector(47 downto 0); -- rx_cal_busy - rx_is_lockedtodata : out std_logic_vector(47 downto 0) := (others => 'X'); -- rx_is_lockedtodata - tx_serial_clk0 : in std_logic_vector(47 downto 0) := (others => 'X'); -- clk - rx_cdr_refclk0 : in std_logic := 'X'; -- clk - tx_serial_data : out std_logic_vector(47 downto 0); -- tx_serial_data - rx_serial_data : in std_logic_vector(47 downto 0) := (others => 'X'); -- rx_serial_data - tx_coreclkin : in std_logic_vector(47 downto 0) := (others => 'X'); -- clk - rx_coreclkin : in std_logic_vector(47 downto 0) := (others => 'X'); -- clk - tx_clkout : out std_logic_vector(47 downto 0); -- clk - rx_clkout : out std_logic_vector(47 downto 0); -- clk - tx_enh_data_valid : in std_logic_vector(47 downto 0) := (others => 'X'); -- tx_enh_data_valid - rx_enh_data_valid : out std_logic_vector(47 downto 0); -- rx_enh_data_valid - rx_enh_blk_lock : out std_logic_vector(47 downto 0); -- rx_enh_blk_lock - tx_parallel_data : in std_logic_vector(3071 downto 0) := (others => 'X'); -- tx_parallel_data - tx_control : in std_logic_vector(383 downto 0) := (others => 'X'); -- tx_control - tx_err_ins : in std_logic_vector(47 downto 0) := (others => 'X'); -- tx_err_ins - unused_tx_parallel_data : in std_logic_vector(3071 downto 0) := (others => 'X'); -- unused_tx_parallel_data - unused_tx_control : in std_logic_vector(431 downto 0) := (others => 'X'); -- unused_tx_control - rx_parallel_data : out std_logic_vector(3071 downto 0); -- rx_parallel_data - rx_control : out std_logic_vector(383 downto 0); -- rx_control - unused_rx_parallel_data : out std_logic_vector(3071 downto 0); -- unused_rx_parallel_data - unused_rx_control : out std_logic_vector(575 downto 0) -- unused_rx_control - ); - end component transceiver_phy; - - - component transceiver_reset_controller is - port ( - clock : in std_logic := 'X'; -- clk - reset : in std_logic := 'X'; -- reset - pll_powerdown : out std_logic_vector(0 downto 0); -- pll_powerdown - tx_analogreset : out std_logic_vector(47 downto 0); -- tx_analogreset - tx_digitalreset : out std_logic_vector(47 downto 0); -- tx_digitalreset - tx_ready : out std_logic_vector(47 downto 0); -- tx_ready - pll_locked : in std_logic_vector(0 downto 0) := (others => 'X'); -- pll_locked - pll_select : in std_logic_vector(0 downto 0) := (others => 'X'); -- pll_select - tx_cal_busy : in std_logic_vector(47 downto 0) := (others => 'X'); -- tx_cal_busy - rx_analogreset : out std_logic_vector(47 downto 0); -- rx_analogreset - rx_digitalreset : out std_logic_vector(47 downto 0); -- rx_digitalreset - rx_ready : out std_logic_vector(47 downto 0); -- rx_ready - rx_is_lockedtodata : in std_logic_vector(47 downto 0) := (others => 'X'); -- rx_is_lockedtodata - rx_cal_busy : in std_logic_vector(47 downto 0) := (others => 'X') -- rx_cal_busy - ); - end component transceiver_reset_controller; - - - component transceiver_pll is - port ( - pll_powerdown : in std_logic := 'X'; -- pll_powerdown - pll_refclk0 : in std_logic := 'X'; -- clk - pll_locked : out std_logic; -- pll_locked - pll_cal_busy : out std_logic; -- pll_cal_busy - mcgb_rst : in std_logic := 'X'; -- mcgb_rst - mcgb_serial_clk : out std_logic -- clk - ); - end component transceiver_pll; component system_pll is port ( @@ -255,7 +199,7 @@ architecture str of unb2_test is ); end component system_pll; - component unb2_pinning_qsys is + component unb2_test_qsys is port ( clk_clk : in std_logic := 'X'; -- clk reset_reset_n : in std_logic := 'X'; -- reset_n @@ -316,11 +260,15 @@ architecture str of unb2_test is pio_0_external_connection_export : in std_logic_vector(10 downto 0) := (others => 'X') -- export ); - end component unb2_pinning_qsys; + end component unb2_test_qsys; -- constants constant cs_sim : std_logic := '0'; constant cs_sync : std_logic := '1'; + --CONSTANT c_block_len : NATURAL := 180; -- = 1440 user bytes. Including packetizing: 1508 bytes. + CONSTANT c_block_len : NATURAL := 1118;-- = 8944 user bytes. Including packetizing: 9012 bytes. + type t_mem_mosi_arr is array (0 to 2) of t_mem_mosi; + type t_mem_miso_arr is array (0 to 2) of t_mem_miso; -- general reset and clock signals signal reset_n : std_logic := '0'; @@ -361,50 +309,42 @@ architecture str of unb2_test is signal local_ii_read_data_valid: std_logic; signal mb_ii_a_internal : std_logic_vector(16 downto 0); + -- signals for the mm buses + signal reg_diagnostics_front_mosi : t_mem_mosi_arr; + signal reg_diagnostics_front_miso : t_mem_miso_arr; + signal reg_hdr_insert_front_mosi : t_mem_mosi; + signal ram_hdr_insert_front_mosi : t_mem_mosi; + signal ram_hdr_remove_front_mosi : t_mem_mosi; + signal ram_hdr_remove_front_miso : t_mem_miso; + signal reg_mac_front_mosi : t_mem_mosi; + signal reg_mac_front_miso : t_mem_miso; + + signal reg_diagnostics_back_mosi : t_mem_mosi_arr; + signal reg_diagnostics_back_miso : t_mem_miso_arr; + signal reg_hdr_insert_back_mosi : t_mem_mosi; + signal ram_hdr_insert_back_mosi : t_mem_mosi; + signal ram_hdr_remove_back_mosi : t_mem_mosi; + signal ram_hdr_remove_back_miso : t_mem_miso; + signal reg_mac_back_mosi : t_mem_mosi; + signal reg_mac_back_miso : t_mem_miso; +-- signal xaui_rx_arr_dummy : t_unb_xaui_sl_2arr(47 downto 0) := (others=>"0000"); + signal xaui_rx_arr_dummy : t_xaui_arr(47 DOWNTO 0); + -- signals for the transceivers signal tx_serial_data_front : std_logic_vector(47 downto 0); signal rx_serial_data_front : std_logic_vector(47 downto 0); - signal dataloopback_front : std_logic_vector(3071 downto 0); - signal controlloopback_front : std_logic_vector(383 downto 0); - signal tx_serdesclk_front : std_logic_vector(47 downto 0); - signal validloopback_front : std_logic_vector(47 downto 0); - signal tx_analogreset_front : std_logic_vector(47 downto 0); - signal tx_digitalreset_front : std_logic_vector(47 downto 0); - signal rx_analogreset_front : std_logic_vector(47 downto 0); - signal rx_digitalreset_front : std_logic_vector(47 downto 0); - signal tx_cal_busy_front : std_logic_vector(47 downto 0); - signal rx_cal_busy_front : std_logic_vector(47 downto 0); - signal txpll_cal_busy_front : std_logic_vector(47 downto 0); - signal pll_cal_busy_front : std_logic; - signal rx_is_lockedtodata_front: std_logic_vector(47 downto 0); - signal pll_powerdown_front : std_logic_vector(0 downto 0); - signal pll_locked_front : std_logic_vector(0 downto 0); - signal tx_serial_clk_front : std_logic_vector(47 downto 0); - signal mcgb_serial_clk_front : std_logic; + signal diagnostics_front_snk_in_arr : t_dp_sosi_arr(47 DOWNTO 0); + signal diagnostics_front_snk_out_arr : t_dp_siso_arr(47 DOWNTO 0); + signal diagnostics_front_src_out_arr : t_dp_sosi_arr(47 DOWNTO 0); + signal diagnostics_front_src_in_arr : t_dp_siso_arr(47 DOWNTO 0); + signal tx_serial_data_back : std_logic_vector(47 downto 0); signal rx_serial_data_back : std_logic_vector(47 downto 0); - signal dataloopback_back : std_logic_vector(3071 downto 0); - signal controlloopback_back : std_logic_vector(383 downto 0); - signal tx_serdesclk_back : std_logic_vector(47 downto 0); - signal validloopback_back : std_logic_vector(47 downto 0); - signal tx_analogreset_back : std_logic_vector(47 downto 0); - signal tx_digitalreset_back : std_logic_vector(47 downto 0); - signal rx_analogreset_back : std_logic_vector(47 downto 0); - signal rx_digitalreset_back : std_logic_vector(47 downto 0); - signal tx_cal_busy_back : std_logic_vector(47 downto 0); - signal rx_cal_busy_back : std_logic_vector(47 downto 0); - signal txpll_cal_busy_back : std_logic_vector(47 downto 0); - signal pll_cal_busy_back_upper : std_logic; - signal pll_cal_busy_back_lower : std_logic; - signal rx_is_lockedtodata_back: std_logic_vector(47 downto 0); - signal pll_powerdown_back_upper : std_logic_vector(0 downto 0); - signal pll_powerdown_back_lower : std_logic_vector(0 downto 0); - signal pll_locked_back_upper : std_logic_vector(0 downto 0); - signal pll_locked_back_lower : std_logic_vector(0 downto 0); - signal tx_serial_clk_back : std_logic_vector(47 downto 0); - signal mcgb_serial_clk_back_upper : std_logic; - signal mcgb_serial_clk_back_lower : std_logic; + signal diagnostics_back_snk_in_arr : t_dp_sosi_arr(47 DOWNTO 0); + signal diagnostics_back_snk_out_arr : t_dp_siso_arr(47 DOWNTO 0); + signal diagnostics_back_src_out_arr : t_dp_sosi_arr(47 DOWNTO 0); + signal diagnostics_back_src_in_arr : t_dp_siso_arr(47 DOWNTO 0); -- signals for the bidirectional and misc ios signal inta_in : std_logic; @@ -560,7 +500,7 @@ begin ); --- -- ****** Front side transceivers ****** +-- -- ****** Front side transceivers and diagnostics ****** -- RING_0_TX <= tx_serial_data_front(47 downto 36); QSFP_0_TX <= tx_serial_data_front(35 downto 32); @@ -575,203 +515,141 @@ begin & QSFP_0_RX & QSFP_1_RX & QSFP_2_RX & QSFP_3_RX & QSFP_4_RX & QSFP_5_RX & RING_1_RX ; - - transceiver_phy_front : transceiver_phy - port map ( - tx_analogreset => tx_analogreset_front, - tx_digitalreset => tx_digitalreset_front, - rx_analogreset => rx_analogreset_front, - rx_digitalreset => rx_digitalreset_front, - tx_cal_busy => tx_cal_busy_front, - rx_cal_busy => rx_cal_busy_front, - rx_is_lockedtodata => rx_is_lockedtodata_front, - tx_serial_clk0 => tx_serial_clk_front, - rx_cdr_refclk0 => sa_clk, - tx_serial_data => tx_serial_data_front, - rx_serial_data => rx_serial_data_front, - tx_coreclkin => tx_serdesclk_front, -- write side clock for tx fifo - rx_coreclkin => tx_serdesclk_front, - tx_clkout => tx_serdesclk_front, - rx_clkout => open, - tx_enh_data_valid => validloopback_front, - rx_enh_data_valid => validloopback_front, - rx_enh_blk_lock => open, - tx_parallel_data => dataloopback_front, - tx_control => controlloopback_front, - tx_err_ins => (others => '0'), -- use to insert sync errors - unused_tx_parallel_data => (others => '0'), - unused_tx_control => (others => '0'), - rx_parallel_data => dataloopback_front, - rx_control => controlloopback_front, - unused_rx_parallel_data => open, - unused_rx_control => open - ); - - transceiver_reset_front : transceiver_reset_controller - port map ( - clock => clk, - reset => reset_p, - pll_powerdown => pll_powerdown_front, - tx_analogreset => tx_analogreset_front, - tx_digitalreset => tx_digitalreset_front, - tx_ready => open, - pll_locked => pll_locked_front, - pll_select => "0", - tx_cal_busy => txpll_cal_busy_front, - rx_analogreset => rx_analogreset_front, - rx_digitalreset => rx_digitalreset_front, - rx_ready => open, - rx_is_lockedtodata => rx_is_lockedtodata_front, - rx_cal_busy => rx_cal_busy_front + gen_diagnostics_front : for i in 0 to 2 generate + mms_diagnostics_front: ENTITY diagnostics_lib.mms_diagnostics + GENERIC MAP( + g_data_w => c_xgmii_data_w, + g_block_len => c_block_len, + g_nof_streams => 16, + g_separate_clk => FALSE + ) + PORT MAP ( + mm_rst => reset_p, + mm_clk => mm_clk, + st_rst => reset_p, + st_clk => mm_clk, + mm_mosi => reg_diagnostics_front_mosi(i), + mm_miso => reg_diagnostics_front_miso(i), + src_out_arr => diagnostics_front_src_out_arr((i+1)*16-1 downto i*16), + src_in_arr => diagnostics_front_src_in_arr((i+1)*16-1 downto i*16), + snk_out_arr => diagnostics_front_snk_out_arr((i+1)*16-1 downto i*16), + snk_in_arr => diagnostics_front_snk_in_arr((i+1)*16-1 downto i*16) ); + end generate gen_diagnostics_front; + + tr_10GbE_front: ENTITY tr_10GbE_lib.tr_10GbE + GENERIC MAP( + g_technology => c_tech_arria10, + g_sim => false, + g_sim_level => 0, + g_nof_macs => 48, + g_use_mdio => false, + g_mdio_epcs_dis => false, + g_lpbk_sosi => false, + g_lpbk_xgmii => false, + g_lpbk_xaui => false, + g_use_hdr_ram => true + ) + PORT MAP ( + -- System + mm_rst => reset_p, + mm_clk => mm_clk, + tr_clk => SA_CLK, + cal_rec_clk => mm_clk, + dp_rst => reset_p, + dp_clk => mm_clk, + -- MM registers + reg_mac_mosi => reg_mac_front_mosi, + reg_mac_miso => reg_mac_front_miso, + reg_hdr_insert_mosi => reg_hdr_insert_front_mosi, + ram_hdr_insert_mosi => ram_hdr_insert_front_mosi, + ram_hdr_remove_mosi => ram_hdr_remove_front_mosi, + ram_hdr_remove_miso => ram_hdr_remove_front_miso, + src_out_arr => diagnostics_front_snk_in_arr, + src_in_arr => diagnostics_front_snk_out_arr, + snk_out_arr => diagnostics_front_src_in_arr, + snk_in_arr => diagnostics_front_src_out_arr, + xaui_tx_out_arr => open, + xaui_rx_in_arr => xaui_rx_arr_dummy, + tx_serial_data => tx_serial_data_front, + rx_serial_data => rx_serial_data_front, + mdio_mdc_arr => open, + mdio_mdat_in_arr => (others => '0'), + mdio_mdat_oen_arr => open + ); - transceiver_pll_front : transceiver_pll - port map ( - pll_powerdown => pll_powerdown_front(0), - pll_refclk0 => sa_clk, - pll_locked => pll_locked_front(0), - pll_cal_busy => pll_cal_busy_front, - mcgb_rst => pll_powerdown_front(0), - mcgb_serial_clk => mcgb_serial_clk_front - ); - tx_serial_clk_front <= (others => mcgb_serial_clk_front); - txpll_cal_busy_front <= tx_cal_busy_front when pll_cal_busy_front = '0' else (others => '1'); -- ****** Back side transceivers ****** - -- upper 24 transceivers use sb_clk BCK_TX <= tx_serial_data_back(47 downto 0); rx_serial_data_back <= BCK_RX; - - transceiver_phy_back_upper : transceiver_phy_24channel - port map ( - tx_analogreset => tx_analogreset_back(47 downto 24), - tx_digitalreset => tx_digitalreset_back(47 downto 24), - rx_analogreset => rx_analogreset_back(47 downto 24), - rx_digitalreset => rx_digitalreset_back(47 downto 24), - tx_cal_busy => tx_cal_busy_back(47 downto 24), - rx_cal_busy => rx_cal_busy_back(47 downto 24), - rx_is_lockedtodata => rx_is_lockedtodata_back(47 downto 24), - tx_serial_clk0 => tx_serial_clk_back(47 downto 24), - rx_cdr_refclk0 => sb_clk, - tx_serial_data => tx_serial_data_back(47 downto 24), - rx_serial_data => rx_serial_data_back(47 downto 24), - tx_coreclkin => tx_serdesclk_back(47 downto 24), -- write side clock for tx fifo - rx_coreclkin => tx_serdesclk_back(47 downto 24), - tx_clkout => tx_serdesclk_back(47 downto 24), - rx_clkout => open, - tx_enh_data_valid => validloopback_back(47 downto 24), - rx_enh_data_valid => validloopback_back(47 downto 24), - rx_enh_blk_lock => open, - tx_parallel_data => dataloopback_back(3071 downto 1536), - tx_control => controlloopback_back(383 downto 192), - tx_err_ins => (others => '0'), -- use to insert sync errors - unused_tx_parallel_data => (others => '0'), - unused_tx_control => (others => '0'), - rx_parallel_data => dataloopback_back(3071 downto 1536), - rx_control => controlloopback_back(383 downto 192), - unused_rx_parallel_data => open, - unused_rx_control => open - ); - - transceiver_reset_back_upper : transceiver_reset_controller_24 - port map ( - clock => clk, - reset => reset_p, - pll_powerdown => pll_powerdown_back_upper, - tx_analogreset => tx_analogreset_back(47 downto 24), - tx_digitalreset => tx_digitalreset_back(47 downto 24), - tx_ready => open, - pll_locked => pll_locked_back_upper, - pll_select => "0", - tx_cal_busy => txpll_cal_busy_back(47 downto 24), - rx_analogreset => rx_analogreset_back(47 downto 24), - rx_digitalreset => rx_digitalreset_back(47 downto 24), - rx_ready => open, - rx_is_lockedtodata => rx_is_lockedtodata_back(47 downto 24), - rx_cal_busy => rx_cal_busy_back(47 downto 24) - ); - - transceiver_pll_back_upper : transceiver_pll - port map ( - pll_powerdown => pll_powerdown_back_upper(0), - pll_refclk0 => sb_clk, - pll_locked => pll_locked_back_upper(0), - pll_cal_busy => pll_cal_busy_back_upper, - mcgb_rst => pll_powerdown_back_upper(0), - mcgb_serial_clk => mcgb_serial_clk_back_upper - ); - - tx_serial_clk_back(47 downto 24) <= (others => mcgb_serial_clk_back_upper); - txpll_cal_busy_back(47 downto 24) <= tx_cal_busy_back(47 downto 24) when pll_cal_busy_back_upper = '0' else (others => '1'); - - -- lower 24 transceivers use sb_clk - - - transceiver_phy_back_lower : transceiver_phy_24channel - port map ( - tx_analogreset => tx_analogreset_back(23 downto 0), - tx_digitalreset => tx_digitalreset_back(23 downto 0), - rx_analogreset => rx_analogreset_back(23 downto 0), - rx_digitalreset => rx_digitalreset_back(23 downto 0), - tx_cal_busy => tx_cal_busy_back(23 downto 0), - rx_cal_busy => rx_cal_busy_back(23 downto 0), - rx_is_lockedtodata => rx_is_lockedtodata_back(23 downto 0), - tx_serial_clk0 => tx_serial_clk_back(23 downto 0), - rx_cdr_refclk0 => bck_ref_clk, - tx_serial_data => tx_serial_data_back(23 downto 0), - rx_serial_data => rx_serial_data_back(23 downto 0), - tx_coreclkin => tx_serdesclk_back(23 downto 0), -- write side clock for tx fifo - rx_coreclkin => tx_serdesclk_back(23 downto 0), - tx_clkout => tx_serdesclk_back(23 downto 0), - rx_clkout => open, - tx_enh_data_valid => validloopback_back(23 downto 0), - rx_enh_data_valid => validloopback_back(23 downto 0), - rx_enh_blk_lock => open, - tx_parallel_data => dataloopback_back(1535 downto 0), - tx_control => controlloopback_back(191 downto 0), - tx_err_ins => (others => '0'), -- use to insert sync errors - unused_tx_parallel_data => (others => '0'), - unused_tx_control => (others => '0'), - rx_parallel_data => dataloopback_back(1535 downto 0), - rx_control => controlloopback_back(191 downto 0), - unused_rx_parallel_data => open, - unused_rx_control => open - ); - - transceiver_reset_back_lower : transceiver_reset_controller_24 - port map ( - clock => clk, - reset => reset_p, - pll_powerdown => pll_powerdown_back_lower, - tx_analogreset => tx_analogreset_back(23 downto 0), - tx_digitalreset => tx_digitalreset_back(23 downto 0), - tx_ready => open, - pll_locked => pll_locked_back_lower, - pll_select => "0", - tx_cal_busy => txpll_cal_busy_back(23 downto 0), - rx_analogreset => rx_analogreset_back(23 downto 0), - rx_digitalreset => rx_digitalreset_back(23 downto 0), - rx_ready => open, - rx_is_lockedtodata => rx_is_lockedtodata_back(23 downto 0), - rx_cal_busy => rx_cal_busy_back(23 downto 0) + gen_diagnostics_back : for i in 0 to 2 generate + mms_diagnostics_back : ENTITY diagnostics_lib.mms_diagnostics + GENERIC MAP( + g_data_w => c_xgmii_data_w, + g_block_len => c_block_len, + g_nof_streams => 16, + g_separate_clk => FALSE + ) + PORT MAP ( + mm_rst => reset_p, + mm_clk => mm_clk, + st_rst => reset_p, + st_clk => mm_clk, + mm_mosi => reg_diagnostics_back_mosi(i), + mm_miso => reg_diagnostics_back_miso(i), + src_out_arr => diagnostics_back_src_out_arr((i+1)*16-1 downto i*16), + src_in_arr => diagnostics_back_src_in_arr((i+1)*16-1 downto i*16), + snk_out_arr => diagnostics_back_snk_out_arr((i+1)*16-1 downto i*16), + snk_in_arr => diagnostics_back_snk_in_arr((i+1)*16-1 downto i*16) ); + end generate gen_diagnostics_back; + + tr_10GbE_back : ENTITY tr_10GbE_lib.tr_10GbE + GENERIC MAP( + g_technology => c_tech_arria10, + g_sim => false, + g_sim_level => 0, + g_nof_macs => 48, + g_use_mdio => false, + g_mdio_epcs_dis => false, + g_lpbk_sosi => false, + g_lpbk_xgmii => false, + g_lpbk_xaui => false, + g_use_hdr_ram => true + ) + PORT MAP ( + -- System + mm_rst => reset_p, + mm_clk => mm_clk, + tr_clk => SA_CLK, + cal_rec_clk => mm_clk, + dp_rst => reset_p, + dp_clk => mm_clk, + -- MM registers + reg_mac_mosi => reg_mac_back_mosi, + reg_mac_miso => reg_mac_back_miso, + reg_hdr_insert_mosi => reg_hdr_insert_back_mosi, + ram_hdr_insert_mosi => ram_hdr_insert_back_mosi, + ram_hdr_remove_mosi => ram_hdr_remove_back_mosi, + ram_hdr_remove_miso => ram_hdr_remove_back_miso, + src_out_arr => diagnostics_back_snk_in_arr, + src_in_arr => diagnostics_back_snk_out_arr, + snk_out_arr => diagnostics_back_src_in_arr, + snk_in_arr => diagnostics_back_src_out_arr, + xaui_tx_out_arr => open, + xaui_rx_in_arr => xaui_rx_arr_dummy, + tx_serial_data => tx_serial_data_back, + rx_serial_data => rx_serial_data_back, + mdio_mdc_arr => open, + mdio_mdat_in_arr => (others => '0'), + mdio_mdat_oen_arr => open + ); - transceiver_pll_back_lower : transceiver_pll - port map ( - pll_powerdown => pll_powerdown_back_lower(0), - pll_refclk0 => bck_ref_clk, - pll_locked => pll_locked_back_lower(0), - pll_cal_busy => pll_cal_busy_back_lower, - mcgb_rst => pll_powerdown_back_lower(0), - mcgb_serial_clk => mcgb_serial_clk_back_lower - ); - tx_serial_clk_back(23 downto 0) <= (others => mcgb_serial_clk_back_lower); - txpll_cal_busy_back(23 downto 0) <= tx_cal_busy_back(23 downto 0) when pll_cal_busy_back_lower = '0' else (others => '1'); -- ****** node control for resets and wdi @@ -808,7 +686,7 @@ begin -- ****** i2c interfaces ****** - u_qsys : unb2_pinning_qsys + u_qsys : unb2_test_qsys port map ( clk_clk => mm_clk, reset_reset_n => reset_n,