]> jspc29.x-matter.uni-frankfurt.de Git - soda.git/commitdiff
implementing tx_full_clk_chx as clock for downstream data.
authorPeter Lemmens <lemmens@KVIP12.(none)>
Mon, 7 Jul 2014 08:54:09 +0000 (10:54 +0200)
committerPeter Lemmens <lemmens@KVIP12.(none)>
Mon, 7 Jul 2014 08:54:09 +0000 (10:54 +0200)
16 files changed:
code/med_ecp3_sfp_4_sync_down.vhd
code/med_ecp3_sfp_sync_down.vhd
code/med_ecp3_sfp_sync_up.vhd
code/soda_calibration_timer.vhd
code/soda_components.vhd
code/soda_hub.vhd
code/soda_source.vhd
code/trb3_periph_sodahub.vhd
code/trb3_periph_sodasource.vhd
soda_client.ldf
soda_hub_probe.rvl
soda_source.ldf
soda_source.lpf
soda_source_probe.rvl
trb3_soda_hub.xcf
trb3_soda_source.xcf

index d19f4cbcc6b72356512633901a32dbaea00db042..b378b81b9041283345d7d914ef22f0aa0e3d1017 100644 (file)
@@ -175,7 +175,10 @@ gen_clocks : for i in 0 to 3 generate
        rst(i)                                  <=              (CLEAR or sd_los_i(i) or internal_make_link_reset_out(i) or watchdog_trigger(i));
        rst_n(i)                                        <=              not(CLEAR or sd_los_i(i) or internal_make_link_reset_out(i) or watchdog_trigger(i));
 
+       CLK_RX_HALF_OUT(i)      <= clk_rx_half(i);
        CLK_RX_FULL_OUT(i)      <= clk_rx_full(i);
+       CLK_TX_HALF_OUT(i)      <= clk_tx_half(i);
+       CLK_TX_FULL_OUT(i)      <= clk_tx_full(i);
 
 --     gen_slave_clock : if IS_SYNC_SLAVE = c_YES generate             -- NO WAY IN HELL !! this downlink is a master
 --             clk_200_i(i)                    <= clk_rx_full(i);
index 6f177198015912eca2bdeeab4e9715d485c6e5ce..66880143ea4d97308699bd92541844f8c7d23361 100644 (file)
@@ -10,7 +10,6 @@ use work.trb_net_components.all;
 use work.med_sync_define.all;
 use work.soda_components.all;
 
-
 entity med_ecp3_sfp_sync_down is
        generic(        SERDES_NUM : integer range 0 to 3 := 0;
                                IS_SYNC_SLAVE   : integer := c_NO);       --select slave mode
@@ -19,9 +18,6 @@ entity med_ecp3_sfp_sync_down is
                SYSCLK             : in  std_logic; -- 100 MHz main clock net, synchronous to RX clock
                RESET              : in  std_logic; -- synchronous reset
                CLEAR              : in  std_logic; -- asynchronous reset
-               -- 
---             PCSA_REFCLKP : in  std_logic;           -- external refclock straight into serdes       PL!
---             PCSA_REFCLKN : in  std_logic;           -- external refclock straight into serdes       PL!
                --Internal Connection TX
                MED_DATA_IN        : in  std_logic_vector(c_DATA_WIDTH-1 downto 0);
                MED_PACKET_NUM_IN  : in  std_logic_vector(c_NUM_WIDTH-1 downto 0);
@@ -82,7 +78,6 @@ architecture med_ecp3_sfp_sync_down_arch of med_ecp3_sfp_sync_down is
   attribute syn_sharing of med_ecp3_sfp_sync_down_arch : architecture is "off";
 
 
-
 component DCS
 -- synthesis translate_off
 generic
@@ -137,6 +132,30 @@ signal sci_write_i       : std_logic;
 signal sci_write_shift_i : std_logic_vector(2 downto 0);
 signal sci_read_shift_i  : std_logic_vector(2 downto 0);
 
+-- fix signal names for constraining
+attribute syn_preserve : boolean;--
+attribute syn_keep : boolean;--
+attribute syn_preserve of sci_ch_i                             : signal is true;--
+attribute syn_keep             of sci_ch_i                             : signal is true;--
+attribute syn_preserve of sci_qd_i                             : signal is true;--
+attribute syn_keep             of sci_qd_i                             : signal is true;--
+attribute syn_preserve of sci_reg_i                    : signal is true;--
+attribute syn_keep             of sci_reg_i                    : signal is true;--
+attribute syn_preserve of sci_addr_i                   : signal is true;--
+attribute syn_keep             of sci_addr_i                   : signal is true;--
+attribute syn_preserve of sci_data_in_i                : signal is true;--
+attribute syn_keep             of sci_data_in_i                : signal is true;--
+attribute syn_preserve of sci_data_out_i               : signal is true;--
+attribute syn_keep             of sci_data_out_i               : signal is true;--
+attribute syn_preserve of sci_read_i                   : signal is true;--
+attribute syn_keep             of sci_read_i                   : signal is true;--
+attribute syn_preserve of sci_write_i                  : signal is true;--
+attribute syn_keep             of sci_write_i                  : signal is true;--
+attribute syn_preserve of sci_write_shift_i    : signal is true;--
+attribute syn_keep             of sci_write_shift_i    : signal is true;--
+attribute syn_preserve of      sci_read_shift_i        : signal is true;--
+attribute syn_keep             of sci_read_shift_i     : signal is true;--
+
 signal wa_position        : std_logic_vector(15 downto 0) := x"FFFF";
 signal wa_position_rx     : std_logic_vector(15 downto 0) := x"FFFF";
 signal tx_allow           : std_logic;
@@ -153,6 +172,11 @@ signal make_link_reset_i  : std_logic;
 signal got_link_ready_i   : std_logic;
 signal internal_make_link_reset_out : std_logic;
 
+attribute syn_preserve of      wa_position                     : signal is true;--
+attribute syn_keep             of wa_position                  : signal is true;--
+attribute syn_preserve of      wa_position_rx          : signal is true;--
+attribute syn_keep             of wa_position_rx               : signal is true;--
+
 signal stat_rx_control_i  : std_logic_vector(31 downto 0);
 signal stat_tx_control_i  : std_logic_vector(31 downto 0);
 signal debug_rx_control_i : std_logic_vector(31 downto 0);
index bced937bcd685c5937b32e7f63cd7c35895b3486..7a0bd97769756a12202d7e50e72eae6a4363eb46 100644 (file)
@@ -1,6 +1,5 @@
 --Media interface for Lattice ECP3 using PCS at 2GHz
 
-
 LIBRARY IEEE;
 USE IEEE.std_logic_1164.ALL;
 USE IEEE.numeric_std.all;
@@ -13,7 +12,6 @@ use work.soda_components.all;
 
 entity med_ecp3_sfp_sync_up is
        generic(        SERDES_NUM                              : integer range 0 to 3 := 0;
-                       --      MASTER_CLOCK_SWITCH     : integer := c_NO;   --just for debugging, should be NO
                                IS_SYNC_SLAVE                   : integer := c_YES);       --select slave mode
        port(
                CLK                                             : in  std_logic; -- 200 MHz reference clock
@@ -32,6 +30,8 @@ entity med_ecp3_sfp_sync_up is
                MED_READ_IN        : in  std_logic;
                CLK_RX_HALF_OUT    : out std_logic := '0';  --received 100 MHz
                CLK_RX_FULL_OUT    : out std_logic := '0';  --received 200 MHz
+               CLK_TX_HALF_OUT    : out std_logic := '0';  --received 100 MHz
+               CLK_TX_FULL_OUT    : out std_logic := '0';  --received 200 MHz
 
                --Sync operation
                RX_DLM             : out std_logic := '0';
@@ -86,7 +86,6 @@ generic
 DCSMODE : string :=“POS”
 );
 -- synthesis translate_on
-
 port (
 CLK0 :in std_logic ;
 CLK1 :in std_logic ;
@@ -197,13 +196,13 @@ signal watchdog_trigger   : std_logic :='0';
 begin
 
 clk_200_internal <= CLK;
+
 CLK_RX_HALF_OUT <= clk_rx_half;
 CLK_RX_FULL_OUT <= clk_rx_full;
+CLK_TX_HALF_OUT        <= clk_tx_half;
+CLK_TX_FULL_OUT        <= clk_tx_full;
 
-
-
---SD_TXDIS_OUT <= not (rx_allow_q or not IS_SYNC_SLAVE);   --slave only switches on when RX is ready
-SD_TXDIS_OUT           <= '0'; --not (rx_allow_q);   --slave only switches on when RX is ready
+SD_TXDIS_OUT <= '0'; --not (rx_allow_q or not IS_SLAVE);   --slave only switches on when RX is ready
 
 LINK_READY_OUT         <= got_link_ready_i;
 \r
@@ -347,8 +346,6 @@ begin
                end if;
        end if;
 end process;
-    
-    
 -------------------------------------------------      
 -- TX Data
 -------------------------------------------------         
@@ -386,13 +383,12 @@ THE_TX : soda_tx_control
 );  
 
 LINK_PHASE_OUT         <= link_phase_S;                --PL!
-
 -------------------------------------------------      
 -- RX Data
 -------------------------------------------------             
 THE_RX_CONTROL : rx_control
   port map(
-    CLK_200                        => clk_200_i,
+    CLK_200                        => clk_rx_full,     --clk_200_i, PL! 
     CLK_100                        => SYSCLK,
     RESET_IN                       => rst,             --CLEAR, PL!
 
@@ -542,7 +538,6 @@ STAT_DEBUG <= debug_reg;
 internal_make_link_reset_out <= make_link_reset_i when IS_SYNC_SLAVE = c_YES else '0';
 sd_los_i <= SD_LOS_IN when rising_edge(SYSCLK);        -- PL!
 
-
 STAT_OP(15)            <= send_link_reset_i when rising_edge(SYSCLK);
 STAT_OP(14)            <= '0';
 STAT_OP(13)            <= internal_make_link_reset_out when rising_edge(SYSCLK); --make trbnet reset
index a8820cc244b2f340ae043d2710534d922d671111..99b215b27928e8ce27fe5954843a1c1cb1757f3c 100644 (file)
@@ -1,63 +1,73 @@
-library ieee;\r
-use ieee.std_logic_1164.all;\r
---use ieee.numeric_std.all;\r
---use ieee.std_logic_arith.all;
+library ieee;
+use ieee.std_logic_1164.all;
+--use ieee.numeric_std.all;
+use ieee.std_logic_arith.all;
 use ieee.std_logic_unsigned.all;
-\r
+
 library work;
 use work.trb_net_std.all;
 use work.trb_net_components.all;
-use work.trb_net16_hub_func.all; \r
+use work.trb_net16_hub_func.all; 
 use work.soda_components.all;
-\r
-entity soda_calibration_timer is\r
-       port(\r
-               SODACLK                                         : in    std_logic; -- fabric clock\r
-               RESET                                                   : in    std_logic; -- synchronous reset\r
-               CLEAR                                                   : in    std_logic; -- asynchronous reset\r
-               CLK_EN                                          : in    std_logic; \r
-               --Internal Connection\r
-               START_CALIBRATION                       : in    std_logic := '0';\r
-               END_CALIBRATION                 : in    std_logic := '0';\r
-               CALIB_VALID_OUT                 : out   std_logic := '0';       -- 
-               CALIB_TIME_OUT                          : out   std_logic_vector(15 downto 0) := (others => '0')\r
-       );\r
-end soda_calibration_timer;\r
-\r
-architecture Behavioral of soda_calibration_timer is\r
-
-       signal  calibration_running_S   : std_logic     := '0';\r
-       signal  calibration_timer_S             : std_logic_vector(15 downto 0) := (others => '0');             -- from super-burst-nr-generator\r
-\r
-begin\r
-\r
-       packet_fsm_proc : process(SODACLK)--, RESET, packet_state_S, crc_valid_S, START_OF_SUPERBURST, soda_cmd_strobe_S)\r
-       begin\r
-               if rising_edge(SODACLK) then\r
+
+entity soda_calibration_timer is
+       generic(
+               cCALIBRATION_TIMEOUT            : natural range 1 to 5000       := cSODA_CALIBRATION_TIMEOUT    -- clock-period in ns
+               );
+       port(
+               SODACLK                                         : in    std_logic; -- fabric clock
+               RESET                                                   : in    std_logic; -- synchronous reset
+               CLEAR                                                   : in    std_logic; -- asynchronous reset
+               CLK_EN                                          : in    std_logic; 
+               --Internal Connection
+               START_CALIBRATION                       : in    std_logic := '0';
+               END_CALIBRATION                 : in    std_logic := '0';
+               VALID_OUT                                       : out   std_logic := '0';       -- 
+               CALIB_TIME_OUT                          : out   std_logic_vector(15 downto 0) := (others => '0');
+               TIMEOUT_ERROR                           : out std_logic := '0'
+       );
+end soda_calibration_timer;
+
+architecture Behavioral of soda_calibration_timer is
+
+       constant        cCALIBRATION_LIMIT              : std_logic_vector(11 downto 0) := conv_std_logic_vector((cSODA_CALIBRATION_TIMEOUT / cSODA_CLOCK_PERIOD), 12);
+
+       signal  calibration_running_S   : std_logic     := '0';
+       signal  calibration_timer_S             : std_logic_vector(15 downto 0) := (others => '0');             -- from super-burst-nr-generator
+
+begin
+
+       packet_fsm_proc : process(SODACLK)--, RESET, packet_state_S, crc_valid_S, START_OF_SUPERBURST, soda_cmd_strobe_S)
+       begin
+               if rising_edge(SODACLK) then
                        if (RESET='1') then
