]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
29_06_10
authorhadeshyp <hadeshyp>
Tue, 29 Jun 2010 00:44:09 +0000 (00:44 +0000)
committerhadeshyp <hadeshyp>
Tue, 29 Jun 2010 00:44:09 +0000 (00:44 +0000)
gbe_ecp2m/tb_gbe_buf.vhd
gbe_ecp2m/trb_net16_gbe_buf.vhd
gbe_ecp2m/trb_net16_gbe_frame_constr.vhd
gbe_ecp2m/trb_net16_gbe_frame_trans.vhd
gbe_ecp2m/trb_net16_gbe_packet_constr.vhd
gbe_ecp2m/trb_net16_gbe_setup.vhd
gbe_ecp2m/trb_net16_ipu2gbe.vhd
gbe_ecp2m/trb_net16_med_ecp_sfp_gbe_8b.vhd

index 0516ce0e787b9a0734c06d20d7208da7e5e828bb..78db3becf1aa50ef78aa8cc9b3d0156d98282e80 100755 (executable)
-LIBRARY ieee;\r
-USE ieee.std_logic_1164.ALL;\r
-USE ieee.math_real.all;\r
-USE ieee.numeric_std.ALL;\r
-\r
-ENTITY testbench IS\r
-END testbench;\r
-\r
-ARCHITECTURE behavior OF testbench IS \r
-       component buf_tester is --trb_net16_gbe_buf is\r
-       generic( \r
-               DO_SIMULATION           : integer range 0 to 1 := 1;\r
-               USE_125MHZ_EXTCLK       : integer range 0 to 1 := 1\r
-       );\r
-       port(\r
-               CLK                                                     : in    std_logic;\r
-               TEST_CLK                                        : in    std_logic; -- only for simulation!\r
-               CLK_125_TX_IN                           : in std_logic;  -- gk 28.04.01 used only in internal 125MHz clock mode\r
-               CLK_125_RX_IN                           : in std_logic;  -- gk 28.04.01 used only in internal 125MHz clock mode\r
-               RESET : IN std_logic;\r
-               GSR_N : IN std_logic;\r
-               STAGE_CTRL_REGS_IN : IN std_logic_vector(31 downto 0);\r
-               ------------------------\r
-               IP_CFG_START_IN : IN std_logic;\r
-               IP_CFG_BANK_SEL_IN : IN std_logic_vector(3 downto 0);\r
-               IP_CFG_MEM_DATA_IN : IN std_logic_vector(31 downto 0);\r
-               MR_RESET_IN : IN std_logic;\r
-               MR_MODE_IN : IN std_logic;\r
-               MR_RESTART_IN : IN std_logic;\r
-               IP_CFG_MEM_CLK_OUT : OUT std_logic;\r
-               IP_CFG_DONE_OUT : OUT std_logic;\r
-               IP_CFG_MEM_ADDR_OUT : OUT std_logic_vector(7 downto 0);\r
-               -- gk 29.03.10\r
-               SLV_ADDR_IN                  : in std_logic_vector(7 downto 0);\r
-               SLV_READ_IN                  : in std_logic;\r
-               SLV_WRITE_IN                 : in std_logic;\r
-               SLV_BUSY_OUT                 : out std_logic;\r
-               SLV_ACK_OUT                  : out std_logic;\r
-               SLV_DATA_IN                  : in std_logic_vector(31 downto 0);\r
-               SLV_DATA_OUT                 : out std_logic_vector(31 downto 0);\r
-               -- gk 26.04.10\r
-               -- registers setup interface\r
-               BUS_ADDR_IN               : in std_logic_vector(7 downto 0);\r
-               BUS_DATA_IN               : in std_logic_vector(31 downto 0);\r
-               BUS_DATA_OUT              : out std_logic_vector(31 downto 0);  -- gk 26.04.10\r
-               BUS_WRITE_EN_IN           : in std_logic;  -- gk 26.04.10\r
-               BUS_READ_EN_IN            : in std_logic;  -- gk 26.04.10\r
-               BUS_ACK_OUT               : out std_logic;  -- gk 26.04.10\r
-               -- gk 23.04.10\r
-               LED_PACKET_SENT_OUT        : out std_logic;\r
-               LED_AN_DONE_N_OUT            : out std_logic;\r
-               ------------------------\r
-               CTS_NUMBER_IN : IN std_logic_vector(15 downto 0);\r
-               CTS_CODE_IN : IN std_logic_vector(7 downto 0);\r
-               CTS_INFORMATION_IN : IN std_logic_vector(7 downto 0);\r
-               CTS_READOUT_TYPE_IN : IN std_logic_vector(3 downto 0);\r
-               CTS_START_READOUT_IN : IN std_logic;\r
-               CTS_READ_IN : IN std_logic;\r
-               FEE_DATA_IN : IN std_logic_vector(15 downto 0);\r
-               FEE_DATAREADY_IN : IN std_logic;\r
-               FEE_STATUS_BITS_IN : IN std_logic_vector(31 downto 0);\r
-               FEE_BUSY_IN : IN std_logic;\r
-               SFP_RXD_P_IN : IN std_logic;\r
-               SFP_RXD_N_IN : IN std_logic;\r
-               SFP_REFCLK_P_IN : IN std_logic;\r
-               SFP_REFCLK_N_IN : IN std_logic;\r
-               SFP_PRSNT_N_IN : IN std_logic;\r
-               SFP_LOS_IN : IN std_logic;          \r
-               STAGE_STAT_REGS_OUT : OUT std_logic_vector(31 downto 0);\r
-               CTS_DATA_OUT : OUT std_logic_vector(31 downto 0);\r
-               CTS_DATAREADY_OUT : OUT std_logic;\r
-               CTS_READOUT_FINISHED_OUT : OUT std_logic;\r
-               CTS_LENGTH_OUT : OUT std_logic_vector(15 downto 0);\r
-               CTS_ERROR_PATTERN_OUT : OUT std_logic_vector(31 downto 0);\r
-               FEE_READ_OUT : OUT std_logic;\r
-               SFP_TXD_P_OUT : OUT std_logic;\r
-               SFP_TXD_N_OUT : OUT std_logic;\r
-               SFP_TXDIS_OUT : OUT std_logic;\r
-               IG_CTS_CTR_TST : OUT std_logic_vector(2 downto 0);\r
-               IG_REM_CTR_TST : OUT std_logic_vector(3 downto 0);\r
-               IG_BSM_LOAD_TST : OUT std_logic_vector(3 downto 0);\r
-               IG_BSM_SAVE_TST : OUT std_logic_vector(3 downto 0);\r
-               IG_DATA_TST : OUT std_logic_vector(15 downto 0);\r
-               IG_WCNT_TST : OUT std_logic_vector(15 downto 0);\r
-               IG_RCNT_TST : OUT std_logic_vector(16 downto 0);\r
-               IG_RD_EN_TST : OUT std_logic;\r
-               IG_WR_EN_TST : OUT std_logic;\r
-               IG_EMPTY_TST : OUT std_logic;\r
-               IG_AEMPTY_TST : OUT std_logic;\r
-               IG_FULL_TST : OUT std_logic;\r
-               IG_AFULL_TST : OUT std_logic;\r
-               PC_WR_EN_TST : OUT std_logic;\r
-               PC_DATA_TST : OUT std_logic_vector(7 downto 0);\r
-               PC_READY_TST : OUT std_logic;\r
-               PC_START_OF_SUB_TST : OUT std_logic;\r
-               PC_END_OF_DATA_TST : OUT std_logic;\r
-               PC_ALL_CTR_TST : OUT std_logic_vector(4 downto 0);\r
-               PC_SUB_CTR_TST : OUT std_logic_vector(4 downto 0);\r
-               PC_SUB_SIZE_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_TRIG_NR_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_PADDING_TST : OUT std_logic;\r
-               PC_DECODING_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_EVENT_ID_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_QUEUE_DEC_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_BSM_CONSTR_TST : OUT std_logic_vector(3 downto 0);\r
-               PC_BSM_LOAD_TST : OUT std_logic_vector(3 downto 0);\r
-               PC_BSM_SAVE_TST : OUT std_logic_vector(3 downto 0);\r
-               PC_SHF_EMPTY_TST : OUT std_logic;\r
-               PC_SHF_FULL_TST : OUT std_logic;\r
-               PC_SHF_WR_EN_TST : OUT std_logic;\r
-               PC_SHF_RD_EN_TST : OUT std_logic;\r
-               PC_SHF_Q_TST : OUT std_logic_vector(7 downto 0);\r
-               PC_DF_EMPTY_TST : OUT std_logic;\r
-               PC_DF_FULL_TST : OUT std_logic;\r
-               PC_DF_WR_EN_TST : OUT std_logic;\r
-               PC_DF_RD_EN_TST : OUT std_logic;\r
-               PC_DF_Q_TST : OUT std_logic_vector(7 downto 0);\r
-               PC_BYTES_LOADED_TST : OUT std_logic_vector(15 downto 0);\r
-               PC_SIZE_LEFT_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_SUB_SIZE_TO_SAVE_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_SUB_SIZE_LOADED_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_SUB_BYTES_LOADED_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_QUEUE_SIZE_TST : OUT std_logic_vector(31 downto 0);\r
-               PC_ACT_QUEUE_SIZE_TST : OUT std_logic_vector(31 downto 0);\r
-               FC_WR_EN_TST : OUT std_logic;\r
-               FC_DATA_TST : OUT std_logic_vector(7 downto 0);\r
-               FC_H_READY_TST : OUT std_logic;\r
-               FC_READY_TST : OUT std_logic;\r
-               FC_IP_SIZE_TST : OUT std_logic_vector(15 downto 0);\r
-               FC_UDP_SIZE_TST : OUT std_logic_vector(15 downto 0);\r
-               FC_IDENT_TST : OUT std_logic_vector(15 downto 0);\r
-               FC_FLAGS_OFFSET_TST : OUT std_logic_vector(15 downto 0);\r
-               FC_SOD_TST : OUT std_logic;\r
-               FC_EOD_TST : OUT std_logic;\r
-               FC_BSM_CONSTR_TST : OUT std_logic_vector(7 downto 0);\r
-               FC_BSM_TRANS_TST : OUT std_logic_vector(3 downto 0);\r
-               FT_DATA_TST : OUT std_logic_vector(8 downto 0);\r
-               FT_TX_EMPTY_TST : OUT std_logic;\r
-               FT_START_OF_PACKET_TST : OUT std_logic;\r
-               FT_BSM_INIT_TST : OUT std_logic_vector(3 downto 0);\r
-               FT_BSM_MAC_TST : OUT std_logic_vector(3 downto 0);\r
-               FT_BSM_TRANS_TST : OUT std_logic_vector(3 downto 0);\r
-               MAC_HADDR_TST : OUT std_logic_vector(7 downto 0);\r
-               MAC_HDATA_TST : OUT std_logic_vector(7 downto 0);\r
-               MAC_HCS_TST : OUT std_logic;\r
-               MAC_HWRITE_TST : OUT std_logic;\r
-               MAC_HREAD_TST : OUT std_logic;\r
-               MAC_HREADY_TST : OUT std_logic;\r
-               MAC_HDATA_EN_TST : OUT std_logic;\r
-               MAC_FIFOAVAIL_TST : OUT std_logic;\r
-               MAC_FIFOEOF_TST : OUT std_logic;\r
-               MAC_FIFOEMPTY_TST : OUT std_logic;\r
-               MAC_TX_READ_TST : OUT std_logic;\r
-               MAC_TX_DONE_TST : OUT std_logic;\r
-               PCS_AN_LP_ABILITY_TST : OUT std_logic_vector(15 downto 0);\r
-               PCS_AN_COMPLETE_TST : OUT std_logic;\r
-               PCS_AN_PAGE_RX_TST : OUT std_logic;\r
-               ANALYZER_DEBUG_OUT : OUT std_logic_vector(63 downto 0)\r
-               );\r
-       END COMPONENT;\r
-\r
-       SIGNAL CLK :  std_logic;\r
-       SIGNAL TEST_CLK :  std_logic;\r
-       SIGNAL RESET :  std_logic;\r
-       SIGNAL GSR_N :  std_logic;\r
-       SIGNAL STAGE_STAT_REGS_OUT :  std_logic_vector(31 downto 0);\r
-       SIGNAL STAGE_CTRL_REGS_IN :  std_logic_vector(31 downto 0);\r
-       SIGNAL IP_CFG_START_IN :  std_logic;\r
-       SIGNAL IP_CFG_BANK_SEL_IN :  std_logic_vector(3 downto 0);\r
-       SIGNAL IP_CFG_MEM_DATA_IN :  std_logic_vector(31 downto 0);\r
-       SIGNAL MR_RESET_IN :  std_logic;\r
-       SIGNAL MR_MODE_IN :  std_logic;\r
-       SIGNAL MR_RESTART_IN :  std_logic;\r
-       SIGNAL IP_CFG_MEM_CLK_OUT :  std_logic;\r
-       SIGNAL IP_CFG_DONE_OUT :  std_logic;\r
-       SIGNAL IP_CFG_MEM_ADDR_OUT :  std_logic_vector(7 downto 0);\r
-       SIGNAL CTS_NUMBER_IN :  std_logic_vector(15 downto 0);\r
-       SIGNAL CTS_CODE_IN :  std_logic_vector(7 downto 0);\r
-       SIGNAL CTS_INFORMATION_IN :  std_logic_vector(7 downto 0);\r
-       SIGNAL CTS_READOUT_TYPE_IN :  std_logic_vector(3 downto 0);\r
-       SIGNAL CTS_START_READOUT_IN :  std_logic;\r
-       SIGNAL CTS_DATA_OUT :  std_logic_vector(31 downto 0);\r
-       SIGNAL CTS_DATAREADY_OUT :  std_logic;\r
-       SIGNAL CTS_READOUT_FINISHED_OUT :  std_logic;\r
-       SIGNAL CTS_READ_IN :  std_logic;\r
-       SIGNAL CTS_LENGTH_OUT :  std_logic_vector(15 downto 0);\r
-       SIGNAL CTS_ERROR_PATTERN_OUT :  std_logic_vector(31 downto 0);\r
-       SIGNAL FEE_DATA_IN :  std_logic_vector(15 downto 0);\r
-       SIGNAL FEE_DATAREADY_IN :  std_logic;\r
-       SIGNAL FEE_READ_OUT :  std_logic;\r
-       SIGNAL FEE_STATUS_BITS_IN :  std_logic_vector(31 downto 0);\r
-       SIGNAL FEE_BUSY_IN :  std_logic;\r
-       SIGNAL SFP_RXD_P_IN :  std_logic;\r
-       SIGNAL SFP_RXD_N_IN :  std_logic;\r
-       SIGNAL SFP_TXD_P_OUT :  std_logic;\r
-       SIGNAL SFP_TXD_N_OUT :  std_logic;\r
-       SIGNAL SFP_REFCLK_P_IN :  std_logic;\r
-       SIGNAL SFP_REFCLK_N_IN :  std_logic;\r
-       SIGNAL SFP_PRSNT_N_IN :  std_logic;\r
-       SIGNAL SFP_LOS_IN :  std_logic;\r
-       SIGNAL SFP_TXDIS_OUT :  std_logic;\r
-       SIGNAL IG_CTS_CTR_TST :  std_logic_vector(2 downto 0);\r
-       SIGNAL IG_REM_CTR_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL IG_BSM_LOAD_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL IG_BSM_SAVE_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL IG_DATA_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL IG_WCNT_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL IG_RCNT_TST :  std_logic_vector(16 downto 0);\r
-       SIGNAL IG_RD_EN_TST :  std_logic;\r
-       SIGNAL IG_WR_EN_TST :  std_logic;\r
-       SIGNAL IG_EMPTY_TST :  std_logic;\r
-       SIGNAL IG_AEMPTY_TST :  std_logic;\r
-       SIGNAL IG_FULL_TST :  std_logic;\r
-       SIGNAL IG_AFULL_TST :  std_logic;\r
-       SIGNAL PC_WR_EN_TST :  std_logic;\r
-       SIGNAL PC_DATA_TST :  std_logic_vector(7 downto 0);\r
-       SIGNAL PC_READY_TST :  std_logic;\r
-       SIGNAL PC_START_OF_SUB_TST :  std_logic;\r
-       SIGNAL PC_END_OF_DATA_TST :  std_logic;\r
-       SIGNAL PC_SUB_SIZE_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_TRIG_NR_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_PADDING_TST :  std_logic;\r
-       SIGNAL PC_DECODING_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_EVENT_ID_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_QUEUE_DEC_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_BSM_CONSTR_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL PC_BSM_LOAD_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL PC_BSM_SAVE_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL PC_SHF_EMPTY_TST :  std_logic;\r
-       SIGNAL PC_SHF_FULL_TST :  std_logic;\r
-       SIGNAL PC_SHF_WR_EN_TST :  std_logic;\r
-       SIGNAL PC_SHF_RD_EN_TST :  std_logic;\r
-       SIGNAL PC_SHF_Q_TST :  std_logic_vector(7 downto 0);\r
-       SIGNAL PC_DF_EMPTY_TST :  std_logic;\r
-       SIGNAL PC_DF_FULL_TST :  std_logic;\r
-       SIGNAL PC_DF_WR_EN_TST :  std_logic;\r
-       SIGNAL PC_DF_RD_EN_TST :  std_logic;\r
-       SIGNAL PC_DF_Q_TST :  std_logic_vector(7 downto 0); \r
-       SIGNAL PC_ALL_CTR_TST :  std_logic_vector(4 downto 0);\r
-       SIGNAL PC_SUB_CTR_TST :  std_logic_vector(4 downto 0);\r
-       SIGNAL PC_BYTES_LOADED_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL PC_SIZE_LEFT_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_SUB_SIZE_TO_SAVE_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_SUB_SIZE_LOADED_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_SUB_BYTES_LOADED_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_QUEUE_SIZE_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL PC_ACT_QUEUE_SIZE_TST :  std_logic_vector(31 downto 0);\r
-       SIGNAL FC_WR_EN_TST :  std_logic;\r
-       SIGNAL FC_DATA_TST :  std_logic_vector(7 downto 0);\r
-       SIGNAL FC_H_READY_TST :  std_logic;\r
-       SIGNAL FC_READY_TST :  std_logic;\r
-       SIGNAL FC_IP_SIZE_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL FC_UDP_SIZE_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL FC_IDENT_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL FC_FLAGS_OFFSET_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL FC_SOD_TST :  std_logic;\r
-       SIGNAL FC_EOD_TST :  std_logic;\r
-       SIGNAL FC_BSM_CONSTR_TST :  std_logic_vector(7 downto 0);\r
-       SIGNAL FC_BSM_TRANS_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL FT_DATA_TST :  std_logic_vector(8 downto 0);\r
-       SIGNAL FT_TX_EMPTY_TST :  std_logic;\r
-       SIGNAL FT_START_OF_PACKET_TST :  std_logic;\r
-       SIGNAL FT_BSM_INIT_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL FT_BSM_MAC_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL FT_BSM_TRANS_TST :  std_logic_vector(3 downto 0);\r
-       SIGNAL MAC_HADDR_TST :  std_logic_vector(7 downto 0);\r
-       SIGNAL MAC_HDATA_TST :  std_logic_vector(7 downto 0);\r
-       SIGNAL MAC_HCS_TST :  std_logic;\r
-       SIGNAL MAC_HWRITE_TST :  std_logic;\r
-       SIGNAL MAC_HREAD_TST :  std_logic;\r
-       SIGNAL MAC_HREADY_TST :  std_logic;\r
-       SIGNAL MAC_HDATA_EN_TST :  std_logic;\r
-       SIGNAL MAC_FIFOAVAIL_TST :  std_logic;\r
-       SIGNAL MAC_FIFOEOF_TST :  std_logic;\r
-       SIGNAL MAC_FIFOEMPTY_TST :  std_logic;\r
-       SIGNAL MAC_TX_READ_TST :  std_logic;\r
-       SIGNAL MAC_TX_DONE_TST :  std_logic;\r
-       SIGNAL PCS_AN_LP_ABILITY_TST :  std_logic_vector(15 downto 0);\r
-       SIGNAL PCS_AN_COMPLETE_TST :  std_logic;\r
-       SIGNAL PCS_AN_PAGE_RX_TST :  std_logic;\r
-       SIGNAL ANALYZER_DEBUG_OUT :  std_logic_vector(63 downto 0);\r
-       --gk 29.03.10\r
-       signal SLV_ADDR_IN : std_logic_vector(7 downto 0);\r
-       signal SLV_READ_IN : std_logic;\r
-       signal SLV_WRITE_IN : std_logic;\r
-       signal SLV_BUSY_OUT : std_logic;\r
-       signal SLV_ACK_OUT : std_logic;\r
-       signal SLV_DATA_IN : std_logic_vector(31 downto 0);\r
-       signal SLV_DATA_OUT : std_logic_vector(31 downto 0);\r
-\r
-BEGIN\r
-\r
--- Please check and add your generic clause manually\r
-       uut: buf_tester --trb_net16_gbe_buf \r
-       GENERIC MAP( DO_SIMULATION => 1, USE_125MHZ_EXTCLK => 1 )\r
-       PORT MAP(\r
-               CLK => CLK,\r
-               CLK_125_TX_IN => '0',\r
-               CLK_125_RX_IN => '0',\r
-               TEST_CLK => TEST_CLK,\r
-               RESET => RESET,\r
-               GSR_N => GSR_N,\r
-               STAGE_STAT_REGS_OUT => STAGE_STAT_REGS_OUT,\r
-               STAGE_CTRL_REGS_IN => STAGE_CTRL_REGS_IN,\r
-               IP_CFG_START_IN => IP_CFG_START_IN,\r
-               IP_CFG_BANK_SEL_IN => IP_CFG_BANK_SEL_IN,\r
-               IP_CFG_MEM_DATA_IN => IP_CFG_MEM_DATA_IN,\r
-               MR_RESET_IN => MR_RESET_IN,\r
-               MR_MODE_IN => MR_MODE_IN,\r
-               MR_RESTART_IN => MR_RESTART_IN,\r
-               IP_CFG_MEM_CLK_OUT => IP_CFG_MEM_CLK_OUT,\r
-               IP_CFG_DONE_OUT => IP_CFG_DONE_OUT,\r
-               IP_CFG_MEM_ADDR_OUT => IP_CFG_MEM_ADDR_OUT,\r
-               -- gk 29.03.10\r
-               SLV_ADDR_IN => SLV_ADDR_IN,\r
-               SLV_READ_IN => SLV_READ_IN,\r
-               SLV_WRITE_IN => SLV_WRITE_IN,\r
-               SLV_BUSY_OUT => SLV_BUSY_OUT,\r
-               SLV_ACK_OUT => SLV_ACK_OUT,\r
-               SLV_DATA_IN => SLV_DATA_IN,\r
-               SLV_DATA_OUT => SLV_DATA_OUT,\r
-               -- gk 22.04.10\r
-               -- registers setup interface\r
-               BUS_ADDR_IN => x"00",\r
-               BUS_DATA_IN => x"0000_0000",\r
-               BUS_DATA_OUT => open,\r
-               BUS_WRITE_EN_IN => '0',\r
-               BUS_READ_EN_IN => '0',\r
-               BUS_ACK_OUT => open,\r
-               -- gk 23.04.10\r
-               LED_PACKET_SENT_OUT => open,\r
-               LED_AN_DONE_N_OUT => open,\r
-               --------------------------\r
-               CTS_NUMBER_IN => CTS_NUMBER_IN,\r
-               CTS_CODE_IN => CTS_CODE_IN,\r
-               CTS_INFORMATION_IN => CTS_INFORMATION_IN,\r
-               CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN,\r
-               CTS_START_READOUT_IN => CTS_START_READOUT_IN,\r
-               CTS_DATA_OUT => CTS_DATA_OUT,\r
-               CTS_DATAREADY_OUT => CTS_DATAREADY_OUT,\r
-               CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT,\r
-               CTS_READ_IN => CTS_READ_IN,\r
-               CTS_LENGTH_OUT => CTS_LENGTH_OUT,\r
-               CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT,\r
-               FEE_DATA_IN => FEE_DATA_IN,\r
-               FEE_DATAREADY_IN => FEE_DATAREADY_IN,\r
-               FEE_READ_OUT => FEE_READ_OUT,\r
-               FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN,\r
-               FEE_BUSY_IN => FEE_BUSY_IN,\r
-               SFP_RXD_P_IN => SFP_RXD_P_IN,\r
-               SFP_RXD_N_IN => SFP_RXD_N_IN,\r
-               SFP_TXD_P_OUT => SFP_TXD_P_OUT,\r
-               SFP_TXD_N_OUT => SFP_TXD_N_OUT,\r
-               SFP_REFCLK_P_IN => SFP_REFCLK_P_IN,\r
-               SFP_REFCLK_N_IN => SFP_REFCLK_N_IN,\r
-               SFP_PRSNT_N_IN => SFP_PRSNT_N_IN,\r
-               SFP_LOS_IN => SFP_LOS_IN,\r
-               SFP_TXDIS_OUT => SFP_TXDIS_OUT,\r
-               IG_CTS_CTR_TST => IG_CTS_CTR_TST,\r
-               IG_REM_CTR_TST => IG_REM_CTR_TST,\r
-               IG_BSM_LOAD_TST => IG_BSM_LOAD_TST,\r
-               IG_BSM_SAVE_TST => IG_BSM_SAVE_TST,\r
-               IG_DATA_TST => IG_DATA_TST,\r
-               IG_WCNT_TST => IG_WCNT_TST,\r
-               IG_RCNT_TST => IG_RCNT_TST,\r
-               IG_RD_EN_TST => IG_RD_EN_TST,\r
-               IG_WR_EN_TST => IG_WR_EN_TST,\r
-               IG_EMPTY_TST => IG_EMPTY_TST,\r
-               IG_AEMPTY_TST => IG_AEMPTY_TST,\r
-               IG_FULL_TST => IG_FULL_TST,\r
-               IG_AFULL_TST => IG_AFULL_TST,\r
-               PC_WR_EN_TST => PC_WR_EN_TST,\r
-               PC_DATA_TST => PC_DATA_TST,\r
-               PC_READY_TST => PC_READY_TST,\r
-               PC_START_OF_SUB_TST => PC_START_OF_SUB_TST,\r
-               PC_END_OF_DATA_TST => PC_END_OF_DATA_TST,\r
-               PC_SUB_SIZE_TST => PC_SUB_SIZE_TST,\r
-               PC_TRIG_NR_TST => PC_TRIG_NR_TST,\r
-               PC_PADDING_TST => PC_PADDING_TST,\r
-               PC_DECODING_TST => PC_DECODING_TST,\r
-               PC_EVENT_ID_TST => PC_EVENT_ID_TST,\r
-               PC_QUEUE_DEC_TST => PC_QUEUE_DEC_TST,\r
-               PC_BSM_CONSTR_TST => PC_BSM_CONSTR_TST,\r
-               PC_BSM_LOAD_TST => PC_BSM_LOAD_TST,\r
-               PC_BSM_SAVE_TST => PC_BSM_SAVE_TST,\r
-               PC_SHF_EMPTY_TST => PC_SHF_EMPTY_TST,\r
-               PC_SHF_FULL_TST => PC_SHF_FULL_TST,\r
-               PC_SHF_WR_EN_TST => PC_SHF_WR_EN_TST,\r
-               PC_SHF_RD_EN_TST => PC_SHF_RD_EN_TST,\r
-               PC_SHF_Q_TST => PC_SHF_Q_TST,\r
-               PC_DF_EMPTY_TST => PC_DF_EMPTY_TST,\r
-               PC_DF_FULL_TST => PC_DF_FULL_TST,\r
-               PC_DF_WR_EN_TST => PC_DF_WR_EN_TST,\r
-               PC_DF_RD_EN_TST => PC_DF_RD_EN_TST,\r
-               PC_DF_Q_TST => PC_DF_Q_TST,\r
-               PC_ALL_CTR_TST => PC_ALL_CTR_TST,\r
-               PC_SUB_CTR_TST => PC_SUB_CTR_TST,\r
-               PC_BYTES_LOADED_TST => PC_BYTES_LOADED_TST,\r
-               PC_SIZE_LEFT_TST => PC_SIZE_LEFT_TST,\r
-               PC_SUB_SIZE_TO_SAVE_TST => PC_SUB_SIZE_TO_SAVE_TST,\r
-               PC_SUB_SIZE_LOADED_TST => PC_SUB_SIZE_LOADED_TST,\r
-               PC_SUB_BYTES_LOADED_TST => PC_SUB_BYTES_LOADED_TST,\r
-               PC_QUEUE_SIZE_TST => PC_QUEUE_SIZE_TST,\r
-               PC_ACT_QUEUE_SIZE_TST => PC_ACT_QUEUE_SIZE_TST,         \r
-               FC_WR_EN_TST => FC_WR_EN_TST,\r
-               FC_DATA_TST => FC_DATA_TST,\r
-               FC_H_READY_TST => FC_H_READY_TST,\r
-               FC_READY_TST => FC_READY_TST,\r
-               FC_IP_SIZE_TST => FC_IP_SIZE_TST,\r
-               FC_UDP_SIZE_TST => FC_UDP_SIZE_TST,\r
-               FC_IDENT_TST => FC_IDENT_TST,\r
-               FC_FLAGS_OFFSET_TST => FC_FLAGS_OFFSET_TST,\r
-               FC_SOD_TST => FC_SOD_TST,\r
-               FC_EOD_TST => FC_EOD_TST,\r
-               FC_BSM_CONSTR_TST => FC_BSM_CONSTR_TST,\r
-               FC_BSM_TRANS_TST => FC_BSM_TRANS_TST,\r
-               FT_DATA_TST => FT_DATA_TST,\r
-               FT_TX_EMPTY_TST => FT_TX_EMPTY_TST,\r
-               FT_START_OF_PACKET_TST => FT_START_OF_PACKET_TST,\r
-               FT_BSM_INIT_TST => FT_BSM_INIT_TST,\r
-               FT_BSM_MAC_TST => FT_BSM_MAC_TST,\r
-               FT_BSM_TRANS_TST => FT_BSM_TRANS_TST,\r
-               MAC_HADDR_TST => MAC_HADDR_TST,\r
-               MAC_HDATA_TST => MAC_HDATA_TST,\r
-               MAC_HCS_TST => MAC_HCS_TST,\r
-               MAC_HWRITE_TST => MAC_HWRITE_TST,\r
-               MAC_HREAD_TST => MAC_HREAD_TST,\r
-               MAC_HREADY_TST => MAC_HREADY_TST,\r
-               MAC_HDATA_EN_TST => MAC_HDATA_EN_TST,\r
-               MAC_FIFOAVAIL_TST => MAC_FIFOAVAIL_TST,\r
-               MAC_FIFOEOF_TST => MAC_FIFOEOF_TST,\r
-               MAC_FIFOEMPTY_TST => MAC_FIFOEMPTY_TST,\r
-               MAC_TX_READ_TST => MAC_TX_READ_TST,\r
-               MAC_TX_DONE_TST => MAC_TX_DONE_TST,\r
-               PCS_AN_LP_ABILITY_TST => PCS_AN_LP_ABILITY_TST,\r
-               PCS_AN_COMPLETE_TST => PCS_AN_COMPLETE_TST,\r
-               PCS_AN_PAGE_RX_TST => PCS_AN_PAGE_RX_TST,\r
-               ANALYZER_DEBUG_OUT => ANALYZER_DEBUG_OUT\r
-       );\r
-\r
-\r
-\r
--- 100 MHz system clock\r
-CLOCK_GEN_PROC: process\r
-begin\r
-       clk <= '1'; wait for 5.0 ns;\r
-       clk <= '0'; wait for 5.0 ns;\r
-end process CLOCK_GEN_PROC;\r
-\r
--- 125 MHz MAC clock\r
-CLOCK2_GEN_PROC: process\r
-begin\r
-       test_clk <= '1'; wait for 4.0 ns;\r
-       test_clk <= '0'; wait for 3.0 ns;\r
-end process CLOCK2_GEN_PROC;\r
-\r
--- Testbench\r
-TESTBENCH_PROC: process\r
--- test data from TRBnet\r
-variable test_data_len : integer range 0 to 65535 := 1;\r
-variable test_loop_len : integer range 0 to 65535 := 0;\r
-variable test_hdr_len : unsigned(15 downto 0) := x"0000";\r
-variable test_evt_len : unsigned(15 downto 0) := x"0000";\r
-variable test_data : unsigned(15 downto 0) := x"ffff";\r
-\r
-variable trigger_counter : unsigned(15 downto 0) := x"4710";\r
-variable trigger_loop : integer range 0 to 65535 := 15;\r
-\r
--- 1400 bytes MTU => 350 as limit for fragmentation\r
-variable max_event_size : real := 512.0;\r
-\r
-variable seed1 : positive; -- seed for random generator\r
-variable seed2 : positive; -- seed for random generator\r
-variable rand : real; -- random value (0.0 ... 1.0)\r
-variable int_rand : integer; -- random value, scaled to your needs\r
-variable cts_random_number : std_logic_vector(7 downto 0);\r
-\r
-variable stim : std_logic_vector(15 downto 0);\r
-\r
-\r
--- RND test\r
---UNIFORM(seed1, seed2, rand);\r
---int_rand := INTEGER(TRUNC(rand*65536.0));\r
---stim := std_logic_vector(to_unsigned(int_rand, stim'LENGTH));\r
-\r
-begin\r
-       -- Setup signals\r
-       reset <= '0';\r
-       gsr_n <= '1';\r
-       \r
-       stage_ctrl_regs_in <= x"0000_0000";\r
-       \r
-       --ip_cfg_start_in <= '0';\r
-       --ip_cfg_bank_sel_in <= x"0";\r
-       --ip_cfg_mem_data_in <= x"0000_0000";\r
-       mr_reset_in <= '0';\r
-       mr_mode_in <= '0';\r
-       mr_restart_in <= '0';\r
-       SLV_ADDR_IN <= x"00";\r
-       SLV_READ_IN <= '0';\r
-       SLV_WRITE_IN <= '0';\r
-       SLV_DATA_IN <= x"0000_0000";\r
-       \r
-       sfp_los_in <= '0'; -- signal from SFP is present\r
-       sfp_prsnt_n_in <= '0'; -- SFP itself is present\r
-       sfp_refclk_n_in <= '0';\r
-       sfp_refclk_p_in <= '1';\r
-       \r
-       cts_number_in <= x"0000";\r
-       cts_code_in <= x"00";\r
-       cts_information_in <= x"00";\r
-       cts_readout_type_in <= x"0";\r
-       cts_start_readout_in <= '0';\r
-       cts_read_in <= '0';\r
-       \r
-       fee_data_in <= x"0000";\r
-       fee_dataready_in <= '0';\r
-       fee_status_bits_in <= x"1234_5678";\r
-       fee_busy_in <= '0';\r
-       \r
-       wait for 22 ns;\r
-       \r
-       -- Reset the whole stuff\r
-       wait until rising_edge(clk);\r
-       reset <= '1';\r
-       gsr_n <= '0';\r
-       wait until rising_edge(clk);\r
-       wait until rising_edge(clk);\r
-       wait until rising_edge(clk);\r
-       reset <= '0';\r
-       gsr_n <= '1';\r
-       wait until rising_edge(clk);\r
-       --wait for 100 ns;\r
-       \r
-       -- Tests may start here\r
-       wait until ft_bsm_init_tst = x"7";\r
-\r
-       --ip_cfg_start_in <= '1';\r
-\r
-       wait for 500 ns;\r
-\r
-\r
--------------------------------------------------------------------------------\r
--- Loop the transmissions\r
--------------------------------------------------------------------------------\r
-       trigger_counter := x"4710";\r
-       trigger_loop    := 10;\r
-\r
-       MY_TRIGGER_LOOP: for J in 0 to trigger_loop loop\r
-               -- generate a real random byte for CTS\r
-               UNIFORM(seed1, seed2, rand);\r
-               int_rand := INTEGER(TRUNC(rand*256.0));\r
-               cts_random_number := std_logic_vector(to_unsigned(int_rand, cts_random_number'LENGTH));\r
-       \r
-               -- IPU transmission starts\r
-               wait until rising_edge(clk);\r
-               cts_number_in <= std_logic_vector( trigger_counter );\r
-               cts_code_in <= cts_random_number;\r
-               cts_information_in <= x"d1"; -- cts_information_in <= x"de"; -- gk 29.03.10\r
-               cts_readout_type_in <= x"1";\r
-               cts_start_readout_in <= '1';\r
-               wait until rising_edge(clk);\r
-               wait for 400 ns;\r
-\r
-               wait until rising_edge(clk);\r
-               fee_busy_in <= '1';\r
-               wait for 300 ns;\r
-               wait until rising_edge(clk);\r
-\r
-               -- ONE DATA TRANSMISSION\r
-               -- dice a length\r
-               UNIFORM(seed1, seed2, rand);\r
-               test_data_len := INTEGER(TRUNC(rand*max_event_size)) + 1;\r
-               \r
-               test_data_len := 9685;\r
-               --test_data_len := 400;\r
-               \r
-               -- calculate the needed variables\r
-               test_loop_len := 2*(test_data_len - 1) + 1;\r
-               test_hdr_len := to_unsigned( test_data_len + 1, 16 );\r
-               test_evt_len := to_unsigned( test_data_len, 16 );\r
-\r
-               -- original data block (trigger 1, random 0xaa, number 0x4711, source 0x21)\r
-               fee_dataready_in <= '1';\r
-               fee_data_in <= x"10" & cts_random_number;\r
-               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of first data word\r
-               fee_dataready_in <= '0';\r
-               wait until rising_edge(clk); -- BLA\r
-               wait until rising_edge(clk); -- BLA\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               fee_dataready_in <= '1';\r
-               fee_data_in <= std_logic_vector( trigger_counter );\r
-               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of second data word\r
-               fee_dataready_in <= '0';\r
-               wait until rising_edge(clk); -- BLA\r
-               wait until rising_edge(clk); -- BLA\r
-               wait until rising_edge(clk); -- BLA\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               fee_dataready_in <= '1';\r
-               fee_data_in <= std_logic_vector( test_hdr_len );\r
-               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of third data word\r
-               fee_data_in <= x"ff21";\r
-               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of fourth data word\r
-               fee_dataready_in <= '0';\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               fee_dataready_in <= '1';\r
-               fee_data_in <= std_logic_vector( test_evt_len );\r
-               wait until rising_edge(clk) and (fee_read_out = '1');\r
-               fee_data_in <= x"ff22"; \r
-               wait until rising_edge(clk) and (fee_read_out = '1');\r
-               fee_dataready_in <= '0';\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-\r
-               test_data     := x"ffff";\r
-               MY_DATA_LOOP: for J in 0 to test_loop_len loop\r
-                       test_data := test_data + 1;\r
-                       wait until rising_edge(clk);\r
-                       fee_data_in <= std_logic_vector(test_data); \r
-                       if( (test_data MOD 5) = 0 ) then\r
-                               fee_dataready_in <= '0';\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               wait until rising_edge(clk);\r
-                               fee_dataready_in <= '1';\r
-                       else\r
-                               fee_dataready_in <= '1';\r
-                       end if;\r
-                               --fee_dataready_in <= '1';\r
-               end loop MY_DATA_LOOP;\r
-               -- there must be padding words to get multiple of four LWs\r
-       \r
-               wait until rising_edge(clk);\r
-               fee_dataready_in <= '0';\r
-               fee_data_in <= x"0000"; \r
-\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               fee_busy_in <= '0';\r
-\r
-\r
-               trigger_loop    := trigger_loop + 1;\r
-               trigger_counter := trigger_counter + 1;\r
-\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               cts_read_in <= '1';\r
-               wait until rising_edge(clk);\r
-               cts_read_in <= '0';\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               cts_start_readout_in <= '0';\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);\r
-               wait until rising_edge(clk);    \r
-               \r
-               --wait for 8 us;\r
-\r
-       end loop MY_TRIGGER_LOOP;\r
-\r
---     wait for 8 us;\r
--------------------------------------------------------------------------------\r
--- end of loop\r
--------------------------------------------------------------------------------\r
-       -- Stay a while... stay forever!!!\r
-       wait;   \r
-       \r
-end process TESTBENCH_PROC;\r
-\r
-END;\r
-\r
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+USE ieee.math_real.all;
+USE ieee.numeric_std.ALL;
+
+ENTITY testbench IS
+END testbench;
+
+ARCHITECTURE behavior OF testbench IS 
+       component trb_net16_gbe_buf is
+       generic( 
+               DO_SIMULATION           : integer range 0 to 1 := 1;
+               USE_125MHZ_EXTCLK       : integer range 0 to 1 := 1
+       );
+       port(
+               CLK                                                     : in    std_logic;
+               TEST_CLK                                        : in    std_logic; -- only for simulation!
+               CLK_125_TX_IN                           : in std_logic;  -- gk 28.04.01 used only in internal 125MHz clock mode
+               CLK_125_RX_IN                           : in std_logic;  -- gk 28.04.01 used only in internal 125MHz clock mode
+               RESET : IN std_logic;
+               GSR_N : IN std_logic;
+               STAGE_CTRL_REGS_IN : IN std_logic_vector(31 downto 0);
+               ------------------------
+               IP_CFG_START_IN : IN std_logic;
+               IP_CFG_BANK_SEL_IN : IN std_logic_vector(3 downto 0);
+               IP_CFG_MEM_DATA_IN : IN std_logic_vector(31 downto 0);
+               MR_RESET_IN : IN std_logic;
+               MR_MODE_IN : IN std_logic;
+               MR_RESTART_IN : IN std_logic;
+               IP_CFG_MEM_CLK_OUT : OUT std_logic;
+               IP_CFG_DONE_OUT : OUT std_logic;
+               IP_CFG_MEM_ADDR_OUT : OUT std_logic_vector(7 downto 0);
+               -- gk 29.03.10
+               SLV_ADDR_IN                  : in std_logic_vector(7 downto 0);
+               SLV_READ_IN                  : in std_logic;
+               SLV_WRITE_IN                 : in std_logic;
+               SLV_BUSY_OUT                 : out std_logic;
+               SLV_ACK_OUT                  : out std_logic;
+               SLV_DATA_IN                  : in std_logic_vector(31 downto 0);
+               SLV_DATA_OUT                 : out std_logic_vector(31 downto 0);
+               -- gk 26.04.10
+               -- registers setup interface
+               BUS_ADDR_IN               : in std_logic_vector(7 downto 0);
+               BUS_DATA_IN               : in std_logic_vector(31 downto 0);
+               BUS_DATA_OUT              : out std_logic_vector(31 downto 0);  -- gk 26.04.10
+               BUS_WRITE_EN_IN           : in std_logic;  -- gk 26.04.10
+               BUS_READ_EN_IN            : in std_logic;  -- gk 26.04.10
+               BUS_ACK_OUT               : out std_logic;  -- gk 26.04.10
+               -- gk 23.04.10
+               LED_PACKET_SENT_OUT        : out std_logic;
+               LED_AN_DONE_N_OUT            : out std_logic;
+               ------------------------
+               CTS_NUMBER_IN : IN std_logic_vector(15 downto 0);
+               CTS_CODE_IN : IN std_logic_vector(7 downto 0);
+               CTS_INFORMATION_IN : IN std_logic_vector(7 downto 0);
+               CTS_READOUT_TYPE_IN : IN std_logic_vector(3 downto 0);
+               CTS_START_READOUT_IN : IN std_logic;
+               CTS_READ_IN : IN std_logic;
+               FEE_DATA_IN : IN std_logic_vector(15 downto 0);
+               FEE_DATAREADY_IN : IN std_logic;
+               FEE_STATUS_BITS_IN : IN std_logic_vector(31 downto 0);
+               FEE_BUSY_IN : IN std_logic;
+               SFP_RXD_P_IN : IN std_logic;
+               SFP_RXD_N_IN : IN std_logic;
+               SFP_REFCLK_P_IN : IN std_logic;
+               SFP_REFCLK_N_IN : IN std_logic;
+               SFP_PRSNT_N_IN : IN std_logic;
+               SFP_LOS_IN : IN std_logic;          
+               STAGE_STAT_REGS_OUT : OUT std_logic_vector(31 downto 0);
+               CTS_DATA_OUT : OUT std_logic_vector(31 downto 0);
+               CTS_DATAREADY_OUT : OUT std_logic;
+               CTS_READOUT_FINISHED_OUT : OUT std_logic;
+               CTS_LENGTH_OUT : OUT std_logic_vector(15 downto 0);
+               CTS_ERROR_PATTERN_OUT : OUT std_logic_vector(31 downto 0);
+               FEE_READ_OUT : OUT std_logic;
+               SFP_TXD_P_OUT : OUT std_logic;
+               SFP_TXD_N_OUT : OUT std_logic;
+               SFP_TXDIS_OUT : OUT std_logic;
+               IG_CTS_CTR_TST : OUT std_logic_vector(2 downto 0);
+               IG_REM_CTR_TST : OUT std_logic_vector(3 downto 0);
+               IG_BSM_LOAD_TST : OUT std_logic_vector(3 downto 0);
+               IG_BSM_SAVE_TST : OUT std_logic_vector(3 downto 0);
+               IG_DATA_TST : OUT std_logic_vector(15 downto 0);
+               IG_WCNT_TST : OUT std_logic_vector(15 downto 0);
+               IG_RCNT_TST : OUT std_logic_vector(16 downto 0);
+               IG_RD_EN_TST : OUT std_logic;
+               IG_WR_EN_TST : OUT std_logic;
+               IG_EMPTY_TST : OUT std_logic;
+               IG_AEMPTY_TST : OUT std_logic;
+               IG_FULL_TST : OUT std_logic;
+               IG_AFULL_TST : OUT std_logic;
+               PC_WR_EN_TST : OUT std_logic;
+               PC_DATA_TST : OUT std_logic_vector(7 downto 0);
+               PC_READY_TST : OUT std_logic;
+               PC_START_OF_SUB_TST : OUT std_logic;
+               PC_END_OF_DATA_TST : OUT std_logic;
+               PC_ALL_CTR_TST : OUT std_logic_vector(4 downto 0);
+               PC_SUB_CTR_TST : OUT std_logic_vector(4 downto 0);
+               PC_SUB_SIZE_TST : OUT std_logic_vector(31 downto 0);
+               PC_TRIG_NR_TST : OUT std_logic_vector(31 downto 0);
+               PC_PADDING_TST : OUT std_logic;
+               PC_DECODING_TST : OUT std_logic_vector(31 downto 0);
+               PC_EVENT_ID_TST : OUT std_logic_vector(31 downto 0);
+               PC_QUEUE_DEC_TST : OUT std_logic_vector(31 downto 0);
+               PC_BSM_CONSTR_TST : OUT std_logic_vector(3 downto 0);
+               PC_BSM_LOAD_TST : OUT std_logic_vector(3 downto 0);
+               PC_BSM_SAVE_TST : OUT std_logic_vector(3 downto 0);
+               PC_SHF_EMPTY_TST : OUT std_logic;
+               PC_SHF_FULL_TST : OUT std_logic;
+               PC_SHF_WR_EN_TST : OUT std_logic;
+               PC_SHF_RD_EN_TST : OUT std_logic;
+               PC_SHF_Q_TST : OUT std_logic_vector(7 downto 0);
+               PC_DF_EMPTY_TST : OUT std_logic;
+               PC_DF_FULL_TST : OUT std_logic;
+               PC_DF_WR_EN_TST : OUT std_logic;
+               PC_DF_RD_EN_TST : OUT std_logic;
+               PC_DF_Q_TST : OUT std_logic_vector(7 downto 0);
+               PC_BYTES_LOADED_TST : OUT std_logic_vector(15 downto 0);
+               PC_SIZE_LEFT_TST : OUT std_logic_vector(31 downto 0);
+               PC_SUB_SIZE_TO_SAVE_TST : OUT std_logic_vector(31 downto 0);
+               PC_SUB_SIZE_LOADED_TST : OUT std_logic_vector(31 downto 0);
+               PC_SUB_BYTES_LOADED_TST : OUT std_logic_vector(31 downto 0);
+               PC_QUEUE_SIZE_TST : OUT std_logic_vector(31 downto 0);
+               PC_ACT_QUEUE_SIZE_TST : OUT std_logic_vector(31 downto 0);
+               FC_WR_EN_TST : OUT std_logic;
+               FC_DATA_TST : OUT std_logic_vector(7 downto 0);
+               FC_H_READY_TST : OUT std_logic;
+               FC_READY_TST : OUT std_logic;
+               FC_IP_SIZE_TST : OUT std_logic_vector(15 downto 0);
+               FC_UDP_SIZE_TST : OUT std_logic_vector(15 downto 0);
+               FC_IDENT_TST : OUT std_logic_vector(15 downto 0);
+               FC_FLAGS_OFFSET_TST : OUT std_logic_vector(15 downto 0);
+               FC_SOD_TST : OUT std_logic;
+               FC_EOD_TST : OUT std_logic;
+               FC_BSM_CONSTR_TST : OUT std_logic_vector(7 downto 0);
+               FC_BSM_TRANS_TST : OUT std_logic_vector(3 downto 0);
+               FT_DATA_TST : OUT std_logic_vector(8 downto 0);
+               FT_TX_EMPTY_TST : OUT std_logic;
+               FT_START_OF_PACKET_TST : OUT std_logic;
+               FT_BSM_INIT_TST : OUT std_logic_vector(3 downto 0);
+               FT_BSM_MAC_TST : OUT std_logic_vector(3 downto 0);
+               FT_BSM_TRANS_TST : OUT std_logic_vector(3 downto 0);
+               MAC_HADDR_TST : OUT std_logic_vector(7 downto 0);
+               MAC_HDATA_TST : OUT std_logic_vector(7 downto 0);
+               MAC_HCS_TST : OUT std_logic;
+               MAC_HWRITE_TST : OUT std_logic;
+               MAC_HREAD_TST : OUT std_logic;
+               MAC_HREADY_TST : OUT std_logic;
+               MAC_HDATA_EN_TST : OUT std_logic;
+               MAC_FIFOAVAIL_TST : OUT std_logic;
+               MAC_FIFOEOF_TST : OUT std_logic;
+               MAC_FIFOEMPTY_TST : OUT std_logic;
+               MAC_TX_READ_TST : OUT std_logic;
+               MAC_TX_DONE_TST : OUT std_logic;
+               PCS_AN_LP_ABILITY_TST : OUT std_logic_vector(15 downto 0);
+               PCS_AN_COMPLETE_TST : OUT std_logic;
+               PCS_AN_PAGE_RX_TST : OUT std_logic;
+               ANALYZER_DEBUG_OUT : OUT std_logic_vector(63 downto 0)
+               );
+       END COMPONENT;
+
+       SIGNAL CLK :  std_logic;
+       SIGNAL TEST_CLK :  std_logic;
+       SIGNAL RESET :  std_logic;
+       SIGNAL GSR_N :  std_logic;
+       SIGNAL STAGE_STAT_REGS_OUT :  std_logic_vector(31 downto 0);
+       SIGNAL STAGE_CTRL_REGS_IN :  std_logic_vector(31 downto 0);
+       SIGNAL IP_CFG_START_IN :  std_logic;
+       SIGNAL IP_CFG_BANK_SEL_IN :  std_logic_vector(3 downto 0);
+       SIGNAL IP_CFG_MEM_DATA_IN :  std_logic_vector(31 downto 0);
+       SIGNAL MR_RESET_IN :  std_logic;
+       SIGNAL MR_MODE_IN :  std_logic;
+       SIGNAL MR_RESTART_IN :  std_logic;
+       SIGNAL IP_CFG_MEM_CLK_OUT :  std_logic;
+       SIGNAL IP_CFG_DONE_OUT :  std_logic;
+       SIGNAL IP_CFG_MEM_ADDR_OUT :  std_logic_vector(7 downto 0);
+       SIGNAL CTS_NUMBER_IN :  std_logic_vector(15 downto 0);
+       SIGNAL CTS_CODE_IN :  std_logic_vector(7 downto 0);
+       SIGNAL CTS_INFORMATION_IN :  std_logic_vector(7 downto 0);
+       SIGNAL CTS_READOUT_TYPE_IN :  std_logic_vector(3 downto 0);
+       SIGNAL CTS_START_READOUT_IN :  std_logic;
+       SIGNAL CTS_DATA_OUT :  std_logic_vector(31 downto 0);
+       SIGNAL CTS_DATAREADY_OUT :  std_logic;
+       SIGNAL CTS_READOUT_FINISHED_OUT :  std_logic;
+       SIGNAL CTS_READ_IN :  std_logic;
+       SIGNAL CTS_LENGTH_OUT :  std_logic_vector(15 downto 0);
+       SIGNAL CTS_ERROR_PATTERN_OUT :  std_logic_vector(31 downto 0);
+       SIGNAL FEE_DATA_IN :  std_logic_vector(15 downto 0);
+       SIGNAL FEE_DATAREADY_IN :  std_logic;
+       SIGNAL FEE_READ_OUT :  std_logic;
+       SIGNAL FEE_STATUS_BITS_IN :  std_logic_vector(31 downto 0);
+       SIGNAL FEE_BUSY_IN :  std_logic;
+       SIGNAL SFP_RXD_P_IN :  std_logic;
+       SIGNAL SFP_RXD_N_IN :  std_logic;
+       SIGNAL SFP_TXD_P_OUT :  std_logic;
+       SIGNAL SFP_TXD_N_OUT :  std_logic;
+       SIGNAL SFP_REFCLK_P_IN :  std_logic;
+       SIGNAL SFP_REFCLK_N_IN :  std_logic;
+       SIGNAL SFP_PRSNT_N_IN :  std_logic;
+       SIGNAL SFP_LOS_IN :  std_logic;
+       SIGNAL SFP_TXDIS_OUT :  std_logic;
+       SIGNAL IG_CTS_CTR_TST :  std_logic_vector(2 downto 0);
+       SIGNAL IG_REM_CTR_TST :  std_logic_vector(3 downto 0);
+       SIGNAL IG_BSM_LOAD_TST :  std_logic_vector(3 downto 0);
+       SIGNAL IG_BSM_SAVE_TST :  std_logic_vector(3 downto 0);
+       SIGNAL IG_DATA_TST :  std_logic_vector(15 downto 0);
+       SIGNAL IG_WCNT_TST :  std_logic_vector(15 downto 0);
+       SIGNAL IG_RCNT_TST :  std_logic_vector(16 downto 0);
+       SIGNAL IG_RD_EN_TST :  std_logic;
+       SIGNAL IG_WR_EN_TST :  std_logic;
+       SIGNAL IG_EMPTY_TST :  std_logic;
+       SIGNAL IG_AEMPTY_TST :  std_logic;
+       SIGNAL IG_FULL_TST :  std_logic;
+       SIGNAL IG_AFULL_TST :  std_logic;
+       SIGNAL PC_WR_EN_TST :  std_logic;
+       SIGNAL PC_DATA_TST :  std_logic_vector(7 downto 0);
+       SIGNAL PC_READY_TST :  std_logic;
+       SIGNAL PC_START_OF_SUB_TST :  std_logic;
+       SIGNAL PC_END_OF_DATA_TST :  std_logic;
+       SIGNAL PC_SUB_SIZE_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_TRIG_NR_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_PADDING_TST :  std_logic;
+       SIGNAL PC_DECODING_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_EVENT_ID_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_QUEUE_DEC_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_BSM_CONSTR_TST :  std_logic_vector(3 downto 0);
+       SIGNAL PC_BSM_LOAD_TST :  std_logic_vector(3 downto 0);
+       SIGNAL PC_BSM_SAVE_TST :  std_logic_vector(3 downto 0);
+       SIGNAL PC_SHF_EMPTY_TST :  std_logic;
+       SIGNAL PC_SHF_FULL_TST :  std_logic;
+       SIGNAL PC_SHF_WR_EN_TST :  std_logic;
+       SIGNAL PC_SHF_RD_EN_TST :  std_logic;
+       SIGNAL PC_SHF_Q_TST :  std_logic_vector(7 downto 0);
+       SIGNAL PC_DF_EMPTY_TST :  std_logic;
+       SIGNAL PC_DF_FULL_TST :  std_logic;
+       SIGNAL PC_DF_WR_EN_TST :  std_logic;
+       SIGNAL PC_DF_RD_EN_TST :  std_logic;
+       SIGNAL PC_DF_Q_TST :  std_logic_vector(7 downto 0); 
+       SIGNAL PC_ALL_CTR_TST :  std_logic_vector(4 downto 0);
+       SIGNAL PC_SUB_CTR_TST :  std_logic_vector(4 downto 0);
+       SIGNAL PC_BYTES_LOADED_TST :  std_logic_vector(15 downto 0);
+       SIGNAL PC_SIZE_LEFT_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_SUB_SIZE_TO_SAVE_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_SUB_SIZE_LOADED_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_SUB_BYTES_LOADED_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_QUEUE_SIZE_TST :  std_logic_vector(31 downto 0);
+       SIGNAL PC_ACT_QUEUE_SIZE_TST :  std_logic_vector(31 downto 0);
+       SIGNAL FC_WR_EN_TST :  std_logic;
+       SIGNAL FC_DATA_TST :  std_logic_vector(7 downto 0);
+       SIGNAL FC_H_READY_TST :  std_logic;
+       SIGNAL FC_READY_TST :  std_logic;
+       SIGNAL FC_IP_SIZE_TST :  std_logic_vector(15 downto 0);
+       SIGNAL FC_UDP_SIZE_TST :  std_logic_vector(15 downto 0);
+       SIGNAL FC_IDENT_TST :  std_logic_vector(15 downto 0);
+       SIGNAL FC_FLAGS_OFFSET_TST :  std_logic_vector(15 downto 0);
+       SIGNAL FC_SOD_TST :  std_logic;
+       SIGNAL FC_EOD_TST :  std_logic;
+       SIGNAL FC_BSM_CONSTR_TST :  std_logic_vector(7 downto 0);
+       SIGNAL FC_BSM_TRANS_TST :  std_logic_vector(3 downto 0);
+       SIGNAL FT_DATA_TST :  std_logic_vector(8 downto 0);
+       SIGNAL FT_TX_EMPTY_TST :  std_logic;
+       SIGNAL FT_START_OF_PACKET_TST :  std_logic;
+       SIGNAL FT_BSM_INIT_TST :  std_logic_vector(3 downto 0);
+       SIGNAL FT_BSM_MAC_TST :  std_logic_vector(3 downto 0);
+       SIGNAL FT_BSM_TRANS_TST :  std_logic_vector(3 downto 0);
+       SIGNAL MAC_HADDR_TST :  std_logic_vector(7 downto 0);
+       SIGNAL MAC_HDATA_TST :  std_logic_vector(7 downto 0);
+       SIGNAL MAC_HCS_TST :  std_logic;
+       SIGNAL MAC_HWRITE_TST :  std_logic;
+       SIGNAL MAC_HREAD_TST :  std_logic;
+       SIGNAL MAC_HREADY_TST :  std_logic;
+       SIGNAL MAC_HDATA_EN_TST :  std_logic;
+       SIGNAL MAC_FIFOAVAIL_TST :  std_logic;
+       SIGNAL MAC_FIFOEOF_TST :  std_logic;
+       SIGNAL MAC_FIFOEMPTY_TST :  std_logic;
+       SIGNAL MAC_TX_READ_TST :  std_logic;
+       SIGNAL MAC_TX_DONE_TST :  std_logic;
+       SIGNAL PCS_AN_LP_ABILITY_TST :  std_logic_vector(15 downto 0);
+       SIGNAL PCS_AN_COMPLETE_TST :  std_logic;
+       SIGNAL PCS_AN_PAGE_RX_TST :  std_logic;
+       SIGNAL ANALYZER_DEBUG_OUT :  std_logic_vector(63 downto 0);
+       --gk 29.03.10
+       signal SLV_ADDR_IN : std_logic_vector(7 downto 0);
+       signal SLV_READ_IN : std_logic;
+       signal SLV_WRITE_IN : std_logic;
+       signal SLV_BUSY_OUT : std_logic;
+       signal SLV_ACK_OUT : std_logic;
+       signal SLV_DATA_IN : std_logic_vector(31 downto 0);
+       signal SLV_DATA_OUT : std_logic_vector(31 downto 0);
+
+BEGIN
+
+-- Please check and add your generic clause manually
+       uut: trb_net16_gbe_buf
+       GENERIC MAP( DO_SIMULATION => 1, USE_125MHZ_EXTCLK => 1 )
+       PORT MAP(
+               CLK => CLK,
+               CLK_125_TX_IN => '0',
+               CLK_125_RX_IN => '0',
+               TEST_CLK => TEST_CLK,
+               RESET => RESET,
+               GSR_N => GSR_N,
+               STAGE_STAT_REGS_OUT => STAGE_STAT_REGS_OUT,
+               STAGE_CTRL_REGS_IN => STAGE_CTRL_REGS_IN,
+               IP_CFG_START_IN => IP_CFG_START_IN,
+               IP_CFG_BANK_SEL_IN => IP_CFG_BANK_SEL_IN,
+               IP_CFG_MEM_DATA_IN => IP_CFG_MEM_DATA_IN,
+               MR_RESET_IN => MR_RESET_IN,
+               MR_MODE_IN => MR_MODE_IN,
+               MR_RESTART_IN => MR_RESTART_IN,
+               IP_CFG_MEM_CLK_OUT => IP_CFG_MEM_CLK_OUT,
+               IP_CFG_DONE_OUT => IP_CFG_DONE_OUT,
+               IP_CFG_MEM_ADDR_OUT => IP_CFG_MEM_ADDR_OUT,
+               -- gk 29.03.10
+               SLV_ADDR_IN => SLV_ADDR_IN,
+               SLV_READ_IN => SLV_READ_IN,
+               SLV_WRITE_IN => SLV_WRITE_IN,
+               SLV_BUSY_OUT => SLV_BUSY_OUT,
+               SLV_ACK_OUT => SLV_ACK_OUT,
+               SLV_DATA_IN => SLV_DATA_IN,
+               SLV_DATA_OUT => SLV_DATA_OUT,
+               -- gk 22.04.10
+               -- registers setup interface
+               BUS_ADDR_IN => x"00",
+               BUS_DATA_IN => x"0000_0000",
+               BUS_DATA_OUT => open,
+               BUS_WRITE_EN_IN => '0',
+               BUS_READ_EN_IN => '0',
+               BUS_ACK_OUT => open,
+               -- gk 23.04.10
+               LED_PACKET_SENT_OUT => open,
+               LED_AN_DONE_N_OUT => open,
+               --------------------------
+               CTS_NUMBER_IN => CTS_NUMBER_IN,
+               CTS_CODE_IN => CTS_CODE_IN,
+               CTS_INFORMATION_IN => CTS_INFORMATION_IN,
+               CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN,
+               CTS_START_READOUT_IN => CTS_START_READOUT_IN,
+               CTS_DATA_OUT => CTS_DATA_OUT,
+               CTS_DATAREADY_OUT => CTS_DATAREADY_OUT,
+               CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT,
+               CTS_READ_IN => CTS_READ_IN,
+               CTS_LENGTH_OUT => CTS_LENGTH_OUT,
+               CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT,
+               FEE_DATA_IN => FEE_DATA_IN,
+               FEE_DATAREADY_IN => FEE_DATAREADY_IN,
+               FEE_READ_OUT => FEE_READ_OUT,
+               FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN,
+               FEE_BUSY_IN => FEE_BUSY_IN,
+               SFP_RXD_P_IN => SFP_RXD_P_IN,
+               SFP_RXD_N_IN => SFP_RXD_N_IN,
+               SFP_TXD_P_OUT => SFP_TXD_P_OUT,
+               SFP_TXD_N_OUT => SFP_TXD_N_OUT,
+               SFP_REFCLK_P_IN => SFP_REFCLK_P_IN,
+               SFP_REFCLK_N_IN => SFP_REFCLK_N_IN,
+               SFP_PRSNT_N_IN => SFP_PRSNT_N_IN,
+               SFP_LOS_IN => SFP_LOS_IN,
+               SFP_TXDIS_OUT => SFP_TXDIS_OUT,
+               IG_CTS_CTR_TST => IG_CTS_CTR_TST,
+               IG_REM_CTR_TST => IG_REM_CTR_TST,
+               IG_BSM_LOAD_TST => IG_BSM_LOAD_TST,
+               IG_BSM_SAVE_TST => IG_BSM_SAVE_TST,
+               IG_DATA_TST => IG_DATA_TST,
+               IG_WCNT_TST => IG_WCNT_TST,
+               IG_RCNT_TST => IG_RCNT_TST,
+               IG_RD_EN_TST => IG_RD_EN_TST,
+               IG_WR_EN_TST => IG_WR_EN_TST,
+               IG_EMPTY_TST => IG_EMPTY_TST,
+               IG_AEMPTY_TST => IG_AEMPTY_TST,
+               IG_FULL_TST => IG_FULL_TST,
+               IG_AFULL_TST => IG_AFULL_TST,
+               PC_WR_EN_TST => PC_WR_EN_TST,
+               PC_DATA_TST => PC_DATA_TST,
+               PC_READY_TST => PC_READY_TST,
+               PC_START_OF_SUB_TST => PC_START_OF_SUB_TST,
+               PC_END_OF_DATA_TST => PC_END_OF_DATA_TST,
+               PC_SUB_SIZE_TST => PC_SUB_SIZE_TST,
+               PC_TRIG_NR_TST => PC_TRIG_NR_TST,
+               PC_PADDING_TST => PC_PADDING_TST,
+               PC_DECODING_TST => PC_DECODING_TST,
+               PC_EVENT_ID_TST => PC_EVENT_ID_TST,
+               PC_QUEUE_DEC_TST => PC_QUEUE_DEC_TST,
+               PC_BSM_CONSTR_TST => PC_BSM_CONSTR_TST,
+               PC_BSM_LOAD_TST => PC_BSM_LOAD_TST,
+               PC_BSM_SAVE_TST => PC_BSM_SAVE_TST,
+               PC_SHF_EMPTY_TST => PC_SHF_EMPTY_TST,
+               PC_SHF_FULL_TST => PC_SHF_FULL_TST,
+               PC_SHF_WR_EN_TST => PC_SHF_WR_EN_TST,
+               PC_SHF_RD_EN_TST => PC_SHF_RD_EN_TST,
+               PC_SHF_Q_TST => PC_SHF_Q_TST,
+               PC_DF_EMPTY_TST => PC_DF_EMPTY_TST,
+               PC_DF_FULL_TST => PC_DF_FULL_TST,
+               PC_DF_WR_EN_TST => PC_DF_WR_EN_TST,
+               PC_DF_RD_EN_TST => PC_DF_RD_EN_TST,
+               PC_DF_Q_TST => PC_DF_Q_TST,
+               PC_ALL_CTR_TST => PC_ALL_CTR_TST,
+               PC_SUB_CTR_TST => PC_SUB_CTR_TST,
+               PC_BYTES_LOADED_TST => PC_BYTES_LOADED_TST,
+               PC_SIZE_LEFT_TST => PC_SIZE_LEFT_TST,
+               PC_SUB_SIZE_TO_SAVE_TST => PC_SUB_SIZE_TO_SAVE_TST,
+               PC_SUB_SIZE_LOADED_TST => PC_SUB_SIZE_LOADED_TST,
+               PC_SUB_BYTES_LOADED_TST => PC_SUB_BYTES_LOADED_TST,
+               PC_QUEUE_SIZE_TST => PC_QUEUE_SIZE_TST,
+               PC_ACT_QUEUE_SIZE_TST => PC_ACT_QUEUE_SIZE_TST,         
+               FC_WR_EN_TST => FC_WR_EN_TST,
+               FC_DATA_TST => FC_DATA_TST,
+               FC_H_READY_TST => FC_H_READY_TST,
+               FC_READY_TST => FC_READY_TST,
+               FC_IP_SIZE_TST => FC_IP_SIZE_TST,
+               FC_UDP_SIZE_TST => FC_UDP_SIZE_TST,
+               FC_IDENT_TST => FC_IDENT_TST,
+               FC_FLAGS_OFFSET_TST => FC_FLAGS_OFFSET_TST,
+               FC_SOD_TST => FC_SOD_TST,
+               FC_EOD_TST => FC_EOD_TST,
+               FC_BSM_CONSTR_TST => FC_BSM_CONSTR_TST,
+               FC_BSM_TRANS_TST => FC_BSM_TRANS_TST,
+               FT_DATA_TST => FT_DATA_TST,
+               FT_TX_EMPTY_TST => FT_TX_EMPTY_TST,
+               FT_START_OF_PACKET_TST => FT_START_OF_PACKET_TST,
+               FT_BSM_INIT_TST => FT_BSM_INIT_TST,
+               FT_BSM_MAC_TST => FT_BSM_MAC_TST,
+               FT_BSM_TRANS_TST => FT_BSM_TRANS_TST,
+               MAC_HADDR_TST => MAC_HADDR_TST,
+               MAC_HDATA_TST => MAC_HDATA_TST,
+               MAC_HCS_TST => MAC_HCS_TST,
+               MAC_HWRITE_TST => MAC_HWRITE_TST,
+               MAC_HREAD_TST => MAC_HREAD_TST,
+               MAC_HREADY_TST => MAC_HREADY_TST,
+               MAC_HDATA_EN_TST => MAC_HDATA_EN_TST,
+               MAC_FIFOAVAIL_TST => MAC_FIFOAVAIL_TST,
+               MAC_FIFOEOF_TST => MAC_FIFOEOF_TST,
+               MAC_FIFOEMPTY_TST => MAC_FIFOEMPTY_TST,
+               MAC_TX_READ_TST => MAC_TX_READ_TST,
+               MAC_TX_DONE_TST => MAC_TX_DONE_TST,
+               PCS_AN_LP_ABILITY_TST => PCS_AN_LP_ABILITY_TST,
+               PCS_AN_COMPLETE_TST => PCS_AN_COMPLETE_TST,
+               PCS_AN_PAGE_RX_TST => PCS_AN_PAGE_RX_TST,
+               ANALYZER_DEBUG_OUT => ANALYZER_DEBUG_OUT
+       );
+
+
+
+-- 100 MHz system clock
+CLOCK_GEN_PROC: process
+begin
+       clk <= '1'; wait for 5.0 ns;
+       clk <= '0'; wait for 5.0 ns;
+end process CLOCK_GEN_PROC;
+
+-- 125 MHz MAC clock
+CLOCK2_GEN_PROC: process
+begin
+       test_clk <= '1'; wait for 4.0 ns;
+       test_clk <= '0'; wait for 3.0 ns;
+end process CLOCK2_GEN_PROC;
+
+-- Testbench
+TESTBENCH_PROC: process
+-- test data from TRBnet
+variable test_data_len : integer range 0 to 65535 := 1;
+variable test_loop_len : integer range 0 to 65535 := 0;
+variable test_hdr_len : unsigned(15 downto 0) := x"0000";
+variable test_evt_len : unsigned(15 downto 0) := x"0000";
+variable test_data : unsigned(15 downto 0) := x"ffff";
+
+variable trigger_counter : unsigned(15 downto 0) := x"4710";
+variable trigger_loop : integer range 0 to 65535 := 15;
+
+-- 1400 bytes MTU => 350 as limit for fragmentation
+variable max_event_size : real := 512.0;
+
+variable seed1 : positive; -- seed for random generator
+variable seed2 : positive; -- seed for random generator
+variable rand : real; -- random value (0.0 ... 1.0)
+variable int_rand : integer; -- random value, scaled to your needs
+variable cts_random_number : std_logic_vector(7 downto 0);
+
+variable stim : std_logic_vector(15 downto 0);
+
+
+-- RND test
+--UNIFORM(seed1, seed2, rand);
+--int_rand := INTEGER(TRUNC(rand*65536.0));
+--stim := std_logic_vector(to_unsigned(int_rand, stim'LENGTH));
+
+begin
+       -- Setup signals
+       reset <= '0';
+       gsr_n <= '1';
+       
+       stage_ctrl_regs_in <= x"0000_0000";
+       
+       --ip_cfg_start_in <= '0';
+       --ip_cfg_bank_sel_in <= x"0";
+       --ip_cfg_mem_data_in <= x"0000_0000";
+       mr_reset_in <= '0';
+       mr_mode_in <= '0';
+       mr_restart_in <= '0';
+       SLV_ADDR_IN <= x"00";
+       SLV_READ_IN <= '0';
+       SLV_WRITE_IN <= '0';
+       SLV_DATA_IN <= x"0000_0000";
+       
+       sfp_los_in <= '0'; -- signal from SFP is present
+       sfp_prsnt_n_in <= '0'; -- SFP itself is present
+       sfp_refclk_n_in <= '0';
+       sfp_refclk_p_in <= '1';
+       
+       cts_number_in <= x"0000";
+       cts_code_in <= x"00";
+       cts_information_in <= x"00";
+       cts_readout_type_in <= x"0";
+       cts_start_readout_in <= '0';
+       cts_read_in <= '0';
+       
+       fee_data_in <= x"0000";
+       fee_dataready_in <= '0';
+       fee_status_bits_in <= x"1234_5678";
+       fee_busy_in <= '0';
+       
+       wait for 22 ns;
+       
+       -- Reset the whole stuff
+       wait until rising_edge(clk);
+       reset <= '1';
+       gsr_n <= '0';
+       wait until rising_edge(clk);
+       wait until rising_edge(clk);
+       wait until rising_edge(clk);
+       reset <= '0';
+       gsr_n <= '1';
+       wait until rising_edge(clk);
+       --wait for 100 ns;
+       
+       -- Tests may start here
+       wait until ft_bsm_init_tst = x"7";
+
+       --ip_cfg_start_in <= '1';
+
+       wait for 500 ns;
+
+
+-------------------------------------------------------------------------------
+-- Loop the transmissions
+-------------------------------------------------------------------------------
+       trigger_counter := x"4710";
+       trigger_loop    := 10;
+
+       MY_TRIGGER_LOOP: for J in 0 to trigger_loop loop
+               -- generate a real random byte for CTS
+               UNIFORM(seed1, seed2, rand);
+               int_rand := INTEGER(TRUNC(rand*256.0));
+               cts_random_number := std_logic_vector(to_unsigned(int_rand, cts_random_number'LENGTH));
+       
+               -- IPU transmission starts
+               wait until rising_edge(clk);
+               cts_number_in <= std_logic_vector( trigger_counter );
+               cts_code_in <= cts_random_number;
+               cts_information_in <= x"d2"; -- cts_information_in <= x"de"; -- gk 29.03.10
+               cts_readout_type_in <= x"1";
+               cts_start_readout_in <= '1';
+               wait until rising_edge(clk);
+               wait for 400 ns;
+
+               wait until rising_edge(clk);
+               fee_busy_in <= '1';
+               wait for 300 ns;
+               wait until rising_edge(clk);
+
+               -- ONE DATA TRANSMISSION
+               -- dice a length
+               UNIFORM(seed1, seed2, rand);
+               test_data_len := INTEGER(TRUNC(rand*max_event_size)) + 1;
+               
+               test_data_len := 9685;
+               --test_data_len := 400;
+               
+               -- calculate the needed variables
+               test_loop_len := 2*(test_data_len - 1) + 1;
+               test_hdr_len := to_unsigned( test_data_len + 1, 16 );
+               test_evt_len := to_unsigned( test_data_len, 16 );
+
+               -- original data block (trigger 1, random 0xaa, number 0x4711, source 0x21)
+               fee_dataready_in <= '1';
+               fee_data_in <= x"10" & cts_random_number;
+               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of first data word
+               fee_dataready_in <= '0';
+               wait until rising_edge(clk); -- BLA
+               wait until rising_edge(clk); -- BLA
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               fee_dataready_in <= '1';
+               fee_data_in <= std_logic_vector( trigger_counter );
+               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of second data word
+               fee_dataready_in <= '0';
+               wait until rising_edge(clk); -- BLA
+               wait until rising_edge(clk); -- BLA
+               wait until rising_edge(clk); -- BLA
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               fee_dataready_in <= '1';
+               fee_data_in <= std_logic_vector( test_hdr_len );
+               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of third data word
+               fee_data_in <= x"ff21";
+               wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of fourth data word
+               fee_dataready_in <= '0';
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               fee_dataready_in <= '1';
+               fee_data_in <= std_logic_vector( test_evt_len );
+               wait until rising_edge(clk) and (fee_read_out = '1');
+               fee_data_in <= x"ff22"; 
+               wait until rising_edge(clk) and (fee_read_out = '1');
+               fee_dataready_in <= '0';
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+
+               test_data     := x"ffff";
+               MY_DATA_LOOP: for J in 0 to test_loop_len loop
+                       test_data := test_data + 1;
+                       wait until rising_edge(clk);
+                       fee_data_in <= std_logic_vector(test_data); 
+                       if( (test_data MOD 5) = 0 ) then
+                               fee_dataready_in <= '0';
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               wait until rising_edge(clk);
+                               fee_dataready_in <= '1';
+                       else
+                               fee_dataready_in <= '1';
+                       end if;
+                               --fee_dataready_in <= '1';
+               end loop MY_DATA_LOOP;
+               -- there must be padding words to get multiple of four LWs
+       
+               wait until rising_edge(clk);
+               fee_dataready_in <= '0';
+               fee_data_in <= x"0000"; 
+
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               fee_busy_in <= '0';
+
+
+               trigger_loop    := trigger_loop + 1;
+               trigger_counter := trigger_counter + 1;
+
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               cts_read_in <= '1';
+               wait until rising_edge(clk);
+               cts_read_in <= '0';
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               cts_start_readout_in <= '0';
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);
+               wait until rising_edge(clk);    
+               
+               --wait for 8 us;
+
+       end loop MY_TRIGGER_LOOP;
+
+--     wait for 8 us;
+-------------------------------------------------------------------------------
+-- end of loop
+-------------------------------------------------------------------------------
+       -- Stay a while... stay forever!!!
+       wait;   
+       
+end process TESTBENCH_PROC;
+
+END;
+
index 74ad3e3a7adfdfeaf7835f543939182ee93a374e..9906432f8141e3f6205fa5f5bf52d9d0abf0cfe5 100755 (executable)
@@ -248,7 +248,7 @@ port(
        DBG_SF_AEMPTY_OUT                       : out   std_logic;
        DBG_SF_FULL_OUT                         : out   std_logic;
        DBG_SF_AFULL_OUT                        : out   std_logic;
-       DEBUG_OUT                               : out   std_logic_vector(31 downto 0)   
+       DEBUG_OUT                               : out   std_logic_vector(63 downto 0)   
 );
 end component;
 
@@ -331,7 +331,7 @@ port (
        DBG_SUB_BYTES_LOADED    : out   std_logic_vector(31 downto 0);
        DBG_QUEUE_SIZE                  : out   std_logic_vector(31 downto 0);
        DBG_ACT_QUEUE_SIZE              : out   std_logic_vector(31 downto 0);
-       DEBUG_OUT                               : out   std_logic_vector(31 downto 0)
+       DEBUG_OUT                               : out   std_logic_vector(63 downto 0)
 );
 end component;
 
@@ -374,7 +374,7 @@ port (
        -- debug ports
        BSM_CONSTR_OUT                  : out   std_logic_vector(7 downto 0);
        BSM_TRANS_OUT                   : out   std_logic_vector(3 downto 0);
-       DEBUG_OUT                               : out std_logic_vector(31 downto 0)
+       DEBUG_OUT                               : out std_logic_vector(63 downto 0)
 );
 end component;
 
@@ -405,7 +405,7 @@ port (
        DBG_RD_DONE_OUT                 : out   std_logic;
        DBG_INIT_DONE_OUT               : out   std_logic;
        DBG_ENABLED_OUT                 : out   std_logic;
-       DEBUG_OUT                               : out   std_logic_vector(31 downto 0)
+       DEBUG_OUT                               : out   std_logic_vector(63 downto 0)
 );
 end component;
 
@@ -624,7 +624,16 @@ port(
        GBE_USE_MULTIEVENTS_OUT   : out std_logic;
        GBE_READOUT_CTR_OUT       : out std_logic_vector(23 downto 0);  -- gk 26.04.10
        GBE_READOUT_CTR_VALID_OUT : out std_logic;  -- gk 26.04.10
-       GBE_DELAY_OUT             : out std_logic_vector(31 downto 0)
+       GBE_DELAY_OUT             : out std_logic_vector(31 downto 0);
+       -- gk 01.06.10
+       DBG_IPU2GBE1_IN          : in std_logic_vector(31 downto 0);
+       DBG_IPU2GBE2_IN          : in std_logic_vector(31 downto 0);
+       DBG_PC1_IN               : in std_logic_vector(31 downto 0);
+       DBG_PC2_IN               : in std_logic_vector(31 downto 0);
+       DBG_FC1_IN               : in std_logic_vector(31 downto 0);
+       DBG_FC2_IN               : in std_logic_vector(31 downto 0);
+       DBG_FT1_IN               : in std_logic_vector(31 downto 0);
+       DBG_FT2_IN               : in std_logic_vector(31 downto 0)
 );
 end component;
 
@@ -770,6 +779,19 @@ signal gbe_trig_nr                   : std_logic_vector(31 downto 0);
 signal pc_delay                      : std_logic_vector(31 downto 0);
 -- gk 04.05.10
 signal ft_eod                        : std_logic;
+-- gk 01.06.10
+signal dbg_ipu2gbe1                  : std_logic_vector(31 downto 0);
+signal dbg_ipu2gbe2                  : std_logic_vector(31 downto 0);
+signal dbg_pc1                       : std_logic_vector(31 downto 0);
+signal dbg_pc2                       : std_logic_vector(31 downto 0);
+signal dbg_fc1                       : std_logic_vector(31 downto 0);
+signal dbg_fc2                       : std_logic_vector(31 downto 0);
+signal dbg_ft1                       : std_logic_vector(31 downto 0);
+signal dbg_ft2                       : std_logic_vector(31 downto 0);
+-- gk 08.06.10
+signal mac_tx_staten                 : std_logic;
+signal mac_tx_statevec               : std_logic_vector(30 downto 0);
+signal mac_tx_discfrm                : std_logic;
 
 begin
 
@@ -820,7 +842,16 @@ port map(
        GBE_USE_MULTIEVENTS_OUT   => use_multievents,
        GBE_READOUT_CTR_OUT       => readout_ctr,  -- gk 26.04.10
        GBE_READOUT_CTR_VALID_OUT => readout_ctr_valid,  -- gk 26.04.10
-       GBE_DELAY_OUT             => pc_delay
+       GBE_DELAY_OUT             => pc_delay,
+       -- gk 01.06.10
+       DBG_IPU2GBE1_IN           => dbg_ipu2gbe1,
+       DBG_IPU2GBE2_IN           => dbg_ipu2gbe2,
+       DBG_PC1_IN                => dbg_pc1,
+       DBG_PC2_IN                => dbg_pc2,
+       DBG_FC1_IN                => dbg_fc1,
+       DBG_FC2_IN                => dbg_fc2,
+       DBG_FT1_IN                => dbg_ft1,
+       DBG_FT2_IN                => dbg_ft2
 );
 
 -- IP configurator: allows IP config to change for each event builder
@@ -928,7 +959,9 @@ port map(
        DBG_SF_AEMPTY_OUT                       => ig_aempty,
        DBG_SF_FULL_OUT                         => ig_full,
        DBG_SF_AFULL_OUT                        => ig_afull,
-       DEBUG_OUT                                       => ig_debug
+       --DEBUG_OUT                                     => ig_debug
+       DEBUG_OUT(31 downto 0)                  => dbg_ipu2gbe1,
+       DEBUG_OUT(63 downto 32)                 => dbg_ipu2gbe2
 );      
 
 -- Second stage: Packet constructor
@@ -986,7 +1019,8 @@ port map(
        DBG_SUB_BYTES_LOADED    => pc_sub_bytes_loaded,
        DBG_QUEUE_SIZE                  => pc_queue_size,
        DBG_ACT_QUEUE_SIZE              => pc_act_queue_size,
-       DEBUG_OUT                               => open
+       DEBUG_OUT(31 downto 0)          => dbg_pc1,
+       DEBUG_OUT(63 downto 32)         => dbg_pc2
 );
           
 -- Third stage: Frame Constructor
@@ -1028,7 +1062,8 @@ port map(
        -- debug ports
        BSM_CONSTR_OUT                  => fc_bsm_constr,
        BSM_TRANS_OUT                   => fc_bsm_trans,
-       DEBUG_OUT                               => open
+       DEBUG_OUT(31 downto 0)          => dbg_fc1,
+       DEBUG_OUT(63 downto 32)         => dbg_fc2
 );        
           
 FRAME_TRANSMITTER: trb_net16_gbe_frame_trans
@@ -1058,7 +1093,8 @@ port map(
        DBG_RD_DONE_OUT                 => open,
        DBG_INIT_DONE_OUT               => open,
        DBG_ENABLED_OUT                 => open,
-       DEBUG_OUT                               => open
+       DEBUG_OUT(31 downto 0)          => open,
+       DEBUG_OUT(63 downto 32)         => open
 );        
 
 -- in case of real hardware, we use the IP cores for MAC and PHY, and also put a SerDes in
@@ -1113,9 +1149,9 @@ imp_gen: if (DO_SIMULATION = 0) generate
                cpu_if_gbit_en          => open,
        ------------- Output signals from the Tx MAC FIFO I/F --------------- 
                tx_macread                      => mac_tx_read,
-               tx_discfrm                      => open,
-               tx_staten                       => open,
-               tx_statvec                      => open,
+               tx_discfrm                      => mac_tx_discfrm,
+               tx_staten                       => mac_tx_staten,  -- gk 08.06.10
+               tx_statvec                      => mac_tx_statevec,  -- gk 08.06.10
                tx_done                         => mac_tx_done,
        ------------- Output signals from the Rx MAC FIFO I/F ---------------   
                rx_fifo_error           => open,
@@ -1127,6 +1163,21 @@ imp_gen: if (DO_SIMULATION = 0) generate
                rx_error                        => open
        );
 
+       -- gk 08.06.10
+       dbg_statevec_proc : process(serdes_clk_125)
+       begin
+               if rising_edge(serdes_clk_125) then
+                       if (RESET = '1') then
+                               dbg_ft1 <= (others => '0');
+                       elsif (mac_tx_staten = '1') then
+                               dbg_ft1(30 downto 0) <= mac_tx_statevec;
+                               dbg_ft1(31) <= mac_tx_discfrm;
+                       end if;
+               end if;
+       end process dbg_statevec_proc;
+
+       dbg_ft2 <= stage_stat_regs;
+
        serdes_intclk_gen: if (USE_125MHZ_EXTCLK = 0) generate
                -- PHY part
                PCS_SERDES : trb_net16_med_ecp_sfp_gbe_8b
@@ -1225,7 +1276,7 @@ imp_gen: if (DO_SIMULATION = 0) generate
        end generate serdes_extclk_gen;
 
        stage_stat_regs(31 downto 28) <= x"e";
-       stage_stat_regs(27 downto 24) <= pcs_stat_debug(25 downto 22); -- link status 
+       stage_stat_regs(27 downto 24) <= pcs_stat_debug(25 downto 22); -- link s-tatus 
        stage_stat_regs(23 downto 20) <= pcs_stat_debug(35 downto 32); -- reset bsm
        stage_stat_regs(19 downto 18) <= (others => '0');
        stage_stat_regs(17)           <= pcs_an_complete;
index ce1ff3c2708de1538cbc75ece7f5c336fbf973a1..628e05d13f7e6c886b4a1fb8deca1e83c1dc3eae 100755 (executable)
@@ -45,7 +45,7 @@ port(
        -- debug ports\r
        BSM_CONSTR_OUT          : out   std_logic_vector(7 downto 0);\r
        BSM_TRANS_OUT           : out   std_logic_vector(3 downto 0);\r
-       DEBUG_OUT               : out   std_logic_vector(31 downto 0)\r
+       DEBUG_OUT               : out   std_logic_vector(63 downto 0)\r
 );\r
 end trb_net16_gbe_frame_constr;\r
 \r
@@ -94,7 +94,7 @@ signal ft_sop               : std_logic;
 signal put_udp_headers      : std_logic;\r
 signal ready_frames_ctr     : std_logic_vector(15 downto 0);\r
 signal sent_frames_ctr      : std_logic_vector(15 downto 0);\r
-signal debug                : std_logic_vector(31 downto 0);\r
+signal debug                : std_logic_vector(63 downto 0);\r
 signal ready                : std_logic;\r
 signal headers_ready        : std_logic;\r
 \r
@@ -107,7 +107,7 @@ begin
 \r
 -- Fakes\r
 udp_checksum  <= x"0000";  -- no checksum test needed\r
-debug         <= (others => '0');\r
+--debug         <= (others => '0');\r
 \r
 ready         <= '1' when (constructCurrentState = IDLE)\r
                                         else '0';\r
@@ -337,9 +337,11 @@ begin
 end process putUdpHeadersProc;\r
 \r
 \r
-fpfWrEnProc : process(constructCurrentState, WR_EN_IN)\r
+fpfWrEnProc : process(constructCurrentState, WR_EN_IN, RESET)\r
 begin\r
-       if (constructCurrentState /= IDLE) and (constructCurrentState /= CLEANUP) and (constructCurrentState /= SAVE_DATA) then\r
+       if (RESET = '1') then  -- gk 31.05.10\r
+               fpf_wr_en <= '0';\r
+       elsif (constructCurrentState /= IDLE) and (constructCurrentState /= CLEANUP) and (constructCurrentState /= SAVE_DATA) then\r
                fpf_wr_en <= '1';\r
        elsif (constructCurrentState = SAVE_DATA) and (WR_EN_IN = '1') then\r
                fpf_wr_en <= '1';\r
@@ -486,7 +488,17 @@ begin
        end if;\r
 end process sentFramesCtrProc;\r
 \r
--- Outputs\r
+debug(7 downto 0)      <= bsm_constr;\r
+debug(11 downto 8)     <= bsm_trans;\r
+debug(27 downto 12)    <= sent_frames_ctr;\r
+debug(28)              <= fpf_full;\r
+debug(29)              <= fpf_empty;\r
+debug(30)              <= ready;\r
+debug(31)              <= headers_ready;\r
+debug(47 downto 32)    <= ready_frames_ctr;\r
+\r
+\r
+-- Output\r
 FT_DATA_OUT            <= fpf_q;\r
 FT_TX_EMPTY_OUT        <= fpf_empty;\r
 FT_START_OF_PACKET_OUT <= ft_sop;\r
index 3778f3ec8277d1c0cca8f9df476ad0b50cd3c5df..5acafa7d22c89d5f6d3c02806384008714c8783c 100755 (executable)
@@ -35,7 +35,7 @@ port (
        DBG_RD_DONE_OUT         : out   std_logic;\r
        DBG_INIT_DONE_OUT       : out   std_logic;\r
        DBG_ENABLED_OUT         : out   std_logic;\r
-       DEBUG_OUT                       : out   std_logic_vector(31 downto 0)\r
+       DEBUG_OUT                       : out   std_logic_vector(63 downto 0)\r
 );\r
 end trb_net16_gbe_frame_trans;\r
 \r
@@ -89,7 +89,7 @@ signal addr2                  : std_logic_vector(5 downto 0);
 signal resetAddr               : std_logic;\r
 \r
 signal FifoEmpty               : std_logic;\r
-signal debug                   : std_logic_vector(31 downto 0);\r
+signal debug                   : std_logic_vector(63 downto 0);\r
 \r
 begin\r
 \r
@@ -151,9 +151,11 @@ begin
        end if;\r
 end process FifoAvailProc;\r
 \r
-FifoEmptyProc : process(transmitCurrentState, START_OF_PACKET_IN, TX_EMPTY_IN)\r
+FifoEmptyProc : process(transmitCurrentState, START_OF_PACKET_IN, TX_EMPTY_IN, RESET)\r
 begin\r
-       if    (transmitCurrentState = T_WAITFORFIFO) then\r
+       if (RESET = '1') then   -- gk 31.05.10\r
+               FifoEmpty <= '0';\r
+       elsif    (transmitCurrentState = T_WAITFORFIFO) then\r
                FifoEmpty <= '1';\r
        elsif (transmitCurrentState = T_TRANSMIT) then\r
                FifoEmpty <= TX_EMPTY_IN;\r
index 3fec6248d17d15d956e922811b89ef0c5af8a7aa..4e7653370472629953d25fb92ca798a97830435d 100755 (executable)
@@ -63,7 +63,7 @@ port(
        DBG_SUB_BYTES_LOADED    : out   std_logic_vector(31 downto 0);\r
        DBG_QUEUE_SIZE          : out   std_logic_vector(31 downto 0);\r
        DBG_ACT_QUEUE_SIZE      : out   std_logic_vector(31 downto 0);\r
-       DEBUG_OUT               : out   std_logic_vector(31 downto 0)\r
+       DEBUG_OUT               : out   std_logic_vector(63 downto 0)\r
 );\r
 end trb_net16_gbe_packet_constr;\r
 \r
@@ -153,7 +153,7 @@ signal fc_ip_size           : std_logic_vector(15 downto 0);
 signal fc_udp_size          : std_logic_vector(15 downto 0);\r
 signal max_frame_size       : std_logic_vector(15 downto 0);\r
 signal divide_position      : std_logic_vector(1 downto 0); -- 00->data, 01->sub, 11->term\r
-signal debug                : std_logic_vector(31 downto 0);\r
+signal debug                : std_logic_vector(63 downto 0);\r
 signal pc_ready             : std_logic;\r
 \r
 signal pc_sub_size          : std_logic_vector(31 downto 0);\r
@@ -168,7 +168,7 @@ signal ticks_ctr            : std_logic_vector(7 downto 0);  -- gk 28.04.10
 begin\r
 \r
 -- Fakes\r
-debug <= (others => '0');\r
+--debug <= (others => '0');\r
 \r
 my_int_ctr <= (3 - to_integer(to_unsigned(sub_int_ctr, 2))); -- reverse byte order\r
 load_int_ctr <= (3 - to_integer(to_unsigned(all_int_ctr, 2)));  -- gk 08.04.10\r
@@ -191,7 +191,10 @@ pc_ready <= '1' when (constructCurrentState = CIDLE) and (df_empty = '1') else '
 THE_EVT_INFO_STORE_PROC: process( CLK )\r
 begin\r
        if( rising_edge(CLK) ) then\r
-               if( PC_START_OF_SUB_IN = '1' ) then\r
+               if (RESET = '1') then  -- gk 31.05.10\r
+                       pc_sub_size <= (others => '0');\r
+                       pc_trig_nr <= (others => '0');\r
+               elsif( PC_START_OF_SUB_IN = '1' ) then\r
                        pc_sub_size <= PC_SUB_SIZE_IN;\r
                        pc_trig_nr  <= PC_TRIG_NR_IN;\r
                end if;\r
@@ -587,57 +590,63 @@ end process dividePositionProc;
 allIntCtrProc : process(CLK)\r
 begin\r
        if rising_edge(CLK) then\r
-               case loadCurrentState is\r
-\r
-                       when LIDLE => all_int_ctr <= 0;\r
-\r
-                       when WAIT_FOR_FC => all_int_ctr <= 0;\r
-\r
-                       when PUT_Q_LEN =>\r
-                               if (all_int_ctr = 3) then\r
-                                       all_int_ctr <= 0;\r
-                               else\r
-                                       all_int_ctr <= all_int_ctr + 1;\r
-                               end if;\r
-\r
-                       when PUT_Q_DEC =>\r
-                               if (all_int_ctr = 3) then\r
-                                       all_int_ctr <= 0;\r
-                               else\r
-                                       all_int_ctr <= all_int_ctr + 1;\r
-                               end if;\r
-\r
-                       when LOAD_SUB =>\r
-                               if (all_int_ctr = 15) then\r
-                                       all_int_ctr <= 0;\r
-                               else\r
-                                       all_int_ctr <= all_int_ctr + 1;\r
-                               end if;\r
-\r
-                       when LOAD_DATA => all_int_ctr <= 0;\r
-\r
-                       when LOAD_TERM =>\r
-                               if (all_int_ctr = 31) then\r
-                                       all_int_ctr <= 0;\r
-                               else\r
-                                       all_int_ctr <= all_int_ctr + 1;\r
-                               end if;\r
-\r
-                       when DIVIDE => null; --all_int_ctr <= all_int_ctr;\r
-\r
-                       when CLEANUP => all_int_ctr <= 0;\r
-\r
-                       when PREP_DATA => all_int_ctr <= 0;\r
-\r
-                       when DELAY => all_int_ctr <= 0;\r
-               end case;\r
+               if (RESET = '1') then  -- gk 31.05.10\r
+                       all_int_ctr <= 0;\r
+               else\r
+                       case loadCurrentState is\r
+       \r
+                               when LIDLE => all_int_ctr <= 0;\r
+       \r
+                               when WAIT_FOR_FC => all_int_ctr <= 0;\r
+       \r
+                               when PUT_Q_LEN =>\r
+                                       if (all_int_ctr = 3) then\r
+                                               all_int_ctr <= 0;\r
+                                       else\r
+                                               all_int_ctr <= all_int_ctr + 1;\r
+                                       end if;\r
+       \r
+                               when PUT_Q_DEC =>\r
+                                       if (all_int_ctr = 3) then\r
+                                               all_int_ctr <= 0;\r
+                                       else\r
+                                               all_int_ctr <= all_int_ctr + 1;\r
+                                       end if;\r
+       \r
+                               when LOAD_SUB =>\r
+                                       if (all_int_ctr = 15) then\r
+                                               all_int_ctr <= 0;\r
+                                       else\r
+                                               all_int_ctr <= all_int_ctr + 1;\r
+                                       end if;\r
+       \r
+                               when LOAD_DATA => all_int_ctr <= 0;\r
+       \r
+                               when LOAD_TERM =>\r
+                                       if (all_int_ctr = 31) then\r
+                                               all_int_ctr <= 0;\r
+                                       else\r
+                                               all_int_ctr <= all_int_ctr + 1;\r
+                                       end if;\r
+       \r
+                               when DIVIDE => null; --all_int_ctr <= all_int_ctr;\r
+       \r
+                               when CLEANUP => all_int_ctr <= 0;\r
+       \r
+                               when PREP_DATA => all_int_ctr <= 0;\r
+       \r
+                               when DELAY => all_int_ctr <= 0;\r
+                       end case;\r
+               end if;\r
        end if;\r
 end process allIntCtrProc;\r
 \r
 dfRdEnProc : process(loadCurrentState, bytes_loaded, max_frame_size, sub_bytes_loaded, \r
-                                        sub_size_loaded, all_int_ctr)\r
+                                        sub_size_loaded, all_int_ctr, RESET)\r
 begin\r
-       if (loadCurrentState = LOAD_DATA) then\r
+       if (RESET = '1') then  -- gk 31.05.10\r
+               df_rd_en <= '0';\r
+       elsif (loadCurrentState = LOAD_DATA) then\r
 --      if (bytes_loaded >= max_frame_size - x"1") then\r
 --          df_rd_en <= '0';\r
 --      elsif (sub_bytes_loaded >= sub_size_loaded) then\r
@@ -658,9 +667,11 @@ begin
        end if;\r
 end process dfRdEnProc;\r
 \r
-shfRdEnProc : process(loadCurrentState, all_int_ctr)\r
+shfRdEnProc : process(loadCurrentState, all_int_ctr, RESET)\r
 begin\r
-       if (loadCurrentState = LOAD_SUB) then\r
+       if (RESET = '1') then  -- gk 31.05.10\r
+               shf_rd_en <= '0';\r
+       elsif (loadCurrentState = LOAD_SUB) then\r
                shf_rd_en <= '1';\r
        elsif (loadCurrentState = LOAD_TERM) and (all_int_ctr < 31) then\r
                shf_rd_en <= '1';\r
@@ -672,9 +683,11 @@ begin
 end process shfRdEnProc;\r
 \r
 \r
-fcWrEnProc : process(loadCurrentState)\r
+fcWrEnProc : process(loadCurrentState, RESET)\r
 begin\r
-       if (loadCurrentState = PUT_Q_LEN) or (loadCurrentState = PUT_Q_DEC) then\r
+       if (RESET = '1') then  -- gk 31.05.10\r
+               fc_wr_en <= '0';\r
+       elsif (loadCurrentState = PUT_Q_LEN) or (loadCurrentState = PUT_Q_DEC) then\r
                fc_wr_en <= '1';\r
        elsif (loadCurrentState = LOAD_SUB) or (loadCurrentState = LOAD_DATA) or (loadCurrentState = LOAD_TERM) then\r
                fc_wr_en <= '1';\r
@@ -904,6 +917,19 @@ fcUDPSizeProc : process(CLK)
 end process fcUDPSizeProc;\r
 \r
 \r
+debug(3 downto 0)             <= constr_state;\r
+debug(7 downto 4)             <= save_state;\r
+debug(11 downto 8)            <= load_state;\r
+debug(27 downto 12)           <= queue_size(15 downto 0);\r
+debug(28)                     <= df_full;\r
+debug(29)                     <= df_empty;\r
+debug(30)                     <= shf_full;\r
+debug(31)                     <= shf_empty;\r
+\r
+debug(47 downto 32)           <= size_left(15 downto 0);\r
+debug(52 downto 48)           <= all_ctr;\r
+debug(53)                     <= pc_ready;\r
+\r
 -- outputs\r
 PC_READY_OUT                  <= pc_ready;\r
 FC_WR_EN_OUT                  <= fc_wr_en;\r
index 89917a2a19e868451eda92e881be95228e134a40..03a07971901e2d7841d103355d2f55fd53208027 100644 (file)
@@ -38,7 +38,16 @@ port(
        GBE_USE_MULTIEVENTS_OUT   : out std_logic;
        GBE_READOUT_CTR_OUT       : out std_logic_vector(23 downto 0);  -- gk 26.04.10
        GBE_READOUT_CTR_VALID_OUT : out std_logic;  -- gk 26.04.10
-       GBE_DELAY_OUT             : out std_logic_vector(31 downto 0)
+       GBE_DELAY_OUT             : out std_logic_vector(31 downto 0);
+       -- gk 01.06.10
+       DBG_IPU2GBE1_IN          : in std_logic_vector(31 downto 0);
+       DBG_IPU2GBE2_IN          : in std_logic_vector(31 downto 0);
+       DBG_PC1_IN               : in std_logic_vector(31 downto 0);
+       DBG_PC2_IN               : in std_logic_vector(31 downto 0);
+       DBG_FC1_IN               : in std_logic_vector(31 downto 0);
+       DBG_FC2_IN               : in std_logic_vector(31 downto 0);
+       DBG_FT1_IN               : in std_logic_vector(31 downto 0);
+       DBG_FT2_IN               : in std_logic_vector(31 downto 0)
 );
 end entity;
 
@@ -104,13 +113,13 @@ begin
                        subevent_id       <= x"0000_00cf";
                        subevent_dec      <= x"0002_0001";
                        queue_dec         <= x"0003_0062";
-                       max_packet        <= x"0000_fd00"; --x"0000_fde8"; -- tester
+                       max_packet        <= x"0000_fde8"; --x"0000_fde8"; -- tester
                        max_frame         <= x"0578";
                        use_gbe           <= '1';
                        use_trbnet        <= '0';
                        use_multievents   <= '0';
                        reset_values      <= '0';
-                       readout_ctr       <= x"00_0000";  -- gk 26.04.10
+                       readout_ctr       <= x"ff_ffff";  -- gk 26.04.10  -- gk 07.06.10 corrected bug found by Sergey
                        readout_ctr_valid <= '0';  -- gk 26.04.10
                        delay             <= x"0000_0000"; -- gk 28.04.10
 
@@ -242,6 +251,31 @@ begin
                                when x"09" =>
                                        data_out <= delay;
 
+                               -- gk 01.06.10
+                               when x"e0" =>
+                                       data_out <= DBG_IPU2GBE1_IN;
+
+                               when x"e1" =>
+                                       data_out <= DBG_IPU2GBE2_IN;
+
+                               when x"e2" =>
+                                       data_out <= DBG_PC1_IN;
+
+                               when x"e3" =>
+                                       data_out <= DBG_PC2_IN;
+
+                               when x"e4" =>
+                                       data_out <= DBG_FC1_IN;
+
+                               when x"e5" =>
+                                       data_out <= DBG_FC2_IN;
+
+                               when x"e6" =>
+                                       data_out <= DBG_FT1_IN;
+
+                               when x"e7" =>
+                                       data_out <= DBG_FT2_IN;
+
                                when others =>
                                        data_out <= (others => '0');
                        end case;
index 31db1b90ac6f40a846e776beaa80980c8af84b5b..096acb09dab8fb3e06362acd9e5b0bffda174e62 100755 (executable)
@@ -61,7 +61,7 @@ port(
        DBG_SF_AEMPTY_OUT           : out   std_logic;\r
        DBG_SF_FULL_OUT             : out   std_logic;\r
        DBG_SF_AFULL_OUT            : out   std_logic;\r
-       DEBUG_OUT                   : out   std_logic_vector(31 downto 0)\r
+       DEBUG_OUT                   : out   std_logic_vector(63 downto 0)\r
 );\r
 end entity;\r
 \r
@@ -132,7 +132,7 @@ signal sf_full              : std_logic;
 signal sf_afull             : std_logic;\r
 \r
 -------------------------------------------------------------------\r
-type loadStates is (LIDLE, INIT, REMOVE, CALCA, CALCB, LOAD, PAD0, PAD1, PAD2, PAD3, LOAD_SUBSUB, CALCC, CLOSE, WAIT_PC);\r
+type loadStates is (LIDLE, INIT, REMOVE, DECIDE, CALCA, CALCB, LOAD, PAD0, PAD1, PAD2, PAD3, LOAD_SUBSUB, CALCC, CLOSE, WAIT_PC);\r
 signal loadCurrentState, loadNextState : loadStates;\r
 signal state2               :   std_logic_vector(3 downto 0);\r
 \r
@@ -177,7 +177,7 @@ signal pc_wr_en_qqq         : std_logic;
 signal pc_eod_q             : std_logic;\r
 signal pc_eod_qq            : std_logic;\r
 \r
-signal debug                : std_logic_vector(31 downto 0);\r
+signal debug                : std_logic_vector(63 downto 0);\r
 \r
 -- gk \r
 signal bank_select          : std_logic_vector(3 downto 0);\r
@@ -221,11 +221,18 @@ begin
                if ((RESET = '1') or (READOUT_CTR_VALID_IN = '1')) then\r
                        readout_ctr <= READOUT_CTR_IN;\r
                        readout_ctr_lock <= '0';\r
-               elsif ((CTS_START_READOUT_IN = '1') and (readout_ctr_lock = '0')) then\r
-                       readout_ctr <= readout_ctr + x"1";\r
+               -- gk 15.06.10\r
+               -- increment the counter after the event is sent\r
+               elsif ( (saveCurrentState = SCLOSE) and (readout_ctr_lock = '0') ) then\r
                        readout_ctr_lock <= '1';\r
-               elsif (CTS_START_READOUT_IN = '0') then\r
+                       readout_ctr <= readout_ctr + x"1";\r
+               elsif (saveCurrentState = SIDLE) then\r
                        readout_ctr_lock <= '0';\r
+--             elsif ((CTS_START_READOUT_IN = '0') and (readout_ctr_lock = '0')) then\r
+--                     readout_ctr <= readout_ctr + x"1";\r
+--                     readout_ctr_lock <= '1';\r
+--             elsif (CTS_START_READOUT_IN = '0') then\r
+--                     readout_ctr_lock <= '0';\r
                end if;\r
        end if;\r
 end process READOUT_CTR_PROC;\r
@@ -241,10 +248,11 @@ begin
 --                     bank_select <= bank_select + x"1";\r
 --             end if;\r
                -- gk 29.03.10\r
-               if( (RESET = '1') or (rst_regs = '1') ) then\r
+               if( (RESET = '1') or (rst_msg = '1') ) then --(rst_regs = '1') ) then\r
                        bank_select <= "0000";\r
+               -- gk 01.06.10 THERE WAS A BUG, IT SHOUDL BE TAKEN FROM SF_Q\r
                elsif( (sf_rd_en = '1') and (rem_ctr = x"2") ) then\r
-                       bank_select <= CTS_INFORMATION_IN(3 downto 0);\r
+                       bank_select <= pc_data(3 downto 0); --CTS_INFORMATION_IN(3 downto 0);\r
                end if;\r
        end if;\r
 end process bank_select_proc;\r
@@ -253,9 +261,9 @@ end process bank_select_proc;
 start_config_proc : process( CLK )\r
 begin\r
        if rising_edge( CLK ) then\r
-               if( (RESET = '1') or (rst_regs = '1') or (config_done = '1') ) then\r
+               if( (RESET = '1') or (config_done = '1') or (rst_msg = '1') ) then --(rst_regs = '1') or (config_done = '1') ) then\r
                        start_config <= '0';\r
-               elsif( (sf_rd_en = '1') and (rem_ctr = x"2") ) then\r
+               elsif( (sf_rd_en = '1') and (rem_ctr = x"2") ) then  -- gk 01.06.10\r
                        start_config <= '1';\r
                end if;\r
        end if;\r
@@ -302,14 +310,16 @@ end process THE_SYNC_PROC;
 SF_DATA_PROC : process( CLK )\r
 begin\r
        if( rising_edge(CLK) ) then\r
-               if( save_addr = '1' ) then\r
+               if (RESET = '1') then  -- gk 31.05.10\r
+                       sf_data <= (others => '0');\r
+               elsif( save_addr = '1' ) then\r
                        sf_data(3 downto 0) <= CTS_INFORMATION_IN(3 downto 0); -- only last 4 bits are the evt builder address\r
                        sf_data(15 downto 4) <= x"abc";\r
                -- gk 29.03.10 four entries to save the fee_status into sf for the subsubevent\r
                elsif( (add_sub_state = '1') and (add_sub_ctr = x"0") ) then\r
-                       sf_data <= x"5555"; --x"0001";  -- gk 15.04.10\r
+                       sf_data <= x"0001"; -- gk 06.11.10\r
                elsif( (add_sub_state = '1') and (add_sub_ctr = x"1") ) then\r
-                       sf_data <= x"0001"; --x"5555";  -- gk 15.04.10\r
+                       sf_data <= x"5555"; -- gk 06.11.10\r
                elsif( (add_sub_state = '1') and (add_sub_ctr = x"2") ) then\r
                        sf_data <= FEE_STATUS_BITS_IN(31 downto 16);\r
                elsif( (add_sub_state = '1') and (add_sub_ctr = x"3") ) then\r
@@ -632,13 +642,23 @@ begin
                when REMOVE =>\r
                        state2 <= x"2";\r
                        if( remove_done = '1' ) then\r
+                               loadNextState <= DECIDE;\r
                                if (MULTI_EVT_ENABLE_IN = '1') then\r
-                                       -- gk 29.04.10\r
-                                       if((actual_message_size + pc_sub_size) < MAX_MESSAGE_SIZE_IN) then\r
-                                               loadNextState <= CALCA;\r
-                                               calc_pad_comb <= '1';\r
+                                       -- gk 03.06.10\r
+                                       if(pc_sub_size(2) = '0') then\r
+                                               if((actual_message_size + pc_sub_size + x"18") <= MAX_MESSAGE_SIZE_IN) then\r
+                                                       loadNextState <= CALCA;\r
+                                                       calc_pad_comb <= '1';\r
+                                               else\r
+                                                       loadNextState <= CALCC;\r
+                                               end if;\r
                                        else\r
-                                               loadNextState <= CALCC;\r
+                                               if((actual_message_size + pc_sub_size + x"1c") <= MAX_MESSAGE_SIZE_IN) then\r
+                                                       loadNextState <= CALCA;\r
+                                                       calc_pad_comb <= '1';\r
+                                               else\r
+                                                       loadNextState <= CALCC;\r
+                                               end if;\r
                                        end if;\r
                                else\r
                                        loadNextState <= CALCA;\r
@@ -715,7 +735,7 @@ begin
                when PAD3 =>\r
                        state2 <= x"9";\r
                        if (MULTI_EVT_ENABLE_IN = '1') then\r
-                               loadNextState <= INIT; --CALCC; --LOAD_SUBSUB; --CALCC;  -- gk 30.03.10  -- gk 31.03.10  -- gk 08.04.10\r
+                               loadNextState <= INIT; -- gk 08.04.10\r
                                rst_rem_ctr_comb <= '1';  -- gk 08.04.10\r
                                rst_regs_comb <= '1';  -- gk 08.04.10\r
                        else\r
@@ -883,9 +903,9 @@ begin
                -- gk 30.03.10 bug fixed in the way that is written below\r
                -- gk 27.03.10 should be corrected by sending padding_needed signal to pc and take care of it when setting sub_size_to_save\r
                elsif( (calc_pad = '1') and (padding_needed = '1') ) then\r
-                       pc_sub_size <= pc_sub_size + 4 + 8; -- BUG: SubEvtSize does NOT include 64bit padding!!!\r
+                       pc_sub_size <= pc_sub_size + x"4" + x"8"; -- BUG: SubEvtSize does NOT include 64bit padding!!!\r
                elsif( (calc_pad = '1') and (padding_needed = '0') ) then\r
-                       pc_sub_size <= pc_sub_size + 8;\r
+                       pc_sub_size <= pc_sub_size + x"8";\r
                end if;\r
        end if;\r
 end process THE_SUB_SIZE_PROC;\r
@@ -935,17 +955,58 @@ read_done_comb <= '1' when (read_size < 3 ) else '0'; -- "2"
 ------------------------------------------------------------------------------------------\r
 \r
 -- Debug signals\r
-debug(31)           <= remove_done;\r
-debug(30)           <= read_done;\r
-debug(29)           <= ce_rem_ctr;\r
-debug(28)           <= rst_rem_ctr;\r
-debug(27)           <= rst_regs;\r
-debug(26)           <= rem_phase;\r
-debug(25)           <= data_phase;\r
-debug(24)           <= pad_phase;\r
-debug(23)           <= pad_data;\r
-debug(22 downto 17) <= (others => '0');\r
-debug(16 downto 0)  <= saved_ctr;\r
+debug(0)              <= sf_full;\r
+debug(1)              <= sf_empty;\r
+debug(2)              <= sf_afull;\r
+debug(3)              <= sf_aempty;\r
+\r
+debug(7 downto  4)    <= state2;\r
+\r
+debug(11 downto 8)    <= state;\r
+\r
+dbg_bs_proc : process(CLK)\r
+begin\r
+       if rising_edge(CLK) then\r
+               if RESET = '1' then\r
+                       debug(15 downto 12) <= (others => '0');\r
+               elsif ( (sf_rd_en = '1') and (rem_ctr = x"3") ) then\r
+                       debug(15 downto 12) <= bank_select;\r
+               end if;\r
+       end if;\r
+end process dbg_bs_proc;\r
+\r
+debug(16)             <= config_done;\r
+debug(17)             <= remove_done;\r
+debug(18)             <= read_done;\r
+debug(19)             <= padding_needed;\r
+\r
+debug(20)             <= load_sub_done;\r
+\r
+dbg_cts_inf_proc : process(CLK)\r
+begin\r
+       if rising_edge(CLK) then\r
+               if RESET = '1' then\r
+                       debug(39 downto 32) <= (others => '0');\r
+               elsif ( save_addr = '1' ) then\r
+                       debug(39 downto 32) <= CTS_INFORMATION_IN;\r
+               end if;\r
+       end if;\r
+end process dbg_cts_inf_proc;\r
+--debug(47 downto 32)   <= pc_sub_size(15 downto 0);\r
+debug(47 downto 40) <= (others => '0');\r
+debug(63 downto 48)   <= actual_message_size(15 downto 0);\r
+\r
+-- debug(31)           <= remove_done;\r
+-- debug(30)           <= read_done;\r
+-- debug(29)           <= ce_rem_ctr;\r
+-- debug(28)           <= rst_rem_ctr;\r
+-- debug(27)           <= rst_regs;\r
+-- debug(26)           <= rem_phase;\r
+-- debug(25)           <= data_phase;\r
+-- debug(24)           <= pad_phase;\r
+-- debug(23)           <= pad_data;\r
+-- debug(22 downto 17) <= (others => '0');\r
+-- debug(16 downto 0)  <= saved_ctr;\r
 \r
 -- Outputs\r
 FEE_READ_OUT             <= fee_read;\r
index 59eac520c45f5967848e65a602bae8db8b09cc31..877620f268d0f24af60f92a4e49bbb401aff16c8 100755 (executable)
@@ -390,7 +390,7 @@ buf_stat_debug(28 downto 26) <= reset_bsm(2 downto 0);
 buf_stat_debug(25 downto 23) <= sd_link_error(2 downto 0);\r
 buf_stat_debug(22)           <= sd_link_ok;\r
 buf_stat_debug(21 downto 12) <= sd_tx_debug(9 downto 0);\r
-buf_stat_debug(11 downto 0)  <= sd_rx_debug(11 downto 0); \r
+buf_stat_debug(11 downto 0)  <= sd_rx_debug(11 downto 0);\r
 \r
 \r
 SGMII_GBE_PCS : sgmii_gbe_pcs32\r