-                               CALIB_VALID_OUT                                 <= '0';\r
+                               VALID_OUT                                       <= '0';
                                CALIB_TIME_OUT                                          <= (others => '0');
                                calibration_running_S                   <= '0';
-                               calibration_timer_S                             <=      (others => '0');\r
+                               calibration_timer_S                             <=      (others => '0');
+                               TIMEOUT_ERROR                                           <= '0';
                        else
                                if (START_CALIBRATION='1') then
                                        calibration_running_S           <= '1';
                                        calibration_timer_S                     <= (others => '0');
-                                       CALIB_VALID_OUT                         <= '0';\r
+                                       VALID_OUT                               <= '0';
                                        CALIB_TIME_OUT                                  <= (others => '0');
+                                       TIMEOUT_ERROR                                   <= '0';                                         -- reset timeout error at start of new calibration
                                elsif (END_CALIBRATION='1') then
                                        calibration_running_S           <= '0';
-                                       CALIB_VALID_OUT                         <= '1';\r
+                                       VALID_OUT                               <= '1';
                                        CALIB_TIME_OUT                                  <= calibration_timer_S;
-                               elsif (calibration_timer_S = x"ffff") then
+                                       TIMEOUT_ERROR                                   <= '0';                                         -- reset timeout error because a correct reply was received
+                               elsif (calibration_timer_S = cCALIBRATION_TIMEOUT) then
                                        calibration_running_S           <= '0';
-                                       CALIB_VALID_OUT                         <= '1';\r
+                                       VALID_OUT                               <= '1';
                                        CALIB_TIME_OUT                                  <= calibration_timer_S;
+                                       TIMEOUT_ERROR                                   <= '1';                                         -- set timeout error because NO correct reply was received
                                elsif (calibration_running_S='1') then
                                        calibration_timer_S                     <= calibration_timer_S + 1;
-                               end if;\r
-                       end if;\r
-               end if;\r
-       end process;\r
-\r
+                               end if;
+                       end if;
+               end if;
+       end process;
+
 end architecture;
\ No newline at end of file
index a987eee24c22ce3978be84ccde9d257bbac105e9..74a70fd8b2d184d043b22468f893b4b317db0649 100644 (file)
@@ -21,7 +21,8 @@ package soda_components is
        constant        cSODA_CLOCK_PERIOD                      : natural range 1 to 20 := 5;           -- soda clock-period in ns
        constant        cSYS_CLOCK_PERIOD                               : natural range 1 to 20 := 10;          -- soda clock-period in ns
        constant        cBURST_PERIOD                                   : natural := 2400;                                              -- particle-beam burst-period in ns
-       constant        cSODA_COMMAND_WINDOS_SIZE       : natural range 1 to 65535 := 5000; -- size of the window in which soda-cmds are allowed after a superburst-pulse in ns
+       constant        cSODA_COMMAND_WINDOS_SIZE       : natural range 1 to 65535      := 5000; -- size of the window in which soda-cmds are allowed after a superburst-pulse in ns
+       constant        cSODA_CALIBRATION_TIMEOUT       : natural range 100 to 5000     := 250;         -- soda clock-period in ns
 
        constant        cWINDOW_delay                                   : std_logic_vector(7 downto 0)  := conv_std_logic_vector(28, 8);                                                                                                        -- in clock-cycles
        constant        cCLOCKS_PER_WINDOW                      : std_logic_vector(15 downto 0) := conv_std_logic_vector((cSODA_COMMAND_WINDOS_SIZE / cSODA_CLOCK_PERIOD) - 1, 16);     -- in clock-cycles
@@ -149,6 +150,7 @@ package soda_components is
        port(
                SYSCLK                                  : in    std_logic; -- fabric clock
                SODACLK                                 : in    std_logic; -- recovered clock
+               TX_SODACLK                              : in    t_HUB_BIT; -- transmit clock
                RESET                                           : in    std_logic; -- synchronous reset
                CLEAR                                           : in    std_logic; -- asynchronous reset
                CLK_EN                                  : in    std_logic; 
@@ -249,8 +251,9 @@ package soda_components is
                        --Internal Connection
                        START_CALIBRATION                       : in    std_logic := '0';
                        END_CALIBRATION                 : in    std_logic := '0';
-                       CALIB_VALID_OUT                 : out   std_logic := '0';       -- 
-                       CALIB_TIME_OUT                          : out   std_logic_vector(15 downto 0) := (others => '0')
+                       VALID_OUT                                       : out   std_logic := '0';       -- 
+                       CALIB_TIME_OUT                          : out   std_logic_vector(15 downto 0) := (others => '0');
+                       TIMEOUT_ERROR                           : out std_logic := '0'
                );
        end component;
 
@@ -550,5 +553,16 @@ port (
        SEL             : in std_logic ;
        DCSOUT  : out std_logic) ;
 end component;
+\r
+component dff_re
+   Port (\r
+               rst                     : in  STD_LOGIC;
+               clk                     : in  STD_LOGIC;
+               enable          : in  STD_LOGIC;
+               d                               : in  STD_LOGIC_VECTOR;
+               q                               : out STD_LOGIC_VECTOR;
+               data_valid      : out   STD_LOGIC
+       );
+end component;\r
 
 end package;
\ No newline at end of file
index 4f6b442a51522a72ad92eba976fc415197a0d4ef..698e8da94ff293a269a34a8935bd8af6149f345a 100644 (file)
@@ -13,6 +13,7 @@ entity soda_hub is
        port(
                SYSCLK                                          : in    std_logic; -- fabric clock
                SODACLK                                         : in    std_logic; -- recovered clock
+               TX_SODACLK                                      : in    t_HUB_BIT; -- tx-full  clock
                RESET                                                   : in    std_logic; -- synchronous reset
                CLEAR                                                   : in    std_logic; -- asynchronous reset
                CLK_EN                                          : in    std_logic; 
@@ -24,7 +25,7 @@ entity soda_hub is
                TXUP_DLM_WORD_OUT               : out   std_logic_vector(7 downto 0)    := (others => '0');
                TXUP_DLM_PREVIEW_OUT    : out   std_logic       := '0'; --PL!
                UPLINK_PHASE_IN                 : in    std_logic       := '0'; --PL!
-\r
+
        --      MULTIPLE DUPLEX DOWN-LINKS TO THE BOTTOM
                RXDN_DLM_IN                             : in    t_HUB_BIT;
                RXDN_DLM_WORD_IN                : in    t_HUB_BYTE;
@@ -39,7 +40,7 @@ entity soda_hub is
                SODA_READ_IN                            : in    std_logic := '0';
                SODA_WRITE_IN                   : in    std_logic := '0';
                SODA_ACK_OUT                            : out   std_logic := '0';
-               LEDS_OUT                   : out  std_logic_vector(3 downto 0);\r
+               LEDS_OUT                   : out  std_logic_vector(3 downto 0);
                LINK_DEBUG_IN                   : in    std_logic_vector(31 downto 0)   := (others => '0')
        );
 end soda_hub;
@@ -47,31 +48,52 @@ end soda_hub;
 architecture Behavioral of soda_hub is
 
        --SODA
-       signal soda_cmd_word_S                          : std_logic_vector(30 downto 0) := (others => '0');
-       signal soda_cmd_valid_S                         : std_logic := '0';
-       signal start_of_superburst_S            : std_logic := '0';
-       signal super_burst_nr_S                         : std_logic_vector(30 downto 0) := (others => '0');             -- from super-burst-nr-generator
-       signal crc_data_S                                               : std_logic_vector(7 downto 0)  := (others => '0');
-       signal crc_valid_S                                      : std_logic := '0';
+       signal soda_cmd_word_S                                  : std_logic_vector(30 downto 0) := (others => '0');
+       signal soda_cmd_valid_S                                 : std_logic := '0';
+       signal soda_cmd_strobe_S                                : std_logic := '0';     -- for commands sent in a SODA package
+       signal soda_cmd_strobe_sodaclk_S                : std_logic := '0';     -- for commands sent in a SODA package
+       signal trb_cmd_word_S                                   : std_logic_vector(30 downto 0) := (others => '0');
+       signal trb_cmd_valid_S                                  : std_logic := '0';
+       signal trb_cmd_strobe_S                                 : std_logic := '0';     -- for commands sent over trbnet
+       signal trb_cmd_strobe_sodaclk_S         : std_logic := '0';     -- for commands sent over trbnet
+--     signal soda_cmd_pending_S                               : std_logic := '0';     
+--     signal soda_send_cmd_S                                  : std_logic := '0';     
+       signal start_of_superburst_S                    : std_logic := '0';
+       signal super_burst_nr_S                                 : std_logic_vector(30 downto 0) := (others => '0');             -- from super-burst-nr-generator
+       signal crc_data_S                                                       : std_logic_vector(7 downto 0)  := (others => '0');
+       signal crc_valid_S                                              : std_logic := '0';
        
 -- Signals
        type STATES is (SLEEP,RD_RDY,WR_RDY,RD_ACK,WR_ACK,DONE);
        signal CURRENT_STATE, NEXT_STATE: STATES;
 
        signal last_packet_sent_S                               : t_PACKET_TYPE_SENT;
-       signal expected_reply_S                                 : std_logic_vector(7 downto 0);
-       signal reply_valid_S                                            : t_HUB_BIT_ARRAY;
+       signal expected_reply_S                                 : t_HUB_BYTE_ARRAY;     --std_logic_vector(7 downto 0);
+       signal reply_data_valid_S                               : t_HUB_BIT_ARRAY;
        signal reply_OK_S                                                       : t_HUB_BIT_ARRAY;
-       signal start_of_calibration_S                   : std_logic := '0';
+       signal recv_start_calibration_S         : std_logic := '0';
+       signal send_start_calibration_S         : t_HUB_BIT_ARRAY;
        signal start_calibration_S                              : t_HUB_BIT_ARRAY;
-       signal calibration_valid_S                              : t_HUB_BIT_ARRAY;
+       signal calib_data_valid_S                               : t_HUB_BIT_ARRAY;
        signal calibration_time_S                               : t_HUB_WORD_ARRAY;
        signal calib_register_s                                 : t_HUB_LWORD_ARRAY;
-\r
-       signal dead_channels_S                                  : t_HUB_BIT_ARRAY;
-       signal channel_status_S                                 : t_HUB_BIT_ARRAY;\r
-       signal status_register                                  : std_logic_vector(31 downto 0) := (others => '0');
-\r
+       signal reply_timeout_error_S                    : t_HUB_BIT_ARRAY;
+       signal channel_timeout_status_S         : t_HUB_BIT_ARRAY;
+       signal downstream_error_S                               : t_HUB_BIT_ARRAY;
+
+       signal dead_channel_S                                   : t_HUB_BIT_ARRAY;
+
+       signal CTRL_STATUS_register_S                   : t_HUB_LWORD_ARRAY;\r
+       \r
+       signal TXstart_of_superburst_S          : t_HUB_BIT_ARRAY;
+       signal TXsuper_burst_nr_S                               : t_HUB_LWORD_ARRAY;            -- from super-burst-nr-generator
+       signal TXsoda_cmd_valid_S                               : t_HUB_BIT_ARRAY;
+       signal TXsoda_cmd_word_S                                : t_HUB_LWORD_ARRAY;
+       
+
+--     signal channel_status_S                                 : t_HUB_BIT_ARRAY;
+--     signal status_register                                  : std_logic_vector(31 downto 0) := (others => '0');
+
 -- slave bus signals
        signal bus_ack_x                                : std_logic;
        signal bus_ack                                  : std_logic;
@@ -82,13 +104,13 @@ architecture Behavioral of soda_hub is
        signal buf_bus_data_out         : std_logic_vector(31 downto 0) := (others => '0');
        signal ledregister_i                    : std_logic_vector(31 downto 0) := (others => '0');
        signal txup_dlm_out_S           : std_logic;
-\r
---     debug\r
-       signal debug_status_S           : std_logic_vector(31 downto 0) := (others => '0');
-       signal debug_rx_cnt_S           : std_logic_vector(31 downto 0) := (others => '0');
-       signal debug_tx_cnt_S           : std_logic_vector(31 downto 0) := (others => '0');
-       signal debug_SOS_cnt_S          : std_logic_vector(31 downto 0) := (others => '0');
-       signal debug_cmd_cnt_S          : std_logic_vector(31 downto 0) := (others => '0');
+
+--     debug
+--     signal debug_status_S           : std_logic_vector(31 downto 0) := (others => '0');
+--     signal debug_rx_cnt_S           : std_logic_vector(31 downto 0) := (others => '0');
+--     signal debug_tx_cnt_S           : std_logic_vector(31 downto 0) := (others => '0');
+--     signal debug_SOS_cnt_S          : std_logic_vector(31 downto 0) := (others => '0');
+--     signal debug_cmd_cnt_S          : std_logic_vector(31 downto 0) := (others => '0');
 
 begin
        
@@ -100,22 +122,22 @@ begin
                        CLK_EN                                                  =>      '1',
                        --Internal Connection
                        START_OF_SUPERBURST_OUT         => start_of_superburst_S,
-                       START_OF_CALIBRATION_OUT        => start_of_calibration_S,
+                       START_OF_CALIBRATION_OUT        => recv_start_calibration_S,
                        SUPER_BURST_NR_OUT                      => super_burst_nr_S,
                        SODA_CMD_VALID_OUT                      => soda_cmd_valid_S,
                        SODA_CMD_WORD_OUT                               => soda_cmd_word_S,
                        RX_DLM_IN                                               => RXUP_DLM_IN,
                        RX_DLM_WORD_IN                                  => RXUP_DLM_WORD_IN
                );
-\r
-       hub_reply_packet_builder : soda_reply_pkt_builder               \r
+
+       hub_reply_packet_builder : soda_reply_pkt_builder               
                port map(
                        SODACLK                                         =>      SODACLK,
                        RESET                                                   =>      RESET,
                        CLEAR                                                   =>      '0',
                        CLK_EN                                          => CLK_EN,
                        --Internal Connection
-                       LINK_PHASE_IN                           => UPLINK_PHASE_IN,\r
+                       LINK_PHASE_IN                           => UPLINK_PHASE_IN,
                        START_OF_SUPERBURST             => start_of_superburst_S,
                        SUPER_BURST_NR_IN                       => super_burst_nr_S,
                        SODA_CMD_STROBE_IN              => soda_cmd_valid_S,
@@ -123,83 +145,139 @@ begin
                        TX_DLM_PREVIEW_OUT              =>      TXUP_DLM_PREVIEW_OUT,
                        TX_DLM_OUT                                      => txup_dlm_out_S,      --TX_DLM_OUT,
                        TX_DLM_WORD_OUT                 => TXUP_DLM_WORD_OUT
-               );
-\r
+               );\r
+               \r
+               
+
        channel :for i in c_HUB_CHILDREN-1 downto 0 generate
                        
-               start_calibration_S(i)  <= start_of_calibration_S;\r
-\r
+       X_clk_domain : process(TX_SODACLK(i))
+               begin
+                       if rising_edge(TX_SODACLK(i)) then
+                               if RESET='1' then
+                                       TXsoda_cmd_valid_S(i)                   <= '0';
+                                       TXstart_of_superburst_S(i)              <= '0';
+                                       TXsoda_cmd_word_S(i)                            <= (others => '0');
+                                       TXsuper_burst_nr_S(i)                   <= (others => '0');
+                               else 
+                                       TXsoda_cmd_valid_S(i)                   <= soda_cmd_valid_S;
+                                       TXstart_of_superburst_S(i)              <= start_of_superburst_S;
+                                       TXsoda_cmd_word_S(i)                            <= '0' & soda_cmd_word_S;
+                                       TXsuper_burst_nr_S(i)                   <= '0' & super_burst_nr_S;
+                               end if;
+                       end if;
+       end process;
+                       \r
+       \r
+       \r
+       start_calibration_S(i)  <= send_start_calibration_S(i);
+
                packet_builder : soda_packet_builder
                        port map(
-                               SODACLK                                         =>      SODACLK,
+                               SODACLK                                         =>      TX_SODACLK(i),
                                RESET                                                   =>      RESET,
                                --Internal Connection
-                               SODA_CMD_STROBE_IN      => soda_cmd_valid_S,
-                               START_OF_SUPERBURST     => start_of_superburst_S,
-                               SUPER_BURST_NR_IN               => super_burst_nr_S,
-                               SODA_CMD_WORD_IN                => soda_cmd_word_S,
-                               EXPECTED_REPLY_OUT              => open,
-                               TIME_CAL_OUT                            =>      open, --start_calibration_S(i),
-                               TX_DLM_PREVIEW_OUT              =>      TXDN_DLM_PREVIEW_OUT(i),
-                               TX_DLM_OUT                                      => TXDN_DLM_OUT(i),
-                               TX_DLM_WORD_OUT                 => TXDN_DLM_WORD_OUT(i)
+                               SODA_CMD_STROBE_IN      => TXsoda_cmd_valid_S(i),
+                               START_OF_SUPERBURST     => TXstart_of_superburst_S(i),
+                               SUPER_BURST_NR_IN               => TXsuper_burst_nr_S(i)(30 downto 0),
+                               SODA_CMD_WORD_IN                => TXsoda_cmd_word_S(i)(30 downto 0),
+                               EXPECTED_REPLY_OUT      => expected_reply_S(i),
+                               TIME_CAL_OUT                    =>      send_start_calibration_S(i),
+                               TX_DLM_PREVIEW_OUT      =>      TXDN_DLM_PREVIEW_OUT(i),
+                               TX_DLM_OUT                              => TXDN_DLM_OUT(i),
+                               TX_DLM_WORD_OUT         => TXDN_DLM_WORD_OUT(i)
                        );
                        
        hub_reply_handler : soda_reply_handler
                port map(
-                       SODACLK                                         =>      SODACLK,
+                       SODACLK                                         =>      TX_SODACLK(i),
                        RESET                                                   => RESET,
                        CLEAR                                                   =>      '0',
                        CLK_EN                                          =>      '1',
                        --Internal Connection
 --                     LAST_PACKET                                     =>      last_packet_sent_S,
-                       EXPECTED_REPLY_IN                       => expected_reply_S,
+                       EXPECTED_REPLY_IN                       => expected_reply_S(i),
                        RX_DLM_IN                                       => RXDN_DLM_IN(i),
                        RX_DLM_WORD_IN                          => RXDN_DLM_WORD_IN(i),
-                       REPLY_VALID_OUT                 => reply_valid_S(i),
+                       REPLY_VALID_OUT                 => reply_data_valid_S(i),
                        REPLY_OK_OUT                            => reply_OK_S(i)
                );
 
        hub_calibration_timer : soda_calibration_timer
                port map(
-                       SODACLK                                         =>      SODACLK,
+                       SODACLK                                         =>      TX_SODACLK(i),
                        RESET                                                   => RESET,
                        CLEAR                                                   =>      '0',
                        CLK_EN                                          =>      '1',
                        --Internal Connection
                        START_CALIBRATION                       =>      start_calibration_S(i),
-                       END_CALIBRATION                 =>      reply_valid_S(i),
-                       CALIB_VALID_OUT                 =>      calibration_valid_S(i),
-                       CALIB_TIME_OUT                          =>      calibration_time_S(i)
+                       END_CALIBRATION                 =>      reply_data_valid_S(i),
+                       VALID_OUT                                       =>      calib_data_valid_S(i),
+                       CALIB_TIME_OUT                          =>      calibration_time_S(i),
+                       TIMEOUT_ERROR                           =>      reply_timeout_error_S(i)
                );
                
-       hub_store_calib_proc  : process(SYSCLK)
+       sodahub_calib_timeout_proc  : process(SYSCLK)   -- converting to sysclk domain
        begin
                if rising_edge(SYSCLK) then
                        if( RESET = '1' ) then
-                               calib_register_S(i)                                     <= (others => '0');
-                       else
-                               calib_register_S(i)(15 downto 0)        <= calibration_time_S(i);
+                               calib_register_S(i)                                             <= (others => '0');
+                               channel_timeout_status_S(i)                     <= '0';
+                               downstream_error_S(i)                                   <= '0';
+                               CTRL_STATUS_register_S(i)(16)                   <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                               CTRL_STATUS_register_S(i)(17)                   <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                               CTRL_STATUS_register_S(i)(31)                   <= '0';                 -- reset REPORT_ERROR status-bit
+                       elsif (calib_data_valid_S(i) = '1') then                                        -- calibration finished in time
+                               calib_register_S(i)                                             <= x"0000" & calibration_time_S(i);
+                               channel_timeout_status_S(i)                     <= '0';
+                       elsif (reply_data_valid_S(i) = '1') then                                                        -- the reply was correct
+                               channel_timeout_status_S(i)                     <= '0';
+                               if (reply_OK_S(i) = '1') then
+                                       downstream_error_S(i)                           <= '0';
+                               elsif (dead_channel_S(i) = '0') then
+                                       downstream_error_S(i)                           <= '1';
+                                       CTRL_STATUS_register_S(i)(16)           <= '1';                 -- set DOWNSTREAM_ERROR status-bit
+                                       CTRL_STATUS_register_S(i)(31)           <= '1';                 -- set REPORT_ERROR status-bit
+                               end if;
+                       elsif ((reply_timeout_error_S(i) = '1') and  (reply_OK_S(i) = '1')) then
+                               channel_timeout_status_S(i)                     <= '1';
+                               CTRL_STATUS_register_S(i)(17)                   <= '1';                 -- set CALIBRATION_TIMEOUT_ERROR status-bit
+                               CTRL_STATUS_register_S(i)(31)                   <= '1';                 -- set REPORT_ERROR status-bit
+                       elsif (CTRL_STATUS_register_S(i)(15) = '1') then                -- check if slowcontrol wants to reset errors
+                                       CTRL_STATUS_register_S(i)(16)           <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                                       CTRL_STATUS_register_S(i)(17)           <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                                       CTRL_STATUS_register_S(i)(31)           <= '0';                 -- reset REPORT_ERROR status-bit
                        end if;
                end if;
        end process;
 
+--     hub_store_calib_proc  : process(SYSCLK)
+--     begin
+--             if rising_edge(SYSCLK) then
+--                     if( RESET = '1' ) then
+--                             calib_register_S(i)                                     <= (others => '0');
+--                     else
+--                             calib_register_S(i)(15 downto 0)        <= calibration_time_S(i);
+--                     end if;
+--             end if;
+--     end process;
+
        -----------------------------------------------------------
        --      Reply status report                                                                                             --
        -----------------------------------------------------------
-               reply_report_proc : process(SYSCLK)
-               begin
-                       if rising_edge(SYSCLK) then
-                               if( RESET = '1' ) then
-                                       channel_status_S(i)     <= '0';
-                               elsif (reply_valid_S(i)='1') then
-                                       channel_status_S(i)     <= reply_OK_S(i) or dead_channels_S(i);
-                               else 
-                                       channel_status_S(i)     <= '0';
-                               end if;
-                       end if;\r
-                       
-               end process;
+--             reply_report_proc : process(SYSCLK)
+--             begin
+--                     if rising_edge(SYSCLK) then
+--                             if( RESET = '1' ) then
+--                                     channel_status_S(i)     <= '0';
+--                             elsif (reply_data_valid_S(i)='1') then
+--                                     channel_status_S(i)     <= reply_OK_S(i) or dead_channels_S(i);
+--                             else 
+--                                     channel_status_S(i)     <= '0';
+--                             end if;
+--                     end if;
+--                     
+--             end process;
 
        end generate;
 
@@ -308,12 +386,37 @@ end process TRANSFORM;
        begin
                if( rising_edge(SYSCLK) ) then
                        if   ( RESET = '1' ) then
-                               LEDregister_i           <= (others => '0');
-                       elsif( (store_wr = '1') and (SODA_ADDR_IN = B"0000") ) then
-                               LEDregister_i           <= SODA_DATA_IN;
+                               trb_cmd_strobe_S                                                                        <= '0';
+                               trb_cmd_word_S                                                                          <= (others => '0');
+                               CTRL_STATUS_register_S(0)(15 downto 0)          <= (others => '0');
+                               CTRL_STATUS_register_S(1)(15 downto 0)          <= (others => '0');
+                               CTRL_STATUS_register_S(2)(15 downto 0)          <= (others => '0');
+                               CTRL_STATUS_register_S(3)(15 downto 0)          <= (others => '0');
+                       elsif( (store_wr = '1') and (SODA_ADDR_IN = "0000") ) then
+                               trb_cmd_strobe_S                                                                        <= '1';
+                               trb_cmd_word_S                                                                          <= SODA_DATA_IN(30 downto 0);
+                       elsif( (store_wr = '1') and (SODA_ADDR_IN = "0001") ) then
+                               trb_cmd_strobe_S                                                                        <= '0';
+                               CTRL_STATUS_register_S(0)(15 downto 0)          <= SODA_DATA_IN(15 downto 0);           -- use only the 16 lower bits for control
+                       elsif( (store_wr = '1') and (SODA_ADDR_IN = "0010") ) then
+                               trb_cmd_strobe_S                                                                        <= '0';
+                               CTRL_STATUS_register_S(1)(15 downto 0)          <= SODA_DATA_IN(15 downto 0);           -- use only the 16 lower bits for control
+                       elsif( (store_wr = '1') and (SODA_ADDR_IN = "0011") ) then
+                               trb_cmd_strobe_S                                                                        <= '0';
+                               CTRL_STATUS_register_S(2)(15 downto 0)          <= SODA_DATA_IN(15 downto 0);           -- use only the 16 lower bits for control
+                       elsif( (store_wr = '1') and (SODA_ADDR_IN = "0100") ) then
+                               trb_cmd_strobe_S                                                                        <= '0';
+                               CTRL_STATUS_register_S(3)(15 downto 0)          <= SODA_DATA_IN(15 downto 0);           -- use only the 16 lower bits for control
+                       else
+                               trb_cmd_strobe_S                                                                        <= '0';
                        end if;
                end if;
        end process THE_WRITE_REG_PROC;
+
+       dead_channel_S(0)                       <=      CTRL_STATUS_register_S(0)(8);           -- slow-control can declare a channel dead
+       dead_channel_S(1)                       <=      CTRL_STATUS_register_S(1)(8);           -- slow-control can declare a channel dead
+       dead_channel_S(2)                       <=      CTRL_STATUS_register_S(2)(8);   -- slow-control can declare a channel dead
+       dead_channel_S(3)                       <=      CTRL_STATUS_register_S(3)(8);   -- slow-control can declare a channel dead
   
 -- register read
        THE_READ_REG_PROC: process( SYSCLK )
@@ -325,50 +428,66 @@ end process TRANSFORM;
                                buf_bus_data_out        <= '0' & soda_cmd_word_S;
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0001") ) then
                                buf_bus_data_out        <= '0' & super_burst_nr_S;
-                       elsif( (store_rd = '1') and (SODA_ADDR_IN = "0010") ) then
-                               buf_bus_data_out        <= LEDregister_i;
-                       elsif( (store_rd = '1') and (SODA_ADDR_IN = "0011") ) then
-                               buf_bus_data_out        <= debug_status_S;
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0100") ) then
-                               buf_bus_data_out        <= debug_rx_cnt_S;
+                               buf_bus_data_out        <= calib_register_S(0);
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0101") ) then
-                               buf_bus_data_out        <= debug_tx_cnt_S;
+                               buf_bus_data_out        <= calib_register_S(0);
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0110") ) then
-                               buf_bus_data_out        <= debug_sos_cnt_S;
+                               buf_bus_data_out        <= calib_register_S(0);
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0111") ) then
-                               buf_bus_data_out        <= debug_cmd_cnt_S;
+                               buf_bus_data_out        <= calib_register_S(0);
+                       elsif( (store_rd = '1') and (SODA_ADDR_IN = "0011") ) then
+                               buf_bus_data_out                <= CTRL_STATUS_register_S(0);
+                       elsif( (store_rd = '1') and (SODA_ADDR_IN = "0100") ) then
+                               buf_bus_data_out                <= CTRL_STATUS_register_S(1);
+                       elsif( (store_rd = '1') and (SODA_ADDR_IN = "0101") ) then
+                               buf_bus_data_out                <= CTRL_STATUS_register_S(2);
+                       elsif( (store_rd = '1') and (SODA_ADDR_IN = "0110") ) then
+                               buf_bus_data_out                <= CTRL_STATUS_register_S(3);
                        end if;
                end if;
        end process THE_READ_REG_PROC;
-\r
---     debug signals\r
-       DEBUG_HUB : process(SODACLK)\r
-       begin\r
-               if( rising_edge(SODACLK) ) then\r
-                       debug_status_S(0)               <= RESET;
-                       debug_status_S(1)               <= CLEAR;
-                       debug_status_S(2)               <= CLK_EN;
-                       if   ( RESET = '1' ) then\r
-                               debug_rx_cnt_S          <= (others => '0');
-                               debug_tx_cnt_S          <= (others => '0');
-                       else
-                               if (txup_dlm_out_S = '1') then
-                                       debug_tx_cnt_S  <= debug_tx_cnt_S + 1;
-                               end if;
-                               if (RXUP_DLM_IN = '1') then
-                                       debug_rx_cnt_S  <= debug_rx_cnt_S + 1;
-                               end if;
-                               if (start_of_superburst_S = '1') then
-                                       debug_sos_cnt_S <= debug_sos_cnt_S + 1;
-                               end if;
-                               if (soda_cmd_valid_S = '1') then
-                                       debug_cmd_cnt_S <= debug_cmd_cnt_S + 1;
-                               end if;
-                       end if;
-               end if; \r
-       end process;\r
-\r
-       debug_status_S(31 downto 3)             <=      LINK_DEBUG_IN(31 downto 3);\r
+--                             buf_bus_data_out        <= debug_status_S;
+--                     elsif( (store_rd = '1') and (SODA_ADDR_IN = "0100") ) then
+--                             buf_bus_data_out        <= debug_rx_cnt_S;
+--                     elsif( (store_rd = '1') and (SODA_ADDR_IN = "0101") ) then
+--                             buf_bus_data_out        <= debug_tx_cnt_S;
+--                     elsif( (store_rd = '1') and (SODA_ADDR_IN = "0110") ) then
+--                             buf_bus_data_out        <= debug_sos_cnt_S;
+--                     elsif( (store_rd = '1') and (SODA_ADDR_IN = "0111") ) then
+--                             buf_bus_data_out        <= debug_cmd_cnt_S;
+--                     end if;
+--             end if;
+--     end process THE_READ_REG_PROC;
+
+--     debug signals
+       --DEBUG_HUB : process(SODACLK)
+       --begin
+               --if( rising_edge(SODACLK) ) then
+                       --debug_status_S(0)             <= RESET;
+                       --debug_status_S(1)             <= CLEAR;
+                       --debug_status_S(2)             <= CLK_EN;
+                       --if   ( RESET = '1' ) then
+                               --debug_rx_cnt_S                <= (others => '0');
+                               --debug_tx_cnt_S                <= (others => '0');
+                       --else
+                               --if (txup_dlm_out_S = '1') then
+                                       --debug_tx_cnt_S        <= debug_tx_cnt_S + 1;
+                               --end if;
+                               --if (RXUP_DLM_IN = '1') then
+                                       --debug_rx_cnt_S        <= debug_rx_cnt_S + 1;
+                               --end if;
+                               --if (start_of_superburst_S = '1') then
+                                       --debug_sos_cnt_S       <= debug_sos_cnt_S + 1;
+                               --end if;
+                               --if (soda_cmd_valid_S = '1') then
+                                       --debug_cmd_cnt_S       <= debug_cmd_cnt_S + 1;
+                               --end if;
+                       --end if;
+               --end if; 
+       --end process;
+
+       --debug_status_S(31 downto 3)           <=      LINK_DEBUG_IN(31 downto 3);
        TXUP_DLM_OUT                                                    <= txup_dlm_out_S;
 -- output signals
        LEDS_OUT                                                                        <= LEDregister_i(3 downto 0);
@@ -376,4 +495,4 @@ end process TRANSFORM;
        SODA_DATA_OUT                                                   <= buf_bus_data_out;
        SODA_ACK_OUT                                                    <= bus_ack;
 
-end architecture;
+end architecture;
\ No newline at end of file
index 5f1b2230c72804c02068035b0f008f605c1d061e..4f83cdc7513c33aac8b7444e1677930db1c1aeb0 100644 (file)
@@ -53,26 +53,32 @@ architecture Behavioral of soda_source is
 --     signal last_packet_sent_S               : t_PACKET_TYPE_SENT    := c_NO_PACKET;
 
        -- slave bus signals
-       signal bus_ack_x                                        : std_logic;
-       signal bus_ack                                          : std_logic;
-       signal store_wr_x                                       : std_logic;
-       signal store_wr                                 : std_logic;
-       signal store_rd_x                                       : std_logic;
-       signal store_rd                                 : std_logic;
-       signal buf_bus_data_out                 : std_logic_vector(31 downto 0);
+       signal bus_ack_x                                                : std_logic;
+       signal bus_ack                                                  : std_logic;
+       signal store_wr_x                                               : std_logic;
+       signal store_wr                                         : std_logic;
+       signal store_rd_x                                               : std_logic;
+       signal store_rd                                         : std_logic;
+       signal buf_bus_data_out                         : std_logic_vector(31 downto 0);
 
-       signal ledregister_i                            : std_logic_vector(31 downto 0);
-       signal test_line_i                              : std_logic_vector(31 downto 0);
+       signal CTRL_STATUS_register_i           : std_logic_vector(31 downto 0);
+       signal test_line_i                                      : std_logic_vector(31 downto 0);
 
-       signal reply_valid_S                            : std_logic;
-       signal expected_reply_S                 : std_logic_vector(7 downto 0);
-       signal reply_OK_S                                       : std_logic;
-       signal start_calibration_S              : std_logic;
+       signal reply_data_valid_S                       : std_logic;
+       signal expected_reply_S                         : std_logic_vector(7 downto 0);
+       signal reply_OK_S                                               : std_logic;
+       signal start_calibration_S                      : std_logic;
+
+       signal calib_data_valid_S                       : std_logic;
+       signal calibration_time_s                       : std_logic_vector(15 downto 0) := (others => '0');
+       signal calib_register_s                         : std_logic_vector(31 downto 0) := (others => '0');
+--     signal calib_register_rst_s             : std_logic     := '0'; -- read of calibration register resets contents to 0\r
+       signal reply_timeout_error_S            : std_logic;
+       signal channel_timeout_status_S : std_logic;
+       signal downstream_error_S                       : std_logic;
+\r
+       signal dead_channel_S                           : std_logic;
 
-       signal calibration_valid_s              : std_logic;
-       signal calibration_time_s               : std_logic_vector(15 downto 0) := (others => '0');
-       signal calib_register_s                 : std_logic_vector(31 downto 0) := (others => '0');
---     signal calib_register_rst_s     : std_logic     := '0'; -- read of calibration register resets contents to 0
 
 begin
        
@@ -115,8 +121,8 @@ begin
                        EXPECTED_REPLY_IN                       => expected_reply_S,
                        RX_DLM_IN                                       => RX_DLM_IN,
                        RX_DLM_WORD_IN                          => RX_DLM_WORD_IN,
-                       REPLY_VALID_OUT                 => reply_valid_S,
-                       REPLY_OK_OUT                            => reply_OK_S
+                       REPLY_VALID_OUT                 => reply_data_valid_S,  -- there was a reply
+                       REPLY_OK_OUT                            => reply_OK_S                           -- the reply was as expected
                );
 
        src_calibration_timer : soda_calibration_timer
@@ -127,23 +133,48 @@ begin
                        CLK_EN                                          =>      '1',
                        --Internal Connection
                        START_CALIBRATION                       =>      start_calibration_S,
-                       END_CALIBRATION                 =>      reply_valid_S,
-                       CALIB_VALID_OUT                 =>      calibration_valid_S,
-                       CALIB_TIME_OUT                          =>      calibration_time_S
+                       END_CALIBRATION                 =>      reply_data_valid_S,
+                       VALID_OUT                                       =>      calib_data_valid_S,
+                       CALIB_TIME_OUT                          =>      calibration_time_S,\r
+                       TIMEOUT_ERROR                           =>      reply_timeout_error_S   -- timeout because no reply was received
                );
                
-       src_store_calib_proc  : process(SYSCLK) -- converting to sysclk domain
+       sodasource_calib_timeout_proc  : process(SYSCLK)        -- converting to sysclk domain
        begin
                if rising_edge(SYSCLK) then
                        if( RESET = '1' ) then
-                               calib_register_S                                        <= (others => '0');
-                       else
-                               calib_register_S(15 downto 0)   <= calibration_time_S;
+                               calib_register_S                                                <= (others => '0');\r
+                               channel_timeout_status_S                        <= '0';
+                               downstream_error_S                                      <= '0';
+                               CTRL_STATUS_register_i(16)                      <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                               CTRL_STATUS_register_i(17)                      <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                               CTRL_STATUS_register_i(31)                      <= '0';                 -- reset REPORT_ERROR status-bit
+                       elsif (calib_data_valid_S = '1') then                                   -- calibration finished in time
+                               calib_register_S(15 downto 0)           <= calibration_time_S;\r
+                               channel_timeout_status_S                        <= '0';
+                       elsif (reply_data_valid_S = '1') then                                                   -- the reply was correct
+                               channel_timeout_status_S                        <= '0';\r
+                               if (reply_OK_S = '1') then\r
+                                       downstream_error_S                              <= '0';\r
+                               elsif (dead_channel_S = '0') then\r
+                                       downstream_error_S                              <= '1';\r
+                                       CTRL_STATUS_register_i(16)              <= '1';                 -- set DOWNSTREAM_ERROR status-bit
+                                       CTRL_STATUS_register_i(31)              <= '1';                 -- set REPORT_ERROR status-bit
+                               end if;
+                       elsif ((reply_timeout_error_S = '1') and  (reply_OK_S = '1')) then
+                               channel_timeout_status_S                        <= '1';
+                               CTRL_STATUS_register_i(17)                      <= '1';                 -- set CALIBRATION_TIMEOUT_ERROR status-bit
+                               CTRL_STATUS_register_i(31)                      <= '1';                 -- set REPORT_ERROR status-bit\r
+                       elsif (CTRL_STATUS_register_i(15) = '1') then           -- check if slowcontrol wants to reset errors\r
+                                       CTRL_STATUS_register_i(16)              <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                                       CTRL_STATUS_register_i(17)              <= '0';                 -- reset DOWNSTREAM_ERROR status-bit
+                                       CTRL_STATUS_register_i(31)              <= '0';                 -- reset REPORT_ERROR status-bit
                        end if;
                end if;
        end process;
 \r
 \r
+\r
 ---------------------------------------------------------
 -- RegIO Statemachine
 ---------------------------------------------------------
@@ -246,20 +277,21 @@ soda_cmd_strobe_posedge_to_pulse: posedge_to_pulse
                        if   ( RESET = '1' ) then
                                soda_cmd_strobe_S       <= '0';
                                soda_cmd_word_S <= (others => '0');
-                               LEDregister_i           <= (others => '0');
---                             TEST_LINE_i                     <= (others => '0');
+                               CTRL_STATUS_register_i(15 downto 0)             <= (others => '0');
                        elsif( (store_wr = '1') and (SODA_ADDR_IN = "0000") ) then
                                soda_cmd_strobe_S       <= '1';
                                soda_cmd_word_S <= SODA_DATA_IN(30 downto 0);
                        elsif( (store_wr = '1') and (SODA_ADDR_IN = "0001") ) then
                                soda_cmd_strobe_S       <= '0';
-                               LEDregister_i           <= SODA_DATA_IN;
+                               CTRL_STATUS_register_i(15 downto 0)             <= SODA_DATA_IN(15 downto 0);           -- use only the 16 lower bits for control
                        else
                                soda_cmd_strobe_S       <= '0';
                        end if;
                end if;
        end process THE_WRITE_REG_PROC;
-  
+\r
+       dead_channel_S                  <=      CTRL_STATUS_register_i(8);              -- slow-control can declare a channel dead\r
+
 
 -- register read
        THE_READ_REG_PROC: process( SYSCLK )
@@ -273,17 +305,14 @@ soda_cmd_strobe_posedge_to_pulse: posedge_to_pulse
                                buf_bus_data_out                <= '0' & super_burst_nr_S;
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0010") ) then
                                buf_bus_data_out                <= calib_register_S;
---                             calib_register_rst_S    <= '1';
                        elsif( (store_rd = '1') and (SODA_ADDR_IN = "0011") ) then
-                               buf_bus_data_out                <= LEDregister_i;\r
---                     else\r
---                             calib_register_rst_S    <= '0';
+                               buf_bus_data_out                <= CTRL_STATUS_register_i;\r
                        end if;
                end if;
        end process THE_READ_REG_PROC;
  
 -- output signals
-       LEDS_OUT                        <= LEDregister_i(3 downto 0);
+       LEDS_OUT                        <= CTRL_STATUS_register_i(3 downto 0);
        SODA_DATA_OUT   <= buf_bus_data_out;
        SODA_ACK_OUT    <= bus_ack;
 
index ae6114231481c19bcb193471b5fb54dd31d8f2bf..1a5ee3f4d976dfe3be1f4f1ba41eddf17b2f2a3f 100644 (file)
@@ -178,6 +178,7 @@ architecture trb3_periph_sodahub_arch of trb3_periph_sodahub is
        signal soda_rxup_clock_full             : std_logic;
 --     signal soda_rxdn_clock_half             : t_HUB_BIT;
        signal soda_rxdn_clock_full             : t_HUB_BIT;
+       signal soda_txdn_clock_full             : t_HUB_BIT;
        signal make_reset                                               : std_logic;
 
        --SODA uplink
@@ -492,7 +493,6 @@ THE_HUB_SYNC_UPLINK : med_ecp3_sfp_sync_up
                CTRL_DEBUG                              => (others => '0')
        ); 
 
---     SFP_TXDIS(3)            <= sfp_txdis_S;
        SFP_TXDIS               <=      sfp_txdis_S;
   
 ---------------------------------------------------------------------------
@@ -503,6 +503,7 @@ THE_HUB_SYNC_UPLINK : med_ecp3_sfp_sync_up
                port map(
                        SYSCLK                                  => clk_sys_internal,    --clk_sys_i,
                        SODACLK                                 =>      clk_soda_i,
+                       TX_SODACLK                              =>      soda_txdn_clock_full,   -- This is 4 clocks !!
                        RESET                                           => reset_i,
                        CLEAR                                           => clear_i,
                        CLK_EN                                  => '1',
@@ -610,10 +611,10 @@ THE_HUB_SYNC_UPLINK : med_ecp3_sfp_sync_up
                                CLK_TX_HALF_OUT(2)                                                      => open,
                                CLK_TX_HALF_OUT(3)                                                      => open,
 
-                               CLK_TX_FULL_OUT(0)                                                      => open,
-                               CLK_TX_FULL_OUT(1)                                                      => open,
-                               CLK_TX_FULL_OUT(2)                                                      => open,
-                               CLK_TX_FULL_OUT(3)                                                      => open,
+                               CLK_TX_FULL_OUT(0)                                                      => soda_txdn_clock_full(0),
+                               CLK_TX_FULL_OUT(1)                                                      => soda_txdn_clock_full(1),
+                               CLK_TX_FULL_OUT(2)                                                      => soda_txdn_clock_full(2),
+                               CLK_TX_FULL_OUT(3)                                                      => soda_txdn_clock_full(3),
 
                                RX_DLM(0)                                                                               => rxdn_dlm_i(0),
                                RX_DLM(1)                                                                               => rxdn_dlm_i(1),
index 6691f8486c6f704e39e439f23cb23e7ce1c81cc6..1706a7467eb33ec329665806d78bf177a3045c2a 100644 (file)
@@ -225,35 +225,31 @@ architecture trb3_periph_sodasource_arch of trb3_periph_sodasource is
        --SODA
        signal SOB_S                                                    : std_logic := '0';
        -- fix signal names for constraining
-       attribute syn_preserve          of CLK_GPLL_LEFT        : signal is true;
-       attribute syn_keep                      of CLK_GPLL_LEFT        : signal is true;
---     attribute syn_noprune           of CLK_GPLL_LEFT        : signal is true;
-       attribute syn_preserve          of CLK_GPLL_RIGHT       : signal is true;
-       attribute syn_keep                      of CLK_GPLL_RIGHT       : signal is true;
---     attribute syn_noprune           of CLK_GPLL_RIGHT       : signal is true;
-       attribute syn_preserve          of CLK_PCLK_LEFT        : signal is true;
-       attribute syn_keep                      of CLK_PCLK_LEFT        : signal is true;
---     attribute syn_noprune           of CLK_PCLK_LEFT        : signal is true;
-       attribute syn_preserve          of CLK_PCLK_RIGHT       : signal is true;
-       attribute syn_keep                      of CLK_PCLK_RIGHT       : signal is true;
---     attribute syn_noprune           of CLK_PCLK_RIGHT       : signal is true;
-
-attribute syn_preserve of soda_rx_clock_full   : signal is true;
-       attribute syn_keep              of soda_rx_clock_full   : signal is true;
-       attribute syn_preserve  of soda_rx_clock_half   : signal is true;
-       attribute syn_keep              of soda_rx_clock_half   : signal is true;
-       attribute syn_preserve  of soda_tx_clock_full   : signal is true;
-       attribute syn_keep              of soda_tx_clock_full   : signal is true;
-       attribute syn_preserve  of soda_tx_clock_half   : signal is true;
-       attribute syn_keep              of soda_tx_clock_half   : signal is true;
-       attribute syn_preserve  of clk_sys_internal             : signal is true;
-       attribute syn_keep              of clk_sys_internal             : signal is true;
-       attribute syn_preserve  of clk_raw_internal             : signal is true;
-       attribute syn_keep              of clk_raw_internal             : signal is true;
-       attribute syn_preserve  of tx_dlm_i                                     : signal is true;
-       attribute syn_keep              of tx_dlm_i                                     : signal is true;
-       attribute syn_preserve  of rx_dlm_i                                     : signal is true;
-       attribute syn_keep              of rx_dlm_i                                     : signal is true;
+       attribute syn_preserve          of CLK_GPLL_LEFT                        : signal is true;
+       attribute syn_keep                      of CLK_GPLL_LEFT                        : signal is true;
+       attribute syn_preserve          of CLK_GPLL_RIGHT                       : signal is true;
+       attribute syn_keep                      of CLK_GPLL_RIGHT                       : signal is true;
+       attribute syn_preserve          of CLK_PCLK_LEFT                        : signal is true;
+       attribute syn_keep                      of CLK_PCLK_LEFT                        : signal is true;
+       attribute syn_preserve          of CLK_PCLK_RIGHT                       : signal is true;
+       attribute syn_keep                      of CLK_PCLK_RIGHT                       : signal is true;
+
+       attribute syn_preserve          of soda_rx_clock_full   : signal is true;
+       attribute syn_keep                      of soda_rx_clock_full   : signal is true;
+       attribute syn_preserve          of soda_rx_clock_half   : signal is true;
+       attribute syn_keep                      of soda_rx_clock_half   : signal is true;
+       attribute syn_preserve          of soda_tx_clock_full   : signal is true;
+       attribute syn_keep                      of soda_tx_clock_full   : signal is true;
+       attribute syn_preserve          of soda_tx_clock_half   : signal is true;
+       attribute syn_keep                      of soda_tx_clock_half   : signal is true;
+       attribute syn_preserve          of clk_sys_internal             : signal is true;
+       attribute syn_keep                      of clk_sys_internal             : signal is true;
+       attribute syn_preserve          of clk_raw_internal             : signal is true;
+       attribute syn_keep                      of clk_raw_internal             : signal is true;
+       attribute syn_preserve          of tx_dlm_i                                     : signal is true;
+       attribute syn_keep                      of tx_dlm_i                                     : signal is true;
+       attribute syn_preserve          of rx_dlm_i                                     : signal is true;
+       attribute syn_keep                      of rx_dlm_i                                     : signal is true;
 
        
 begin
@@ -278,7 +274,7 @@ begin
       CLEAR_OUT     => clear_i,          -- async reset out, USE WITH CARE!
       RESET_OUT     => reset_i,          -- synchronous reset out (SYSCLK)
       DEBUG_OUT     => open
-      );  
+      );
 
 
 ---------------------------------------------------------------------------
@@ -326,7 +322,7 @@ end generate;
       )      
     port map(
       CLK                => clk_raw_internal,
-      SYSCLK             => clk_sys_internal,  --clk_sys_i,
+      SYSCLK             => clk_sys_internal,
       RESET              => reset_i,
       CLEAR              => clear_i,
       CLK_EN             => '1',
@@ -392,7 +388,7 @@ THE_HUB : trb_net16_hub_base
     CLOCK_FREQUENCY   => CLOCK_FREQUENCY
     )
   port map (
-    CLK    => clk_sys_internal,        --clk_sys_i,
+    CLK    => clk_sys_internal,        --clk_sys_i,            PL! 30062014
     RESET  => reset_i,
     CLK_EN => '1',
 
@@ -444,8 +440,8 @@ THE_HUB : trb_net16_hub_base
       PORT_ADDR_MASK => (0 => 9,       1 => 9,       2 => 9,       3 => 4,       others => 0)
       )
     port map(
-      CLK   => clk_sys_internal,       --clk_sys_i,
-      RESET => reset_i,
+               CLK                                                     => clk_sys_internal,
+      RESET                                                    => reset_i,
 
       DAT_ADDR_IN                                      => regio_addr_out,
       DAT_DATA_IN                                      => regio_data_out,
@@ -525,8 +521,8 @@ THE_HUB : trb_net16_hub_base
 
 THE_SPI_RELOAD :  spi_flash_and_fpga_reload    --.flash_reboot_arch
   port map(
-    CLK_IN               => clk_sys_internal,  --clk_sys_i,
-    RESET_IN             => reset_i,
+        CLK_IN                                         => clk_sys_internal,
+    RESET_IN                                   => reset_i,
     
     BUS_ADDR_IN          => spimem_addr,
     BUS_READ_IN          => spimem_read_en,
@@ -558,12 +554,10 @@ THE_SYNC_LINK : med_ecp3_sfp_sync_down
                IS_SYNC_SLAVE => c_NO
                )
        port map(
-               CLK                => clk_raw_internal, --clk_200_i,
-               SYSCLK             => clk_sys_internal, --clk_sys_i,
-               RESET              => reset_i,
+      CLK                => clk_raw_internal,
+      SYSCLK             => clk_sys_internal,
+               RESET              => reset_i,
                CLEAR              => clear_i,
---             PCSA_REFCLKP            => PCSA_REFCLKP,                -- external refclock straight into serdes       PL!
---             PCSA_REFCLKN            => PCSA_REFCLKN,                -- external refclock straight into serdes       PL!
                --Internal Connection for TrbNet data -> not used a.t.m.
                MED_DATA_IN        => med_data_out(31 downto 16),
                MED_PACKET_NUM_IN  => med_packet_num_out(5 downto 3),
@@ -621,7 +615,7 @@ THE_SOB_SOURCE : soda_start_of_burst_faker
                BURST_PERIOD                            => cBURST_PERIOD                        -- burst-period in ns
                )
        port map(
-               SYSCLK                                          => clk_sys_internal,    --soda_rx_clock_half,   --
+               SYSCLK                                          => soda_tx_clock_half,  --clk_sys_internal,             PL! 30062014
                RESET                                                   => reset_i,
                SODA_BURST_PULSE_OUT            => SOB_S
        );
@@ -630,8 +624,8 @@ THE_SOB_SOURCE : soda_start_of_burst_faker
         
 THE_SODA_SOURCE : soda_source
        port map(
-               SYSCLK                                  => clk_sys_internal,    --clk_sys_i,
-               SODACLK                                 => clk_raw_internal,
+               SYSCLK                                  => soda_tx_clock_half,  --clk_sys_internal,     --clk_sys_i,    PL! 30062014
+               SODACLK                                 => soda_tx_clock_full,  --clk_raw_internal,                                             PL! 30062014
                RESET                                           => reset_i,
                --Internal Connection
                SODA_BURST_PULSE_IN     => SOB_S,
@@ -652,21 +646,22 @@ THE_SODA_SOURCE : soda_source
        );
 \r
 \r
---alive : soda_clockscaler
---     port map(
---             CLK     => clk_raw_internal,
---             RESET   =>      reset_i,
---             CLOCK_ENABLE_OUT        => open,
---             CLOCK_OUT                       => LED_GREEN
---     );
+raw    : soda_clockscaler
+       port map(
+               CLK     => clk_raw_internal,
+               RESET   =>      reset_i,
+               CLOCK_ENABLE_OUT        => open,
+               CLOCK_OUT                       => open
+       );
 \r
---rx_alive : soda_clockscaler
---     port map(
---             CLK     => soda_rx_clock_full,
---             RESET   =>      reset_i,
---             CLOCK_ENABLE_OUT        => open,
---             CLOCK_OUT                       => LED_RED
---     );
+tx     : soda_clockscaler
+       port map(
+               CLK     => soda_tx_clock_full,
+               RESET   =>      reset_i,
+               CLOCK_ENABLE_OUT        => open,
+               CLOCK_OUT                       => open\r
+               
+       );
 
 
 ---------------------------------------------------------------------------
@@ -694,7 +689,7 @@ THE_SODA_SOURCE : soda_source
 ---------------------------------------------------------------------------
   process
     begin
-      wait until rising_edge(clk_sys_internal);
+      wait until rising_edge(soda_tx_clock_half);      --clk_sys_internal);            PL! 30062014
       time_counter <= time_counter + 1;
     end process;
 
index 5b1056612828250a21c7c9f8e831cc1b25ce5603..ab0653e6bb690e41ee4fddad0bd9ca499c4c166c 100644 (file)
@@ -4,7 +4,7 @@
         <Option name="HDL type" value="VHDL"/>
     </Options>
     <Implementation title="soda_client" dir="soda_client" description="soda_client" synthesis="synplify" default_strategy="Strategy1">
-        <Options def_top="spi_flash_and_fpga_reload" top="trb3_periph_sodaclient"/>
+        <Options def_top="trb3_periph_sodaclient" top="trb3_periph_sodaclient"/>
         <Source name="code/version.vhd" type="VHDL" type_short="VHDL">
             <Options/>
         </Source>
index 3b86699bdecd88c221970dceca4e6866dacf15e6..453ea355aba1358f3c9ed7e6209df3e1efdbfb84 100644 (file)
@@ -1,9 +1,9 @@
-<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_hub_probe.rvl" Date="2014-06-24">
+<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_hub_probe.rvl" Date="2014-07-02">
     <IP Version="1_5_062609"/>
     <Design DesignEntry="Schematic/VHDL" Synthesis="synplify" DeviceFamily="LatticeECP3" DesignName="soda_hub"/>
-    <Core InsertDataset="0" Insert="1" Reveal_sig="2041639764" Name="trb3_periph_sodahub_LA0" ID="0">
+    <Core InsertDataset="0" Insert="1" Reveal_sig="2042945940" Name="trb3_periph_sodahub_LA0" ID="0">
         <Setting>
-            <Clock SampleClk="the_hub_sync_downlink/clk_200_txdata" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
+            <Clock SampleClk="clk_raw_internal" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
             <TraceBuffer Implementation="0" BitTimeStamp="0" hasTimeStamp="0" IncTrigSig="1" BufferDepth="256"/>
             <Capture Mode="0" MinSamplesPerTrig="8"/>
             <Event CntEnable="0" MaxEventCnt="8"/>
         </Setting>
         <Dataset Name="Base">
             <Trace>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/watchdog_trigger"/>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/got_link_ready_i"/>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/link_phase_out"/>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/rst"/>
-                <Bus Name="the_hub_sync_uplink/rx_data">
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:3"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:4"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:5"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:6"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_data:7"/>
+                <Sig Type="SIG" Name="a_soda_hub/recv_start_calibration_s"/>
+                <Bus Name="a_soda_hub/start_calibration_s">
+                    <Sig Type="SIG" Name="a_soda_hub/start_calibration_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/start_calibration_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/start_calibration_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/start_calibration_s:3"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm"/>
-                <Bus Name="the_hub_sync_uplink/rx_dlm_word">
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:3"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:4"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:5"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:6"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/rx_dlm_word:7"/>
+                <Bus Name="a_soda_hub/send_start_calibration_s">
+                    <Sig Type="SIG" Name="a_soda_hub/send_start_calibration_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/send_start_calibration_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/send_start_calibration_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/send_start_calibration_s:3"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/rx_k"/>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/tx_dlm_preview_in"/>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/tx_dlm"/>
-                <Bus Name="the_hub_sync_uplink/tx_data">
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:3"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:4"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:5"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:6"/>
-                    <Sig Type="SIG" Name="the_hub_sync_uplink/tx_data:7"/>
+                <Sig Type="SIG" Name="a_soda_hub/start_of_superburst_s"/>
+                <Bus Name="a_soda_hub/super_burst_nr_s">
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/super_burst_nr_s:30"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_uplink/tx_k"/>
-                <Sig Type="SIG" Name="a_soda_hub/txup_dlm_preview_out"/>
-                <Bus Name="a_soda_hub/txup_dlm_word_out">
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:0"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:1"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:2"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:3"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:4"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:5"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:6"/>
-                    <Sig Type="SIG" Name="a_soda_hub/txup_dlm_word_out:7"/>
+                <Sig Type="SIG" Name="a_soda_hub/trb_cmd_strobe_s"/>
+                <Bus Name="a_soda_hub/trb_cmd_word_s">
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/trb_cmd_word_s:30"/>
                 </Bus>
-                <Sig Type="SIG" Name="a_soda_hub/txup_dlm_out"/>
-                <Bus Name="the_hub_sync_downlink/got_link_ready_i">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/got_link_ready_i:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/got_link_ready_i:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/got_link_ready_i:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/got_link_ready_i:3"/>
-                </Bus>
-                <Bus Name="the_hub_sync_downlink/link_phase_out">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/link_phase_out:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/link_phase_out:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/link_phase_out:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/link_phase_out:3"/>
-                </Bus>
-                <Bus Name="the_hub_sync_downlink/lsm_status">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/lsm_status:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/lsm_status:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/lsm_status:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/lsm_status:3"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rst_n:0"/>
-                <Bus Name="rx_data0">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:3"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:4"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:5"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:6"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_data:0:7"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rx_k:0"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm:0"/>
-                <Bus Name="rx_dlm_word0">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:3"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:4"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:5"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:6"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_dlm_word:0:7"/>
-                </Bus>
-                <Bus Name="rx_fsm_state0">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_fsm_state:0:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_fsm_state:0:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_fsm_state:0:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_fsm_state:0:3"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/tx_allow_q:0"/>
-                <Bus Name="tx_data0">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:3"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:4"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:5"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:6"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_data:0:7"/>
+                <Bus Name="a_soda_hub/soda_cmd_word_s">
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/soda_cmd_word_s:30"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/tx_dlm:0"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/tx_k:0"/>
-                <Bus Name="tx_fsm_state0">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_fsm_state:0:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_fsm_state:0:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_fsm_state:0:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/tx_fsm_state:0:3"/>
+                <Bus Name="a_soda_hub/txdn_dlm_out">
+                    <Sig Type="SIG" Name="a_soda_hub/txdn_dlm_out:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/txdn_dlm_out:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/txdn_dlm_out:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/txdn_dlm_out:3"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/watchdog_trigger:0"/>
-                <Bus Name="the_hub_sync_downlink/sd_txdis_out">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_txdis_out:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_txdis_out:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_txdis_out:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_txdis_out:3"/>
-                </Bus>
-                <Bus Name="sfp_txdis">
-                    <Sig Type="SIG" Name="sfp_txdis:1"/>
-                    <Sig Type="SIG" Name="sfp_txdis:2"/>
-                    <Sig Type="SIG" Name="sfp_txdis:3"/>
-                    <Sig Type="SIG" Name="sfp_txdis:4"/>
-                    <Sig Type="SIG" Name="sfp_txdis:5"/>
-                    <Sig Type="SIG" Name="sfp_txdis:6"/>
-                </Bus>
-                <Bus Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/cs">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/cs:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/cs:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/cs:2"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/rx_cdr_lol_ch_s"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/rx_lol_los"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/rx_pcs_rst_ch_c"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/tx_pll_lol_qd_s"/>
-                <Bus Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/state_out">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/state_out:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/state_out:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/state_out:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_rx_fsm/state_out:3"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/the_serdes/rst_qd_c"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/the_serdes/lsm_status_ch0_s"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/the_serdes/rx_cdr_lol_ch0_s"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/the_serdes/rx_cv_err_ch0"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/the_serdes/rx_half_clk_ch0"/>
-                <Sig Type="SIG" Name="uplink_ready_s"/>
-                <Sig Type="SIG" Name="downlink_clear"/>
-                <Sig Type="SIG" Name="downlink_reset"/>
-                <Sig Type="SIG" Name="dnlink_phase_s:0"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rst_down_quad"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rx_k:1"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rx_k:2"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/rx_k:3"/>
-                <Bus Name="the_hub_sync_downlink/rx_pcs_rst">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_pcs_rst:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_pcs_rst:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_pcs_rst:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_pcs_rst:3"/>
-                </Bus>
-                <Bus Name="the_hub_sync_downlink/rx_serdes_rst">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_serdes_rst:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_serdes_rst:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_serdes_rst:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rx_serdes_rst:3"/>
+                <Sig Type="SIG" Name="a_soda_hub/txup_dlm_out"/>
+                <Bus Name="a_soda_hub/dead_channel_s">
+                    <Sig Type="SIG" Name="a_soda_hub/dead_channel_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/dead_channel_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/dead_channel_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/dead_channel_s:3"/>
                 </Bus>
-                <Bus Name="the_hub_sync_downlink/rst_qd">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst_qd:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst_qd:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst_qd:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst_qd:3"/>
+                <Bus Name="a_soda_hub/ctrl_status_register_s[3:0]">
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:30"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:0:31"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:30"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:1:31"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:30"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:2:31"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:8"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:9"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:10"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:11"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:12"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:13"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:14"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:15"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:16"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:17"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:18"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:19"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:20"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:21"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:22"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:23"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:24"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:25"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:26"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:27"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:28"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:29"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:30"/>
+                    <Sig Type="SIG" Name="a_soda_hub/ctrl_status_register_s:3:31"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/serdes_rst_down_quad"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/tx_pll_lol_qd_s"/>
-                <Bus Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/cs">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/cs:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/cs:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/cs:2"/>
+                <Bus Name="a_soda_hub/downstream_error_s">
+                    <Sig Type="SIG" Name="a_soda_hub/downstream_error_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/downstream_error_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/downstream_error_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/downstream_error_s:3"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/tx_pcs_rst_ch_c"/>
-                <Bus Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/state_out">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/state_out:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/state_out:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/state_out:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/\generated_logic(0)\/the_tx_fsm/state_out:3"/>
+                <Bus Name="a_soda_hub/reply_data_valid_s">
+                    <Sig Type="SIG" Name="a_soda_hub/reply_data_valid_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_data_valid_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_data_valid_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_data_valid_s:3"/>
                 </Bus>
-                <Bus Name="the_hub_sync_downlink/rst">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/rst:3"/>
+                <Bus Name="a_soda_hub/reply_ok_s">
+                    <Sig Type="SIG" Name="a_soda_hub/reply_ok_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_ok_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_ok_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_ok_s:3"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/clear"/>
-                <Bus Name="the_hub_sync_downlink/sd_los_i">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_los_i:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_los_i:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_los_i:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/sd_los_i:3"/>
+                <Bus Name="a_soda_hub/reply_timeout_error_s">
+                    <Sig Type="SIG" Name="a_soda_hub/reply_timeout_error_s:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_timeout_error_s:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_timeout_error_s:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/reply_timeout_error_s:3"/>
                 </Bus>
-                <Bus Name="the_hub_sync_downlink/internal_make_link_reset_out">
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/internal_make_link_reset_out:0"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/internal_make_link_reset_out:1"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/internal_make_link_reset_out:2"/>
-                    <Sig Type="SIG" Name="the_hub_sync_downlink/internal_make_link_reset_out:3"/>
+                <Bus Name="a_soda_hub/expected_reply_s[3:0]">
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:0:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:1:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:2:7"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:0"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:1"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:2"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:3"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:4"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:5"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:6"/>
+                    <Sig Type="SIG" Name="a_soda_hub/expected_reply_s:3:7"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/watchdog_trigger:1"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/watchdog_trigger:2"/>
-                <Sig Type="SIG" Name="the_hub_sync_downlink/watchdog_trigger:3"/>
             </Trace>
             <Trigger>
-                <TU Serialbits="0" Type="0" ID="1" Sig="(BUS)the_hub_sync_uplink/rx_fsm_state[3:0],"/>
-                <TU Serialbits="0" Type="0" ID="2" Sig="the_hub_sync_uplink/watchdog_trigger,"/>
-                <TU Serialbits="0" Type="0" ID="3" Sig="the_hub_sync_uplink/got_link_ready_i,"/>
-                <TU Serialbits="0" Type="0" ID="4" Sig="a_soda_hub/start_of_superburst_s,"/>
-                <TU Serialbits="0" Type="0" ID="5" Sig="the_hub_sync_downlink/the_serdes/rx_cv_err_ch0,"/>
-                <TU Serialbits="0" Type="0" ID="6" Sig="the_hub_sync_downlink/the_serdes/rx_cv_err_ch1,"/>
+                <TU Serialbits="0" Type="0" ID="1" Sig="a_soda_hub/recv_start_calibration_s,"/>
+                <TU Serialbits="0" Type="0" ID="2" Sig="a_soda_hub/start_of_superburst_s,"/>
+                <TU Serialbits="0" Type="0" ID="3" Sig="a_soda_hub/trb_cmd_strobe_s,"/>
+                <TU Serialbits="0" Type="0" ID="4" Sig="a_soda_hub/soda_cmd_valid_s,"/>
                 <TE MaxSequence="1" MaxEvnCnt="1" ID="1" Resource="1"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="2" Resource="0"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="3" Resource="0"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="4" Resource="0"/>
-                <TE MaxSequence="2" MaxEvnCnt="1" ID="5" Resource="0"/>
-                <TE MaxSequence="2" MaxEvnCnt="1" ID="6" Resource="0"/>
             </Trigger>
         </Dataset>
     </Core>
index fa9f1954baaac92ad355c5d8262e07e44107ae41..64036af4d426593c09e4e38a88572e84c91baac4 100644 (file)
         <Source name="code/trb3_periph_sodasource.vhd" type="VHDL" type_short="VHDL">
             <Options top_module="trb3_periph_sodasource"/>
         </Source>
+        <Source name="code/soda_clockscaler.vhd" type="VHDL" type_short="VHDL">
+            <Options/>
+        </Source>
         <Source name="code/soda_source_synconstraints.fdc" type="Synplify Design Constraints File" type_short="SDC">
             <Options/>
         </Source>
index 771f0718d5dce1addf70f88c06893256c9f105c8..6b55810a56250d5f5d266c24554c90c595fd34ef 100644 (file)
@@ -1,4 +1,4 @@
-rvl_alias "clk_raw_internal" "clk_raw_internal";
+rvl_alias "soda_tx_clock_full" "the_sync_link/clk_tx_full_out";
 RVL_ALIAS "clk_raw_internal" "clk_raw_internal"; 
 RVL_ALIAS "clk_raw_internal" "clk_raw_internal"; 
 BLOCK RESETPATHS ;
index 843cf242dbf6037c20000c89ebed0daf45ce3b6b..1c38c86ca646fdaab965b33997768729bade970d 100644 (file)
@@ -1,9 +1,9 @@
-<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_source_probe.rvl" Date="2014-05-26">
+<Project ModBy="Inserter" SigType="0" Name="/local/lemmens/lattice/soda/soda_source_probe.rvl" Date="2014-07-01">
     <IP Version="1_5_062609"/>
     <Design DesignEntry="Schematic/VHDL" Synthesis="synplify" DeviceFamily="LatticeECP3" DesignName="soda_source"/>
-    <Core InsertDataset="0" Insert="1" Reveal_sig="2037718156" Name="trb3_periph_sodasource_LA0" ID="0">
+    <Core InsertDataset="0" Insert="1" Reveal_sig="2042795948" Name="trb3_periph_sodasource_LA0" ID="0">
         <Setting>
-            <Clock SampleClk="clk_raw_internal" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
+            <Clock SampleClk="the_sync_link/clk_tx_full_out" SampleEnable="0" EnableClk="" EnableClk_Pri="0"/>
             <TraceBuffer Implementation="0" BitTimeStamp="0" hasTimeStamp="0" IncTrigSig="1" BufferDepth="256"/>
             <Capture Mode="0" MinSamplesPerTrig="8"/>
             <Event CntEnable="0" MaxEventCnt="8"/>
                     <Sig Type="SIG" Name="the_soda_source/super_burst_nr_s:29"/>
                     <Sig Type="SIG" Name="the_soda_source/super_burst_nr_s:30"/>
                 </Bus>
-                <Bus Name="the_sync_link/start_timer">
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:3"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:4"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:5"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:6"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:7"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:8"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:9"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:10"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:11"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:12"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:13"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:14"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:15"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:16"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:17"/>
-                    <Sig Type="SIG" Name="the_sync_link/start_timer:18"/>
-                </Bus>
-                <Bus Name="the_sync_link/the_tx/current_state">
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/current_state:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/current_state:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/current_state:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/current_state:3"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_sync_link/the_tx/reset_in"/>
-                <Sig Type="SIG" Name="the_sync_link/the_tx/rx_allow_qtx"/>
-                <Bus Name="the_sync_link/the_tx/tx_data_out">
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:3"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:4"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:5"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:6"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_tx/tx_data_out:7"/>
-                </Bus>
-                <Sig Type="SIG" Name="the_sync_link/clear"/>
-                <Sig Type="SIG" Name="the_sync_link/sd_los_in"/>
-                <Sig Type="SIG" Name="the_sync_link/sd_txdis_out"/>
                 <Bus Name="sfp_los">
                     <Sig Type="SIG" Name="sfp_los:1"/>
                     <Sig Type="SIG" Name="sfp_los:2"/>
                     <Sig Type="SIG" Name="sfp_los:5"/>
                     <Sig Type="SIG" Name="sfp_los:6"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_sync_link/rx_allow"/>
-                <Sig Type="SIG" Name="the_sync_link/tx_allow"/>
-                <Bus Name="the_sync_link/rx_fsm_state">
-                    <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/rx_fsm_state:3"/>
+                <Sig Type="SIG" Name="the_soda_source/start_calibration_s"/>
+                <Sig Type="SIG" Name="the_soda_source/start_of_superburst_s"/>
+                <Sig Type="SIG" Name="the_soda_source/tx_dlm_preview_out"/>
+                <Sig Type="SIG" Name="the_soda_source/calib_data_valid_s"/>
+                <Bus Name="the_soda_source/calibration_time_s">
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:7"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:8"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:9"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:10"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:11"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:12"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:13"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:14"/>
+                    <Sig Type="SIG" Name="the_soda_source/calibration_time_s:15"/>
+                </Bus>
+                <Sig Type="SIG" Name="the_soda_source/channel_timeout_status_s"/>
+                <Sig Type="SIG" Name="the_soda_source/dead_channel_s"/>
+                <Sig Type="SIG" Name="the_soda_source/downstream_error_s"/>
+                <Sig Type="SIG" Name="the_soda_source/reply_data_valid_s"/>
+                <Sig Type="SIG" Name="the_soda_source/reply_ok_s"/>
+                <Sig Type="SIG" Name="the_soda_source/reply_timeout_error_s"/>
+                <Bus Name="the_soda_source/ctrl_status_register_i">
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:7"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:8"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:9"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:10"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:11"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:12"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:13"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:14"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:15"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:16"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:17"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:18"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:19"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:20"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:21"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:22"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:23"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:24"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:25"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:26"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:27"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:28"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:29"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:30"/>
+                    <Sig Type="SIG" Name="the_soda_source/ctrl_status_register_i:31"/>
+                </Bus>
+                <Bus Name="the_soda_source/calib_register_s">
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:7"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:8"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:9"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:10"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:11"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:12"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:13"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:14"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:15"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:16"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:17"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:18"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:19"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:20"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:21"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:22"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:23"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:24"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:25"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:26"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:27"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:28"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:29"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:30"/>
+                    <Sig Type="SIG" Name="the_soda_source/calib_register_s:31"/>
+                </Bus>
+                <Bus Name="the_soda_source/expected_reply_s">
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/expected_reply_s:7"/>
+                </Bus>
+                <Sig Type="SIG" Name="the_soda_source/soda_cmd_strobe_s"/>
+                <Sig Type="SIG" Name="the_soda_source/soda_cmd_pending_s"/>
+                <Sig Type="SIG" Name="the_soda_source/soda_cmd_window_s"/>
+                <Bus Name="the_soda_source/soda_cmd_word_s">
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:7"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:8"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:9"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:10"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:11"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:12"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:13"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:14"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:15"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:16"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:17"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:18"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:19"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:20"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:21"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:22"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:23"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:24"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:25"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:26"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:27"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:28"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:29"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_cmd_word_s:30"/>
                 </Bus>
-                <Bus Name="the_sync_link/tx_fsm_state">
-                    <Sig Type="SIG" Name="the_sync_link/tx_fsm_state:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/tx_fsm_state:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/tx_fsm_state:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/tx_fsm_state:3"/>
+                <Bus Name="the_soda_source/soda_data_in">
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:7"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:8"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:9"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:10"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:11"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:12"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:13"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:14"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:15"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:16"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:17"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:18"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:19"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:20"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:21"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:22"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:23"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:24"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:25"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:26"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:27"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:28"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:29"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:30"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_in:31"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_sync_link/tx_pll_lol"/>
-                <Sig Type="SIG" Name="the_sync_link/rx_los_low"/>
-                <Sig Type="SIG" Name="the_sync_link/rx_pcs_rst"/>
-                <Sig Type="SIG" Name="the_sync_link/rx_serdes_rst"/>
-                <Sig Type="SIG" Name="the_sync_link/link_phase_out"/>
-                <Sig Type="SIG" Name="the_sync_link/tx_dlm_preview_in"/>
+                <Bus Name="the_soda_source/soda_data_out">
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:7"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:8"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:9"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:10"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:11"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:12"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:13"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:14"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:15"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:16"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:17"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:18"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:19"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:20"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:21"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:22"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:23"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:24"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:25"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:26"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:27"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:28"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:29"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:30"/>
+                    <Sig Type="SIG" Name="the_soda_source/soda_data_out:31"/>
+                </Bus>
+                <Bus Name="the_soda_source/packet_builder/expected_reply_out">
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:4"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:5"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:6"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/expected_reply_out:7"/>
+                </Bus>
+                <Sig Type="SIG" Name="the_sync_link/tx_k"/>
                 <Bus Name="the_sync_link/tx_data">
                     <Sig Type="SIG" Name="the_sync_link/tx_data:0"/>
                     <Sig Type="SIG" Name="the_sync_link/tx_data:1"/>
                     <Sig Type="SIG" Name="the_sync_link/tx_data:6"/>
                     <Sig Type="SIG" Name="the_sync_link/tx_data:7"/>
                 </Bus>
+                <Sig Type="SIG" Name="the_sync_link/tx_dlm"/>
                 <Bus Name="the_sync_link/tx_dlm_word">
                     <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:0"/>
                     <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:1"/>
                     <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:6"/>
                     <Sig Type="SIG" Name="the_sync_link/tx_dlm_word:7"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_sync_link/tx_k"/>
-                <Sig Type="SIG" Name="the_sync_link/rx_cdr_lol"/>
                 <Sig Type="SIG" Name="the_sync_link/rx_k"/>
-                <Sig Type="SIG" Name="the_sync_link/rx_dlm"/>
                 <Bus Name="the_sync_link/rx_data">
                     <Sig Type="SIG" Name="the_sync_link/rx_data:0"/>
                     <Sig Type="SIG" Name="the_sync_link/rx_data:1"/>
                     <Sig Type="SIG" Name="the_sync_link/rx_data:6"/>
                     <Sig Type="SIG" Name="the_sync_link/rx_data:7"/>
                 </Bus>
+                <Sig Type="SIG" Name="the_sync_link/rx_dlm"/>
                 <Bus Name="the_sync_link/rx_dlm_word">
                     <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:0"/>
                     <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:1"/>
                     <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:6"/>
                     <Sig Type="SIG" Name="the_sync_link/rx_dlm_word:7"/>
                 </Bus>
-                <Bus Name="the_sync_link/the_rx_fsm/cs">
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/cs:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/cs:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/cs:2"/>
-                </Bus>
-                <Bus Name="the_sync_link/the_rx_fsm/ns">
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/ns:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/ns:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/ns:2"/>
+                <Bus Name="the_soda_source/packet_builder/packet_state_s">
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/packet_state_s:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/packet_state_s:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/packet_state_s:2"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/packet_state_s:3"/>
+                    <Sig Type="SIG" Name="the_soda_source/packet_builder/packet_state_s:4"/>
                 </Bus>
-                <Bus Name="the_sync_link/wa_position">
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:3"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:4"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:5"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:6"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:7"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:8"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:9"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:10"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:11"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:12"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:13"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:14"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position:15"/>
+                <Bus Name="the_soda_source/src_reply_handler/reply_recv_state_s">
+                    <Sig Type="SIG" Name="the_soda_source/src_reply_handler/reply_recv_state_s:0"/>
+                    <Sig Type="SIG" Name="the_soda_source/src_reply_handler/reply_recv_state_s:1"/>
+                    <Sig Type="SIG" Name="the_soda_source/src_reply_handler/reply_recv_state_s:2"/>
                 </Bus>
-                <Bus Name="the_sync_link/wa_position_rx">
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:3"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:4"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:5"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:6"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:7"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:8"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:9"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:10"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:11"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:12"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:13"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:14"/>
-                    <Sig Type="SIG" Name="the_sync_link/wa_position_rx:15"/>
+                <Bus Name="raw/counter_s">
+                    <Sig Type="SIG" Name="raw/counter_s:0"/>
+                    <Sig Type="SIG" Name="raw/counter_s:1"/>
+                    <Sig Type="SIG" Name="raw/counter_s:2"/>
+                    <Sig Type="SIG" Name="raw/counter_s:3"/>
+                    <Sig Type="SIG" Name="raw/counter_s:4"/>
+                    <Sig Type="SIG" Name="raw/counter_s:5"/>
+                    <Sig Type="SIG" Name="raw/counter_s:6"/>
+                    <Sig Type="SIG" Name="raw/counter_s:7"/>
+                    <Sig Type="SIG" Name="raw/counter_s:8"/>
+                    <Sig Type="SIG" Name="raw/counter_s:9"/>
+                    <Sig Type="SIG" Name="raw/counter_s:10"/>
+                    <Sig Type="SIG" Name="raw/counter_s:11"/>
+                    <Sig Type="SIG" Name="raw/counter_s:12"/>
+                    <Sig Type="SIG" Name="raw/counter_s:13"/>
+                    <Sig Type="SIG" Name="raw/counter_s:14"/>
+                    <Sig Type="SIG" Name="raw/counter_s:15"/>
+                    <Sig Type="SIG" Name="raw/counter_s:16"/>
+                    <Sig Type="SIG" Name="raw/counter_s:17"/>
+                    <Sig Type="SIG" Name="raw/counter_s:18"/>
+                    <Sig Type="SIG" Name="raw/counter_s:19"/>
+                    <Sig Type="SIG" Name="raw/counter_s:20"/>
+                    <Sig Type="SIG" Name="raw/counter_s:21"/>
+                    <Sig Type="SIG" Name="raw/counter_s:22"/>
+                    <Sig Type="SIG" Name="raw/counter_s:23"/>
+                    <Sig Type="SIG" Name="raw/counter_s:24"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_soda_source/start_calibration_s"/>
-                <Sig Type="SIG" Name="the_soda_source/start_of_superburst_s"/>
-                <Sig Type="SIG" Name="the_soda_source/tx_dlm_preview_out"/>
-                <Bus Name="the_sync_link/the_rx_fsm/counter2">
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:0"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:1"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:2"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:3"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:4"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:5"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:6"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:7"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:8"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:9"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:10"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:11"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:12"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:13"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:14"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:15"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:16"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:17"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:18"/>
-                    <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/counter2:19"/>
+                <Bus Name="tx/counter_s">
+                    <Sig Type="SIG" Name="tx/counter_s:0"/>
+                    <Sig Type="SIG" Name="tx/counter_s:1"/>
+                    <Sig Type="SIG" Name="tx/counter_s:2"/>
+                    <Sig Type="SIG" Name="tx/counter_s:3"/>
+                    <Sig Type="SIG" Name="tx/counter_s:4"/>
+                    <Sig Type="SIG" Name="tx/counter_s:5"/>
+                    <Sig Type="SIG" Name="tx/counter_s:6"/>
+                    <Sig Type="SIG" Name="tx/counter_s:7"/>
+                    <Sig Type="SIG" Name="tx/counter_s:8"/>
+                    <Sig Type="SIG" Name="tx/counter_s:9"/>
+                    <Sig Type="SIG" Name="tx/counter_s:10"/>
+                    <Sig Type="SIG" Name="tx/counter_s:11"/>
+                    <Sig Type="SIG" Name="tx/counter_s:12"/>
+                    <Sig Type="SIG" Name="tx/counter_s:13"/>
+                    <Sig Type="SIG" Name="tx/counter_s:14"/>
+                    <Sig Type="SIG" Name="tx/counter_s:15"/>
+                    <Sig Type="SIG" Name="tx/counter_s:16"/>
+                    <Sig Type="SIG" Name="tx/counter_s:17"/>
+                    <Sig Type="SIG" Name="tx/counter_s:18"/>
+                    <Sig Type="SIG" Name="tx/counter_s:19"/>
+                    <Sig Type="SIG" Name="tx/counter_s:20"/>
+                    <Sig Type="SIG" Name="tx/counter_s:21"/>
+                    <Sig Type="SIG" Name="tx/counter_s:22"/>
+                    <Sig Type="SIG" Name="tx/counter_s:23"/>
+                    <Sig Type="SIG" Name="tx/counter_s:24"/>
                 </Bus>
-                <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/reset_timer2"/>
-                <Sig Type="SIG" Name="the_sync_link/the_rx_fsm/timer2"/>
             </Trace>
             <Trigger>
-                <TU Serialbits="0" Type="0" ID="1" Sig="the_sync_link/start_timer:18,"/>
-                <TU Serialbits="0" Type="0" ID="2" Sig="the_sync_link/lsm_status,"/>
-                <TU Serialbits="0" Type="0" ID="3" Sig="the_sync_link/rx_error,"/>
-                <TU Serialbits="0" Type="0" ID="4" Sig="the_soda_source/start_of_superburst_s,"/>
-                <TU Serialbits="0" Type="0" ID="5" Sig="the_soda_source/start_calibration_s,"/>
-                <TU Serialbits="0" Type="0" ID="6" Sig="the_sob_source/soda_burst_pulse_out,"/>
+                <TU Serialbits="0" Type="0" ID="1" Sig="the_soda_source/soda_cmd_strobe_sodaclk_s,"/>
+                <TU Serialbits="0" Type="0" ID="2" Sig="the_sync_link/rx_error,"/>
+                <TU Serialbits="0" Type="0" ID="3" Sig="the_soda_source/start_of_superburst_s,"/>
+                <TU Serialbits="0" Type="0" ID="4" Sig="the_soda_source/start_calibration_s,"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="1" Resource="0"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="2" Resource="0"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="3" Resource="0"/>
                 <TE MaxSequence="2" MaxEvnCnt="1" ID="4" Resource="0"/>
-                <TE MaxSequence="2" MaxEvnCnt="1" ID="5" Resource="0"/>
-                <TE MaxSequence="2" MaxEvnCnt="1" ID="6" Resource="0"/>
             </Trigger>
         </Dataset>
     </Core>
index b019b23ecc2da75a60daaf333f037572ad330dbd..784f74b8bdd1aaae9861bf3fa8f2f3cc6dfbdc3f 100644 (file)
@@ -45,8 +45,9 @@
                                <BScanLen>1</BScanLen>
                                <BScanVal>0</BScanVal>
                        </Bypass>
-                       <File>/local/lemmens/lattice/soda/trb3_periph_sodahub_20140624.bit</File>
-                       <FileTime>06/24/14 15:32:11</FileTime>
+                       <File>/local/lemmens/lattice/soda/trb3_periph_sodahub_20140702.bit</File>
+                       <FileTime>07/03/14 15:55:49</FileTime>
+                       <JedecChecksum>N/A</JedecChecksum>
                        <Operation>Fast Program</Operation>
                        <Option>
                                <SVFVendor>JTAG STANDARD</SVFVendor>
@@ -87,7 +88,7 @@
                        </Option>
                </Device>
                <Device>
-                       <SelectedProg value="FALSE"/>
+                       <SelectedProg value="TRUE"/>
                        <Pos>4</Pos>
                        <Vendor>Lattice</Vendor>
                        <Family>LatticeECP3</Family>
                                <BScanLen>1</BScanLen>
                                <BScanVal>0</BScanVal>
                        </Bypass>
+                       <File>/local/lemmens/lattice/soda/trb3_periph_sodaclient_20140624.bit</File>
+                       <FileTime>06/24/14 17:16:05</FileTime>
                        <Operation>Fast Program</Operation>
                        <Option>
                                <SVFVendor>JTAG STANDARD</SVFVendor>
                                <IOState>HighZ</IOState>
+                               <PreloadLength>1326</PreloadLength>
                                <IOVectorData>0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</IOVectorData>
                                <OverideUES value="TRUE"/>
                                <TCKFrequency>1.000000 MHz</TCKFrequency>
                                <SVFProcessor>ispVM</SVFProcessor>
+                               <Usercode>0x00000000</Usercode>
                                <AccessMode>JTAG</AccessMode>
                        </Option>
                </Device>
                                <BScanLen>1</BScanLen>
                                <BScanVal>0</BScanVal>
                        </Bypass>
-                       <File>/local/lemmens/lattice/soda/trb3_periph_sodasource_20140617.bit</File>
-                       <FileTime>06/17/14 15:29:03</FileTime>
+                       <File>/local/lemmens/lattice/soda/trb3_periph_sodasource_20140701.bit</File>
+                       <FileTime>07/01/14 09:40:14</FileTime>
                        <Operation>Fast Program</Operation>
                        <Option>
                                <SVFVendor>JTAG STANDARD</SVFVendor>
index 0fbd435ea669de8acb0e437fea3285ec97846a62..ff002badbc84728fea0a5b1e578dd04d21141c32 100644 (file)
@@ -47,8 +47,8 @@
                                <BScanLen>1</BScanLen>
                                <BScanVal>0</BScanVal>
                        </Bypass>
-                       <File>/local/lemmens/lattice/soda/trb3_periph_sodaclient_20140617.bit</File>
-                       <FileTime>06/17/14 15:26:56</FileTime>
+                       <File>/local/lemmens/lattice/soda/trb3_periph_sodaclient_20140624.bit</File>
+                       <FileTime>06/24/14 17:16:05</FileTime>
                        <Operation>Fast Program</Operation>
                        <Option>
                                <SVFVendor>JTAG STANDARD</SVFVendor>
                                <BScanLen>1</BScanLen>
                                <BScanVal>0</BScanVal>
                        </Bypass>
-                       <File>/local/lemmens/lattice/soda/trb3_periph_sodasource_20140617.bit</File>
-                       <FileTime>06/17/14 15:29:03</FileTime>
+                       <File>/local/lemmens/lattice/soda/trb3_periph_sodasource_20140701.bit</File>
+                       <FileTime>07/01/14 09:40:14</FileTime>
                        <Operation>Fast Program</Operation>
                        <Option>
                                <SVFVendor>JTAG STANDARD</SVFVendor>