/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

//////
/// don't edit! auto-generated by docc: tsp.h
////////////////////////////////////////////////////////////
#ifndef tsp_h
#define tsp_h (){}


#include "ctypes.h"

#pragma pack(1)
#ifdef __cplusplus
  extern "C" {
#endif

#ifndef _DOCC_H_BITOPS_
#define _DOCC_H_BITOPS_ (){}

    #define _bSETMASK_(b)                                      ((b)<32 ? (1<<((b)&31)) : 0)
    #define _NSETMASK_(msb,lsb)                                (_bSETMASK_((msb)+1)-_bSETMASK_(lsb))
    #define _bCLRMASK_(b)                                      (~_bSETMASK_(b))
    #define _NCLRMASK_(msb,lsb)                                (~_NSETMASK_(msb,lsb))
    #define _BFGET_(r,msb,lsb)                                 (_NSETMASK_((msb)-(lsb),0)&((r)>>(lsb)))
    #define _BFSET_(r,msb,lsb,v)                               do{ (r)&=_NCLRMASK_(msb,lsb); (r)|=_NSETMASK_(msb,lsb)&((v)<<(lsb)); }while(0)

#endif



//////
/// 
/// $INTERFACE TSP_HBO_FIFO_ID                          (4,4)
///     ###
///     * FIFO name
///     * FIFO ID
///     * Direction
///     * Consumer/
///     * Producer
///     * description
///     ###
///     # # ----------------------------------------------------------
///               : DS_CMD             0x0
///                            ###
///                            * From DTCM
///                            * Data streamer
///                            * Used by data streamer to load commands from DTCM
///                            ###
///               : TSI0_PKT           0x1
///                            ###
///                            * To DTCM
///                            * TSI0
///                            * Used by TSI0 to save TS packets into DTCM
///                            ###
///               : TSI1_PKT           0x2
///                            ###
///                            * To DTCM
///                            * TSI1
///                            * Used by TSI1 to save TS packets into DTCM
///                            ###
///               : TSI2_PKT           0x3
///                            ###
///                            * To DTCM
///                            * TSI2
///                            * Used by TSI2 to save TS packets into DTCM
///                            ###
///               : TSI3_PKT           0x4
///                            ###
///                            * To DTCM
///                            * TSI3
///                            * Used by TSI3 to save TS packets into DTCM
///                            ###
///               : TSI4_PKT           0x5
///                            ###
///                            * To DTCM
///                            * TSI4
///                            * Used by TSI4 to save TS packets into DTCM
///                            ###
///               : TSO0_PKT           0x6
///                            ###
///                            * From DTCM
///                            * TSO0
///                            * Used by TSO0 to load TS packets from DTCM
///                            ###
///               : TSO1_PKT           0x7
///                            ###
///                            * From DTCM
///                            * TSO1
///                            * Used by TSO1 to load TS packets from DTCM
///                            ###
///               : SF_INPUT           0x8
///                            ###
///                            * From DTCM
///                            * Section filter
///                            * Used by data section filter to load input data from DTCM
///                            ###
///               : SF_OUTPUT          0x9
///                            ###
///                            * To DTCM
///                            * Section filter
///                            * Used by data section filter to save output data into DTCM
///                            ###
///               : CRYPTO_CMD         0xA
///                            ###
///                            * From DTCM
///                            * Crypto engine
///                            * Used by crypto engine to load commands queue 0 from DTCM
///                            ###
///               : CRYPTO_CMD_1       0xB
///                            ###
///                            * From DTCM
///                            * Crypto engine
///                            * Used by crypto engine to load commands queue 1 from DTCM
///                            ###
///               : CRYPTO_CMD_2       0xC
///                            ###
///                            * From DTCM
///                            * Crypto engine
///                            * Used by crypto engine to load commands queue 2 from DTCM
///                            ###
///               : TSI5_PKT           0xD
///                            ###
///                            * To DTCM
///                            * TSI5
///                            * Used by TSI5 to save TS packets into DTCM
///                            ###
///               : TSI6_PKT           0xE
///                            ###
///                            * To DTCM
///                            * TSI6
///                            * Used by TSI6 to save TS packets into DTCM
///                            ###
///               : TSI7_PKT           0xF
///                            ###
///                            * To DTCM
///                            * TSI7
///                            * Used by TSI7 to save TS packets into DTCM
///                            ###
///               : TSI8_PKT           0x10
///                            ###
///                            * To DTCM
///                            * TSI8
///                            * Used by TSI8 to save TS packets into DTCM
///                            ###
///               : SWD_CMD            0x11
///                            ###
///                            * From DTCM
///                            * Sync Word Detection
///                            * Used by sync word detection to load command from DTCM
///                            ###
///               : SWD_RETURN         0x12
///                            ###
///                            * To DTCM
///                            * Sync Word Detection
///                            * Used by sync word detection to write return data into DTCM
///                            ###
///               : TSI9_PKT           0x13
///                            ###
///                            * To DTCM
///                            * TSI9
///                            * Used by TSI8 to save TS packets into DTCM
///                            ###
///               : TSI10_PKT          0x14
///                            ###
///                            * To DTCM
///                            * TSI10
///                            * Used by TSI8 to save TS packets into DTCM
///                            ###
///               : TSI11_PKT          0x15
///                            ###
///                            * To DTCM
///                            * TSI11
///                            * Used by TSI8 to save TS packets into DTCM
///                            ###
///               : TSI12_PKT          0x16
///                            ###
///                            * To DTCM
///                            * TSI12
///                            * Used by TSI8 to save TS packets into DTCM
///                            ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       0B, bits:       0b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TSP_HBO_FIFO_ID
#define h_TSP_HBO_FIFO_ID (){}

    #define        TSP_HBO_FIFO_ID_DS_CMD                      0x0
    #define        TSP_HBO_FIFO_ID_TSI0_PKT                    0x1
    #define        TSP_HBO_FIFO_ID_TSI1_PKT                    0x2
    #define        TSP_HBO_FIFO_ID_TSI2_PKT                    0x3
    #define        TSP_HBO_FIFO_ID_TSI3_PKT                    0x4
    #define        TSP_HBO_FIFO_ID_TSI4_PKT                    0x5
    #define        TSP_HBO_FIFO_ID_TSO0_PKT                    0x6
    #define        TSP_HBO_FIFO_ID_TSO1_PKT                    0x7
    #define        TSP_HBO_FIFO_ID_SF_INPUT                    0x8
    #define        TSP_HBO_FIFO_ID_SF_OUTPUT                   0x9
    #define        TSP_HBO_FIFO_ID_CRYPTO_CMD                  0xA
    #define        TSP_HBO_FIFO_ID_CRYPTO_CMD_1                0xB
    #define        TSP_HBO_FIFO_ID_CRYPTO_CMD_2                0xC
    #define        TSP_HBO_FIFO_ID_TSI5_PKT                    0xD
    #define        TSP_HBO_FIFO_ID_TSI6_PKT                    0xE
    #define        TSP_HBO_FIFO_ID_TSI7_PKT                    0xF
    #define        TSP_HBO_FIFO_ID_TSI8_PKT                    0x10
    #define        TSP_HBO_FIFO_ID_SWD_CMD                     0x11
    #define        TSP_HBO_FIFO_ID_SWD_RETURN                  0x12
    #define        TSP_HBO_FIFO_ID_TSI9_PKT                    0x13
    #define        TSP_HBO_FIFO_ID_TSI10_PKT                   0x14
    #define        TSP_HBO_FIFO_ID_TSI11_PKT                   0x15
    #define        TSP_HBO_FIFO_ID_TSI12_PKT                   0x16
    ///////////////////////////////////////////////////////////

#endif
//////
/// ENDOFINTERFACE: TSP_HBO_FIFO_ID
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspTsiPktInfo           biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 stc_lower                 
///               %unsigned 10 stc_upper                 
///                                    ###
///                                    * Value of the captured STC counter value
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 6  reserved_0                
///               %unsigned 8  pid_id                    
///                                    ###
///                                    * Copied from pid_id field of the matching entry in the PID table
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 1  reserved_1                
///               %unsigned 1  error_async_fifo          
///                                    ###
///                                    * Asynchronous FIFO error. This bit indicates that there is hardware errors related to TSI interface timing.
///                                    ###
///               %unsigned 1  error_on_port             
///                                    ###
///                                    * Port tsError is asserted for this packet.
///                                    ###
///               %unsigned 1  error_sync_byte           
///                                    ###
///                                    * Sync byte of the packet does not match the defined value.
///                                    ###
///               %unsigned 1  error_under_sized         
///                                    ###
///                                    * The packet from TS ports does not content enough bytes as defined.
///                                    ###
///               %unsigned 1  error_data_dropped        
///                                    ###
///                                    * TS data are dropped before this packet because of broken packet structure.
///                                    ###
///               %unsigned 1  error_data_lost           
///                                    ###
///                                    * Overflow happened during the capturing of this packet and some bytes are lost and stuffed with zeros.
///                                    ###
///               %unsigned 1  error_packet_dropped      
///                                    ###
///                                    * Overflow happened before the capturing of this packet and some packets are entirely dropped.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspTsiPktInfo
#define h_TspTsiPktInfo (){}

    #define     BA_TspTsiPktInfo_stc_lower                     0x0000
    #define     B16TspTsiPktInfo_stc_lower                     0x0000
    #define   LSb32TspTsiPktInfo_stc_lower                        0
    #define   LSb16TspTsiPktInfo_stc_lower                        0
    #define       bTspTsiPktInfo_stc_lower                     32
    #define   MSK32TspTsiPktInfo_stc_lower                        0xFFFFFFFF

    #define     BA_TspTsiPktInfo_stc_upper                     0x0004
    #define     B16TspTsiPktInfo_stc_upper                     0x0004
    #define   LSb32TspTsiPktInfo_stc_upper                        0
    #define   LSb16TspTsiPktInfo_stc_upper                        0
    #define       bTspTsiPktInfo_stc_upper                     10
    #define   MSK32TspTsiPktInfo_stc_upper                        0x000003FF

    #define     BA_TspTsiPktInfo_reserved_0                    0x0005
    #define     B16TspTsiPktInfo_reserved_0                    0x0004
    #define   LSb32TspTsiPktInfo_reserved_0                       10
    #define   LSb16TspTsiPktInfo_reserved_0                       10
    #define       bTspTsiPktInfo_reserved_0                    6
    #define   MSK32TspTsiPktInfo_reserved_0                       0x0000FC00

    #define     BA_TspTsiPktInfo_pid_id                        0x0006
    #define     B16TspTsiPktInfo_pid_id                        0x0006
    #define   LSb32TspTsiPktInfo_pid_id                           16
    #define   LSb16TspTsiPktInfo_pid_id                           0
    #define       bTspTsiPktInfo_pid_id                        8
    #define   MSK32TspTsiPktInfo_pid_id                           0x00FF0000

    #define     BA_TspTsiPktInfo_reserved_1                    0x0007
    #define     B16TspTsiPktInfo_reserved_1                    0x0006
    #define   LSb32TspTsiPktInfo_reserved_1                       24
    #define   LSb16TspTsiPktInfo_reserved_1                       8
    #define       bTspTsiPktInfo_reserved_1                    1
    #define   MSK32TspTsiPktInfo_reserved_1                       0x01000000

    #define     BA_TspTsiPktInfo_error_async_fifo              0x0007
    #define     B16TspTsiPktInfo_error_async_fifo              0x0006
    #define   LSb32TspTsiPktInfo_error_async_fifo                 25
    #define   LSb16TspTsiPktInfo_error_async_fifo                 9
    #define       bTspTsiPktInfo_error_async_fifo              1
    #define   MSK32TspTsiPktInfo_error_async_fifo                 0x02000000

    #define     BA_TspTsiPktInfo_error_on_port                 0x0007
    #define     B16TspTsiPktInfo_error_on_port                 0x0006
    #define   LSb32TspTsiPktInfo_error_on_port                    26
    #define   LSb16TspTsiPktInfo_error_on_port                    10
    #define       bTspTsiPktInfo_error_on_port                 1
    #define   MSK32TspTsiPktInfo_error_on_port                    0x04000000

    #define     BA_TspTsiPktInfo_error_sync_byte               0x0007
    #define     B16TspTsiPktInfo_error_sync_byte               0x0006
    #define   LSb32TspTsiPktInfo_error_sync_byte                  27
    #define   LSb16TspTsiPktInfo_error_sync_byte                  11
    #define       bTspTsiPktInfo_error_sync_byte               1
    #define   MSK32TspTsiPktInfo_error_sync_byte                  0x08000000

    #define     BA_TspTsiPktInfo_error_under_sized             0x0007
    #define     B16TspTsiPktInfo_error_under_sized             0x0006
    #define   LSb32TspTsiPktInfo_error_under_sized                28
    #define   LSb16TspTsiPktInfo_error_under_sized                12
    #define       bTspTsiPktInfo_error_under_sized             1
    #define   MSK32TspTsiPktInfo_error_under_sized                0x10000000

    #define     BA_TspTsiPktInfo_error_data_dropped            0x0007
    #define     B16TspTsiPktInfo_error_data_dropped            0x0006
    #define   LSb32TspTsiPktInfo_error_data_dropped               29
    #define   LSb16TspTsiPktInfo_error_data_dropped               13
    #define       bTspTsiPktInfo_error_data_dropped            1
    #define   MSK32TspTsiPktInfo_error_data_dropped               0x20000000

    #define     BA_TspTsiPktInfo_error_data_lost               0x0007
    #define     B16TspTsiPktInfo_error_data_lost               0x0006
    #define   LSb32TspTsiPktInfo_error_data_lost                  30
    #define   LSb16TspTsiPktInfo_error_data_lost                  14
    #define       bTspTsiPktInfo_error_data_lost               1
    #define   MSK32TspTsiPktInfo_error_data_lost                  0x40000000

    #define     BA_TspTsiPktInfo_error_packet_dropped          0x0007
    #define     B16TspTsiPktInfo_error_packet_dropped          0x0006
    #define   LSb32TspTsiPktInfo_error_packet_dropped             31
    #define   LSb16TspTsiPktInfo_error_packet_dropped             15
    #define       bTspTsiPktInfo_error_packet_dropped          1
    #define   MSK32TspTsiPktInfo_error_packet_dropped             0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspTsiPktInfo {
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiPktInfo_stc_lower(r32)                _BFGET_(r32,31, 0)
    #define   SET32TspTsiPktInfo_stc_lower(r32,v)              _BFSET_(r32,31, 0,v)

            UNSG32 u_stc_lower                                 : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32TspTsiPktInfo_stc_upper(r32)                _BFGET_(r32, 9, 0)
    #define   SET32TspTsiPktInfo_stc_upper(r32,v)              _BFSET_(r32, 9, 0,v)
    #define   GET16TspTsiPktInfo_stc_upper(r16)                _BFGET_(r16, 9, 0)
    #define   SET16TspTsiPktInfo_stc_upper(r16,v)              _BFSET_(r16, 9, 0,v)

    #define   GET32TspTsiPktInfo_reserved_0(r32)               _BFGET_(r32,15,10)
    #define   SET32TspTsiPktInfo_reserved_0(r32,v)             _BFSET_(r32,15,10,v)
    #define   GET16TspTsiPktInfo_reserved_0(r16)               _BFGET_(r16,15,10)
    #define   SET16TspTsiPktInfo_reserved_0(r16,v)             _BFSET_(r16,15,10,v)

    #define   GET32TspTsiPktInfo_pid_id(r32)                   _BFGET_(r32,23,16)
    #define   SET32TspTsiPktInfo_pid_id(r32,v)                 _BFSET_(r32,23,16,v)
    #define   GET16TspTsiPktInfo_pid_id(r16)                   _BFGET_(r16, 7, 0)
    #define   SET16TspTsiPktInfo_pid_id(r16,v)                 _BFSET_(r16, 7, 0,v)

    #define   GET32TspTsiPktInfo_reserved_1(r32)               _BFGET_(r32,24,24)
    #define   SET32TspTsiPktInfo_reserved_1(r32,v)             _BFSET_(r32,24,24,v)
    #define   GET16TspTsiPktInfo_reserved_1(r16)               _BFGET_(r16, 8, 8)
    #define   SET16TspTsiPktInfo_reserved_1(r16,v)             _BFSET_(r16, 8, 8,v)

    #define   GET32TspTsiPktInfo_error_async_fifo(r32)         _BFGET_(r32,25,25)
    #define   SET32TspTsiPktInfo_error_async_fifo(r32,v)       _BFSET_(r32,25,25,v)
    #define   GET16TspTsiPktInfo_error_async_fifo(r16)         _BFGET_(r16, 9, 9)
    #define   SET16TspTsiPktInfo_error_async_fifo(r16,v)       _BFSET_(r16, 9, 9,v)

    #define   GET32TspTsiPktInfo_error_on_port(r32)            _BFGET_(r32,26,26)
    #define   SET32TspTsiPktInfo_error_on_port(r32,v)          _BFSET_(r32,26,26,v)
    #define   GET16TspTsiPktInfo_error_on_port(r16)            _BFGET_(r16,10,10)
    #define   SET16TspTsiPktInfo_error_on_port(r16,v)          _BFSET_(r16,10,10,v)

    #define   GET32TspTsiPktInfo_error_sync_byte(r32)          _BFGET_(r32,27,27)
    #define   SET32TspTsiPktInfo_error_sync_byte(r32,v)        _BFSET_(r32,27,27,v)
    #define   GET16TspTsiPktInfo_error_sync_byte(r16)          _BFGET_(r16,11,11)
    #define   SET16TspTsiPktInfo_error_sync_byte(r16,v)        _BFSET_(r16,11,11,v)

    #define   GET32TspTsiPktInfo_error_under_sized(r32)        _BFGET_(r32,28,28)
    #define   SET32TspTsiPktInfo_error_under_sized(r32,v)      _BFSET_(r32,28,28,v)
    #define   GET16TspTsiPktInfo_error_under_sized(r16)        _BFGET_(r16,12,12)
    #define   SET16TspTsiPktInfo_error_under_sized(r16,v)      _BFSET_(r16,12,12,v)

    #define   GET32TspTsiPktInfo_error_data_dropped(r32)       _BFGET_(r32,29,29)
    #define   SET32TspTsiPktInfo_error_data_dropped(r32,v)     _BFSET_(r32,29,29,v)
    #define   GET16TspTsiPktInfo_error_data_dropped(r16)       _BFGET_(r16,13,13)
    #define   SET16TspTsiPktInfo_error_data_dropped(r16,v)     _BFSET_(r16,13,13,v)

    #define   GET32TspTsiPktInfo_error_data_lost(r32)          _BFGET_(r32,30,30)
    #define   SET32TspTsiPktInfo_error_data_lost(r32,v)        _BFSET_(r32,30,30,v)
    #define   GET16TspTsiPktInfo_error_data_lost(r16)          _BFGET_(r16,14,14)
    #define   SET16TspTsiPktInfo_error_data_lost(r16,v)        _BFSET_(r16,14,14,v)

    #define   GET32TspTsiPktInfo_error_packet_dropped(r32)     _BFGET_(r32,31,31)
    #define   SET32TspTsiPktInfo_error_packet_dropped(r32,v)   _BFSET_(r32,31,31,v)
    #define   GET16TspTsiPktInfo_error_packet_dropped(r16)     _BFGET_(r16,15,15)
    #define   SET16TspTsiPktInfo_error_packet_dropped(r16,v)   _BFSET_(r16,15,15,v)

            UNSG32 u_stc_upper                                 : 10;
            UNSG32 u_reserved_0                                :  6;
            UNSG32 u_pid_id                                    :  8;
            UNSG32 u_reserved_1                                :  1;
            UNSG32 u_error_async_fifo                          :  1;
            UNSG32 u_error_on_port                             :  1;
            UNSG32 u_error_sync_byte                           :  1;
            UNSG32 u_error_under_sized                         :  1;
            UNSG32 u_error_data_dropped                        :  1;
            UNSG32 u_error_data_lost                           :  1;
            UNSG32 u_error_packet_dropped                      :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TspTsiPktInfo;

    ///////////////////////////////////////////////////////////
     SIGN32 TspTsiPktInfo_drvrd(SIE_TspTsiPktInfo *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspTsiPktInfo_drvwr(SIE_TspTsiPktInfo *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspTsiPktInfo_reset(SIE_TspTsiPktInfo *p);
     SIGN32 TspTsiPktInfo_cmp  (SIE_TspTsiPktInfo *p, SIE_TspTsiPktInfo *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspTsiPktInfo_check(p,pie,pfx,hLOG) TspTsiPktInfo_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspTsiPktInfo_print(p,    pfx,hLOG) TspTsiPktInfo_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspTsiPktInfo
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspPidTbl               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  last                      
///                                    ###
///                                    * 1: this is the last entry of the PID table
///                                    * 0: jump to next entry of PID table after finishing this one.
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 1  match_enable              
///                                    ###
///                                    * 1: Enable pid and/or ltsid matching for this entry.
///                                    * 0: Disable matching; this entry will not match any packet. last and next field are still valid, PID filter will go to next entry if last bit is not set.
///                                    *  
///                                    ###
///               %unsigned 1  match_ltsid               
///               %unsigned 1  match_pid                 
///                                    ###
///                                    * When match_ltsid is one and match_pid is zero, all packets with matching LTSID will be captured, regardless of their PID value.
///                                    * When match_ltsid is zero and match_pid is one, all packets with matching PID will be captured, regardless of their LTSID value.
///                                    * When both match_ltsid and match_pid are one, only packets that match both ltsid and pid will be captured.
///                                    * When both match_ltsid and match_pid are zero, all packets will be captured regardless of their PID and LTSID value.
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 1  stc_select                
///                                    ###
///                                    * 0: capture STC counter driven by stcClk0
///                                    * 1: capture STC counter driven by stcClk1
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 3  reserved_0                
///               %unsigned 8  ltsid                     
///                                    ###
///                                    * ltsid value
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 13 pid                       
///                                    ###
///                                    * PID value
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 3  reserved_1                
///               %unsigned 8  next                      
///                                    ###
///                                    * Address of the next PID table entry
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 8  pid_id                    
///                                    ###
///                                    * In case a packet match with this entry, TSI will save the value in this field into the packet info.
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 16 reserved_2                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspPidTbl
#define h_TspPidTbl (){}

    #define     BA_TspPidTbl_last                              0x0000
    #define     B16TspPidTbl_last                              0x0000
    #define   LSb32TspPidTbl_last                                 0
    #define   LSb16TspPidTbl_last                                 0
    #define       bTspPidTbl_last                              1
    #define   MSK32TspPidTbl_last                                 0x00000001

    #define     BA_TspPidTbl_match_enable                      0x0000
    #define     B16TspPidTbl_match_enable                      0x0000
    #define   LSb32TspPidTbl_match_enable                         1
    #define   LSb16TspPidTbl_match_enable                         1
    #define       bTspPidTbl_match_enable                      1
    #define   MSK32TspPidTbl_match_enable                         0x00000002

    #define     BA_TspPidTbl_match_ltsid                       0x0000
    #define     B16TspPidTbl_match_ltsid                       0x0000
    #define   LSb32TspPidTbl_match_ltsid                          2
    #define   LSb16TspPidTbl_match_ltsid                          2
    #define       bTspPidTbl_match_ltsid                       1
    #define   MSK32TspPidTbl_match_ltsid                          0x00000004

    #define     BA_TspPidTbl_match_pid                         0x0000
    #define     B16TspPidTbl_match_pid                         0x0000
    #define   LSb32TspPidTbl_match_pid                            3
    #define   LSb16TspPidTbl_match_pid                            3
    #define       bTspPidTbl_match_pid                         1
    #define   MSK32TspPidTbl_match_pid                            0x00000008

    #define     BA_TspPidTbl_stc_select                        0x0000
    #define     B16TspPidTbl_stc_select                        0x0000
    #define   LSb32TspPidTbl_stc_select                           4
    #define   LSb16TspPidTbl_stc_select                           4
    #define       bTspPidTbl_stc_select                        1
    #define   MSK32TspPidTbl_stc_select                           0x00000010

    #define     BA_TspPidTbl_reserved_0                        0x0000
    #define     B16TspPidTbl_reserved_0                        0x0000
    #define   LSb32TspPidTbl_reserved_0                           5
    #define   LSb16TspPidTbl_reserved_0                           5
    #define       bTspPidTbl_reserved_0                        3
    #define   MSK32TspPidTbl_reserved_0                           0x000000E0

    #define     BA_TspPidTbl_ltsid                             0x0001
    #define     B16TspPidTbl_ltsid                             0x0000
    #define   LSb32TspPidTbl_ltsid                                8
    #define   LSb16TspPidTbl_ltsid                                8
    #define       bTspPidTbl_ltsid                             8
    #define   MSK32TspPidTbl_ltsid                                0x0000FF00

    #define     BA_TspPidTbl_pid                               0x0002
    #define     B16TspPidTbl_pid                               0x0002
    #define   LSb32TspPidTbl_pid                                  16
    #define   LSb16TspPidTbl_pid                                  0
    #define       bTspPidTbl_pid                               13
    #define   MSK32TspPidTbl_pid                                  0x1FFF0000

    #define     BA_TspPidTbl_reserved_1                        0x0003
    #define     B16TspPidTbl_reserved_1                        0x0002
    #define   LSb32TspPidTbl_reserved_1                           29
    #define   LSb16TspPidTbl_reserved_1                           13
    #define       bTspPidTbl_reserved_1                        3
    #define   MSK32TspPidTbl_reserved_1                           0xE0000000

    #define     BA_TspPidTbl_next                              0x0004
    #define     B16TspPidTbl_next                              0x0004
    #define   LSb32TspPidTbl_next                                 0
    #define   LSb16TspPidTbl_next                                 0
    #define       bTspPidTbl_next                              8
    #define   MSK32TspPidTbl_next                                 0x000000FF

    #define     BA_TspPidTbl_pid_id                            0x0005
    #define     B16TspPidTbl_pid_id                            0x0004
    #define   LSb32TspPidTbl_pid_id                               8
    #define   LSb16TspPidTbl_pid_id                               8
    #define       bTspPidTbl_pid_id                            8
    #define   MSK32TspPidTbl_pid_id                               0x0000FF00

    #define     BA_TspPidTbl_reserved_2                        0x0006
    #define     B16TspPidTbl_reserved_2                        0x0006
    #define   LSb32TspPidTbl_reserved_2                           16
    #define   LSb16TspPidTbl_reserved_2                           0
    #define       bTspPidTbl_reserved_2                        16
    #define   MSK32TspPidTbl_reserved_2                           0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspPidTbl {
    ///////////////////////////////////////////////////////////
    #define   GET32TspPidTbl_last(r32)                         _BFGET_(r32, 0, 0)
    #define   SET32TspPidTbl_last(r32,v)                       _BFSET_(r32, 0, 0,v)
    #define   GET16TspPidTbl_last(r16)                         _BFGET_(r16, 0, 0)
    #define   SET16TspPidTbl_last(r16,v)                       _BFSET_(r16, 0, 0,v)

    #define   GET32TspPidTbl_match_enable(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32TspPidTbl_match_enable(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16TspPidTbl_match_enable(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16TspPidTbl_match_enable(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32TspPidTbl_match_ltsid(r32)                  _BFGET_(r32, 2, 2)
    #define   SET32TspPidTbl_match_ltsid(r32,v)                _BFSET_(r32, 2, 2,v)
    #define   GET16TspPidTbl_match_ltsid(r16)                  _BFGET_(r16, 2, 2)
    #define   SET16TspPidTbl_match_ltsid(r16,v)                _BFSET_(r16, 2, 2,v)

    #define   GET32TspPidTbl_match_pid(r32)                    _BFGET_(r32, 3, 3)
    #define   SET32TspPidTbl_match_pid(r32,v)                  _BFSET_(r32, 3, 3,v)
    #define   GET16TspPidTbl_match_pid(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16TspPidTbl_match_pid(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32TspPidTbl_stc_select(r32)                   _BFGET_(r32, 4, 4)
    #define   SET32TspPidTbl_stc_select(r32,v)                 _BFSET_(r32, 4, 4,v)
    #define   GET16TspPidTbl_stc_select(r16)                   _BFGET_(r16, 4, 4)
    #define   SET16TspPidTbl_stc_select(r16,v)                 _BFSET_(r16, 4, 4,v)

    #define   GET32TspPidTbl_reserved_0(r32)                   _BFGET_(r32, 7, 5)
    #define   SET32TspPidTbl_reserved_0(r32,v)                 _BFSET_(r32, 7, 5,v)
    #define   GET16TspPidTbl_reserved_0(r16)                   _BFGET_(r16, 7, 5)
    #define   SET16TspPidTbl_reserved_0(r16,v)                 _BFSET_(r16, 7, 5,v)

    #define   GET32TspPidTbl_ltsid(r32)                        _BFGET_(r32,15, 8)
    #define   SET32TspPidTbl_ltsid(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16TspPidTbl_ltsid(r16)                        _BFGET_(r16,15, 8)
    #define   SET16TspPidTbl_ltsid(r16,v)                      _BFSET_(r16,15, 8,v)

    #define   GET32TspPidTbl_pid(r32)                          _BFGET_(r32,28,16)
    #define   SET32TspPidTbl_pid(r32,v)                        _BFSET_(r32,28,16,v)
    #define   GET16TspPidTbl_pid(r16)                          _BFGET_(r16,12, 0)
    #define   SET16TspPidTbl_pid(r16,v)                        _BFSET_(r16,12, 0,v)

    #define   GET32TspPidTbl_reserved_1(r32)                   _BFGET_(r32,31,29)
    #define   SET32TspPidTbl_reserved_1(r32,v)                 _BFSET_(r32,31,29,v)
    #define   GET16TspPidTbl_reserved_1(r16)                   _BFGET_(r16,15,13)
    #define   SET16TspPidTbl_reserved_1(r16,v)                 _BFSET_(r16,15,13,v)

            UNSG32 u_last                                      :  1;
            UNSG32 u_match_enable                              :  1;
            UNSG32 u_match_ltsid                               :  1;
            UNSG32 u_match_pid                                 :  1;
            UNSG32 u_stc_select                                :  1;
            UNSG32 u_reserved_0                                :  3;
            UNSG32 u_ltsid                                     :  8;
            UNSG32 u_pid                                       : 13;
            UNSG32 u_reserved_1                                :  3;
    ///////////////////////////////////////////////////////////

    #define   GET32TspPidTbl_next(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32TspPidTbl_next(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16TspPidTbl_next(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16TspPidTbl_next(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define   GET32TspPidTbl_pid_id(r32)                       _BFGET_(r32,15, 8)
    #define   SET32TspPidTbl_pid_id(r32,v)                     _BFSET_(r32,15, 8,v)
    #define   GET16TspPidTbl_pid_id(r16)                       _BFGET_(r16,15, 8)
    #define   SET16TspPidTbl_pid_id(r16,v)                     _BFSET_(r16,15, 8,v)

    #define   GET32TspPidTbl_reserved_2(r32)                   _BFGET_(r32,31,16)
    #define   SET32TspPidTbl_reserved_2(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16TspPidTbl_reserved_2(r16)                   _BFGET_(r16,15, 0)
    #define   SET16TspPidTbl_reserved_2(r16,v)                 _BFSET_(r16,15, 0,v)

            UNSG32 u_next                                      :  8;
            UNSG32 u_pid_id                                    :  8;
            UNSG32 u_reserved_2                                : 16;
    ///////////////////////////////////////////////////////////
    } SIE_TspPidTbl;

    ///////////////////////////////////////////////////////////
     SIGN32 TspPidTbl_drvrd(SIE_TspPidTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspPidTbl_drvwr(SIE_TspPidTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspPidTbl_reset(SIE_TspPidTbl *p);
     SIGN32 TspPidTbl_cmp  (SIE_TspPidTbl *p, SIE_TspPidTbl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspPidTbl_check(p,pie,pfx,hLOG) TspPidTbl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspPidTbl_print(p,    pfx,hLOG) TspPidTbl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspPidTbl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSecCmd               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 13 PID                       0x0
///               %unsigned 3  TSID                      0x0
///               %unsigned 8  TID                       0x0
///               %unsigned 1  MATCH                     0x0
///                                    ###
///                                    * not used in TSC, will be set by section filter
///                                    *  
///                                    *  
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 7  FLTID                     0x0
///                                    ###
///                                    * indicates the ID of matched section filter ID
///                                    *  
///                                    *  
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSecCmd
#define h_TspSecCmd (){}

    #define     BA_TspSecCmd_PID                               0x0000
    #define     B16TspSecCmd_PID                               0x0000
    #define   LSb32TspSecCmd_PID                                  0
    #define   LSb16TspSecCmd_PID                                  0
    #define       bTspSecCmd_PID                               13
    #define   MSK32TspSecCmd_PID                                  0x00001FFF

    #define     BA_TspSecCmd_TSID                              0x0001
    #define     B16TspSecCmd_TSID                              0x0000
    #define   LSb32TspSecCmd_TSID                                 13
    #define   LSb16TspSecCmd_TSID                                 13
    #define       bTspSecCmd_TSID                              3
    #define   MSK32TspSecCmd_TSID                                 0x0000E000

    #define     BA_TspSecCmd_TID                               0x0002
    #define     B16TspSecCmd_TID                               0x0002
    #define   LSb32TspSecCmd_TID                                  16
    #define   LSb16TspSecCmd_TID                                  0
    #define       bTspSecCmd_TID                               8
    #define   MSK32TspSecCmd_TID                                  0x00FF0000

    #define     BA_TspSecCmd_MATCH                             0x0003
    #define     B16TspSecCmd_MATCH                             0x0002
    #define   LSb32TspSecCmd_MATCH                                24
    #define   LSb16TspSecCmd_MATCH                                8
    #define       bTspSecCmd_MATCH                             1
    #define   MSK32TspSecCmd_MATCH                                0x01000000

    #define     BA_TspSecCmd_FLTID                             0x0003
    #define     B16TspSecCmd_FLTID                             0x0002
    #define   LSb32TspSecCmd_FLTID                                25
    #define   LSb16TspSecCmd_FLTID                                9
    #define       bTspSecCmd_FLTID                             7
    #define   MSK32TspSecCmd_FLTID                                0xFE000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSecCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecCmd_PID(r32)                          _BFGET_(r32,12, 0)
    #define   SET32TspSecCmd_PID(r32,v)                        _BFSET_(r32,12, 0,v)
    #define   GET16TspSecCmd_PID(r16)                          _BFGET_(r16,12, 0)
    #define   SET16TspSecCmd_PID(r16,v)                        _BFSET_(r16,12, 0,v)

    #define   GET32TspSecCmd_TSID(r32)                         _BFGET_(r32,15,13)
    #define   SET32TspSecCmd_TSID(r32,v)                       _BFSET_(r32,15,13,v)
    #define   GET16TspSecCmd_TSID(r16)                         _BFGET_(r16,15,13)
    #define   SET16TspSecCmd_TSID(r16,v)                       _BFSET_(r16,15,13,v)

    #define   GET32TspSecCmd_TID(r32)                          _BFGET_(r32,23,16)
    #define   SET32TspSecCmd_TID(r32,v)                        _BFSET_(r32,23,16,v)
    #define   GET16TspSecCmd_TID(r16)                          _BFGET_(r16, 7, 0)
    #define   SET16TspSecCmd_TID(r16,v)                        _BFSET_(r16, 7, 0,v)

    #define   GET32TspSecCmd_MATCH(r32)                        _BFGET_(r32,24,24)
    #define   SET32TspSecCmd_MATCH(r32,v)                      _BFSET_(r32,24,24,v)
    #define   GET16TspSecCmd_MATCH(r16)                        _BFGET_(r16, 8, 8)
    #define   SET16TspSecCmd_MATCH(r16,v)                      _BFSET_(r16, 8, 8,v)

    #define   GET32TspSecCmd_FLTID(r32)                        _BFGET_(r32,31,25)
    #define   SET32TspSecCmd_FLTID(r32,v)                      _BFSET_(r32,31,25,v)
    #define   GET16TspSecCmd_FLTID(r16)                        _BFGET_(r16,15, 9)
    #define   SET16TspSecCmd_FLTID(r16,v)                      _BFSET_(r16,15, 9,v)

            UNSG32 u_PID                                       : 13;
            UNSG32 u_TSID                                      :  3;
            UNSG32 u_TID                                       :  8;
            UNSG32 u_MATCH                                     :  1;
            UNSG32 u_FLTID                                     :  7;
    ///////////////////////////////////////////////////////////
    } SIE_TspSecCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSecCmd_drvrd(SIE_TspSecCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSecCmd_drvwr(SIE_TspSecCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSecCmd_reset(SIE_TspSecCmd *p);
     SIGN32 TspSecCmd_cmp  (SIE_TspSecCmd *p, SIE_TspSecCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSecCmd_check(p,pie,pfx,hLOG) TspSecCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSecCmd_print(p,    pfx,hLOG) TspSecCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSecCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSecFilter                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 HDR0                 (P)
///               %unsigned 1  ONESHOT                   0x0
///                                    ###
///                                    * enable one shot filtering
///                                    *  
///                                    *  
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 1  PIDCHECKEN                0x0
///                                    ###
///                                    * match PID before section filter
///                                    *  
///                                    *  
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 1  TIDCHECKEN                0x0
///                                    ###
///                                    * match the TID before section filter
///                                    *  
///                                    *  
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 11 RULEID                    0x0
///                                    ###
///                                    * pointer to the next RULE
///                                    *  
///                                    *  
///                                    ###
///               %%        18         # Stuffing bits...
///     @ 0x00004 HDR1                 (P)
///               %unsigned 16 EXTPID                    0x0
///                                    ###
///                                    * This bit field is used to match with the incoming TSCmdTSC.{TSID,PID}, section filter will only active when EXTPID matches
///                                    *  
///                                    *  
///                                    ###
///               %unsigned 8  TID                       0x0
///                                    ###
///                                    * table ID to be matched
///                                    *  
///                                    *  
///                                    ###
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      38b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSecFilter
#define h_TspSecFilter (){}

    #define     RA_TspSecFilter_HDR0                           0x0000

    #define     BA_TspSecFilter_HDR0_ONESHOT                   0x0000
    #define     B16TspSecFilter_HDR0_ONESHOT                   0x0000
    #define   LSb32TspSecFilter_HDR0_ONESHOT                      0
    #define   LSb16TspSecFilter_HDR0_ONESHOT                      0
    #define       bTspSecFilter_HDR0_ONESHOT                   1
    #define   MSK32TspSecFilter_HDR0_ONESHOT                      0x00000001

    #define     BA_TspSecFilter_HDR0_PIDCHECKEN                0x0000
    #define     B16TspSecFilter_HDR0_PIDCHECKEN                0x0000
    #define   LSb32TspSecFilter_HDR0_PIDCHECKEN                   1
    #define   LSb16TspSecFilter_HDR0_PIDCHECKEN                   1
    #define       bTspSecFilter_HDR0_PIDCHECKEN                1
    #define   MSK32TspSecFilter_HDR0_PIDCHECKEN                   0x00000002

    #define     BA_TspSecFilter_HDR0_TIDCHECKEN                0x0000
    #define     B16TspSecFilter_HDR0_TIDCHECKEN                0x0000
    #define   LSb32TspSecFilter_HDR0_TIDCHECKEN                   2
    #define   LSb16TspSecFilter_HDR0_TIDCHECKEN                   2
    #define       bTspSecFilter_HDR0_TIDCHECKEN                1
    #define   MSK32TspSecFilter_HDR0_TIDCHECKEN                   0x00000004

    #define     BA_TspSecFilter_HDR0_RULEID                    0x0000
    #define     B16TspSecFilter_HDR0_RULEID                    0x0000
    #define   LSb32TspSecFilter_HDR0_RULEID                       3
    #define   LSb16TspSecFilter_HDR0_RULEID                       3
    #define       bTspSecFilter_HDR0_RULEID                    11
    #define   MSK32TspSecFilter_HDR0_RULEID                       0x00003FF8
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecFilter_HDR1                           0x0004

    #define     BA_TspSecFilter_HDR1_EXTPID                    0x0004
    #define     B16TspSecFilter_HDR1_EXTPID                    0x0004
    #define   LSb32TspSecFilter_HDR1_EXTPID                       0
    #define   LSb16TspSecFilter_HDR1_EXTPID                       0
    #define       bTspSecFilter_HDR1_EXTPID                    16
    #define   MSK32TspSecFilter_HDR1_EXTPID                       0x0000FFFF

    #define     BA_TspSecFilter_HDR1_TID                       0x0006
    #define     B16TspSecFilter_HDR1_TID                       0x0006
    #define   LSb32TspSecFilter_HDR1_TID                          16
    #define   LSb16TspSecFilter_HDR1_TID                          0
    #define       bTspSecFilter_HDR1_TID                       8
    #define   MSK32TspSecFilter_HDR1_TID                          0x00FF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSecFilter {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecFilter_HDR0_ONESHOT(r32)              _BFGET_(r32, 0, 0)
    #define   SET32TspSecFilter_HDR0_ONESHOT(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16TspSecFilter_HDR0_ONESHOT(r16)              _BFGET_(r16, 0, 0)
    #define   SET16TspSecFilter_HDR0_ONESHOT(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32TspSecFilter_HDR0_PIDCHECKEN(r32)           _BFGET_(r32, 1, 1)
    #define   SET32TspSecFilter_HDR0_PIDCHECKEN(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16TspSecFilter_HDR0_PIDCHECKEN(r16)           _BFGET_(r16, 1, 1)
    #define   SET16TspSecFilter_HDR0_PIDCHECKEN(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32TspSecFilter_HDR0_TIDCHECKEN(r32)           _BFGET_(r32, 2, 2)
    #define   SET32TspSecFilter_HDR0_TIDCHECKEN(r32,v)         _BFSET_(r32, 2, 2,v)
    #define   GET16TspSecFilter_HDR0_TIDCHECKEN(r16)           _BFGET_(r16, 2, 2)
    #define   SET16TspSecFilter_HDR0_TIDCHECKEN(r16,v)         _BFSET_(r16, 2, 2,v)

    #define   GET32TspSecFilter_HDR0_RULEID(r32)               _BFGET_(r32,13, 3)
    #define   SET32TspSecFilter_HDR0_RULEID(r32,v)             _BFSET_(r32,13, 3,v)
    #define   GET16TspSecFilter_HDR0_RULEID(r16)               _BFGET_(r16,13, 3)
    #define   SET16TspSecFilter_HDR0_RULEID(r16,v)             _BFSET_(r16,13, 3,v)

    #define     w32TspSecFilter_HDR0                           {\
            UNSG32 uHDR0_ONESHOT                               :  1;\
            UNSG32 uHDR0_PIDCHECKEN                            :  1;\
            UNSG32 uHDR0_TIDCHECKEN                            :  1;\
            UNSG32 uHDR0_RULEID                                : 11;\
            UNSG32 RSVDx0_b14                                  : 18;\
          }
    union { UNSG32 u32TspSecFilter_HDR0;
            struct w32TspSecFilter_HDR0;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecFilter_HDR1_EXTPID(r32)               _BFGET_(r32,15, 0)
    #define   SET32TspSecFilter_HDR1_EXTPID(r32,v)             _BFSET_(r32,15, 0,v)
    #define   GET16TspSecFilter_HDR1_EXTPID(r16)               _BFGET_(r16,15, 0)
    #define   SET16TspSecFilter_HDR1_EXTPID(r16,v)             _BFSET_(r16,15, 0,v)

    #define   GET32TspSecFilter_HDR1_TID(r32)                  _BFGET_(r32,23,16)
    #define   SET32TspSecFilter_HDR1_TID(r32,v)                _BFSET_(r32,23,16,v)
    #define   GET16TspSecFilter_HDR1_TID(r16)                  _BFGET_(r16, 7, 0)
    #define   SET16TspSecFilter_HDR1_TID(r16,v)                _BFSET_(r16, 7, 0,v)

    #define     w32TspSecFilter_HDR1                           {\
            UNSG32 uHDR1_EXTPID                                : 16;\
            UNSG32 uHDR1_TID                                   :  8;\
            UNSG32 RSVDx4_b24                                  :  8;\
          }
    union { UNSG32 u32TspSecFilter_HDR1;
            struct w32TspSecFilter_HDR1;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspSecFilter;

    typedef union  T32TspSecFilter_HDR0
          { UNSG32 u32;
            struct w32TspSecFilter_HDR0;
                 } T32TspSecFilter_HDR0;
    typedef union  T32TspSecFilter_HDR1
          { UNSG32 u32;
            struct w32TspSecFilter_HDR1;
                 } T32TspSecFilter_HDR1;
    ///////////////////////////////////////////////////////////

    typedef union  TTspSecFilter_HDR0
          { UNSG32 u32[1];
            struct {
            struct w32TspSecFilter_HDR0;
                   };
                 } TTspSecFilter_HDR0;
    typedef union  TTspSecFilter_HDR1
          { UNSG32 u32[1];
            struct {
            struct w32TspSecFilter_HDR1;
                   };
                 } TTspSecFilter_HDR1;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSecFilter_drvrd(SIE_TspSecFilter *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSecFilter_drvwr(SIE_TspSecFilter *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSecFilter_reset(SIE_TspSecFilter *p);
     SIGN32 TspSecFilter_cmp  (SIE_TspSecFilter *p, SIE_TspSecFilter *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSecFilter_check(p,pie,pfx,hLOG) TspSecFilter_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSecFilter_print(p,    pfx,hLOG) TspSecFilter_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSecFilter
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSecRule              biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CTRL                 (P)
///               %unsigned 5  BYTEOFFSET                
///                                    ###
///                                    * byte offset into the section data the exact and range match is applied to
///                                    ###
///               %unsigned 3  BITOFFSET                 
///                                    ###
///                                    * bit offset within first byte the range comparison is applied, this field is ignored when MODE!=RANGE
///                                    ###
///               %unsigned 1  STOPONMISS                
///               %unsigned 1  LAST                      
///               %unsigned 11 NXT                       
///               %unsigned 2  MODE                      
///                                    : INRANGE                   0x0
///                                    : OUTRANGE                  0x1
///                                    : PMATCH                    0x2
///                                                 ###
///                                                 * Section data are direct used to match with pattern
///                                                 ###
///                                    : NMATCH                    0x3
///                                                 ###
///                                                 * Section data are negated before match
///                                                 ###
///               %unsigned 4  LEN                       
///                                    ###
///                                    * if mode = RANGE, this field is ignored ; else, it indicates length of the match filter in DW
///                                    ###
///               %%        5          # Stuffing bits...
///     @ 0x00004 MINMASK              (P)
///               %unsigned 32 VALUE                     
///     @ 0x00008 MAXCOEFF1DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x0000C MAXCOEFF2DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x00010 MAXCOEFF3DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x00014 MAXCOEFF4DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x00018 MAXCOEFF5DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x0001C MAXCOEFF6DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x00020 MAXCOEFF7DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x00024 MAXCOEFF8DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x00028 MAXCOEFF9DW          (P)
///               %unsigned 32 VALUE                     
///     @ 0x0002C MAXCOEFF10DW         (P)
///               %unsigned 32 VALUE                     
///     @ 0x00030 MAXCOEFF11DW         (P)
///               %unsigned 32 VALUE                     
///     @ 0x00034 MAXCOEFF12DW         (P)
///               %unsigned 32 VALUE                     
///     @ 0x00038 MAXCOEFF13DW         (P)
///               %unsigned 32 VALUE                     
///     @ 0x0003C MAXCOEFF14DW         (P)
///               %unsigned 32 VALUE                     
///     @ 0x00040 MAXCOEFF15DW         (P)
///               %unsigned 32 VALUE                     
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      68B, bits:     539b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSecRule
#define h_TspSecRule (){}

    #define     RA_TspSecRule_CTRL                             0x0000

    #define     BA_TspSecRule_CTRL_BYTEOFFSET                  0x0000
    #define     B16TspSecRule_CTRL_BYTEOFFSET                  0x0000
    #define   LSb32TspSecRule_CTRL_BYTEOFFSET                     0
    #define   LSb16TspSecRule_CTRL_BYTEOFFSET                     0
    #define       bTspSecRule_CTRL_BYTEOFFSET                  5
    #define   MSK32TspSecRule_CTRL_BYTEOFFSET                     0x0000001F

    #define     BA_TspSecRule_CTRL_BITOFFSET                   0x0000
    #define     B16TspSecRule_CTRL_BITOFFSET                   0x0000
    #define   LSb32TspSecRule_CTRL_BITOFFSET                      5
    #define   LSb16TspSecRule_CTRL_BITOFFSET                      5
    #define       bTspSecRule_CTRL_BITOFFSET                   3
    #define   MSK32TspSecRule_CTRL_BITOFFSET                      0x000000E0

    #define     BA_TspSecRule_CTRL_STOPONMISS                  0x0001
    #define     B16TspSecRule_CTRL_STOPONMISS                  0x0000
    #define   LSb32TspSecRule_CTRL_STOPONMISS                     8
    #define   LSb16TspSecRule_CTRL_STOPONMISS                     8
    #define       bTspSecRule_CTRL_STOPONMISS                  1
    #define   MSK32TspSecRule_CTRL_STOPONMISS                     0x00000100

    #define     BA_TspSecRule_CTRL_LAST                        0x0001
    #define     B16TspSecRule_CTRL_LAST                        0x0000
    #define   LSb32TspSecRule_CTRL_LAST                           9
    #define   LSb16TspSecRule_CTRL_LAST                           9
    #define       bTspSecRule_CTRL_LAST                        1
    #define   MSK32TspSecRule_CTRL_LAST                           0x00000200

    #define     BA_TspSecRule_CTRL_NXT                         0x0001
    #define     B16TspSecRule_CTRL_NXT                         0x0000
    #define   LSb32TspSecRule_CTRL_NXT                            10
    #define   LSb16TspSecRule_CTRL_NXT                            10
    #define       bTspSecRule_CTRL_NXT                         11
    #define   MSK32TspSecRule_CTRL_NXT                            0x001FFC00

    #define     BA_TspSecRule_CTRL_MODE                        0x0002
    #define     B16TspSecRule_CTRL_MODE                        0x0002
    #define   LSb32TspSecRule_CTRL_MODE                           21
    #define   LSb16TspSecRule_CTRL_MODE                           5
    #define       bTspSecRule_CTRL_MODE                        2
    #define   MSK32TspSecRule_CTRL_MODE                           0x00600000
    #define        TspSecRule_CTRL_MODE_INRANGE                             0x0
    #define        TspSecRule_CTRL_MODE_OUTRANGE                            0x1
    #define        TspSecRule_CTRL_MODE_PMATCH                              0x2
    #define        TspSecRule_CTRL_MODE_NMATCH                              0x3

    #define     BA_TspSecRule_CTRL_LEN                         0x0002
    #define     B16TspSecRule_CTRL_LEN                         0x0002
    #define   LSb32TspSecRule_CTRL_LEN                            23
    #define   LSb16TspSecRule_CTRL_LEN                            7
    #define       bTspSecRule_CTRL_LEN                         4
    #define   MSK32TspSecRule_CTRL_LEN                            0x07800000
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MINMASK                          0x0004

    #define     BA_TspSecRule_MINMASK_VALUE                    0x0004
    #define     B16TspSecRule_MINMASK_VALUE                    0x0004
    #define   LSb32TspSecRule_MINMASK_VALUE                       0
    #define   LSb16TspSecRule_MINMASK_VALUE                       0
    #define       bTspSecRule_MINMASK_VALUE                    32
    #define   MSK32TspSecRule_MINMASK_VALUE                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF1DW                      0x0008

    #define     BA_TspSecRule_MAXCOEFF1DW_VALUE                0x0008
    #define     B16TspSecRule_MAXCOEFF1DW_VALUE                0x0008
    #define   LSb32TspSecRule_MAXCOEFF1DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF1DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF1DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF1DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF2DW                      0x000C

    #define     BA_TspSecRule_MAXCOEFF2DW_VALUE                0x000C
    #define     B16TspSecRule_MAXCOEFF2DW_VALUE                0x000C
    #define   LSb32TspSecRule_MAXCOEFF2DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF2DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF2DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF2DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF3DW                      0x0010

    #define     BA_TspSecRule_MAXCOEFF3DW_VALUE                0x0010
    #define     B16TspSecRule_MAXCOEFF3DW_VALUE                0x0010
    #define   LSb32TspSecRule_MAXCOEFF3DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF3DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF3DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF3DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF4DW                      0x0014

    #define     BA_TspSecRule_MAXCOEFF4DW_VALUE                0x0014
    #define     B16TspSecRule_MAXCOEFF4DW_VALUE                0x0014
    #define   LSb32TspSecRule_MAXCOEFF4DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF4DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF4DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF4DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF5DW                      0x0018

    #define     BA_TspSecRule_MAXCOEFF5DW_VALUE                0x0018
    #define     B16TspSecRule_MAXCOEFF5DW_VALUE                0x0018
    #define   LSb32TspSecRule_MAXCOEFF5DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF5DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF5DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF5DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF6DW                      0x001C

    #define     BA_TspSecRule_MAXCOEFF6DW_VALUE                0x001C
    #define     B16TspSecRule_MAXCOEFF6DW_VALUE                0x001C
    #define   LSb32TspSecRule_MAXCOEFF6DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF6DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF6DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF6DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF7DW                      0x0020

    #define     BA_TspSecRule_MAXCOEFF7DW_VALUE                0x0020
    #define     B16TspSecRule_MAXCOEFF7DW_VALUE                0x0020
    #define   LSb32TspSecRule_MAXCOEFF7DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF7DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF7DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF7DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF8DW                      0x0024

    #define     BA_TspSecRule_MAXCOEFF8DW_VALUE                0x0024
    #define     B16TspSecRule_MAXCOEFF8DW_VALUE                0x0024
    #define   LSb32TspSecRule_MAXCOEFF8DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF8DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF8DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF8DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF9DW                      0x0028

    #define     BA_TspSecRule_MAXCOEFF9DW_VALUE                0x0028
    #define     B16TspSecRule_MAXCOEFF9DW_VALUE                0x0028
    #define   LSb32TspSecRule_MAXCOEFF9DW_VALUE                   0
    #define   LSb16TspSecRule_MAXCOEFF9DW_VALUE                   0
    #define       bTspSecRule_MAXCOEFF9DW_VALUE                32
    #define   MSK32TspSecRule_MAXCOEFF9DW_VALUE                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF10DW                     0x002C

    #define     BA_TspSecRule_MAXCOEFF10DW_VALUE               0x002C
    #define     B16TspSecRule_MAXCOEFF10DW_VALUE               0x002C
    #define   LSb32TspSecRule_MAXCOEFF10DW_VALUE                  0
    #define   LSb16TspSecRule_MAXCOEFF10DW_VALUE                  0
    #define       bTspSecRule_MAXCOEFF10DW_VALUE               32
    #define   MSK32TspSecRule_MAXCOEFF10DW_VALUE                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF11DW                     0x0030

    #define     BA_TspSecRule_MAXCOEFF11DW_VALUE               0x0030
    #define     B16TspSecRule_MAXCOEFF11DW_VALUE               0x0030
    #define   LSb32TspSecRule_MAXCOEFF11DW_VALUE                  0
    #define   LSb16TspSecRule_MAXCOEFF11DW_VALUE                  0
    #define       bTspSecRule_MAXCOEFF11DW_VALUE               32
    #define   MSK32TspSecRule_MAXCOEFF11DW_VALUE                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF12DW                     0x0034

    #define     BA_TspSecRule_MAXCOEFF12DW_VALUE               0x0034
    #define     B16TspSecRule_MAXCOEFF12DW_VALUE               0x0034
    #define   LSb32TspSecRule_MAXCOEFF12DW_VALUE                  0
    #define   LSb16TspSecRule_MAXCOEFF12DW_VALUE                  0
    #define       bTspSecRule_MAXCOEFF12DW_VALUE               32
    #define   MSK32TspSecRule_MAXCOEFF12DW_VALUE                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF13DW                     0x0038

    #define     BA_TspSecRule_MAXCOEFF13DW_VALUE               0x0038
    #define     B16TspSecRule_MAXCOEFF13DW_VALUE               0x0038
    #define   LSb32TspSecRule_MAXCOEFF13DW_VALUE                  0
    #define   LSb16TspSecRule_MAXCOEFF13DW_VALUE                  0
    #define       bTspSecRule_MAXCOEFF13DW_VALUE               32
    #define   MSK32TspSecRule_MAXCOEFF13DW_VALUE                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF14DW                     0x003C

    #define     BA_TspSecRule_MAXCOEFF14DW_VALUE               0x003C
    #define     B16TspSecRule_MAXCOEFF14DW_VALUE               0x003C
    #define   LSb32TspSecRule_MAXCOEFF14DW_VALUE                  0
    #define   LSb16TspSecRule_MAXCOEFF14DW_VALUE                  0
    #define       bTspSecRule_MAXCOEFF14DW_VALUE               32
    #define   MSK32TspSecRule_MAXCOEFF14DW_VALUE                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRule_MAXCOEFF15DW                     0x0040

    #define     BA_TspSecRule_MAXCOEFF15DW_VALUE               0x0040
    #define     B16TspSecRule_MAXCOEFF15DW_VALUE               0x0040
    #define   LSb32TspSecRule_MAXCOEFF15DW_VALUE                  0
    #define   LSb16TspSecRule_MAXCOEFF15DW_VALUE                  0
    #define       bTspSecRule_MAXCOEFF15DW_VALUE               32
    #define   MSK32TspSecRule_MAXCOEFF15DW_VALUE                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSecRule {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_CTRL_BYTEOFFSET(r32)             _BFGET_(r32, 4, 0)
    #define   SET32TspSecRule_CTRL_BYTEOFFSET(r32,v)           _BFSET_(r32, 4, 0,v)
    #define   GET16TspSecRule_CTRL_BYTEOFFSET(r16)             _BFGET_(r16, 4, 0)
    #define   SET16TspSecRule_CTRL_BYTEOFFSET(r16,v)           _BFSET_(r16, 4, 0,v)

    #define   GET32TspSecRule_CTRL_BITOFFSET(r32)              _BFGET_(r32, 7, 5)
    #define   SET32TspSecRule_CTRL_BITOFFSET(r32,v)            _BFSET_(r32, 7, 5,v)
    #define   GET16TspSecRule_CTRL_BITOFFSET(r16)              _BFGET_(r16, 7, 5)
    #define   SET16TspSecRule_CTRL_BITOFFSET(r16,v)            _BFSET_(r16, 7, 5,v)

    #define   GET32TspSecRule_CTRL_STOPONMISS(r32)             _BFGET_(r32, 8, 8)
    #define   SET32TspSecRule_CTRL_STOPONMISS(r32,v)           _BFSET_(r32, 8, 8,v)
    #define   GET16TspSecRule_CTRL_STOPONMISS(r16)             _BFGET_(r16, 8, 8)
    #define   SET16TspSecRule_CTRL_STOPONMISS(r16,v)           _BFSET_(r16, 8, 8,v)

    #define   GET32TspSecRule_CTRL_LAST(r32)                   _BFGET_(r32, 9, 9)
    #define   SET32TspSecRule_CTRL_LAST(r32,v)                 _BFSET_(r32, 9, 9,v)
    #define   GET16TspSecRule_CTRL_LAST(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16TspSecRule_CTRL_LAST(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define   GET32TspSecRule_CTRL_NXT(r32)                    _BFGET_(r32,20,10)
    #define   SET32TspSecRule_CTRL_NXT(r32,v)                  _BFSET_(r32,20,10,v)

    #define   GET32TspSecRule_CTRL_MODE(r32)                   _BFGET_(r32,22,21)
    #define   SET32TspSecRule_CTRL_MODE(r32,v)                 _BFSET_(r32,22,21,v)
    #define   GET16TspSecRule_CTRL_MODE(r16)                   _BFGET_(r16, 6, 5)
    #define   SET16TspSecRule_CTRL_MODE(r16,v)                 _BFSET_(r16, 6, 5,v)

    #define   GET32TspSecRule_CTRL_LEN(r32)                    _BFGET_(r32,26,23)
    #define   SET32TspSecRule_CTRL_LEN(r32,v)                  _BFSET_(r32,26,23,v)
    #define   GET16TspSecRule_CTRL_LEN(r16)                    _BFGET_(r16,10, 7)
    #define   SET16TspSecRule_CTRL_LEN(r16,v)                  _BFSET_(r16,10, 7,v)

    #define     w32TspSecRule_CTRL                             {\
            UNSG32 uCTRL_BYTEOFFSET                            :  5;\
            UNSG32 uCTRL_BITOFFSET                             :  3;\
            UNSG32 uCTRL_STOPONMISS                            :  1;\
            UNSG32 uCTRL_LAST                                  :  1;\
            UNSG32 uCTRL_NXT                                   : 11;\
            UNSG32 uCTRL_MODE                                  :  2;\
            UNSG32 uCTRL_LEN                                   :  4;\
            UNSG32 RSVDx0_b27                                  :  5;\
          }
    union { UNSG32 u32TspSecRule_CTRL;
            struct w32TspSecRule_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MINMASK_VALUE(r32)               _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MINMASK_VALUE(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MINMASK                          {\
            UNSG32 uMINMASK_VALUE                              : 32;\
          }
    union { UNSG32 u32TspSecRule_MINMASK;
            struct w32TspSecRule_MINMASK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF1DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF1DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF1DW                      {\
            UNSG32 uMAXCOEFF1DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF1DW;
            struct w32TspSecRule_MAXCOEFF1DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF2DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF2DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF2DW                      {\
            UNSG32 uMAXCOEFF2DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF2DW;
            struct w32TspSecRule_MAXCOEFF2DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF3DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF3DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF3DW                      {\
            UNSG32 uMAXCOEFF3DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF3DW;
            struct w32TspSecRule_MAXCOEFF3DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF4DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF4DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF4DW                      {\
            UNSG32 uMAXCOEFF4DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF4DW;
            struct w32TspSecRule_MAXCOEFF4DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF5DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF5DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF5DW                      {\
            UNSG32 uMAXCOEFF5DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF5DW;
            struct w32TspSecRule_MAXCOEFF5DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF6DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF6DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF6DW                      {\
            UNSG32 uMAXCOEFF6DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF6DW;
            struct w32TspSecRule_MAXCOEFF6DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF7DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF7DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF7DW                      {\
            UNSG32 uMAXCOEFF7DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF7DW;
            struct w32TspSecRule_MAXCOEFF7DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF8DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF8DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF8DW                      {\
            UNSG32 uMAXCOEFF8DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF8DW;
            struct w32TspSecRule_MAXCOEFF8DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF9DW_VALUE(r32)           _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF9DW_VALUE(r32,v)         _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF9DW                      {\
            UNSG32 uMAXCOEFF9DW_VALUE                          : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF9DW;
            struct w32TspSecRule_MAXCOEFF9DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF10DW_VALUE(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF10DW_VALUE(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF10DW                     {\
            UNSG32 uMAXCOEFF10DW_VALUE                         : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF10DW;
            struct w32TspSecRule_MAXCOEFF10DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF11DW_VALUE(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF11DW_VALUE(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF11DW                     {\
            UNSG32 uMAXCOEFF11DW_VALUE                         : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF11DW;
            struct w32TspSecRule_MAXCOEFF11DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF12DW_VALUE(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF12DW_VALUE(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF12DW                     {\
            UNSG32 uMAXCOEFF12DW_VALUE                         : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF12DW;
            struct w32TspSecRule_MAXCOEFF12DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF13DW_VALUE(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF13DW_VALUE(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF13DW                     {\
            UNSG32 uMAXCOEFF13DW_VALUE                         : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF13DW;
            struct w32TspSecRule_MAXCOEFF13DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF14DW_VALUE(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF14DW_VALUE(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF14DW                     {\
            UNSG32 uMAXCOEFF14DW_VALUE                         : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF14DW;
            struct w32TspSecRule_MAXCOEFF14DW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRule_MAXCOEFF15DW_VALUE(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRule_MAXCOEFF15DW_VALUE(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRule_MAXCOEFF15DW                     {\
            UNSG32 uMAXCOEFF15DW_VALUE                         : 32;\
          }
    union { UNSG32 u32TspSecRule_MAXCOEFF15DW;
            struct w32TspSecRule_MAXCOEFF15DW;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspSecRule;

    typedef union  T32TspSecRule_CTRL
          { UNSG32 u32;
            struct w32TspSecRule_CTRL;
                 } T32TspSecRule_CTRL;
    typedef union  T32TspSecRule_MINMASK
          { UNSG32 u32;
            struct w32TspSecRule_MINMASK;
                 } T32TspSecRule_MINMASK;
    typedef union  T32TspSecRule_MAXCOEFF1DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF1DW;
                 } T32TspSecRule_MAXCOEFF1DW;
    typedef union  T32TspSecRule_MAXCOEFF2DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF2DW;
                 } T32TspSecRule_MAXCOEFF2DW;
    typedef union  T32TspSecRule_MAXCOEFF3DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF3DW;
                 } T32TspSecRule_MAXCOEFF3DW;
    typedef union  T32TspSecRule_MAXCOEFF4DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF4DW;
                 } T32TspSecRule_MAXCOEFF4DW;
    typedef union  T32TspSecRule_MAXCOEFF5DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF5DW;
                 } T32TspSecRule_MAXCOEFF5DW;
    typedef union  T32TspSecRule_MAXCOEFF6DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF6DW;
                 } T32TspSecRule_MAXCOEFF6DW;
    typedef union  T32TspSecRule_MAXCOEFF7DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF7DW;
                 } T32TspSecRule_MAXCOEFF7DW;
    typedef union  T32TspSecRule_MAXCOEFF8DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF8DW;
                 } T32TspSecRule_MAXCOEFF8DW;
    typedef union  T32TspSecRule_MAXCOEFF9DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF9DW;
                 } T32TspSecRule_MAXCOEFF9DW;
    typedef union  T32TspSecRule_MAXCOEFF10DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF10DW;
                 } T32TspSecRule_MAXCOEFF10DW;
    typedef union  T32TspSecRule_MAXCOEFF11DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF11DW;
                 } T32TspSecRule_MAXCOEFF11DW;
    typedef union  T32TspSecRule_MAXCOEFF12DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF12DW;
                 } T32TspSecRule_MAXCOEFF12DW;
    typedef union  T32TspSecRule_MAXCOEFF13DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF13DW;
                 } T32TspSecRule_MAXCOEFF13DW;
    typedef union  T32TspSecRule_MAXCOEFF14DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF14DW;
                 } T32TspSecRule_MAXCOEFF14DW;
    typedef union  T32TspSecRule_MAXCOEFF15DW
          { UNSG32 u32;
            struct w32TspSecRule_MAXCOEFF15DW;
                 } T32TspSecRule_MAXCOEFF15DW;
    ///////////////////////////////////////////////////////////

    typedef union  TTspSecRule_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_CTRL;
                   };
                 } TTspSecRule_CTRL;
    typedef union  TTspSecRule_MINMASK
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MINMASK;
                   };
                 } TTspSecRule_MINMASK;
    typedef union  TTspSecRule_MAXCOEFF1DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF1DW;
                   };
                 } TTspSecRule_MAXCOEFF1DW;
    typedef union  TTspSecRule_MAXCOEFF2DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF2DW;
                   };
                 } TTspSecRule_MAXCOEFF2DW;
    typedef union  TTspSecRule_MAXCOEFF3DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF3DW;
                   };
                 } TTspSecRule_MAXCOEFF3DW;
    typedef union  TTspSecRule_MAXCOEFF4DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF4DW;
                   };
                 } TTspSecRule_MAXCOEFF4DW;
    typedef union  TTspSecRule_MAXCOEFF5DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF5DW;
                   };
                 } TTspSecRule_MAXCOEFF5DW;
    typedef union  TTspSecRule_MAXCOEFF6DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF6DW;
                   };
                 } TTspSecRule_MAXCOEFF6DW;
    typedef union  TTspSecRule_MAXCOEFF7DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF7DW;
                   };
                 } TTspSecRule_MAXCOEFF7DW;
    typedef union  TTspSecRule_MAXCOEFF8DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF8DW;
                   };
                 } TTspSecRule_MAXCOEFF8DW;
    typedef union  TTspSecRule_MAXCOEFF9DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF9DW;
                   };
                 } TTspSecRule_MAXCOEFF9DW;
    typedef union  TTspSecRule_MAXCOEFF10DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF10DW;
                   };
                 } TTspSecRule_MAXCOEFF10DW;
    typedef union  TTspSecRule_MAXCOEFF11DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF11DW;
                   };
                 } TTspSecRule_MAXCOEFF11DW;
    typedef union  TTspSecRule_MAXCOEFF12DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF12DW;
                   };
                 } TTspSecRule_MAXCOEFF12DW;
    typedef union  TTspSecRule_MAXCOEFF13DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF13DW;
                   };
                 } TTspSecRule_MAXCOEFF13DW;
    typedef union  TTspSecRule_MAXCOEFF14DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF14DW;
                   };
                 } TTspSecRule_MAXCOEFF14DW;
    typedef union  TTspSecRule_MAXCOEFF15DW
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRule_MAXCOEFF15DW;
                   };
                 } TTspSecRule_MAXCOEFF15DW;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSecRule_drvrd(SIE_TspSecRule *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSecRule_drvwr(SIE_TspSecRule *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSecRule_reset(SIE_TspSecRule *p);
     SIGN32 TspSecRule_cmp  (SIE_TspSecRule *p, SIE_TspSecRule *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSecRule_check(p,pie,pfx,hLOG) TspSecRule_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSecRule_print(p,    pfx,hLOG) TspSecRule_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSecRule
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSecTbl                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 word                      
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSecTbl
#define h_TspSecTbl (){}

    #define     BA_TspSecTbl_word                              0x0000
    #define     B16TspSecTbl_word                              0x0000
    #define   LSb32TspSecTbl_word                                 0
    #define   LSb16TspSecTbl_word                                 0
    #define       bTspSecTbl_word                              32
    #define   MSK32TspSecTbl_word                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSecTbl {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecTbl_word(r32)                         _BFGET_(r32,31, 0)
    #define   SET32TspSecTbl_word(r32,v)                       _BFSET_(r32,31, 0,v)

            UNSG32 u_word                                      : 32;
    ///////////////////////////////////////////////////////////
    } SIE_TspSecTbl;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSecTbl_drvrd(SIE_TspSecTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSecTbl_drvwr(SIE_TspSecTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSecTbl_reset(SIE_TspSecTbl *p);
     SIGN32 TspSecTbl_cmp  (SIE_TspSecTbl *p, SIE_TspSecTbl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSecTbl_check(p,pie,pfx,hLOG) TspSecTbl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSecTbl_print(p,    pfx,hLOG) TspSecTbl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSecTbl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCryCmd               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  type                      
///                                    ###
///                                    * Crypto function type
///                                    ###
///                                    : Copy                      0x0
///                                    : CRC                       0x1
///                                    : INVDVBCSA2                0x2
///                                    : INVDVBCSA3                0x3
///                                    : AES                       0x4
///                                    : INVAES                    0x5
///                                    : TDES                      0x6
///                                    : INVTDES                   0x7
///                                    : C2                        0x8
///                                    : INVC2                     0x9
///                                    : WMMAC                     0xA
///                                    : INVWMMAC                  0xB
///                                    : ARIBMULTI2                0xC
///                                    : INVARIBMULTI2             0xD
///                                    : RC4                       0xE
///                                    : CSS                       0xF
///               %unsigned 2  reserved_0                
///               %unsigned 1  write_back_iv             
///                                    ###
///                                    * 1: crypto engine will overwrite the iv_address with the iv for next block after the execution of the command
///                                    * 0: crypto engine will not overwrite the iv_address
///                                    ###
///               %unsigned 8  parameter                 
///                                    ###
///                                    * Parameters of the crypto function
///                                    * Refer to the description of each crypto block for details
///                                    ###
///               %unsigned 16 source_address            
///                                    ###
///                                    * Address of the input data in byte
///                                    ###
///               %unsigned 16 input_size                
///                                    ###
///                                    * size of the input data in byte;
///                                    * If input_size is 0, crypto engine will not process any data. It will still increase the command counter and write out the return word.
///                                    ###
///               %unsigned 16 desination_address        
///                                    ###
///                                    * Address of the output buffer in byte;
///                                    ###
///               %unsigned 16 key_address               
///                                    ###
///                                    * Address of the key
///                                    ###
///               %unsigned 16 iv_address                
///                                    ###
///                                    * Address of the initial vector
///                                    ###
///               %unsigned 16 key_address_2             
///                                    ###
///                                    * Address for the second key
///                                    ###
///               %unsigned 8  parameter_1               
///                                    ###
///                                    * Additional parameters of the crypto function;
///                                    * Refer to the description of each crypto block for details;
///                                    ###
///               %unsigned 8  reserved_1                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCryCmd
#define h_TspCryCmd (){}

    #define     BA_TspCryCmd_type                              0x0000
    #define     B16TspCryCmd_type                              0x0000
    #define   LSb32TspCryCmd_type                                 0
    #define   LSb16TspCryCmd_type                                 0
    #define       bTspCryCmd_type                              5
    #define   MSK32TspCryCmd_type                                 0x0000001F
    #define        TspCryCmd_type_Copy                                      0x0
    #define        TspCryCmd_type_CRC                                       0x1
    #define        TspCryCmd_type_INVDVBCSA2                                0x2
    #define        TspCryCmd_type_INVDVBCSA3                                0x3
    #define        TspCryCmd_type_AES                                       0x4
    #define        TspCryCmd_type_INVAES                                    0x5
    #define        TspCryCmd_type_TDES                                      0x6
    #define        TspCryCmd_type_INVTDES                                   0x7
    #define        TspCryCmd_type_C2                                        0x8
    #define        TspCryCmd_type_INVC2                                     0x9
    #define        TspCryCmd_type_WMMAC                                     0xA
    #define        TspCryCmd_type_INVWMMAC                                  0xB
    #define        TspCryCmd_type_ARIBMULTI2                                0xC
    #define        TspCryCmd_type_INVARIBMULTI2                             0xD
    #define        TspCryCmd_type_RC4                                       0xE
    #define        TspCryCmd_type_CSS                                       0xF

    #define     BA_TspCryCmd_reserved_0                        0x0000
    #define     B16TspCryCmd_reserved_0                        0x0000
    #define   LSb32TspCryCmd_reserved_0                           5
    #define   LSb16TspCryCmd_reserved_0                           5
    #define       bTspCryCmd_reserved_0                        2
    #define   MSK32TspCryCmd_reserved_0                           0x00000060

    #define     BA_TspCryCmd_write_back_iv                     0x0000
    #define     B16TspCryCmd_write_back_iv                     0x0000
    #define   LSb32TspCryCmd_write_back_iv                        7
    #define   LSb16TspCryCmd_write_back_iv                        7
    #define       bTspCryCmd_write_back_iv                     1
    #define   MSK32TspCryCmd_write_back_iv                        0x00000080

    #define     BA_TspCryCmd_parameter                         0x0001
    #define     B16TspCryCmd_parameter                         0x0000
    #define   LSb32TspCryCmd_parameter                            8
    #define   LSb16TspCryCmd_parameter                            8
    #define       bTspCryCmd_parameter                         8
    #define   MSK32TspCryCmd_parameter                            0x0000FF00

    #define     BA_TspCryCmd_source_address                    0x0002
    #define     B16TspCryCmd_source_address                    0x0002
    #define   LSb32TspCryCmd_source_address                       16
    #define   LSb16TspCryCmd_source_address                       0
    #define       bTspCryCmd_source_address                    16
    #define   MSK32TspCryCmd_source_address                       0xFFFF0000

    #define     BA_TspCryCmd_input_size                        0x0004
    #define     B16TspCryCmd_input_size                        0x0004
    #define   LSb32TspCryCmd_input_size                           0
    #define   LSb16TspCryCmd_input_size                           0
    #define       bTspCryCmd_input_size                        16
    #define   MSK32TspCryCmd_input_size                           0x0000FFFF

    #define     BA_TspCryCmd_desination_address                0x0006
    #define     B16TspCryCmd_desination_address                0x0006
    #define   LSb32TspCryCmd_desination_address                   16
    #define   LSb16TspCryCmd_desination_address                   0
    #define       bTspCryCmd_desination_address                16
    #define   MSK32TspCryCmd_desination_address                   0xFFFF0000

    #define     BA_TspCryCmd_key_address                       0x0008
    #define     B16TspCryCmd_key_address                       0x0008
    #define   LSb32TspCryCmd_key_address                          0
    #define   LSb16TspCryCmd_key_address                          0
    #define       bTspCryCmd_key_address                       16
    #define   MSK32TspCryCmd_key_address                          0x0000FFFF

    #define     BA_TspCryCmd_iv_address                        0x000A
    #define     B16TspCryCmd_iv_address                        0x000A
    #define   LSb32TspCryCmd_iv_address                           16
    #define   LSb16TspCryCmd_iv_address                           0
    #define       bTspCryCmd_iv_address                        16
    #define   MSK32TspCryCmd_iv_address                           0xFFFF0000

    #define     BA_TspCryCmd_key_address_2                     0x000C
    #define     B16TspCryCmd_key_address_2                     0x000C
    #define   LSb32TspCryCmd_key_address_2                        0
    #define   LSb16TspCryCmd_key_address_2                        0
    #define       bTspCryCmd_key_address_2                     16
    #define   MSK32TspCryCmd_key_address_2                        0x0000FFFF

    #define     BA_TspCryCmd_parameter_1                       0x000E
    #define     B16TspCryCmd_parameter_1                       0x000E
    #define   LSb32TspCryCmd_parameter_1                          16
    #define   LSb16TspCryCmd_parameter_1                          0
    #define       bTspCryCmd_parameter_1                       8
    #define   MSK32TspCryCmd_parameter_1                          0x00FF0000

    #define     BA_TspCryCmd_reserved_1                        0x000F
    #define     B16TspCryCmd_reserved_1                        0x000E
    #define   LSb32TspCryCmd_reserved_1                           24
    #define   LSb16TspCryCmd_reserved_1                           8
    #define       bTspCryCmd_reserved_1                        8
    #define   MSK32TspCryCmd_reserved_1                           0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCryCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryCmd_type(r32)                         _BFGET_(r32, 4, 0)
    #define   SET32TspCryCmd_type(r32,v)                       _BFSET_(r32, 4, 0,v)
    #define   GET16TspCryCmd_type(r16)                         _BFGET_(r16, 4, 0)
    #define   SET16TspCryCmd_type(r16,v)                       _BFSET_(r16, 4, 0,v)

    #define   GET32TspCryCmd_reserved_0(r32)                   _BFGET_(r32, 6, 5)
    #define   SET32TspCryCmd_reserved_0(r32,v)                 _BFSET_(r32, 6, 5,v)
    #define   GET16TspCryCmd_reserved_0(r16)                   _BFGET_(r16, 6, 5)
    #define   SET16TspCryCmd_reserved_0(r16,v)                 _BFSET_(r16, 6, 5,v)

    #define   GET32TspCryCmd_write_back_iv(r32)                _BFGET_(r32, 7, 7)
    #define   SET32TspCryCmd_write_back_iv(r32,v)              _BFSET_(r32, 7, 7,v)
    #define   GET16TspCryCmd_write_back_iv(r16)                _BFGET_(r16, 7, 7)
    #define   SET16TspCryCmd_write_back_iv(r16,v)              _BFSET_(r16, 7, 7,v)

    #define   GET32TspCryCmd_parameter(r32)                    _BFGET_(r32,15, 8)
    #define   SET32TspCryCmd_parameter(r32,v)                  _BFSET_(r32,15, 8,v)
    #define   GET16TspCryCmd_parameter(r16)                    _BFGET_(r16,15, 8)
    #define   SET16TspCryCmd_parameter(r16,v)                  _BFSET_(r16,15, 8,v)

    #define   GET32TspCryCmd_source_address(r32)               _BFGET_(r32,31,16)
    #define   SET32TspCryCmd_source_address(r32,v)             _BFSET_(r32,31,16,v)
    #define   GET16TspCryCmd_source_address(r16)               _BFGET_(r16,15, 0)
    #define   SET16TspCryCmd_source_address(r16,v)             _BFSET_(r16,15, 0,v)

            UNSG32 u_type                                      :  5;
            UNSG32 u_reserved_0                                :  2;
            UNSG32 u_write_back_iv                             :  1;
            UNSG32 u_parameter                                 :  8;
            UNSG32 u_source_address                            : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspCryCmd_input_size(r32)                   _BFGET_(r32,15, 0)
    #define   SET32TspCryCmd_input_size(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16TspCryCmd_input_size(r16)                   _BFGET_(r16,15, 0)
    #define   SET16TspCryCmd_input_size(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32TspCryCmd_desination_address(r32)           _BFGET_(r32,31,16)
    #define   SET32TspCryCmd_desination_address(r32,v)         _BFSET_(r32,31,16,v)
    #define   GET16TspCryCmd_desination_address(r16)           _BFGET_(r16,15, 0)
    #define   SET16TspCryCmd_desination_address(r16,v)         _BFSET_(r16,15, 0,v)

            UNSG32 u_input_size                                : 16;
            UNSG32 u_desination_address                        : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspCryCmd_key_address(r32)                  _BFGET_(r32,15, 0)
    #define   SET32TspCryCmd_key_address(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16TspCryCmd_key_address(r16)                  _BFGET_(r16,15, 0)
    #define   SET16TspCryCmd_key_address(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32TspCryCmd_iv_address(r32)                   _BFGET_(r32,31,16)
    #define   SET32TspCryCmd_iv_address(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16TspCryCmd_iv_address(r16)                   _BFGET_(r16,15, 0)
    #define   SET16TspCryCmd_iv_address(r16,v)                 _BFSET_(r16,15, 0,v)

            UNSG32 u_key_address                               : 16;
            UNSG32 u_iv_address                                : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspCryCmd_key_address_2(r32)                _BFGET_(r32,15, 0)
    #define   SET32TspCryCmd_key_address_2(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16TspCryCmd_key_address_2(r16)                _BFGET_(r16,15, 0)
    #define   SET16TspCryCmd_key_address_2(r16,v)              _BFSET_(r16,15, 0,v)

    #define   GET32TspCryCmd_parameter_1(r32)                  _BFGET_(r32,23,16)
    #define   SET32TspCryCmd_parameter_1(r32,v)                _BFSET_(r32,23,16,v)
    #define   GET16TspCryCmd_parameter_1(r16)                  _BFGET_(r16, 7, 0)
    #define   SET16TspCryCmd_parameter_1(r16,v)                _BFSET_(r16, 7, 0,v)

    #define   GET32TspCryCmd_reserved_1(r32)                   _BFGET_(r32,31,24)
    #define   SET32TspCryCmd_reserved_1(r32,v)                 _BFSET_(r32,31,24,v)
    #define   GET16TspCryCmd_reserved_1(r16)                   _BFGET_(r16,15, 8)
    #define   SET16TspCryCmd_reserved_1(r16,v)                 _BFSET_(r16,15, 8,v)

            UNSG32 u_key_address_2                             : 16;
            UNSG32 u_parameter_1                               :  8;
            UNSG32 u_reserved_1                                :  8;
    ///////////////////////////////////////////////////////////
    } SIE_TspCryCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCryCmd_drvrd(SIE_TspCryCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCryCmd_drvwr(SIE_TspCryCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCryCmd_reset(SIE_TspCryCmd *p);
     SIGN32 TspCryCmd_cmp  (SIE_TspCryCmd *p, SIE_TspCryCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCryCmd_check(p,pie,pfx,hLOG) TspCryCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCryCmd_print(p,    pfx,hLOG) TspCryCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCryCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCryRtn               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 command_count             
///                                    ###
///                                    * Number of command been executed.
///                                    * The counter will wrap back to 0 once it reaches 65536.
///                                    * Firmware can set the initial value through register programming interface.
///                                    ###
///               %unsigned 16 reserved_0                
///                                    ###
///                                    * This field will be filled with all zeros
///                                    ###
///               %unsigned 16 error_command_count       
///                                    ###
///                                    * command_count of the last error command.
///                                    ###
///               %unsigned 15 reserved_1                
///                                    ###
///                                    * This field will be filled with all zeros
///                                    ###
///               %unsigned 1  error_command_flag        
///                                    ###
///                                    * Hardware will set this flag bit to one when key mismatch is detected for a crypto command. The flag can only be cleared by firmware. The flag is not reset to zero by hardware after power on, so firmware should clear the flag before it send the first crypto command.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCryRtn
#define h_TspCryRtn (){}

    #define     BA_TspCryRtn_command_count                     0x0000
    #define     B16TspCryRtn_command_count                     0x0000
    #define   LSb32TspCryRtn_command_count                        0
    #define   LSb16TspCryRtn_command_count                        0
    #define       bTspCryRtn_command_count                     16
    #define   MSK32TspCryRtn_command_count                        0x0000FFFF

    #define     BA_TspCryRtn_reserved_0                        0x0002
    #define     B16TspCryRtn_reserved_0                        0x0002
    #define   LSb32TspCryRtn_reserved_0                           16
    #define   LSb16TspCryRtn_reserved_0                           0
    #define       bTspCryRtn_reserved_0                        16
    #define   MSK32TspCryRtn_reserved_0                           0xFFFF0000

    #define     BA_TspCryRtn_error_command_count               0x0004
    #define     B16TspCryRtn_error_command_count               0x0004
    #define   LSb32TspCryRtn_error_command_count                  0
    #define   LSb16TspCryRtn_error_command_count                  0
    #define       bTspCryRtn_error_command_count               16
    #define   MSK32TspCryRtn_error_command_count                  0x0000FFFF

    #define     BA_TspCryRtn_reserved_1                        0x0006
    #define     B16TspCryRtn_reserved_1                        0x0006
    #define   LSb32TspCryRtn_reserved_1                           16
    #define   LSb16TspCryRtn_reserved_1                           0
    #define       bTspCryRtn_reserved_1                        15
    #define   MSK32TspCryRtn_reserved_1                           0x7FFF0000

    #define     BA_TspCryRtn_error_command_flag                0x0007
    #define     B16TspCryRtn_error_command_flag                0x0006
    #define   LSb32TspCryRtn_error_command_flag                   31
    #define   LSb16TspCryRtn_error_command_flag                   15
    #define       bTspCryRtn_error_command_flag                1
    #define   MSK32TspCryRtn_error_command_flag                   0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCryRtn {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryRtn_command_count(r32)                _BFGET_(r32,15, 0)
    #define   SET32TspCryRtn_command_count(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16TspCryRtn_command_count(r16)                _BFGET_(r16,15, 0)
    #define   SET16TspCryRtn_command_count(r16,v)              _BFSET_(r16,15, 0,v)

    #define   GET32TspCryRtn_reserved_0(r32)                   _BFGET_(r32,31,16)
    #define   SET32TspCryRtn_reserved_0(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16TspCryRtn_reserved_0(r16)                   _BFGET_(r16,15, 0)
    #define   SET16TspCryRtn_reserved_0(r16,v)                 _BFSET_(r16,15, 0,v)

            UNSG32 u_command_count                             : 16;
            UNSG32 u_reserved_0                                : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspCryRtn_error_command_count(r32)          _BFGET_(r32,15, 0)
    #define   SET32TspCryRtn_error_command_count(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16TspCryRtn_error_command_count(r16)          _BFGET_(r16,15, 0)
    #define   SET16TspCryRtn_error_command_count(r16,v)        _BFSET_(r16,15, 0,v)

    #define   GET32TspCryRtn_reserved_1(r32)                   _BFGET_(r32,30,16)
    #define   SET32TspCryRtn_reserved_1(r32,v)                 _BFSET_(r32,30,16,v)
    #define   GET16TspCryRtn_reserved_1(r16)                   _BFGET_(r16,14, 0)
    #define   SET16TspCryRtn_reserved_1(r16,v)                 _BFSET_(r16,14, 0,v)

    #define   GET32TspCryRtn_error_command_flag(r32)           _BFGET_(r32,31,31)
    #define   SET32TspCryRtn_error_command_flag(r32,v)         _BFSET_(r32,31,31,v)
    #define   GET16TspCryRtn_error_command_flag(r16)           _BFGET_(r16,15,15)
    #define   SET16TspCryRtn_error_command_flag(r16,v)         _BFSET_(r16,15,15,v)

            UNSG32 u_error_command_count                       : 16;
            UNSG32 u_reserved_1                                : 15;
            UNSG32 u_error_command_flag                        :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TspCryRtn;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCryRtn_drvrd(SIE_TspCryRtn *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCryRtn_drvwr(SIE_TspCryRtn *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCryRtn_reset(SIE_TspCryRtn *p);
     SIGN32 TspCryRtn_cmp  (SIE_TspCryRtn *p, SIE_TspCryRtn *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCryRtn_check(p,pie,pfx,hLOG) TspCryRtn_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCryRtn_print(p,    pfx,hLOG) TspCryRtn_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCryRtn
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspKeyTblAdr                             (4,4)
///     # # ----------------------------------------------------------
///               : TspKeyTblBase      0x8000
///               : Nsk2TsKeyTblBase   0xC000
///               : Nsk2M2mKeyTblBase  0xE000
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       0B, bits:       0b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspKeyTblAdr
#define h_TspKeyTblAdr (){}

    #define        TspKeyTblAdr_TspKeyTblBase                  0x8000
    #define        TspKeyTblAdr_Nsk2TsKeyTblBase               0xC000
    #define        TspKeyTblAdr_Nsk2M2mKeyTblBase              0xE000
    ///////////////////////////////////////////////////////////

#endif
//////
/// ENDOFINTERFACE: TspKeyTblAdr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspKeyEntry             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 key_lower                 
///               %unsigned 32 key_upper                 
///                                    ###
///                                    * 64 bits key data of this entry
///                                    ###
///               %unsigned 5  crypto_type               
///                                    ###
///                                    * Type of crypto function
///                                    ###
///                                    : Copy                      0x0
///                                    : CRC                       0x1
///                                    : INVDVBCSA2                0x2
///                                    : INVDVBCSA3                0x3
///                                    : AES                       0x4
///                                    : INVAES                    0x5
///                                    : TDES                      0x6
///                                    : INVTDES                   0x7
///                                    : C2                        0x8
///                                    : INVC2                     0x9
///                                    : WMMAC                     0xA
///                                    : INVWMMAC                  0xB
///                                    : ARIBMULTI2                0xC
///                                    : INVARIBMULTI2             0xD
///                                    : RC4                       0xE
///                                    : CSS                       0xF
///               %unsigned 1  write_enable              
///                                    ###
///                                    * 1: enable crypto engine to write to this entry
///                                    * 0: disable write
///                                    ###
///               %unsigned 2  data_type                 
///                                    ###
///                                    * Type of data requested by the crypto function
///                                    * 0: key of crypto function
///                                    * 1: initial vector of crypto function
///                                    * 2: second key of crypto function (multi 2 only)
///                                    * 3: reserved
///                                    ###
///                                    : KEY                       0x0
///                                    : IV                        0x1
///                                    : KEY2                      0x2
///               %unsigned 8  crypto_param              
///                                    ###
///                                    * Parameter of the crypto function;
///                                    * Only effective bits are used for matching. reserved bits are ignored.
///                                    ###
///               %unsigned 16 reserved_0                
///               %unsigned 32 reserved_1                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspKeyEntry
#define h_TspKeyEntry (){}

    #define     BA_TspKeyEntry_key_lower                       0x0000
    #define     B16TspKeyEntry_key_lower                       0x0000
    #define   LSb32TspKeyEntry_key_lower                          0
    #define   LSb16TspKeyEntry_key_lower                          0
    #define       bTspKeyEntry_key_lower                       32
    #define   MSK32TspKeyEntry_key_lower                          0xFFFFFFFF

    #define     BA_TspKeyEntry_key_upper                       0x0004
    #define     B16TspKeyEntry_key_upper                       0x0004
    #define   LSb32TspKeyEntry_key_upper                          0
    #define   LSb16TspKeyEntry_key_upper                          0
    #define       bTspKeyEntry_key_upper                       32
    #define   MSK32TspKeyEntry_key_upper                          0xFFFFFFFF

    #define     BA_TspKeyEntry_crypto_type                     0x0008
    #define     B16TspKeyEntry_crypto_type                     0x0008
    #define   LSb32TspKeyEntry_crypto_type                        0
    #define   LSb16TspKeyEntry_crypto_type                        0
    #define       bTspKeyEntry_crypto_type                     5
    #define   MSK32TspKeyEntry_crypto_type                        0x0000001F
    #define        TspKeyEntry_crypto_type_Copy                             0x0
    #define        TspKeyEntry_crypto_type_CRC                              0x1
    #define        TspKeyEntry_crypto_type_INVDVBCSA2                       0x2
    #define        TspKeyEntry_crypto_type_INVDVBCSA3                       0x3
    #define        TspKeyEntry_crypto_type_AES                              0x4
    #define        TspKeyEntry_crypto_type_INVAES                           0x5
    #define        TspKeyEntry_crypto_type_TDES                             0x6
    #define        TspKeyEntry_crypto_type_INVTDES                          0x7
    #define        TspKeyEntry_crypto_type_C2                               0x8
    #define        TspKeyEntry_crypto_type_INVC2                            0x9
    #define        TspKeyEntry_crypto_type_WMMAC                            0xA
    #define        TspKeyEntry_crypto_type_INVWMMAC                         0xB
    #define        TspKeyEntry_crypto_type_ARIBMULTI2                       0xC
    #define        TspKeyEntry_crypto_type_INVARIBMULTI2                    0xD
    #define        TspKeyEntry_crypto_type_RC4                              0xE
    #define        TspKeyEntry_crypto_type_CSS                              0xF

    #define     BA_TspKeyEntry_write_enable                    0x0008
    #define     B16TspKeyEntry_write_enable                    0x0008
    #define   LSb32TspKeyEntry_write_enable                       5
    #define   LSb16TspKeyEntry_write_enable                       5
    #define       bTspKeyEntry_write_enable                    1
    #define   MSK32TspKeyEntry_write_enable                       0x00000020

    #define     BA_TspKeyEntry_data_type                       0x0008
    #define     B16TspKeyEntry_data_type                       0x0008
    #define   LSb32TspKeyEntry_data_type                          6
    #define   LSb16TspKeyEntry_data_type                          6
    #define       bTspKeyEntry_data_type                       2
    #define   MSK32TspKeyEntry_data_type                          0x000000C0
    #define        TspKeyEntry_data_type_KEY                                0x0
    #define        TspKeyEntry_data_type_IV                                 0x1
    #define        TspKeyEntry_data_type_KEY2                               0x2

    #define     BA_TspKeyEntry_crypto_param                    0x0009
    #define     B16TspKeyEntry_crypto_param                    0x0008
    #define   LSb32TspKeyEntry_crypto_param                       8
    #define   LSb16TspKeyEntry_crypto_param                       8
    #define       bTspKeyEntry_crypto_param                    8
    #define   MSK32TspKeyEntry_crypto_param                       0x0000FF00

    #define     BA_TspKeyEntry_reserved_0                      0x000A
    #define     B16TspKeyEntry_reserved_0                      0x000A
    #define   LSb32TspKeyEntry_reserved_0                         16
    #define   LSb16TspKeyEntry_reserved_0                         0
    #define       bTspKeyEntry_reserved_0                      16
    #define   MSK32TspKeyEntry_reserved_0                         0xFFFF0000

    #define     BA_TspKeyEntry_reserved_1                      0x000C
    #define     B16TspKeyEntry_reserved_1                      0x000C
    #define   LSb32TspKeyEntry_reserved_1                         0
    #define   LSb16TspKeyEntry_reserved_1                         0
    #define       bTspKeyEntry_reserved_1                      32
    #define   MSK32TspKeyEntry_reserved_1                         0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspKeyEntry {
    ///////////////////////////////////////////////////////////
    #define   GET32TspKeyEntry_key_lower(r32)                  _BFGET_(r32,31, 0)
    #define   SET32TspKeyEntry_key_lower(r32,v)                _BFSET_(r32,31, 0,v)

            UNSG32 u_key_lower                                 : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32TspKeyEntry_key_upper(r32)                  _BFGET_(r32,31, 0)
    #define   SET32TspKeyEntry_key_upper(r32,v)                _BFSET_(r32,31, 0,v)

            UNSG32 u_key_upper                                 : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32TspKeyEntry_crypto_type(r32)                _BFGET_(r32, 4, 0)
    #define   SET32TspKeyEntry_crypto_type(r32,v)              _BFSET_(r32, 4, 0,v)
    #define   GET16TspKeyEntry_crypto_type(r16)                _BFGET_(r16, 4, 0)
    #define   SET16TspKeyEntry_crypto_type(r16,v)              _BFSET_(r16, 4, 0,v)

    #define   GET32TspKeyEntry_write_enable(r32)               _BFGET_(r32, 5, 5)
    #define   SET32TspKeyEntry_write_enable(r32,v)             _BFSET_(r32, 5, 5,v)
    #define   GET16TspKeyEntry_write_enable(r16)               _BFGET_(r16, 5, 5)
    #define   SET16TspKeyEntry_write_enable(r16,v)             _BFSET_(r16, 5, 5,v)

    #define   GET32TspKeyEntry_data_type(r32)                  _BFGET_(r32, 7, 6)
    #define   SET32TspKeyEntry_data_type(r32,v)                _BFSET_(r32, 7, 6,v)
    #define   GET16TspKeyEntry_data_type(r16)                  _BFGET_(r16, 7, 6)
    #define   SET16TspKeyEntry_data_type(r16,v)                _BFSET_(r16, 7, 6,v)

    #define   GET32TspKeyEntry_crypto_param(r32)               _BFGET_(r32,15, 8)
    #define   SET32TspKeyEntry_crypto_param(r32,v)             _BFSET_(r32,15, 8,v)
    #define   GET16TspKeyEntry_crypto_param(r16)               _BFGET_(r16,15, 8)
    #define   SET16TspKeyEntry_crypto_param(r16,v)             _BFSET_(r16,15, 8,v)

    #define   GET32TspKeyEntry_reserved_0(r32)                 _BFGET_(r32,31,16)
    #define   SET32TspKeyEntry_reserved_0(r32,v)               _BFSET_(r32,31,16,v)
    #define   GET16TspKeyEntry_reserved_0(r16)                 _BFGET_(r16,15, 0)
    #define   SET16TspKeyEntry_reserved_0(r16,v)               _BFSET_(r16,15, 0,v)

            UNSG32 u_crypto_type                               :  5;
            UNSG32 u_write_enable                              :  1;
            UNSG32 u_data_type                                 :  2;
            UNSG32 u_crypto_param                              :  8;
            UNSG32 u_reserved_0                                : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspKeyEntry_reserved_1(r32)                 _BFGET_(r32,31, 0)
    #define   SET32TspKeyEntry_reserved_1(r32,v)               _BFSET_(r32,31, 0,v)

            UNSG32 u_reserved_1                                : 32;
    ///////////////////////////////////////////////////////////
    } SIE_TspKeyEntry;

    ///////////////////////////////////////////////////////////
     SIGN32 TspKeyEntry_drvrd(SIE_TspKeyEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspKeyEntry_drvwr(SIE_TspKeyEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspKeyEntry_reset(SIE_TspKeyEntry *p);
     SIGN32 TspKeyEntry_cmp  (SIE_TspKeyEntry *p, SIE_TspKeyEntry *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspKeyEntry_check(p,pie,pfx,hLOG) TspKeyEntry_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspKeyEntry_print(p,    pfx,hLOG) TspKeyEntry_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspKeyEntry
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspKeyTbl               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 key_entry            
///               $TspKeyEntry         key_entry         MEM     [256]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspKeyTbl
#define h_TspKeyTbl (){}

    #define     RA_TspKeyTbl_key_entry                         0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspKeyTbl {
    ///////////////////////////////////////////////////////////
              SIE_TspKeyEntry                                  ie_key_entry[256];
    ///////////////////////////////////////////////////////////
    } SIE_TspKeyTbl;

    ///////////////////////////////////////////////////////////
     SIGN32 TspKeyTbl_drvrd(SIE_TspKeyTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspKeyTbl_drvwr(SIE_TspKeyTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspKeyTbl_reset(SIE_TspKeyTbl *p);
     SIGN32 TspKeyTbl_cmp  (SIE_TspKeyTbl *p, SIE_TspKeyTbl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspKeyTbl_check(p,pie,pfx,hLOG) TspKeyTbl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspKeyTbl_print(p,    pfx,hLOG) TspKeyTbl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspKeyTbl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCrcParam                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 2  size                      
///                                    ###
///                                    * Size of polynomial
///                                    ###
///                                    : CRC8                      0x0
///                                    : CRC16                     0x1
///                                    : CRC32                     0x2
///                                    : CRC64                     0x3
///               %unsigned 6  reserved_0                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCrcParam
#define h_TspCrcParam (){}

    #define     BA_TspCrcParam_size                            0x0000
    #define     B16TspCrcParam_size                            0x0000
    #define   LSb32TspCrcParam_size                               0
    #define   LSb16TspCrcParam_size                               0
    #define       bTspCrcParam_size                            2
    #define   MSK32TspCrcParam_size                               0x00000003
    #define        TspCrcParam_size_CRC8                                    0x0
    #define        TspCrcParam_size_CRC16                                   0x1
    #define        TspCrcParam_size_CRC32                                   0x2
    #define        TspCrcParam_size_CRC64                                   0x3

    #define     BA_TspCrcParam_reserved_0                      0x0000
    #define     B16TspCrcParam_reserved_0                      0x0000
    #define   LSb32TspCrcParam_reserved_0                         2
    #define   LSb16TspCrcParam_reserved_0                         2
    #define       bTspCrcParam_reserved_0                      6
    #define   MSK32TspCrcParam_reserved_0                         0x000000FC
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCrcParam {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCrcParam_size(r32)                       _BFGET_(r32, 1, 0)
    #define   SET32TspCrcParam_size(r32,v)                     _BFSET_(r32, 1, 0,v)
    #define   GET16TspCrcParam_size(r16)                       _BFGET_(r16, 1, 0)
    #define   SET16TspCrcParam_size(r16,v)                     _BFSET_(r16, 1, 0,v)

    #define   GET32TspCrcParam_reserved_0(r32)                 _BFGET_(r32, 7, 2)
    #define   SET32TspCrcParam_reserved_0(r32,v)               _BFSET_(r32, 7, 2,v)
    #define   GET16TspCrcParam_reserved_0(r16)                 _BFGET_(r16, 7, 2)
    #define   SET16TspCrcParam_reserved_0(r16,v)               _BFSET_(r16, 7, 2,v)

            UNSG32 u_size                                      :  2;
            UNSG32 u_reserved_0                                :  6;
    ///////////////////////////////////////////////////////////
    } SIE_TspCrcParam;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCrcParam_drvrd(SIE_TspCrcParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCrcParam_drvwr(SIE_TspCrcParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCrcParam_reset(SIE_TspCrcParam *p);
     SIGN32 TspCrcParam_cmp  (SIE_TspCrcParam *p, SIE_TspCrcParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCrcParam_check(p,pie,pfx,hLOG) TspCrcParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCrcParam_print(p,    pfx,hLOG) TspCrcParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCrcParam
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCsa2Param                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  NSK2_SBOX_TABLE           0x1
///               %unsigned 1  Conformance               0x0
///                                    ###
///                                    * 1: use the conformance mechanism to transform the key;
///                                    * 0: use the key as is.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCsa2Param
#define h_TspCsa2Param (){}

    #define     BA_TspCsa2Param_NSK2_SBOX_TABLE                0x0000
    #define     B16TspCsa2Param_NSK2_SBOX_TABLE                0x0000
    #define   LSb32TspCsa2Param_NSK2_SBOX_TABLE                   0
    #define   LSb16TspCsa2Param_NSK2_SBOX_TABLE                   0
    #define       bTspCsa2Param_NSK2_SBOX_TABLE                5
    #define   MSK32TspCsa2Param_NSK2_SBOX_TABLE                   0x0000001F

    #define     BA_TspCsa2Param_Conformance                    0x0000
    #define     B16TspCsa2Param_Conformance                    0x0000
    #define   LSb32TspCsa2Param_Conformance                       5
    #define   LSb16TspCsa2Param_Conformance                       5
    #define       bTspCsa2Param_Conformance                    1
    #define   MSK32TspCsa2Param_Conformance                       0x00000020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCsa2Param {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCsa2Param_NSK2_SBOX_TABLE(r32)           _BFGET_(r32, 4, 0)
    #define   SET32TspCsa2Param_NSK2_SBOX_TABLE(r32,v)         _BFSET_(r32, 4, 0,v)
    #define   GET16TspCsa2Param_NSK2_SBOX_TABLE(r16)           _BFGET_(r16, 4, 0)
    #define   SET16TspCsa2Param_NSK2_SBOX_TABLE(r16,v)         _BFSET_(r16, 4, 0,v)

    #define   GET32TspCsa2Param_Conformance(r32)               _BFGET_(r32, 5, 5)
    #define   SET32TspCsa2Param_Conformance(r32,v)             _BFSET_(r32, 5, 5,v)
    #define   GET16TspCsa2Param_Conformance(r16)               _BFGET_(r16, 5, 5)
    #define   SET16TspCsa2Param_Conformance(r16,v)             _BFSET_(r16, 5, 5,v)

            UNSG32 u_NSK2_SBOX_TABLE                           :  5;
            UNSG32 u_Conformance                               :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TspCsa2Param;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCsa2Param_drvrd(SIE_TspCsa2Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCsa2Param_drvwr(SIE_TspCsa2Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCsa2Param_reset(SIE_TspCsa2Param *p);
     SIGN32 TspCsa2Param_cmp  (SIE_TspCsa2Param *p, SIE_TspCsa2Param *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCsa2Param_check(p,pie,pfx,hLOG) TspCsa2Param_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCsa2Param_print(p,    pfx,hLOG) TspCsa2Param_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCsa2Param
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCsa3Param                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  NSK2_ConstIndex           0x0
///               %unsigned 3  NSK2_Permutation          0x0
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCsa3Param
#define h_TspCsa3Param (){}

    #define     BA_TspCsa3Param_NSK2_ConstIndex                0x0000
    #define     B16TspCsa3Param_NSK2_ConstIndex                0x0000
    #define   LSb32TspCsa3Param_NSK2_ConstIndex                   0
    #define   LSb16TspCsa3Param_NSK2_ConstIndex                   0
    #define       bTspCsa3Param_NSK2_ConstIndex                5
    #define   MSK32TspCsa3Param_NSK2_ConstIndex                   0x0000001F

    #define     BA_TspCsa3Param_NSK2_Permutation               0x0000
    #define     B16TspCsa3Param_NSK2_Permutation               0x0000
    #define   LSb32TspCsa3Param_NSK2_Permutation                  5
    #define   LSb16TspCsa3Param_NSK2_Permutation                  5
    #define       bTspCsa3Param_NSK2_Permutation               3
    #define   MSK32TspCsa3Param_NSK2_Permutation                  0x000000E0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCsa3Param {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCsa3Param_NSK2_ConstIndex(r32)           _BFGET_(r32, 4, 0)
    #define   SET32TspCsa3Param_NSK2_ConstIndex(r32,v)         _BFSET_(r32, 4, 0,v)
    #define   GET16TspCsa3Param_NSK2_ConstIndex(r16)           _BFGET_(r16, 4, 0)
    #define   SET16TspCsa3Param_NSK2_ConstIndex(r16,v)         _BFSET_(r16, 4, 0,v)

    #define   GET32TspCsa3Param_NSK2_Permutation(r32)          _BFGET_(r32, 7, 5)
    #define   SET32TspCsa3Param_NSK2_Permutation(r32,v)        _BFSET_(r32, 7, 5,v)
    #define   GET16TspCsa3Param_NSK2_Permutation(r16)          _BFGET_(r16, 7, 5)
    #define   SET16TspCsa3Param_NSK2_Permutation(r16,v)        _BFSET_(r16, 7, 5,v)

            UNSG32 u_NSK2_ConstIndex                           :  5;
            UNSG32 u_NSK2_Permutation                          :  3;
    ///////////////////////////////////////////////////////////
    } SIE_TspCsa3Param;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCsa3Param_drvrd(SIE_TspCsa3Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCsa3Param_drvwr(SIE_TspCsa3Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCsa3Param_reset(SIE_TspCsa3Param *p);
     SIGN32 TspCsa3Param_cmp  (SIE_TspCsa3Param *p, SIE_TspCsa3Param *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCsa3Param_check(p,pie,pfx,hLOG) TspCsa3Param_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCsa3Param_print(p,    pfx,hLOG) TspCsa3Param_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCsa3Param
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCsa3Param1                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  NSK2_ModifyXRC            0x0
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCsa3Param1
#define h_TspCsa3Param1 (){}

    #define     BA_TspCsa3Param1_NSK2_ModifyXRC                0x0000
    #define     B16TspCsa3Param1_NSK2_ModifyXRC                0x0000
    #define   LSb32TspCsa3Param1_NSK2_ModifyXRC                   0
    #define   LSb16TspCsa3Param1_NSK2_ModifyXRC                   0
    #define       bTspCsa3Param1_NSK2_ModifyXRC                1
    #define   MSK32TspCsa3Param1_NSK2_ModifyXRC                   0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCsa3Param1 {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCsa3Param1_NSK2_ModifyXRC(r32)           _BFGET_(r32, 0, 0)
    #define   SET32TspCsa3Param1_NSK2_ModifyXRC(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16TspCsa3Param1_NSK2_ModifyXRC(r16)           _BFGET_(r16, 0, 0)
    #define   SET16TspCsa3Param1_NSK2_ModifyXRC(r16,v)         _BFSET_(r16, 0, 0,v)

            UNSG32 u_NSK2_ModifyXRC                            :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TspCsa3Param1;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCsa3Param1_drvrd(SIE_TspCsa3Param1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCsa3Param1_drvwr(SIE_TspCsa3Param1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCsa3Param1_reset(SIE_TspCsa3Param1 *p);
     SIGN32 TspCsa3Param1_cmp  (SIE_TspCsa3Param1 *p, SIE_TspCsa3Param1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCsa3Param1_check(p,pie,pfx,hLOG) TspCsa3Param1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCsa3Param1_print(p,    pfx,hLOG) TspCsa3Param1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCsa3Param1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspMulti2Param                           (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  mode                      
///                                    ###
///                                    * Mode of the crypto function
///                                    ###
///                                    : ECB                       0x0
///                                    : CBC                       0x1
///                                    : OFB                       0x2
///                                    : CTR                       0x3
///                                                 ###
///                                                 * All other values are reserved
///                                                 ###
///               %unsigned 5  round                     
///                                    ###
///                                    * round number divided by 4;
///                                    * 0 is mapped to 32.
///                                    * For MULTI2 with round number of 32, this field should be set to 8.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspMulti2Param
#define h_TspMulti2Param (){}

    #define     BA_TspMulti2Param_mode                         0x0000
    #define     B16TspMulti2Param_mode                         0x0000
    #define   LSb32TspMulti2Param_mode                            0
    #define   LSb16TspMulti2Param_mode                            0
    #define       bTspMulti2Param_mode                         3
    #define   MSK32TspMulti2Param_mode                            0x00000007
    #define        TspMulti2Param_mode_ECB                                  0x0
    #define        TspMulti2Param_mode_CBC                                  0x1
    #define        TspMulti2Param_mode_OFB                                  0x2
    #define        TspMulti2Param_mode_CTR                                  0x3

    #define     BA_TspMulti2Param_round                        0x0000
    #define     B16TspMulti2Param_round                        0x0000
    #define   LSb32TspMulti2Param_round                           3
    #define   LSb16TspMulti2Param_round                           3
    #define       bTspMulti2Param_round                        5
    #define   MSK32TspMulti2Param_round                           0x000000F8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspMulti2Param {
    ///////////////////////////////////////////////////////////
    #define   GET32TspMulti2Param_mode(r32)                    _BFGET_(r32, 2, 0)
    #define   SET32TspMulti2Param_mode(r32,v)                  _BFSET_(r32, 2, 0,v)
    #define   GET16TspMulti2Param_mode(r16)                    _BFGET_(r16, 2, 0)
    #define   SET16TspMulti2Param_mode(r16,v)                  _BFSET_(r16, 2, 0,v)

    #define   GET32TspMulti2Param_round(r32)                   _BFGET_(r32, 7, 3)
    #define   SET32TspMulti2Param_round(r32,v)                 _BFSET_(r32, 7, 3,v)
    #define   GET16TspMulti2Param_round(r16)                   _BFGET_(r16, 7, 3)
    #define   SET16TspMulti2Param_round(r16,v)                 _BFSET_(r16, 7, 3,v)

            UNSG32 u_mode                                      :  3;
            UNSG32 u_round                                     :  5;
    ///////////////////////////////////////////////////////////
    } SIE_TspMulti2Param;

    ///////////////////////////////////////////////////////////
     SIGN32 TspMulti2Param_drvrd(SIE_TspMulti2Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspMulti2Param_drvwr(SIE_TspMulti2Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspMulti2Param_reset(SIE_TspMulti2Param *p);
     SIGN32 TspMulti2Param_cmp  (SIE_TspMulti2Param *p, SIE_TspMulti2Param *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspMulti2Param_check(p,pie,pfx,hLOG) TspMulti2Param_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspMulti2Param_print(p,    pfx,hLOG) TspMulti2Param_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspMulti2Param
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspAesParam                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  mode                      
///                                    ###
///                                    * Mode of the crypto function
///                                    ###
///                                    : ECB                       0x0
///                                    : CBC                       0x1
///                                    : OFB                       0x2
///                                    : CTR                       0x3
///                                                 ###
///                                                 * The last four bytes in IV are the counter and increase by one for each input word (16-byte). The rest of the IV (the nonce) is kept same for all input data.
///                                                 ###
///                                    : RCBC                      0x4
///                                                 ###
///                                                 * RCBC mode as defined in DVB-CPCM part 5
///                                                 ###
///                                    : CTR64                     0x5
///                                                 ###
///                                                 * The last eight bytes in IV are the counter and increase by one for each input word (16-byte). The rest of the IV (the nonce) is kept same for all input data.
///                                                 ###
///                                    : CTR128                    0x6
///                                                 ###
///                                                 * The entire 16 bytes in IV are the counter and increase by one for each input word (16-byte).
///                                                 * All other values are reserved
///                                                 ###
///               %unsigned 2  key_length                
///                                    ###
///                                    * Length of the Key
///                                    ###
///                                    : AES128                    0x0
///                                    : AES192                    0x1
///                                    : AES256                    0x2
///                                                 ###
///                                                 * All other values are reserved
///                                                 ###
///               %unsigned 3  reserved_0                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspAesParam
#define h_TspAesParam (){}

    #define     BA_TspAesParam_mode                            0x0000
    #define     B16TspAesParam_mode                            0x0000
    #define   LSb32TspAesParam_mode                               0
    #define   LSb16TspAesParam_mode                               0
    #define       bTspAesParam_mode                            3
    #define   MSK32TspAesParam_mode                               0x00000007
    #define        TspAesParam_mode_ECB                                     0x0
    #define        TspAesParam_mode_CBC                                     0x1
    #define        TspAesParam_mode_OFB                                     0x2
    #define        TspAesParam_mode_CTR                                     0x3
    #define        TspAesParam_mode_RCBC                                    0x4
    #define        TspAesParam_mode_CTR64                                   0x5
    #define        TspAesParam_mode_CTR128                                  0x6

    #define     BA_TspAesParam_key_length                      0x0000
    #define     B16TspAesParam_key_length                      0x0000
    #define   LSb32TspAesParam_key_length                         3
    #define   LSb16TspAesParam_key_length                         3
    #define       bTspAesParam_key_length                      2
    #define   MSK32TspAesParam_key_length                         0x00000018
    #define        TspAesParam_key_length_AES128                            0x0
    #define        TspAesParam_key_length_AES192                            0x1
    #define        TspAesParam_key_length_AES256                            0x2

    #define     BA_TspAesParam_reserved_0                      0x0000
    #define     B16TspAesParam_reserved_0                      0x0000
    #define   LSb32TspAesParam_reserved_0                         5
    #define   LSb16TspAesParam_reserved_0                         5
    #define       bTspAesParam_reserved_0                      3
    #define   MSK32TspAesParam_reserved_0                         0x000000E0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspAesParam {
    ///////////////////////////////////////////////////////////
    #define   GET32TspAesParam_mode(r32)                       _BFGET_(r32, 2, 0)
    #define   SET32TspAesParam_mode(r32,v)                     _BFSET_(r32, 2, 0,v)
    #define   GET16TspAesParam_mode(r16)                       _BFGET_(r16, 2, 0)
    #define   SET16TspAesParam_mode(r16,v)                     _BFSET_(r16, 2, 0,v)

    #define   GET32TspAesParam_key_length(r32)                 _BFGET_(r32, 4, 3)
    #define   SET32TspAesParam_key_length(r32,v)               _BFSET_(r32, 4, 3,v)
    #define   GET16TspAesParam_key_length(r16)                 _BFGET_(r16, 4, 3)
    #define   SET16TspAesParam_key_length(r16,v)               _BFSET_(r16, 4, 3,v)

    #define   GET32TspAesParam_reserved_0(r32)                 _BFGET_(r32, 7, 5)
    #define   SET32TspAesParam_reserved_0(r32,v)               _BFSET_(r32, 7, 5,v)
    #define   GET16TspAesParam_reserved_0(r16)                 _BFGET_(r16, 7, 5)
    #define   SET16TspAesParam_reserved_0(r16,v)               _BFSET_(r16, 7, 5,v)

            UNSG32 u_mode                                      :  3;
            UNSG32 u_key_length                                :  2;
            UNSG32 u_reserved_0                                :  3;
    ///////////////////////////////////////////////////////////
    } SIE_TspAesParam;

    ///////////////////////////////////////////////////////////
     SIGN32 TspAesParam_drvrd(SIE_TspAesParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspAesParam_drvwr(SIE_TspAesParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspAesParam_reset(SIE_TspAesParam *p);
     SIGN32 TspAesParam_cmp  (SIE_TspAesParam *p, SIE_TspAesParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspAesParam_check(p,pie,pfx,hLOG) TspAesParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspAesParam_print(p,    pfx,hLOG) TspAesParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspAesParam
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspTdesParam                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  mode                      
///                                    ###
///                                    * Mode of the crypto function
///                                    ###
///                                    : ECB                       0x0
///                                    : CBC                       0x1
///                                    : OFB                       0x2
///                                    : CTR                       0x3
///                                                 ###
///                                                 * All other values are reserved
///                                                 ###
///               %unsigned 2  key_length                
///                                    ###
///                                    * length of the key
///                                    ###
///                                    : DES                       0x0
///                                                 ###
///                                                 * 64-bit key
///                                                 ###
///                                    : TDES                      0x1
///                                                 ###
///                                                 * 192-bit key
///                                                 ###
///                                    : TDES128                   0x2
///                                                 ###
///                                                 * TDES with 128-bit key; key1 and key3 are the same
///                                                 * All other values are reserved
///                                                 ###
///               %unsigned 3  reserved_0                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspTdesParam
#define h_TspTdesParam (){}

    #define     BA_TspTdesParam_mode                           0x0000
    #define     B16TspTdesParam_mode                           0x0000
    #define   LSb32TspTdesParam_mode                              0
    #define   LSb16TspTdesParam_mode                              0
    #define       bTspTdesParam_mode                           3
    #define   MSK32TspTdesParam_mode                              0x00000007
    #define        TspTdesParam_mode_ECB                                    0x0
    #define        TspTdesParam_mode_CBC                                    0x1
    #define        TspTdesParam_mode_OFB                                    0x2
    #define        TspTdesParam_mode_CTR                                    0x3

    #define     BA_TspTdesParam_key_length                     0x0000
    #define     B16TspTdesParam_key_length                     0x0000
    #define   LSb32TspTdesParam_key_length                        3
    #define   LSb16TspTdesParam_key_length                        3
    #define       bTspTdesParam_key_length                     2
    #define   MSK32TspTdesParam_key_length                        0x00000018
    #define        TspTdesParam_key_length_DES                              0x0
    #define        TspTdesParam_key_length_TDES                             0x1
    #define        TspTdesParam_key_length_TDES128                          0x2

    #define     BA_TspTdesParam_reserved_0                     0x0000
    #define     B16TspTdesParam_reserved_0                     0x0000
    #define   LSb32TspTdesParam_reserved_0                        5
    #define   LSb16TspTdesParam_reserved_0                        5
    #define       bTspTdesParam_reserved_0                     3
    #define   MSK32TspTdesParam_reserved_0                        0x000000E0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspTdesParam {
    ///////////////////////////////////////////////////////////
    #define   GET32TspTdesParam_mode(r32)                      _BFGET_(r32, 2, 0)
    #define   SET32TspTdesParam_mode(r32,v)                    _BFSET_(r32, 2, 0,v)
    #define   GET16TspTdesParam_mode(r16)                      _BFGET_(r16, 2, 0)
    #define   SET16TspTdesParam_mode(r16,v)                    _BFSET_(r16, 2, 0,v)

    #define   GET32TspTdesParam_key_length(r32)                _BFGET_(r32, 4, 3)
    #define   SET32TspTdesParam_key_length(r32,v)              _BFSET_(r32, 4, 3,v)
    #define   GET16TspTdesParam_key_length(r16)                _BFGET_(r16, 4, 3)
    #define   SET16TspTdesParam_key_length(r16,v)              _BFSET_(r16, 4, 3,v)

    #define   GET32TspTdesParam_reserved_0(r32)                _BFGET_(r32, 7, 5)
    #define   SET32TspTdesParam_reserved_0(r32,v)              _BFSET_(r32, 7, 5,v)
    #define   GET16TspTdesParam_reserved_0(r16)                _BFGET_(r16, 7, 5)
    #define   SET16TspTdesParam_reserved_0(r16,v)              _BFSET_(r16, 7, 5,v)

            UNSG32 u_mode                                      :  3;
            UNSG32 u_key_length                                :  2;
            UNSG32 u_reserved_0                                :  3;
    ///////////////////////////////////////////////////////////
    } SIE_TspTdesParam;

    ///////////////////////////////////////////////////////////
     SIGN32 TspTdesParam_drvrd(SIE_TspTdesParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspTdesParam_drvwr(SIE_TspTdesParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspTdesParam_reset(SIE_TspTdesParam *p);
     SIGN32 TspTdesParam_cmp  (SIE_TspTdesParam *p, SIE_TspTdesParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspTdesParam_check(p,pie,pfx,hLOG) TspTdesParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspTdesParam_print(p,    pfx,hLOG) TspTdesParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspTdesParam
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspC2Param                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  mode                      
///                                    ###
///                                    * Mode of the crypto function
///                                    ###
///                                    : ECB                       0x0
///                                    : CBC                       0x1
///               %unsigned 7  reserved_0                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspC2Param
#define h_TspC2Param (){}

    #define     BA_TspC2Param_mode                             0x0000
    #define     B16TspC2Param_mode                             0x0000
    #define   LSb32TspC2Param_mode                                0
    #define   LSb16TspC2Param_mode                                0
    #define       bTspC2Param_mode                             1
    #define   MSK32TspC2Param_mode                                0x00000001
    #define        TspC2Param_mode_ECB                                      0x0
    #define        TspC2Param_mode_CBC                                      0x1

    #define     BA_TspC2Param_reserved_0                       0x0000
    #define     B16TspC2Param_reserved_0                       0x0000
    #define   LSb32TspC2Param_reserved_0                          1
    #define   LSb16TspC2Param_reserved_0                          1
    #define       bTspC2Param_reserved_0                       7
    #define   MSK32TspC2Param_reserved_0                          0x000000FE
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspC2Param {
    ///////////////////////////////////////////////////////////
    #define   GET32TspC2Param_mode(r32)                        _BFGET_(r32, 0, 0)
    #define   SET32TspC2Param_mode(r32,v)                      _BFSET_(r32, 0, 0,v)
    #define   GET16TspC2Param_mode(r16)                        _BFGET_(r16, 0, 0)
    #define   SET16TspC2Param_mode(r16,v)                      _BFSET_(r16, 0, 0,v)

    #define   GET32TspC2Param_reserved_0(r32)                  _BFGET_(r32, 7, 1)
    #define   SET32TspC2Param_reserved_0(r32,v)                _BFSET_(r32, 7, 1,v)
    #define   GET16TspC2Param_reserved_0(r16)                  _BFGET_(r16, 7, 1)
    #define   SET16TspC2Param_reserved_0(r16,v)                _BFSET_(r16, 7, 1,v)

            UNSG32 u_mode                                      :  1;
            UNSG32 u_reserved_0                                :  7;
    ///////////////////////////////////////////////////////////
    } SIE_TspC2Param;

    ///////////////////////////////////////////////////////////
     SIGN32 TspC2Param_drvrd(SIE_TspC2Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspC2Param_drvwr(SIE_TspC2Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspC2Param_reset(SIE_TspC2Param *p);
     SIGN32 TspC2Param_cmp  (SIE_TspC2Param *p, SIE_TspC2Param *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspC2Param_check(p,pie,pfx,hLOG) TspC2Param_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspC2Param_print(p,    pfx,hLOG) TspC2Param_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspC2Param
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspWmmacParam                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  load_state                
///                                    ###
///                                    * 1: load state from iv_address
///                                    * 0: reset the state to 0
///                                    ###
///               %unsigned 7  reserved_0                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspWmmacParam
#define h_TspWmmacParam (){}

    #define     BA_TspWmmacParam_load_state                    0x0000
    #define     B16TspWmmacParam_load_state                    0x0000
    #define   LSb32TspWmmacParam_load_state                       0
    #define   LSb16TspWmmacParam_load_state                       0
    #define       bTspWmmacParam_load_state                    1
    #define   MSK32TspWmmacParam_load_state                       0x00000001

    #define     BA_TspWmmacParam_reserved_0                    0x0000
    #define     B16TspWmmacParam_reserved_0                    0x0000
    #define   LSb32TspWmmacParam_reserved_0                       1
    #define   LSb16TspWmmacParam_reserved_0                       1
    #define       bTspWmmacParam_reserved_0                    7
    #define   MSK32TspWmmacParam_reserved_0                       0x000000FE
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspWmmacParam {
    ///////////////////////////////////////////////////////////
    #define   GET32TspWmmacParam_load_state(r32)               _BFGET_(r32, 0, 0)
    #define   SET32TspWmmacParam_load_state(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16TspWmmacParam_load_state(r16)               _BFGET_(r16, 0, 0)
    #define   SET16TspWmmacParam_load_state(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32TspWmmacParam_reserved_0(r32)               _BFGET_(r32, 7, 1)
    #define   SET32TspWmmacParam_reserved_0(r32,v)             _BFSET_(r32, 7, 1,v)
    #define   GET16TspWmmacParam_reserved_0(r16)               _BFGET_(r16, 7, 1)
    #define   SET16TspWmmacParam_reserved_0(r16,v)             _BFSET_(r16, 7, 1,v)

            UNSG32 u_load_state                                :  1;
            UNSG32 u_reserved_0                                :  7;
    ///////////////////////////////////////////////////////////
    } SIE_TspWmmacParam;

    ///////////////////////////////////////////////////////////
     SIGN32 TspWmmacParam_drvrd(SIE_TspWmmacParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspWmmacParam_drvwr(SIE_TspWmmacParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspWmmacParam_reset(SIE_TspWmmacParam *p);
     SIGN32 TspWmmacParam_cmp  (SIE_TspWmmacParam *p, SIE_TspWmmacParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspWmmacParam_check(p,pie,pfx,hLOG) TspWmmacParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspWmmacParam_print(p,    pfx,hLOG) TspWmmacParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspWmmacParam
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspRc4Param                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  init                      
///                                    ###
///                                    * 1: load key from key_address and run KSA to generate the state
///                                    * 0: load the state from iv_address
///                                    ###
///               %unsigned 5  key_length                
///                                    ###
///                                    * Number of bytes in the key;
///                                    * 0 is mapped to 32;
///                                    * Valid only when init bit is one.
///                                    ###
///               %unsigned 2  reserved_0                
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspRc4Param
#define h_TspRc4Param (){}

    #define     BA_TspRc4Param_init                            0x0000
    #define     B16TspRc4Param_init                            0x0000
    #define   LSb32TspRc4Param_init                               0
    #define   LSb16TspRc4Param_init                               0
    #define       bTspRc4Param_init                            1
    #define   MSK32TspRc4Param_init                               0x00000001

    #define     BA_TspRc4Param_key_length                      0x0000
    #define     B16TspRc4Param_key_length                      0x0000
    #define   LSb32TspRc4Param_key_length                         1
    #define   LSb16TspRc4Param_key_length                         1
    #define       bTspRc4Param_key_length                      5
    #define   MSK32TspRc4Param_key_length                         0x0000003E

    #define     BA_TspRc4Param_reserved_0                      0x0000
    #define     B16TspRc4Param_reserved_0                      0x0000
    #define   LSb32TspRc4Param_reserved_0                         6
    #define   LSb16TspRc4Param_reserved_0                         6
    #define       bTspRc4Param_reserved_0                      2
    #define   MSK32TspRc4Param_reserved_0                         0x000000C0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspRc4Param {
    ///////////////////////////////////////////////////////////
    #define   GET32TspRc4Param_init(r32)                       _BFGET_(r32, 0, 0)
    #define   SET32TspRc4Param_init(r32,v)                     _BFSET_(r32, 0, 0,v)
    #define   GET16TspRc4Param_init(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16TspRc4Param_init(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define   GET32TspRc4Param_key_length(r32)                 _BFGET_(r32, 5, 1)
    #define   SET32TspRc4Param_key_length(r32,v)               _BFSET_(r32, 5, 1,v)
    #define   GET16TspRc4Param_key_length(r16)                 _BFGET_(r16, 5, 1)
    #define   SET16TspRc4Param_key_length(r16,v)               _BFSET_(r16, 5, 1,v)

    #define   GET32TspRc4Param_reserved_0(r32)                 _BFGET_(r32, 7, 6)
    #define   SET32TspRc4Param_reserved_0(r32,v)               _BFSET_(r32, 7, 6,v)
    #define   GET16TspRc4Param_reserved_0(r16)                 _BFGET_(r16, 7, 6)
    #define   SET16TspRc4Param_reserved_0(r16,v)               _BFSET_(r16, 7, 6,v)

            UNSG32 u_init                                      :  1;
            UNSG32 u_key_length                                :  5;
            UNSG32 u_reserved_0                                :  2;
    ///////////////////////////////////////////////////////////
    } SIE_TspRc4Param;

    ///////////////////////////////////////////////////////////
     SIGN32 TspRc4Param_drvrd(SIE_TspRc4Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspRc4Param_drvwr(SIE_TspRc4Param *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspRc4Param_reset(SIE_TspRc4Param *p);
     SIGN32 TspRc4Param_cmp  (SIE_TspRc4Param *p, SIE_TspRc4Param *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspRc4Param_check(p,pie,pfx,hLOG) TspRc4Param_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspRc4Param_print(p,    pfx,hLOG) TspRc4Param_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspRc4Param
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSwdCmd               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 7  reserved_0                
///               %unsigned 1  save_context              
///                                    ###
///                                    * 1: overwrite the old context with the new context.
///                                    * 0: don’t overwrite the old context with the new context
///                                    ###
///               %unsigned 1  use_specified_sync_word   
///                                    ###
///                                    * 0: use default sync word (0x000001) for matching.
///                                    * 1: use sync word specified in context area for matching
///                                    ###
///               %unsigned 2  sync_word_length          
///                                    ###
///                                    * Length of the sync word
///                                    * Valid only when use_specified_syncword is 1.
///                                    * 1: one byte sync word
///                                    * 2: two byte sync word
///                                    * 3: three byte sync word
///                                    * 0: four byte sync word
///                                    ###
///               %unsigned 5  reserved_1                
///               %unsigned 16 context_address           
///                                    ###
///                                    * Address of the context;
///                                    ###
///               %unsigned 16 source_address            
///                                    ###
///                                    * Address of the input data in byte
///                                    ###
///               %unsigned 16 input_size                
///                                    ###
///                                    * size of the input data in byte;
///                                    * 0 is mapped to 65536
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSwdCmd
#define h_TspSwdCmd (){}

    #define     BA_TspSwdCmd_reserved_0                        0x0000
    #define     B16TspSwdCmd_reserved_0                        0x0000
    #define   LSb32TspSwdCmd_reserved_0                           0
    #define   LSb16TspSwdCmd_reserved_0                           0
    #define       bTspSwdCmd_reserved_0                        7
    #define   MSK32TspSwdCmd_reserved_0                           0x0000007F

    #define     BA_TspSwdCmd_save_context                      0x0000
    #define     B16TspSwdCmd_save_context                      0x0000
    #define   LSb32TspSwdCmd_save_context                         7
    #define   LSb16TspSwdCmd_save_context                         7
    #define       bTspSwdCmd_save_context                      1
    #define   MSK32TspSwdCmd_save_context                         0x00000080

    #define     BA_TspSwdCmd_use_specified_sync_word           0x0001
    #define     B16TspSwdCmd_use_specified_sync_word           0x0000
    #define   LSb32TspSwdCmd_use_specified_sync_word              8
    #define   LSb16TspSwdCmd_use_specified_sync_word              8
    #define       bTspSwdCmd_use_specified_sync_word           1
    #define   MSK32TspSwdCmd_use_specified_sync_word              0x00000100

    #define     BA_TspSwdCmd_sync_word_length                  0x0001
    #define     B16TspSwdCmd_sync_word_length                  0x0000
    #define   LSb32TspSwdCmd_sync_word_length                     9
    #define   LSb16TspSwdCmd_sync_word_length                     9
    #define       bTspSwdCmd_sync_word_length                  2
    #define   MSK32TspSwdCmd_sync_word_length                     0x00000600

    #define     BA_TspSwdCmd_reserved_1                        0x0001
    #define     B16TspSwdCmd_reserved_1                        0x0000
    #define   LSb32TspSwdCmd_reserved_1                           11
    #define   LSb16TspSwdCmd_reserved_1                           11
    #define       bTspSwdCmd_reserved_1                        5
    #define   MSK32TspSwdCmd_reserved_1                           0x0000F800

    #define     BA_TspSwdCmd_context_address                   0x0002
    #define     B16TspSwdCmd_context_address                   0x0002
    #define   LSb32TspSwdCmd_context_address                      16
    #define   LSb16TspSwdCmd_context_address                      0
    #define       bTspSwdCmd_context_address                   16
    #define   MSK32TspSwdCmd_context_address                      0xFFFF0000

    #define     BA_TspSwdCmd_source_address                    0x0004
    #define     B16TspSwdCmd_source_address                    0x0004
    #define   LSb32TspSwdCmd_source_address                       0
    #define   LSb16TspSwdCmd_source_address                       0
    #define       bTspSwdCmd_source_address                    16
    #define   MSK32TspSwdCmd_source_address                       0x0000FFFF

    #define     BA_TspSwdCmd_input_size                        0x0006
    #define     B16TspSwdCmd_input_size                        0x0006
    #define   LSb32TspSwdCmd_input_size                           16
    #define   LSb16TspSwdCmd_input_size                           0
    #define       bTspSwdCmd_input_size                        16
    #define   MSK32TspSwdCmd_input_size                           0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSwdCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSwdCmd_reserved_0(r32)                   _BFGET_(r32, 6, 0)
    #define   SET32TspSwdCmd_reserved_0(r32,v)                 _BFSET_(r32, 6, 0,v)
    #define   GET16TspSwdCmd_reserved_0(r16)                   _BFGET_(r16, 6, 0)
    #define   SET16TspSwdCmd_reserved_0(r16,v)                 _BFSET_(r16, 6, 0,v)

    #define   GET32TspSwdCmd_save_context(r32)                 _BFGET_(r32, 7, 7)
    #define   SET32TspSwdCmd_save_context(r32,v)               _BFSET_(r32, 7, 7,v)
    #define   GET16TspSwdCmd_save_context(r16)                 _BFGET_(r16, 7, 7)
    #define   SET16TspSwdCmd_save_context(r16,v)               _BFSET_(r16, 7, 7,v)

    #define   GET32TspSwdCmd_use_specified_sync_word(r32)      _BFGET_(r32, 8, 8)
    #define   SET32TspSwdCmd_use_specified_sync_word(r32,v)    _BFSET_(r32, 8, 8,v)
    #define   GET16TspSwdCmd_use_specified_sync_word(r16)      _BFGET_(r16, 8, 8)
    #define   SET16TspSwdCmd_use_specified_sync_word(r16,v)    _BFSET_(r16, 8, 8,v)

    #define   GET32TspSwdCmd_sync_word_length(r32)             _BFGET_(r32,10, 9)
    #define   SET32TspSwdCmd_sync_word_length(r32,v)           _BFSET_(r32,10, 9,v)
    #define   GET16TspSwdCmd_sync_word_length(r16)             _BFGET_(r16,10, 9)
    #define   SET16TspSwdCmd_sync_word_length(r16,v)           _BFSET_(r16,10, 9,v)

    #define   GET32TspSwdCmd_reserved_1(r32)                   _BFGET_(r32,15,11)
    #define   SET32TspSwdCmd_reserved_1(r32,v)                 _BFSET_(r32,15,11,v)
    #define   GET16TspSwdCmd_reserved_1(r16)                   _BFGET_(r16,15,11)
    #define   SET16TspSwdCmd_reserved_1(r16,v)                 _BFSET_(r16,15,11,v)

    #define   GET32TspSwdCmd_context_address(r32)              _BFGET_(r32,31,16)
    #define   SET32TspSwdCmd_context_address(r32,v)            _BFSET_(r32,31,16,v)
    #define   GET16TspSwdCmd_context_address(r16)              _BFGET_(r16,15, 0)
    #define   SET16TspSwdCmd_context_address(r16,v)            _BFSET_(r16,15, 0,v)

            UNSG32 u_reserved_0                                :  7;
            UNSG32 u_save_context                              :  1;
            UNSG32 u_use_specified_sync_word                   :  1;
            UNSG32 u_sync_word_length                          :  2;
            UNSG32 u_reserved_1                                :  5;
            UNSG32 u_context_address                           : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspSwdCmd_source_address(r32)               _BFGET_(r32,15, 0)
    #define   SET32TspSwdCmd_source_address(r32,v)             _BFSET_(r32,15, 0,v)
    #define   GET16TspSwdCmd_source_address(r16)               _BFGET_(r16,15, 0)
    #define   SET16TspSwdCmd_source_address(r16,v)             _BFSET_(r16,15, 0,v)

    #define   GET32TspSwdCmd_input_size(r32)                   _BFGET_(r32,31,16)
    #define   SET32TspSwdCmd_input_size(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16TspSwdCmd_input_size(r16)                   _BFGET_(r16,15, 0)
    #define   SET16TspSwdCmd_input_size(r16,v)                 _BFSET_(r16,15, 0,v)

            UNSG32 u_source_address                            : 16;
            UNSG32 u_input_size                                : 16;
    ///////////////////////////////////////////////////////////
    } SIE_TspSwdCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSwdCmd_drvrd(SIE_TspSwdCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSwdCmd_drvwr(SIE_TspSwdCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSwdCmd_reset(SIE_TspSwdCmd *p);
     SIGN32 TspSwdCmd_cmp  (SIE_TspSwdCmd *p, SIE_TspSwdCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSwdCmd_check(p,pie,pfx,hLOG) TspSwdCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSwdCmd_print(p,    pfx,hLOG) TspSwdCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSwdCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSwdCtx               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 context                   
///                                    ###
///                                    * Value of the context
///                                    ###
///               %unsigned 32 sync_word                 
///                                    ###
///                                    * Value of the sync word;
///                                    * Valid only when use_specified_sync_word in TspSwdCmd is one. Valid length of this field is defined by sync_word_length in TspSwdCmd. SWD only use this field for matching, it does not change the value of this field
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSwdCtx
#define h_TspSwdCtx (){}

    #define     BA_TspSwdCtx_context                           0x0000
    #define     B16TspSwdCtx_context                           0x0000
    #define   LSb32TspSwdCtx_context                              0
    #define   LSb16TspSwdCtx_context                              0
    #define       bTspSwdCtx_context                           32
    #define   MSK32TspSwdCtx_context                              0xFFFFFFFF

    #define     BA_TspSwdCtx_sync_word                         0x0004
    #define     B16TspSwdCtx_sync_word                         0x0004
    #define   LSb32TspSwdCtx_sync_word                            0
    #define   LSb16TspSwdCtx_sync_word                            0
    #define       bTspSwdCtx_sync_word                         32
    #define   MSK32TspSwdCtx_sync_word                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSwdCtx {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSwdCtx_context(r32)                      _BFGET_(r32,31, 0)
    #define   SET32TspSwdCtx_context(r32,v)                    _BFSET_(r32,31, 0,v)

            UNSG32 u_context                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32TspSwdCtx_sync_word(r32)                    _BFGET_(r32,31, 0)
    #define   SET32TspSwdCtx_sync_word(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_sync_word                                 : 32;
    ///////////////////////////////////////////////////////////
    } SIE_TspSwdCtx;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSwdCtx_drvrd(SIE_TspSwdCtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSwdCtx_drvwr(SIE_TspSwdCtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSwdCtx_reset(SIE_TspSwdCtx *p);
     SIGN32 TspSwdCtx_cmp  (SIE_TspSwdCtx *p, SIE_TspSwdCtx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSwdCtx_check(p,pie,pfx,hLOG) TspSwdCtx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSwdCtx_print(p,    pfx,hLOG) TspSwdCtx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSwdCtx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSwdRtn               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  syncword_detected         
///                                    ###
///                                    * 1: Syncword is found in the input data
///                                    * 0: no syncword is found in the input data
///                                    ###
///               %unsigned 15 reserved_0                
///                                    ###
///                                    * This field will be filled with all zeros
///                                    ###
///               %unsigned 16 syncword_position         
///                                    ###
///                                    * Index of the last byte of the detected sync word
///                                    ###
///               %unsigned 32 reserved_1                
///                                    ###
///                                    * This field will be filled with all zeros
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSwdRtn
#define h_TspSwdRtn (){}

    #define     BA_TspSwdRtn_syncword_detected                 0x0000
    #define     B16TspSwdRtn_syncword_detected                 0x0000
    #define   LSb32TspSwdRtn_syncword_detected                    0
    #define   LSb16TspSwdRtn_syncword_detected                    0
    #define       bTspSwdRtn_syncword_detected                 1
    #define   MSK32TspSwdRtn_syncword_detected                    0x00000001

    #define     BA_TspSwdRtn_reserved_0                        0x0000
    #define     B16TspSwdRtn_reserved_0                        0x0000
    #define   LSb32TspSwdRtn_reserved_0                           1
    #define   LSb16TspSwdRtn_reserved_0                           1
    #define       bTspSwdRtn_reserved_0                        15
    #define   MSK32TspSwdRtn_reserved_0                           0x0000FFFE

    #define     BA_TspSwdRtn_syncword_position                 0x0002
    #define     B16TspSwdRtn_syncword_position                 0x0002
    #define   LSb32TspSwdRtn_syncword_position                    16
    #define   LSb16TspSwdRtn_syncword_position                    0
    #define       bTspSwdRtn_syncword_position                 16
    #define   MSK32TspSwdRtn_syncword_position                    0xFFFF0000

    #define     BA_TspSwdRtn_reserved_1                        0x0004
    #define     B16TspSwdRtn_reserved_1                        0x0004
    #define   LSb32TspSwdRtn_reserved_1                           0
    #define   LSb16TspSwdRtn_reserved_1                           0
    #define       bTspSwdRtn_reserved_1                        32
    #define   MSK32TspSwdRtn_reserved_1                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSwdRtn {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSwdRtn_syncword_detected(r32)            _BFGET_(r32, 0, 0)
    #define   SET32TspSwdRtn_syncword_detected(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16TspSwdRtn_syncword_detected(r16)            _BFGET_(r16, 0, 0)
    #define   SET16TspSwdRtn_syncword_detected(r16,v)          _BFSET_(r16, 0, 0,v)

    #define   GET32TspSwdRtn_reserved_0(r32)                   _BFGET_(r32,15, 1)
    #define   SET32TspSwdRtn_reserved_0(r32,v)                 _BFSET_(r32,15, 1,v)
    #define   GET16TspSwdRtn_reserved_0(r16)                   _BFGET_(r16,15, 1)
    #define   SET16TspSwdRtn_reserved_0(r16,v)                 _BFSET_(r16,15, 1,v)

    #define   GET32TspSwdRtn_syncword_position(r32)            _BFGET_(r32,31,16)
    #define   SET32TspSwdRtn_syncword_position(r32,v)          _BFSET_(r32,31,16,v)
    #define   GET16TspSwdRtn_syncword_position(r16)            _BFGET_(r16,15, 0)
    #define   SET16TspSwdRtn_syncword_position(r16,v)          _BFSET_(r16,15, 0,v)

            UNSG32 u_syncword_detected                         :  1;
            UNSG32 u_reserved_0                                : 15;
            UNSG32 u_syncword_position                         : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32TspSwdRtn_reserved_1(r32)                   _BFGET_(r32,31, 0)
    #define   SET32TspSwdRtn_reserved_1(r32,v)                 _BFSET_(r32,31, 0,v)

            UNSG32 u_reserved_1                                : 32;
    ///////////////////////////////////////////////////////////
    } SIE_TspSwdRtn;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSwdRtn_drvrd(SIE_TspSwdRtn *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSwdRtn_drvwr(SIE_TspSwdRtn *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSwdRtn_reset(SIE_TspSwdRtn *p);
     SIGN32 TspSwdRtn_cmp  (SIE_TspSwdRtn *p, SIE_TspSwdRtn *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSwdRtn_check(p,pie,pfx,hLOG) TspSwdRtn_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSwdRtn_print(p,    pfx,hLOG) TspSwdRtn_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSwdRtn
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaINTR                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 mask                 (W-)
///               %unsigned 1  empty                     0x0
///                                    ###
///                                    * Enable interrupt on 'empty' condition
///                                    ###
///               %unsigned 1  full                      0x0
///                                    ###
///                                    * Enable interrupt on 'full' condition
///                                    ###
///               %unsigned 1  almostEmpty               0x0
///                                    ###
///                                    * Enable interrupt on 'almostEmpty' condition
///                                    ###
///               %unsigned 1  almostFull                0x0
///                                    ###
///                                    * Enable interrupt on 'almostFull' condition
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       4b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaINTR
#define h_SemaINTR (){}

    #define     RA_SemaINTR_mask                               0x0000

    #define     BA_SemaINTR_mask_empty                         0x0000
    #define     B16SemaINTR_mask_empty                         0x0000
    #define   LSb32SemaINTR_mask_empty                            0
    #define   LSb16SemaINTR_mask_empty                            0
    #define       bSemaINTR_mask_empty                         1
    #define   MSK32SemaINTR_mask_empty                            0x00000001

    #define     BA_SemaINTR_mask_full                          0x0000
    #define     B16SemaINTR_mask_full                          0x0000
    #define   LSb32SemaINTR_mask_full                             1
    #define   LSb16SemaINTR_mask_full                             1
    #define       bSemaINTR_mask_full                          1
    #define   MSK32SemaINTR_mask_full                             0x00000002

    #define     BA_SemaINTR_mask_almostEmpty                   0x0000
    #define     B16SemaINTR_mask_almostEmpty                   0x0000
    #define   LSb32SemaINTR_mask_almostEmpty                      2
    #define   LSb16SemaINTR_mask_almostEmpty                      2
    #define       bSemaINTR_mask_almostEmpty                   1
    #define   MSK32SemaINTR_mask_almostEmpty                      0x00000004

    #define     BA_SemaINTR_mask_almostFull                    0x0000
    #define     B16SemaINTR_mask_almostFull                    0x0000
    #define   LSb32SemaINTR_mask_almostFull                       3
    #define   LSb16SemaINTR_mask_almostFull                       3
    #define       bSemaINTR_mask_almostFull                    1
    #define   MSK32SemaINTR_mask_almostFull                       0x00000008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaINTR {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaINTR_mask_empty(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32SemaINTR_mask_empty(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16SemaINTR_mask_empty(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16SemaINTR_mask_empty(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32SemaINTR_mask_full(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32SemaINTR_mask_full(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16SemaINTR_mask_full(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16SemaINTR_mask_full(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32SemaINTR_mask_almostEmpty(r32)              _BFGET_(r32, 2, 2)
    #define   SET32SemaINTR_mask_almostEmpty(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16SemaINTR_mask_almostEmpty(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SemaINTR_mask_almostEmpty(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SemaINTR_mask_almostFull(r32)               _BFGET_(r32, 3, 3)
    #define   SET32SemaINTR_mask_almostFull(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16SemaINTR_mask_almostFull(r16)               _BFGET_(r16, 3, 3)
    #define   SET16SemaINTR_mask_almostFull(r16,v)             _BFSET_(r16, 3, 3,v)

    #define     w32SemaINTR_mask                               {\
            UNSG32 umask_empty                                 :  1;\
            UNSG32 umask_full                                  :  1;\
            UNSG32 umask_almostEmpty                           :  1;\
            UNSG32 umask_almostFull                            :  1;\
            UNSG32 RSVDx0_b4                                   : 28;\
          }
    union { UNSG32 u32SemaINTR_mask;
            struct w32SemaINTR_mask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaINTR;

    typedef union  T32SemaINTR_mask
          { UNSG32 u32;
            struct w32SemaINTR_mask;
                 } T32SemaINTR_mask;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaINTR_mask
          { UNSG32 u32[1];
            struct {
            struct w32SemaINTR_mask;
                   };
                 } TSemaINTR_mask;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaINTR_drvrd(SIE_SemaINTR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaINTR_drvwr(SIE_SemaINTR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaINTR_reset(SIE_SemaINTR *p);
     SIGN32 SemaINTR_cmp  (SIE_SemaINTR *p, SIE_SemaINTR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaINTR_check(p,pie,pfx,hLOG) SemaINTR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaINTR_print(p,    pfx,hLOG) SemaINTR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaINTR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE Semaphore               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 16 DEPTH                     0xF
///                                    ###
///                                    * Max level of semaphore
///                                    * Note: write this register will trigger counter reset
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00004                      (P)
///     # 0x00004 INTR                 
///               $SemaINTR            INTR              REG       [3]
///                                    ###
///                                    * Interrupt mask for 3 CPUs
///                                    ###
///     @ 0x00010 mask                 (W-)
///               %unsigned 1  full                      0x0
///               %unsigned 1  emp                       0x0
///                                    ###
///                                    * When full bit is set to one, to the producer, the semaphore will never be full, so that the producer will never be blocked.
///                                    * When emp bit is set to one, to the consumer, the semaphore will never be empty, so that the consumer will never be blocked.
///                                    * When the emp/full bit is set, the semaphore/FIFO pointer will be maintained, but the counter will be not correct anymore.
///                                    ###
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      20B, bits:      30b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_Semaphore
#define h_Semaphore (){}

    #define     RA_Semaphore_CFG                               0x0000

    #define     BA_Semaphore_CFG_DEPTH                         0x0000
    #define     B16Semaphore_CFG_DEPTH                         0x0000
    #define   LSb32Semaphore_CFG_DEPTH                            0
    #define   LSb16Semaphore_CFG_DEPTH                            0
    #define       bSemaphore_CFG_DEPTH                         16
    #define   MSK32Semaphore_CFG_DEPTH                            0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_Semaphore_INTR                              0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_Semaphore_mask                              0x0010

    #define     BA_Semaphore_mask_full                         0x0010
    #define     B16Semaphore_mask_full                         0x0010
    #define   LSb32Semaphore_mask_full                            0
    #define   LSb16Semaphore_mask_full                            0
    #define       bSemaphore_mask_full                         1
    #define   MSK32Semaphore_mask_full                            0x00000001

    #define     BA_Semaphore_mask_emp                          0x0010
    #define     B16Semaphore_mask_emp                          0x0010
    #define   LSb32Semaphore_mask_emp                             1
    #define   LSb16Semaphore_mask_emp                             1
    #define       bSemaphore_mask_emp                          1
    #define   MSK32Semaphore_mask_emp                             0x00000002
    ///////////////////////////////////////////////////////////

    typedef struct SIE_Semaphore {
    ///////////////////////////////////////////////////////////
    #define   GET32Semaphore_CFG_DEPTH(r32)                    _BFGET_(r32,15, 0)
    #define   SET32Semaphore_CFG_DEPTH(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16Semaphore_CFG_DEPTH(r16)                    _BFGET_(r16,15, 0)
    #define   SET16Semaphore_CFG_DEPTH(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32Semaphore_CFG                               {\
            UNSG32 uCFG_DEPTH                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32Semaphore_CFG;
            struct w32Semaphore_CFG;
          };
    ///////////////////////////////////////////////////////////
              SIE_SemaINTR                                     ie_INTR[3];
    ///////////////////////////////////////////////////////////
    #define   GET32Semaphore_mask_full(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32Semaphore_mask_full(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16Semaphore_mask_full(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16Semaphore_mask_full(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32Semaphore_mask_emp(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32Semaphore_mask_emp(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16Semaphore_mask_emp(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16Semaphore_mask_emp(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define     w32Semaphore_mask                              {\
            UNSG32 umask_full                                  :  1;\
            UNSG32 umask_emp                                   :  1;\
            UNSG32 RSVDx10_b2                                  : 30;\
          }
    union { UNSG32 u32Semaphore_mask;
            struct w32Semaphore_mask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_Semaphore;

    typedef union  T32Semaphore_CFG
          { UNSG32 u32;
            struct w32Semaphore_CFG;
                 } T32Semaphore_CFG;
    typedef union  T32Semaphore_mask
          { UNSG32 u32;
            struct w32Semaphore_mask;
                 } T32Semaphore_mask;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaphore_CFG
          { UNSG32 u32[1];
            struct {
            struct w32Semaphore_CFG;
                   };
                 } TSemaphore_CFG;
    typedef union  TSemaphore_mask
          { UNSG32 u32[1];
            struct {
            struct w32Semaphore_mask;
                   };
                 } TSemaphore_mask;

    ///////////////////////////////////////////////////////////
     SIGN32 Semaphore_drvrd(SIE_Semaphore *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 Semaphore_drvwr(SIE_Semaphore *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void Semaphore_reset(SIE_Semaphore *p);
     SIGN32 Semaphore_cmp  (SIE_Semaphore *p, SIE_Semaphore *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define Semaphore_check(p,pie,pfx,hLOG) Semaphore_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define Semaphore_print(p,    pfx,hLOG) Semaphore_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: Semaphore
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaQuery                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 RESP                 (R-)
///               %unsigned 16 CNT                       
///                                    ###
///                                    * Semaphore counter level
///                                    ###
///               %unsigned 16 PTR                       
///                                    ###
///                                    * Semaphore pointer:
///                                    * producer-wptr or consumer-rptr
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaQuery
#define h_SemaQuery (){}

    #define     RA_SemaQuery_RESP                              0x0000

    #define     BA_SemaQuery_RESP_CNT                          0x0000
    #define     B16SemaQuery_RESP_CNT                          0x0000
    #define   LSb32SemaQuery_RESP_CNT                             0
    #define   LSb16SemaQuery_RESP_CNT                             0
    #define       bSemaQuery_RESP_CNT                          16
    #define   MSK32SemaQuery_RESP_CNT                             0x0000FFFF

    #define     BA_SemaQuery_RESP_PTR                          0x0002
    #define     B16SemaQuery_RESP_PTR                          0x0002
    #define   LSb32SemaQuery_RESP_PTR                             16
    #define   LSb16SemaQuery_RESP_PTR                             0
    #define       bSemaQuery_RESP_PTR                          16
    #define   MSK32SemaQuery_RESP_PTR                             0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaQuery {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaQuery_RESP_CNT(r32)                     _BFGET_(r32,15, 0)
    #define   SET32SemaQuery_RESP_CNT(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16SemaQuery_RESP_CNT(r16)                     _BFGET_(r16,15, 0)
    #define   SET16SemaQuery_RESP_CNT(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32SemaQuery_RESP_PTR(r32)                     _BFGET_(r32,31,16)
    #define   SET32SemaQuery_RESP_PTR(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16SemaQuery_RESP_PTR(r16)                     _BFGET_(r16,15, 0)
    #define   SET16SemaQuery_RESP_PTR(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32SemaQuery_RESP                              {\
            UNSG32 uRESP_CNT                                   : 16;\
            UNSG32 uRESP_PTR                                   : 16;\
          }
    union { UNSG32 u32SemaQuery_RESP;
            struct w32SemaQuery_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaQuery;

    typedef union  T32SemaQuery_RESP
          { UNSG32 u32;
            struct w32SemaQuery_RESP;
                 } T32SemaQuery_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaQuery_RESP
          { UNSG32 u32[1];
            struct {
            struct w32SemaQuery_RESP;
                   };
                 } TSemaQuery_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaQuery_drvrd(SIE_SemaQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaQuery_drvwr(SIE_SemaQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaQuery_reset(SIE_SemaQuery *p);
     SIGN32 SemaQuery_cmp  (SIE_SemaQuery *p, SIE_SemaQuery *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaQuery_check(p,pie,pfx,hLOG) SemaQuery_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaQuery_print(p,    pfx,hLOG) SemaQuery_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaQuery
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaQueryMap                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ADDR                 (P)
///               %unsigned 2  byte                      
///               %unsigned 5  ID                        
///                                    ###
///                                    * Semaphore cell index
///                                    ###
///               %unsigned 1  master                    
///                                    : producer                  0x0
///                                    : consumer                  0x1
///                                                 ###
///                                                 * Select which counter to read
///                                                 ###
///               %%        24         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaQueryMap
#define h_SemaQueryMap (){}

    #define     RA_SemaQueryMap_ADDR                           0x0000

    #define     BA_SemaQueryMap_ADDR_byte                      0x0000
    #define     B16SemaQueryMap_ADDR_byte                      0x0000
    #define   LSb32SemaQueryMap_ADDR_byte                         0
    #define   LSb16SemaQueryMap_ADDR_byte                         0
    #define       bSemaQueryMap_ADDR_byte                      2
    #define   MSK32SemaQueryMap_ADDR_byte                         0x00000003

    #define     BA_SemaQueryMap_ADDR_ID                        0x0000
    #define     B16SemaQueryMap_ADDR_ID                        0x0000
    #define   LSb32SemaQueryMap_ADDR_ID                           2
    #define   LSb16SemaQueryMap_ADDR_ID                           2
    #define       bSemaQueryMap_ADDR_ID                        5
    #define   MSK32SemaQueryMap_ADDR_ID                           0x0000007C

    #define     BA_SemaQueryMap_ADDR_master                    0x0000
    #define     B16SemaQueryMap_ADDR_master                    0x0000
    #define   LSb32SemaQueryMap_ADDR_master                       7
    #define   LSb16SemaQueryMap_ADDR_master                       7
    #define       bSemaQueryMap_ADDR_master                    1
    #define   MSK32SemaQueryMap_ADDR_master                       0x00000080
    #define        SemaQueryMap_ADDR_master_producer                        0x0
    #define        SemaQueryMap_ADDR_master_consumer                        0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaQueryMap {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaQueryMap_ADDR_byte(r32)                 _BFGET_(r32, 1, 0)
    #define   SET32SemaQueryMap_ADDR_byte(r32,v)               _BFSET_(r32, 1, 0,v)
    #define   GET16SemaQueryMap_ADDR_byte(r16)                 _BFGET_(r16, 1, 0)
    #define   SET16SemaQueryMap_ADDR_byte(r16,v)               _BFSET_(r16, 1, 0,v)

    #define   GET32SemaQueryMap_ADDR_ID(r32)                   _BFGET_(r32, 6, 2)
    #define   SET32SemaQueryMap_ADDR_ID(r32,v)                 _BFSET_(r32, 6, 2,v)
    #define   GET16SemaQueryMap_ADDR_ID(r16)                   _BFGET_(r16, 6, 2)
    #define   SET16SemaQueryMap_ADDR_ID(r16,v)                 _BFSET_(r16, 6, 2,v)

    #define   GET32SemaQueryMap_ADDR_master(r32)               _BFGET_(r32, 7, 7)
    #define   SET32SemaQueryMap_ADDR_master(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16SemaQueryMap_ADDR_master(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SemaQueryMap_ADDR_master(r16,v)             _BFSET_(r16, 7, 7,v)

    #define     w32SemaQueryMap_ADDR                           {\
            UNSG32 uADDR_byte                                  :  2;\
            UNSG32 uADDR_ID                                    :  5;\
            UNSG32 uADDR_master                                :  1;\
            UNSG32 RSVDx0_b8                                   : 24;\
          }
    union { UNSG32 u32SemaQueryMap_ADDR;
            struct w32SemaQueryMap_ADDR;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaQueryMap;

    typedef union  T32SemaQueryMap_ADDR
          { UNSG32 u32;
            struct w32SemaQueryMap_ADDR;
                 } T32SemaQueryMap_ADDR;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaQueryMap_ADDR
          { UNSG32 u32[1];
            struct {
            struct w32SemaQueryMap_ADDR;
                   };
                 } TSemaQueryMap_ADDR;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaQueryMap_drvrd(SIE_SemaQueryMap *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaQueryMap_drvwr(SIE_SemaQueryMap *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaQueryMap_reset(SIE_SemaQueryMap *p);
     SIGN32 SemaQueryMap_cmp  (SIE_SemaQueryMap *p, SIE_SemaQueryMap *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaQueryMap_check(p,pie,pfx,hLOG) SemaQueryMap_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaQueryMap_print(p,    pfx,hLOG) SemaQueryMap_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaQueryMap
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaHub                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 Query                (R-)
///     # 0x00000 counter              
///               $SemaQuery           counter           MEM      [64]
///                                    ###
///                                    * Access address as defined above
///                                    ###
///     @ 0x00100 ARR                  (P)
///     # 0x00100 cell                 
///               $Semaphore           cell              REG      [32]
///                                    ###
///                                    * Up-to 32 semaphore cells
///                                    ###
///     @ 0x00380 PUSH                 (W-)
///               %unsigned 8  ID                        
///               %unsigned 8  delta                     
///                                    ###
///                                    * CPU increases PCounter by delta (0 as push 256)
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00384 POP                  (W-)
///               %unsigned 8  ID                        
///               %unsigned 8  delta                     
///                                    ###
///                                    * CPU decreases CCounter by delta (0 as pop 256)
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00388 empty                (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'empty' status
///                                    ###
///     @ 0x0038C full                 (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'full' status
///                                    ###
///     @ 0x00390 almostEmpty          (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'almostEmpty' status
///                                    ###
///     @ 0x00394 almostFull           (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'almostFull' status
///                                    ###
///     @ 0x00398                      (W-)
///     #         # Stuffing bytes...
///               %% 832
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1024B, bits:    1152b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaHub
#define h_SemaHub (){}

    #define     RA_SemaHub_Query                               0x0000
    #define     RA_SemaHub_counter                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_ARR                                 0x0100
    #define     RA_SemaHub_cell                                0x0100
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_PUSH                                0x0380

    #define     BA_SemaHub_PUSH_ID                             0x0380
    #define     B16SemaHub_PUSH_ID                             0x0380
    #define   LSb32SemaHub_PUSH_ID                                0
    #define   LSb16SemaHub_PUSH_ID                                0
    #define       bSemaHub_PUSH_ID                             8
    #define   MSK32SemaHub_PUSH_ID                                0x000000FF

    #define     BA_SemaHub_PUSH_delta                          0x0381
    #define     B16SemaHub_PUSH_delta                          0x0380
    #define   LSb32SemaHub_PUSH_delta                             8
    #define   LSb16SemaHub_PUSH_delta                             8
    #define       bSemaHub_PUSH_delta                          8
    #define   MSK32SemaHub_PUSH_delta                             0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_POP                                 0x0384

    #define     BA_SemaHub_POP_ID                              0x0384
    #define     B16SemaHub_POP_ID                              0x0384
    #define   LSb32SemaHub_POP_ID                                 0
    #define   LSb16SemaHub_POP_ID                                 0
    #define       bSemaHub_POP_ID                              8
    #define   MSK32SemaHub_POP_ID                                 0x000000FF

    #define     BA_SemaHub_POP_delta                           0x0385
    #define     B16SemaHub_POP_delta                           0x0384
    #define   LSb32SemaHub_POP_delta                              8
    #define   LSb16SemaHub_POP_delta                              8
    #define       bSemaHub_POP_delta                           8
    #define   MSK32SemaHub_POP_delta                              0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_empty                               0x0388

    #define     BA_SemaHub_empty_ST_0i                         0x0388
    #define     B16SemaHub_empty_ST_0i                         0x0388
    #define   LSb32SemaHub_empty_ST_0i                            0
    #define   LSb16SemaHub_empty_ST_0i                            0
    #define       bSemaHub_empty_ST_0i                         1
    #define   MSK32SemaHub_empty_ST_0i                            0x00000001

    #define     BA_SemaHub_empty_ST_1i                         0x0388
    #define     B16SemaHub_empty_ST_1i                         0x0388
    #define   LSb32SemaHub_empty_ST_1i                            1
    #define   LSb16SemaHub_empty_ST_1i                            1
    #define       bSemaHub_empty_ST_1i                         1
    #define   MSK32SemaHub_empty_ST_1i                            0x00000002

    #define     BA_SemaHub_empty_ST_2i                         0x0388
    #define     B16SemaHub_empty_ST_2i                         0x0388
    #define   LSb32SemaHub_empty_ST_2i                            2
    #define   LSb16SemaHub_empty_ST_2i                            2
    #define       bSemaHub_empty_ST_2i                         1
    #define   MSK32SemaHub_empty_ST_2i                            0x00000004

    #define     BA_SemaHub_empty_ST_3i                         0x0388
    #define     B16SemaHub_empty_ST_3i                         0x0388
    #define   LSb32SemaHub_empty_ST_3i                            3
    #define   LSb16SemaHub_empty_ST_3i                            3
    #define       bSemaHub_empty_ST_3i                         1
    #define   MSK32SemaHub_empty_ST_3i                            0x00000008

    #define     BA_SemaHub_empty_ST_4i                         0x0388
    #define     B16SemaHub_empty_ST_4i                         0x0388
    #define   LSb32SemaHub_empty_ST_4i                            4
    #define   LSb16SemaHub_empty_ST_4i                            4
    #define       bSemaHub_empty_ST_4i                         1
    #define   MSK32SemaHub_empty_ST_4i                            0x00000010

    #define     BA_SemaHub_empty_ST_5i                         0x0388
    #define     B16SemaHub_empty_ST_5i                         0x0388
    #define   LSb32SemaHub_empty_ST_5i                            5
    #define   LSb16SemaHub_empty_ST_5i                            5
    #define       bSemaHub_empty_ST_5i                         1
    #define   MSK32SemaHub_empty_ST_5i                            0x00000020

    #define     BA_SemaHub_empty_ST_6i                         0x0388
    #define     B16SemaHub_empty_ST_6i                         0x0388
    #define   LSb32SemaHub_empty_ST_6i                            6
    #define   LSb16SemaHub_empty_ST_6i                            6
    #define       bSemaHub_empty_ST_6i                         1
    #define   MSK32SemaHub_empty_ST_6i                            0x00000040

    #define     BA_SemaHub_empty_ST_7i                         0x0388
    #define     B16SemaHub_empty_ST_7i                         0x0388
    #define   LSb32SemaHub_empty_ST_7i                            7
    #define   LSb16SemaHub_empty_ST_7i                            7
    #define       bSemaHub_empty_ST_7i                         1
    #define   MSK32SemaHub_empty_ST_7i                            0x00000080

    #define     BA_SemaHub_empty_ST_8i                         0x0389
    #define     B16SemaHub_empty_ST_8i                         0x0388
    #define   LSb32SemaHub_empty_ST_8i                            8
    #define   LSb16SemaHub_empty_ST_8i                            8
    #define       bSemaHub_empty_ST_8i                         1
    #define   MSK32SemaHub_empty_ST_8i                            0x00000100

    #define     BA_SemaHub_empty_ST_9i                         0x0389
    #define     B16SemaHub_empty_ST_9i                         0x0388
    #define   LSb32SemaHub_empty_ST_9i                            9
    #define   LSb16SemaHub_empty_ST_9i                            9
    #define       bSemaHub_empty_ST_9i                         1
    #define   MSK32SemaHub_empty_ST_9i                            0x00000200

    #define     BA_SemaHub_empty_ST_10i                        0x0389
    #define     B16SemaHub_empty_ST_10i                        0x0388
    #define   LSb32SemaHub_empty_ST_10i                           10
    #define   LSb16SemaHub_empty_ST_10i                           10
    #define       bSemaHub_empty_ST_10i                        1
    #define   MSK32SemaHub_empty_ST_10i                           0x00000400

    #define     BA_SemaHub_empty_ST_11i                        0x0389
    #define     B16SemaHub_empty_ST_11i                        0x0388
    #define   LSb32SemaHub_empty_ST_11i                           11
    #define   LSb16SemaHub_empty_ST_11i                           11
    #define       bSemaHub_empty_ST_11i                        1
    #define   MSK32SemaHub_empty_ST_11i                           0x00000800

    #define     BA_SemaHub_empty_ST_12i                        0x0389
    #define     B16SemaHub_empty_ST_12i                        0x0388
    #define   LSb32SemaHub_empty_ST_12i                           12
    #define   LSb16SemaHub_empty_ST_12i                           12
    #define       bSemaHub_empty_ST_12i                        1
    #define   MSK32SemaHub_empty_ST_12i                           0x00001000

    #define     BA_SemaHub_empty_ST_13i                        0x0389
    #define     B16SemaHub_empty_ST_13i                        0x0388
    #define   LSb32SemaHub_empty_ST_13i                           13
    #define   LSb16SemaHub_empty_ST_13i                           13
    #define       bSemaHub_empty_ST_13i                        1
    #define   MSK32SemaHub_empty_ST_13i                           0x00002000

    #define     BA_SemaHub_empty_ST_14i                        0x0389
    #define     B16SemaHub_empty_ST_14i                        0x0388
    #define   LSb32SemaHub_empty_ST_14i                           14
    #define   LSb16SemaHub_empty_ST_14i                           14
    #define       bSemaHub_empty_ST_14i                        1
    #define   MSK32SemaHub_empty_ST_14i                           0x00004000

    #define     BA_SemaHub_empty_ST_15i                        0x0389
    #define     B16SemaHub_empty_ST_15i                        0x0388
    #define   LSb32SemaHub_empty_ST_15i                           15
    #define   LSb16SemaHub_empty_ST_15i                           15
    #define       bSemaHub_empty_ST_15i                        1
    #define   MSK32SemaHub_empty_ST_15i                           0x00008000

    #define     BA_SemaHub_empty_ST_16i                        0x038A
    #define     B16SemaHub_empty_ST_16i                        0x038A
    #define   LSb32SemaHub_empty_ST_16i                           16
    #define   LSb16SemaHub_empty_ST_16i                           0
    #define       bSemaHub_empty_ST_16i                        1
    #define   MSK32SemaHub_empty_ST_16i                           0x00010000

    #define     BA_SemaHub_empty_ST_17i                        0x038A
    #define     B16SemaHub_empty_ST_17i                        0x038A
    #define   LSb32SemaHub_empty_ST_17i                           17
    #define   LSb16SemaHub_empty_ST_17i                           1
    #define       bSemaHub_empty_ST_17i                        1
    #define   MSK32SemaHub_empty_ST_17i                           0x00020000

    #define     BA_SemaHub_empty_ST_18i                        0x038A
    #define     B16SemaHub_empty_ST_18i                        0x038A
    #define   LSb32SemaHub_empty_ST_18i                           18
    #define   LSb16SemaHub_empty_ST_18i                           2
    #define       bSemaHub_empty_ST_18i                        1
    #define   MSK32SemaHub_empty_ST_18i                           0x00040000

    #define     BA_SemaHub_empty_ST_19i                        0x038A
    #define     B16SemaHub_empty_ST_19i                        0x038A
    #define   LSb32SemaHub_empty_ST_19i                           19
    #define   LSb16SemaHub_empty_ST_19i                           3
    #define       bSemaHub_empty_ST_19i                        1
    #define   MSK32SemaHub_empty_ST_19i                           0x00080000

    #define     BA_SemaHub_empty_ST_20i                        0x038A
    #define     B16SemaHub_empty_ST_20i                        0x038A
    #define   LSb32SemaHub_empty_ST_20i                           20
    #define   LSb16SemaHub_empty_ST_20i                           4
    #define       bSemaHub_empty_ST_20i                        1
    #define   MSK32SemaHub_empty_ST_20i                           0x00100000

    #define     BA_SemaHub_empty_ST_21i                        0x038A
    #define     B16SemaHub_empty_ST_21i                        0x038A
    #define   LSb32SemaHub_empty_ST_21i                           21
    #define   LSb16SemaHub_empty_ST_21i                           5
    #define       bSemaHub_empty_ST_21i                        1
    #define   MSK32SemaHub_empty_ST_21i                           0x00200000

    #define     BA_SemaHub_empty_ST_22i                        0x038A
    #define     B16SemaHub_empty_ST_22i                        0x038A
    #define   LSb32SemaHub_empty_ST_22i                           22
    #define   LSb16SemaHub_empty_ST_22i                           6
    #define       bSemaHub_empty_ST_22i                        1
    #define   MSK32SemaHub_empty_ST_22i                           0x00400000

    #define     BA_SemaHub_empty_ST_23i                        0x038A
    #define     B16SemaHub_empty_ST_23i                        0x038A
    #define   LSb32SemaHub_empty_ST_23i                           23
    #define   LSb16SemaHub_empty_ST_23i                           7
    #define       bSemaHub_empty_ST_23i                        1
    #define   MSK32SemaHub_empty_ST_23i                           0x00800000

    #define     BA_SemaHub_empty_ST_24i                        0x038B
    #define     B16SemaHub_empty_ST_24i                        0x038A
    #define   LSb32SemaHub_empty_ST_24i                           24
    #define   LSb16SemaHub_empty_ST_24i                           8
    #define       bSemaHub_empty_ST_24i                        1
    #define   MSK32SemaHub_empty_ST_24i                           0x01000000

    #define     BA_SemaHub_empty_ST_25i                        0x038B
    #define     B16SemaHub_empty_ST_25i                        0x038A
    #define   LSb32SemaHub_empty_ST_25i                           25
    #define   LSb16SemaHub_empty_ST_25i                           9
    #define       bSemaHub_empty_ST_25i                        1
    #define   MSK32SemaHub_empty_ST_25i                           0x02000000

    #define     BA_SemaHub_empty_ST_26i                        0x038B
    #define     B16SemaHub_empty_ST_26i                        0x038A
    #define   LSb32SemaHub_empty_ST_26i                           26
    #define   LSb16SemaHub_empty_ST_26i                           10
    #define       bSemaHub_empty_ST_26i                        1
    #define   MSK32SemaHub_empty_ST_26i                           0x04000000

    #define     BA_SemaHub_empty_ST_27i                        0x038B
    #define     B16SemaHub_empty_ST_27i                        0x038A
    #define   LSb32SemaHub_empty_ST_27i                           27
    #define   LSb16SemaHub_empty_ST_27i                           11
    #define       bSemaHub_empty_ST_27i                        1
    #define   MSK32SemaHub_empty_ST_27i                           0x08000000

    #define     BA_SemaHub_empty_ST_28i                        0x038B
    #define     B16SemaHub_empty_ST_28i                        0x038A
    #define   LSb32SemaHub_empty_ST_28i                           28
    #define   LSb16SemaHub_empty_ST_28i                           12
    #define       bSemaHub_empty_ST_28i                        1
    #define   MSK32SemaHub_empty_ST_28i                           0x10000000

    #define     BA_SemaHub_empty_ST_29i                        0x038B
    #define     B16SemaHub_empty_ST_29i                        0x038A
    #define   LSb32SemaHub_empty_ST_29i                           29
    #define   LSb16SemaHub_empty_ST_29i                           13
    #define       bSemaHub_empty_ST_29i                        1
    #define   MSK32SemaHub_empty_ST_29i                           0x20000000

    #define     BA_SemaHub_empty_ST_30i                        0x038B
    #define     B16SemaHub_empty_ST_30i                        0x038A
    #define   LSb32SemaHub_empty_ST_30i                           30
    #define   LSb16SemaHub_empty_ST_30i                           14
    #define       bSemaHub_empty_ST_30i                        1
    #define   MSK32SemaHub_empty_ST_30i                           0x40000000

    #define     BA_SemaHub_empty_ST_31i                        0x038B
    #define     B16SemaHub_empty_ST_31i                        0x038A
    #define   LSb32SemaHub_empty_ST_31i                           31
    #define   LSb16SemaHub_empty_ST_31i                           15
    #define       bSemaHub_empty_ST_31i                        1
    #define   MSK32SemaHub_empty_ST_31i                           0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_full                                0x038C

    #define     BA_SemaHub_full_ST_0i                          0x038C
    #define     B16SemaHub_full_ST_0i                          0x038C
    #define   LSb32SemaHub_full_ST_0i                             0
    #define   LSb16SemaHub_full_ST_0i                             0
    #define       bSemaHub_full_ST_0i                          1
    #define   MSK32SemaHub_full_ST_0i                             0x00000001

    #define     BA_SemaHub_full_ST_1i                          0x038C
    #define     B16SemaHub_full_ST_1i                          0x038C
    #define   LSb32SemaHub_full_ST_1i                             1
    #define   LSb16SemaHub_full_ST_1i                             1
    #define       bSemaHub_full_ST_1i                          1
    #define   MSK32SemaHub_full_ST_1i                             0x00000002

    #define     BA_SemaHub_full_ST_2i                          0x038C
    #define     B16SemaHub_full_ST_2i                          0x038C
    #define   LSb32SemaHub_full_ST_2i                             2
    #define   LSb16SemaHub_full_ST_2i                             2
    #define       bSemaHub_full_ST_2i                          1
    #define   MSK32SemaHub_full_ST_2i                             0x00000004

    #define     BA_SemaHub_full_ST_3i                          0x038C
    #define     B16SemaHub_full_ST_3i                          0x038C
    #define   LSb32SemaHub_full_ST_3i                             3
    #define   LSb16SemaHub_full_ST_3i                             3
    #define       bSemaHub_full_ST_3i                          1
    #define   MSK32SemaHub_full_ST_3i                             0x00000008

    #define     BA_SemaHub_full_ST_4i                          0x038C
    #define     B16SemaHub_full_ST_4i                          0x038C
    #define   LSb32SemaHub_full_ST_4i                             4
    #define   LSb16SemaHub_full_ST_4i                             4
    #define       bSemaHub_full_ST_4i                          1
    #define   MSK32SemaHub_full_ST_4i                             0x00000010

    #define     BA_SemaHub_full_ST_5i                          0x038C
    #define     B16SemaHub_full_ST_5i                          0x038C
    #define   LSb32SemaHub_full_ST_5i                             5
    #define   LSb16SemaHub_full_ST_5i                             5
    #define       bSemaHub_full_ST_5i                          1
    #define   MSK32SemaHub_full_ST_5i                             0x00000020

    #define     BA_SemaHub_full_ST_6i                          0x038C
    #define     B16SemaHub_full_ST_6i                          0x038C
    #define   LSb32SemaHub_full_ST_6i                             6
    #define   LSb16SemaHub_full_ST_6i                             6
    #define       bSemaHub_full_ST_6i                          1
    #define   MSK32SemaHub_full_ST_6i                             0x00000040

    #define     BA_SemaHub_full_ST_7i                          0x038C
    #define     B16SemaHub_full_ST_7i                          0x038C
    #define   LSb32SemaHub_full_ST_7i                             7
    #define   LSb16SemaHub_full_ST_7i                             7
    #define       bSemaHub_full_ST_7i                          1
    #define   MSK32SemaHub_full_ST_7i                             0x00000080

    #define     BA_SemaHub_full_ST_8i                          0x038D
    #define     B16SemaHub_full_ST_8i                          0x038C
    #define   LSb32SemaHub_full_ST_8i                             8
    #define   LSb16SemaHub_full_ST_8i                             8
    #define       bSemaHub_full_ST_8i                          1
    #define   MSK32SemaHub_full_ST_8i                             0x00000100

    #define     BA_SemaHub_full_ST_9i                          0x038D
    #define     B16SemaHub_full_ST_9i                          0x038C
    #define   LSb32SemaHub_full_ST_9i                             9
    #define   LSb16SemaHub_full_ST_9i                             9
    #define       bSemaHub_full_ST_9i                          1
    #define   MSK32SemaHub_full_ST_9i                             0x00000200

    #define     BA_SemaHub_full_ST_10i                         0x038D
    #define     B16SemaHub_full_ST_10i                         0x038C
    #define   LSb32SemaHub_full_ST_10i                            10
    #define   LSb16SemaHub_full_ST_10i                            10
    #define       bSemaHub_full_ST_10i                         1
    #define   MSK32SemaHub_full_ST_10i                            0x00000400

    #define     BA_SemaHub_full_ST_11i                         0x038D
    #define     B16SemaHub_full_ST_11i                         0x038C
    #define   LSb32SemaHub_full_ST_11i                            11
    #define   LSb16SemaHub_full_ST_11i                            11
    #define       bSemaHub_full_ST_11i                         1
    #define   MSK32SemaHub_full_ST_11i                            0x00000800

    #define     BA_SemaHub_full_ST_12i                         0x038D
    #define     B16SemaHub_full_ST_12i                         0x038C
    #define   LSb32SemaHub_full_ST_12i                            12
    #define   LSb16SemaHub_full_ST_12i                            12
    #define       bSemaHub_full_ST_12i                         1
    #define   MSK32SemaHub_full_ST_12i                            0x00001000

    #define     BA_SemaHub_full_ST_13i                         0x038D
    #define     B16SemaHub_full_ST_13i                         0x038C
    #define   LSb32SemaHub_full_ST_13i                            13
    #define   LSb16SemaHub_full_ST_13i                            13
    #define       bSemaHub_full_ST_13i                         1
    #define   MSK32SemaHub_full_ST_13i                            0x00002000

    #define     BA_SemaHub_full_ST_14i                         0x038D
    #define     B16SemaHub_full_ST_14i                         0x038C
    #define   LSb32SemaHub_full_ST_14i                            14
    #define   LSb16SemaHub_full_ST_14i                            14
    #define       bSemaHub_full_ST_14i                         1
    #define   MSK32SemaHub_full_ST_14i                            0x00004000

    #define     BA_SemaHub_full_ST_15i                         0x038D
    #define     B16SemaHub_full_ST_15i                         0x038C
    #define   LSb32SemaHub_full_ST_15i                            15
    #define   LSb16SemaHub_full_ST_15i                            15
    #define       bSemaHub_full_ST_15i                         1
    #define   MSK32SemaHub_full_ST_15i                            0x00008000

    #define     BA_SemaHub_full_ST_16i                         0x038E
    #define     B16SemaHub_full_ST_16i                         0x038E
    #define   LSb32SemaHub_full_ST_16i                            16
    #define   LSb16SemaHub_full_ST_16i                            0
    #define       bSemaHub_full_ST_16i                         1
    #define   MSK32SemaHub_full_ST_16i                            0x00010000

    #define     BA_SemaHub_full_ST_17i                         0x038E
    #define     B16SemaHub_full_ST_17i                         0x038E
    #define   LSb32SemaHub_full_ST_17i                            17
    #define   LSb16SemaHub_full_ST_17i                            1
    #define       bSemaHub_full_ST_17i                         1
    #define   MSK32SemaHub_full_ST_17i                            0x00020000

    #define     BA_SemaHub_full_ST_18i                         0x038E
    #define     B16SemaHub_full_ST_18i                         0x038E
    #define   LSb32SemaHub_full_ST_18i                            18
    #define   LSb16SemaHub_full_ST_18i                            2
    #define       bSemaHub_full_ST_18i                         1
    #define   MSK32SemaHub_full_ST_18i                            0x00040000

    #define     BA_SemaHub_full_ST_19i                         0x038E
    #define     B16SemaHub_full_ST_19i                         0x038E
    #define   LSb32SemaHub_full_ST_19i                            19
    #define   LSb16SemaHub_full_ST_19i                            3
    #define       bSemaHub_full_ST_19i                         1
    #define   MSK32SemaHub_full_ST_19i                            0x00080000

    #define     BA_SemaHub_full_ST_20i                         0x038E
    #define     B16SemaHub_full_ST_20i                         0x038E
    #define   LSb32SemaHub_full_ST_20i                            20
    #define   LSb16SemaHub_full_ST_20i                            4
    #define       bSemaHub_full_ST_20i                         1
    #define   MSK32SemaHub_full_ST_20i                            0x00100000

    #define     BA_SemaHub_full_ST_21i                         0x038E
    #define     B16SemaHub_full_ST_21i                         0x038E
    #define   LSb32SemaHub_full_ST_21i                            21
    #define   LSb16SemaHub_full_ST_21i                            5
    #define       bSemaHub_full_ST_21i                         1
    #define   MSK32SemaHub_full_ST_21i                            0x00200000

    #define     BA_SemaHub_full_ST_22i                         0x038E
    #define     B16SemaHub_full_ST_22i                         0x038E
    #define   LSb32SemaHub_full_ST_22i                            22
    #define   LSb16SemaHub_full_ST_22i                            6
    #define       bSemaHub_full_ST_22i                         1
    #define   MSK32SemaHub_full_ST_22i                            0x00400000

    #define     BA_SemaHub_full_ST_23i                         0x038E
    #define     B16SemaHub_full_ST_23i                         0x038E
    #define   LSb32SemaHub_full_ST_23i                            23
    #define   LSb16SemaHub_full_ST_23i                            7
    #define       bSemaHub_full_ST_23i                         1
    #define   MSK32SemaHub_full_ST_23i                            0x00800000

    #define     BA_SemaHub_full_ST_24i                         0x038F
    #define     B16SemaHub_full_ST_24i                         0x038E
    #define   LSb32SemaHub_full_ST_24i                            24
    #define   LSb16SemaHub_full_ST_24i                            8
    #define       bSemaHub_full_ST_24i                         1
    #define   MSK32SemaHub_full_ST_24i                            0x01000000

    #define     BA_SemaHub_full_ST_25i                         0x038F
    #define     B16SemaHub_full_ST_25i                         0x038E
    #define   LSb32SemaHub_full_ST_25i                            25
    #define   LSb16SemaHub_full_ST_25i                            9
    #define       bSemaHub_full_ST_25i                         1
    #define   MSK32SemaHub_full_ST_25i                            0x02000000

    #define     BA_SemaHub_full_ST_26i                         0x038F
    #define     B16SemaHub_full_ST_26i                         0x038E
    #define   LSb32SemaHub_full_ST_26i                            26
    #define   LSb16SemaHub_full_ST_26i                            10
    #define       bSemaHub_full_ST_26i                         1
    #define   MSK32SemaHub_full_ST_26i                            0x04000000

    #define     BA_SemaHub_full_ST_27i                         0x038F
    #define     B16SemaHub_full_ST_27i                         0x038E
    #define   LSb32SemaHub_full_ST_27i                            27
    #define   LSb16SemaHub_full_ST_27i                            11
    #define       bSemaHub_full_ST_27i                         1
    #define   MSK32SemaHub_full_ST_27i                            0x08000000

    #define     BA_SemaHub_full_ST_28i                         0x038F
    #define     B16SemaHub_full_ST_28i                         0x038E
    #define   LSb32SemaHub_full_ST_28i                            28
    #define   LSb16SemaHub_full_ST_28i                            12
    #define       bSemaHub_full_ST_28i                         1
    #define   MSK32SemaHub_full_ST_28i                            0x10000000

    #define     BA_SemaHub_full_ST_29i                         0x038F
    #define     B16SemaHub_full_ST_29i                         0x038E
    #define   LSb32SemaHub_full_ST_29i                            29
    #define   LSb16SemaHub_full_ST_29i                            13
    #define       bSemaHub_full_ST_29i                         1
    #define   MSK32SemaHub_full_ST_29i                            0x20000000

    #define     BA_SemaHub_full_ST_30i                         0x038F
    #define     B16SemaHub_full_ST_30i                         0x038E
    #define   LSb32SemaHub_full_ST_30i                            30
    #define   LSb16SemaHub_full_ST_30i                            14
    #define       bSemaHub_full_ST_30i                         1
    #define   MSK32SemaHub_full_ST_30i                            0x40000000

    #define     BA_SemaHub_full_ST_31i                         0x038F
    #define     B16SemaHub_full_ST_31i                         0x038E
    #define   LSb32SemaHub_full_ST_31i                            31
    #define   LSb16SemaHub_full_ST_31i                            15
    #define       bSemaHub_full_ST_31i                         1
    #define   MSK32SemaHub_full_ST_31i                            0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_almostEmpty                         0x0390

    #define     BA_SemaHub_almostEmpty_ST_0i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_0i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_0i                      0
    #define   LSb16SemaHub_almostEmpty_ST_0i                      0
    #define       bSemaHub_almostEmpty_ST_0i                   1
    #define   MSK32SemaHub_almostEmpty_ST_0i                      0x00000001

    #define     BA_SemaHub_almostEmpty_ST_1i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_1i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_1i                      1
    #define   LSb16SemaHub_almostEmpty_ST_1i                      1
    #define       bSemaHub_almostEmpty_ST_1i                   1
    #define   MSK32SemaHub_almostEmpty_ST_1i                      0x00000002

    #define     BA_SemaHub_almostEmpty_ST_2i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_2i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_2i                      2
    #define   LSb16SemaHub_almostEmpty_ST_2i                      2
    #define       bSemaHub_almostEmpty_ST_2i                   1
    #define   MSK32SemaHub_almostEmpty_ST_2i                      0x00000004

    #define     BA_SemaHub_almostEmpty_ST_3i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_3i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_3i                      3
    #define   LSb16SemaHub_almostEmpty_ST_3i                      3
    #define       bSemaHub_almostEmpty_ST_3i                   1
    #define   MSK32SemaHub_almostEmpty_ST_3i                      0x00000008

    #define     BA_SemaHub_almostEmpty_ST_4i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_4i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_4i                      4
    #define   LSb16SemaHub_almostEmpty_ST_4i                      4
    #define       bSemaHub_almostEmpty_ST_4i                   1
    #define   MSK32SemaHub_almostEmpty_ST_4i                      0x00000010

    #define     BA_SemaHub_almostEmpty_ST_5i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_5i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_5i                      5
    #define   LSb16SemaHub_almostEmpty_ST_5i                      5
    #define       bSemaHub_almostEmpty_ST_5i                   1
    #define   MSK32SemaHub_almostEmpty_ST_5i                      0x00000020

    #define     BA_SemaHub_almostEmpty_ST_6i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_6i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_6i                      6
    #define   LSb16SemaHub_almostEmpty_ST_6i                      6
    #define       bSemaHub_almostEmpty_ST_6i                   1
    #define   MSK32SemaHub_almostEmpty_ST_6i                      0x00000040

    #define     BA_SemaHub_almostEmpty_ST_7i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_7i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_7i                      7
    #define   LSb16SemaHub_almostEmpty_ST_7i                      7
    #define       bSemaHub_almostEmpty_ST_7i                   1
    #define   MSK32SemaHub_almostEmpty_ST_7i                      0x00000080

    #define     BA_SemaHub_almostEmpty_ST_8i                   0x0391
    #define     B16SemaHub_almostEmpty_ST_8i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_8i                      8
    #define   LSb16SemaHub_almostEmpty_ST_8i                      8
    #define       bSemaHub_almostEmpty_ST_8i                   1
    #define   MSK32SemaHub_almostEmpty_ST_8i                      0x00000100

    #define     BA_SemaHub_almostEmpty_ST_9i                   0x0391
    #define     B16SemaHub_almostEmpty_ST_9i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_9i                      9
    #define   LSb16SemaHub_almostEmpty_ST_9i                      9
    #define       bSemaHub_almostEmpty_ST_9i                   1
    #define   MSK32SemaHub_almostEmpty_ST_9i                      0x00000200

    #define     BA_SemaHub_almostEmpty_ST_10i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_10i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_10i                     10
    #define   LSb16SemaHub_almostEmpty_ST_10i                     10
    #define       bSemaHub_almostEmpty_ST_10i                  1
    #define   MSK32SemaHub_almostEmpty_ST_10i                     0x00000400

    #define     BA_SemaHub_almostEmpty_ST_11i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_11i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_11i                     11
    #define   LSb16SemaHub_almostEmpty_ST_11i                     11
    #define       bSemaHub_almostEmpty_ST_11i                  1
    #define   MSK32SemaHub_almostEmpty_ST_11i                     0x00000800

    #define     BA_SemaHub_almostEmpty_ST_12i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_12i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_12i                     12
    #define   LSb16SemaHub_almostEmpty_ST_12i                     12
    #define       bSemaHub_almostEmpty_ST_12i                  1
    #define   MSK32SemaHub_almostEmpty_ST_12i                     0x00001000

    #define     BA_SemaHub_almostEmpty_ST_13i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_13i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_13i                     13
    #define   LSb16SemaHub_almostEmpty_ST_13i                     13
    #define       bSemaHub_almostEmpty_ST_13i                  1
    #define   MSK32SemaHub_almostEmpty_ST_13i                     0x00002000

    #define     BA_SemaHub_almostEmpty_ST_14i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_14i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_14i                     14
    #define   LSb16SemaHub_almostEmpty_ST_14i                     14
    #define       bSemaHub_almostEmpty_ST_14i                  1
    #define   MSK32SemaHub_almostEmpty_ST_14i                     0x00004000

    #define     BA_SemaHub_almostEmpty_ST_15i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_15i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_15i                     15
    #define   LSb16SemaHub_almostEmpty_ST_15i                     15
    #define       bSemaHub_almostEmpty_ST_15i                  1
    #define   MSK32SemaHub_almostEmpty_ST_15i                     0x00008000

    #define     BA_SemaHub_almostEmpty_ST_16i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_16i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_16i                     16
    #define   LSb16SemaHub_almostEmpty_ST_16i                     0
    #define       bSemaHub_almostEmpty_ST_16i                  1
    #define   MSK32SemaHub_almostEmpty_ST_16i                     0x00010000

    #define     BA_SemaHub_almostEmpty_ST_17i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_17i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_17i                     17
    #define   LSb16SemaHub_almostEmpty_ST_17i                     1
    #define       bSemaHub_almostEmpty_ST_17i                  1
    #define   MSK32SemaHub_almostEmpty_ST_17i                     0x00020000

    #define     BA_SemaHub_almostEmpty_ST_18i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_18i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_18i                     18
    #define   LSb16SemaHub_almostEmpty_ST_18i                     2
    #define       bSemaHub_almostEmpty_ST_18i                  1
    #define   MSK32SemaHub_almostEmpty_ST_18i                     0x00040000

    #define     BA_SemaHub_almostEmpty_ST_19i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_19i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_19i                     19
    #define   LSb16SemaHub_almostEmpty_ST_19i                     3
    #define       bSemaHub_almostEmpty_ST_19i                  1
    #define   MSK32SemaHub_almostEmpty_ST_19i                     0x00080000

    #define     BA_SemaHub_almostEmpty_ST_20i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_20i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_20i                     20
    #define   LSb16SemaHub_almostEmpty_ST_20i                     4
    #define       bSemaHub_almostEmpty_ST_20i                  1
    #define   MSK32SemaHub_almostEmpty_ST_20i                     0x00100000

    #define     BA_SemaHub_almostEmpty_ST_21i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_21i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_21i                     21
    #define   LSb16SemaHub_almostEmpty_ST_21i                     5
    #define       bSemaHub_almostEmpty_ST_21i                  1
    #define   MSK32SemaHub_almostEmpty_ST_21i                     0x00200000

    #define     BA_SemaHub_almostEmpty_ST_22i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_22i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_22i                     22
    #define   LSb16SemaHub_almostEmpty_ST_22i                     6
    #define       bSemaHub_almostEmpty_ST_22i                  1
    #define   MSK32SemaHub_almostEmpty_ST_22i                     0x00400000

    #define     BA_SemaHub_almostEmpty_ST_23i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_23i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_23i                     23
    #define   LSb16SemaHub_almostEmpty_ST_23i                     7
    #define       bSemaHub_almostEmpty_ST_23i                  1
    #define   MSK32SemaHub_almostEmpty_ST_23i                     0x00800000

    #define     BA_SemaHub_almostEmpty_ST_24i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_24i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_24i                     24
    #define   LSb16SemaHub_almostEmpty_ST_24i                     8
    #define       bSemaHub_almostEmpty_ST_24i                  1
    #define   MSK32SemaHub_almostEmpty_ST_24i                     0x01000000

    #define     BA_SemaHub_almostEmpty_ST_25i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_25i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_25i                     25
    #define   LSb16SemaHub_almostEmpty_ST_25i                     9
    #define       bSemaHub_almostEmpty_ST_25i                  1
    #define   MSK32SemaHub_almostEmpty_ST_25i                     0x02000000

    #define     BA_SemaHub_almostEmpty_ST_26i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_26i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_26i                     26
    #define   LSb16SemaHub_almostEmpty_ST_26i                     10
    #define       bSemaHub_almostEmpty_ST_26i                  1
    #define   MSK32SemaHub_almostEmpty_ST_26i                     0x04000000

    #define     BA_SemaHub_almostEmpty_ST_27i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_27i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_27i                     27
    #define   LSb16SemaHub_almostEmpty_ST_27i                     11
    #define       bSemaHub_almostEmpty_ST_27i                  1
    #define   MSK32SemaHub_almostEmpty_ST_27i                     0x08000000

    #define     BA_SemaHub_almostEmpty_ST_28i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_28i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_28i                     28
    #define   LSb16SemaHub_almostEmpty_ST_28i                     12
    #define       bSemaHub_almostEmpty_ST_28i                  1
    #define   MSK32SemaHub_almostEmpty_ST_28i                     0x10000000

    #define     BA_SemaHub_almostEmpty_ST_29i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_29i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_29i                     29
    #define   LSb16SemaHub_almostEmpty_ST_29i                     13
    #define       bSemaHub_almostEmpty_ST_29i                  1
    #define   MSK32SemaHub_almostEmpty_ST_29i                     0x20000000

    #define     BA_SemaHub_almostEmpty_ST_30i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_30i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_30i                     30
    #define   LSb16SemaHub_almostEmpty_ST_30i                     14
    #define       bSemaHub_almostEmpty_ST_30i                  1
    #define   MSK32SemaHub_almostEmpty_ST_30i                     0x40000000

    #define     BA_SemaHub_almostEmpty_ST_31i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_31i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_31i                     31
    #define   LSb16SemaHub_almostEmpty_ST_31i                     15
    #define       bSemaHub_almostEmpty_ST_31i                  1
    #define   MSK32SemaHub_almostEmpty_ST_31i                     0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_almostFull                          0x0394

    #define     BA_SemaHub_almostFull_ST_0i                    0x0394
    #define     B16SemaHub_almostFull_ST_0i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_0i                       0
    #define   LSb16SemaHub_almostFull_ST_0i                       0
    #define       bSemaHub_almostFull_ST_0i                    1
    #define   MSK32SemaHub_almostFull_ST_0i                       0x00000001

    #define     BA_SemaHub_almostFull_ST_1i                    0x0394
    #define     B16SemaHub_almostFull_ST_1i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_1i                       1
    #define   LSb16SemaHub_almostFull_ST_1i                       1
    #define       bSemaHub_almostFull_ST_1i                    1
    #define   MSK32SemaHub_almostFull_ST_1i                       0x00000002

    #define     BA_SemaHub_almostFull_ST_2i                    0x0394
    #define     B16SemaHub_almostFull_ST_2i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_2i                       2
    #define   LSb16SemaHub_almostFull_ST_2i                       2
    #define       bSemaHub_almostFull_ST_2i                    1
    #define   MSK32SemaHub_almostFull_ST_2i                       0x00000004

    #define     BA_SemaHub_almostFull_ST_3i                    0x0394
    #define     B16SemaHub_almostFull_ST_3i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_3i                       3
    #define   LSb16SemaHub_almostFull_ST_3i                       3
    #define       bSemaHub_almostFull_ST_3i                    1
    #define   MSK32SemaHub_almostFull_ST_3i                       0x00000008

    #define     BA_SemaHub_almostFull_ST_4i                    0x0394
    #define     B16SemaHub_almostFull_ST_4i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_4i                       4
    #define   LSb16SemaHub_almostFull_ST_4i                       4
    #define       bSemaHub_almostFull_ST_4i                    1
    #define   MSK32SemaHub_almostFull_ST_4i                       0x00000010

    #define     BA_SemaHub_almostFull_ST_5i                    0x0394
    #define     B16SemaHub_almostFull_ST_5i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_5i                       5
    #define   LSb16SemaHub_almostFull_ST_5i                       5
    #define       bSemaHub_almostFull_ST_5i                    1
    #define   MSK32SemaHub_almostFull_ST_5i                       0x00000020

    #define     BA_SemaHub_almostFull_ST_6i                    0x0394
    #define     B16SemaHub_almostFull_ST_6i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_6i                       6
    #define   LSb16SemaHub_almostFull_ST_6i                       6
    #define       bSemaHub_almostFull_ST_6i                    1
    #define   MSK32SemaHub_almostFull_ST_6i                       0x00000040

    #define     BA_SemaHub_almostFull_ST_7i                    0x0394
    #define     B16SemaHub_almostFull_ST_7i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_7i                       7
    #define   LSb16SemaHub_almostFull_ST_7i                       7
    #define       bSemaHub_almostFull_ST_7i                    1
    #define   MSK32SemaHub_almostFull_ST_7i                       0x00000080

    #define     BA_SemaHub_almostFull_ST_8i                    0x0395
    #define     B16SemaHub_almostFull_ST_8i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_8i                       8
    #define   LSb16SemaHub_almostFull_ST_8i                       8
    #define       bSemaHub_almostFull_ST_8i                    1
    #define   MSK32SemaHub_almostFull_ST_8i                       0x00000100

    #define     BA_SemaHub_almostFull_ST_9i                    0x0395
    #define     B16SemaHub_almostFull_ST_9i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_9i                       9
    #define   LSb16SemaHub_almostFull_ST_9i                       9
    #define       bSemaHub_almostFull_ST_9i                    1
    #define   MSK32SemaHub_almostFull_ST_9i                       0x00000200

    #define     BA_SemaHub_almostFull_ST_10i                   0x0395
    #define     B16SemaHub_almostFull_ST_10i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_10i                      10
    #define   LSb16SemaHub_almostFull_ST_10i                      10
    #define       bSemaHub_almostFull_ST_10i                   1
    #define   MSK32SemaHub_almostFull_ST_10i                      0x00000400

    #define     BA_SemaHub_almostFull_ST_11i                   0x0395
    #define     B16SemaHub_almostFull_ST_11i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_11i                      11
    #define   LSb16SemaHub_almostFull_ST_11i                      11
    #define       bSemaHub_almostFull_ST_11i                   1
    #define   MSK32SemaHub_almostFull_ST_11i                      0x00000800

    #define     BA_SemaHub_almostFull_ST_12i                   0x0395
    #define     B16SemaHub_almostFull_ST_12i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_12i                      12
    #define   LSb16SemaHub_almostFull_ST_12i                      12
    #define       bSemaHub_almostFull_ST_12i                   1
    #define   MSK32SemaHub_almostFull_ST_12i                      0x00001000

    #define     BA_SemaHub_almostFull_ST_13i                   0x0395
    #define     B16SemaHub_almostFull_ST_13i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_13i                      13
    #define   LSb16SemaHub_almostFull_ST_13i                      13
    #define       bSemaHub_almostFull_ST_13i                   1
    #define   MSK32SemaHub_almostFull_ST_13i                      0x00002000

    #define     BA_SemaHub_almostFull_ST_14i                   0x0395
    #define     B16SemaHub_almostFull_ST_14i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_14i                      14
    #define   LSb16SemaHub_almostFull_ST_14i                      14
    #define       bSemaHub_almostFull_ST_14i                   1
    #define   MSK32SemaHub_almostFull_ST_14i                      0x00004000

    #define     BA_SemaHub_almostFull_ST_15i                   0x0395
    #define     B16SemaHub_almostFull_ST_15i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_15i                      15
    #define   LSb16SemaHub_almostFull_ST_15i                      15
    #define       bSemaHub_almostFull_ST_15i                   1
    #define   MSK32SemaHub_almostFull_ST_15i                      0x00008000

    #define     BA_SemaHub_almostFull_ST_16i                   0x0396
    #define     B16SemaHub_almostFull_ST_16i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_16i                      16
    #define   LSb16SemaHub_almostFull_ST_16i                      0
    #define       bSemaHub_almostFull_ST_16i                   1
    #define   MSK32SemaHub_almostFull_ST_16i                      0x00010000

    #define     BA_SemaHub_almostFull_ST_17i                   0x0396
    #define     B16SemaHub_almostFull_ST_17i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_17i                      17
    #define   LSb16SemaHub_almostFull_ST_17i                      1
    #define       bSemaHub_almostFull_ST_17i                   1
    #define   MSK32SemaHub_almostFull_ST_17i                      0x00020000

    #define     BA_SemaHub_almostFull_ST_18i                   0x0396
    #define     B16SemaHub_almostFull_ST_18i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_18i                      18
    #define   LSb16SemaHub_almostFull_ST_18i                      2
    #define       bSemaHub_almostFull_ST_18i                   1
    #define   MSK32SemaHub_almostFull_ST_18i                      0x00040000

    #define     BA_SemaHub_almostFull_ST_19i                   0x0396
    #define     B16SemaHub_almostFull_ST_19i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_19i                      19
    #define   LSb16SemaHub_almostFull_ST_19i                      3
    #define       bSemaHub_almostFull_ST_19i                   1
    #define   MSK32SemaHub_almostFull_ST_19i                      0x00080000

    #define     BA_SemaHub_almostFull_ST_20i                   0x0396
    #define     B16SemaHub_almostFull_ST_20i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_20i                      20
    #define   LSb16SemaHub_almostFull_ST_20i                      4
    #define       bSemaHub_almostFull_ST_20i                   1
    #define   MSK32SemaHub_almostFull_ST_20i                      0x00100000

    #define     BA_SemaHub_almostFull_ST_21i                   0x0396
    #define     B16SemaHub_almostFull_ST_21i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_21i                      21
    #define   LSb16SemaHub_almostFull_ST_21i                      5
    #define       bSemaHub_almostFull_ST_21i                   1
    #define   MSK32SemaHub_almostFull_ST_21i                      0x00200000

    #define     BA_SemaHub_almostFull_ST_22i                   0x0396
    #define     B16SemaHub_almostFull_ST_22i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_22i                      22
    #define   LSb16SemaHub_almostFull_ST_22i                      6
    #define       bSemaHub_almostFull_ST_22i                   1
    #define   MSK32SemaHub_almostFull_ST_22i                      0x00400000

    #define     BA_SemaHub_almostFull_ST_23i                   0x0396
    #define     B16SemaHub_almostFull_ST_23i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_23i                      23
    #define   LSb16SemaHub_almostFull_ST_23i                      7
    #define       bSemaHub_almostFull_ST_23i                   1
    #define   MSK32SemaHub_almostFull_ST_23i                      0x00800000

    #define     BA_SemaHub_almostFull_ST_24i                   0x0397
    #define     B16SemaHub_almostFull_ST_24i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_24i                      24
    #define   LSb16SemaHub_almostFull_ST_24i                      8
    #define       bSemaHub_almostFull_ST_24i                   1
    #define   MSK32SemaHub_almostFull_ST_24i                      0x01000000

    #define     BA_SemaHub_almostFull_ST_25i                   0x0397
    #define     B16SemaHub_almostFull_ST_25i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_25i                      25
    #define   LSb16SemaHub_almostFull_ST_25i                      9
    #define       bSemaHub_almostFull_ST_25i                   1
    #define   MSK32SemaHub_almostFull_ST_25i                      0x02000000

    #define     BA_SemaHub_almostFull_ST_26i                   0x0397
    #define     B16SemaHub_almostFull_ST_26i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_26i                      26
    #define   LSb16SemaHub_almostFull_ST_26i                      10
    #define       bSemaHub_almostFull_ST_26i                   1
    #define   MSK32SemaHub_almostFull_ST_26i                      0x04000000

    #define     BA_SemaHub_almostFull_ST_27i                   0x0397
    #define     B16SemaHub_almostFull_ST_27i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_27i                      27
    #define   LSb16SemaHub_almostFull_ST_27i                      11
    #define       bSemaHub_almostFull_ST_27i                   1
    #define   MSK32SemaHub_almostFull_ST_27i                      0x08000000

    #define     BA_SemaHub_almostFull_ST_28i                   0x0397
    #define     B16SemaHub_almostFull_ST_28i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_28i                      28
    #define   LSb16SemaHub_almostFull_ST_28i                      12
    #define       bSemaHub_almostFull_ST_28i                   1
    #define   MSK32SemaHub_almostFull_ST_28i                      0x10000000

    #define     BA_SemaHub_almostFull_ST_29i                   0x0397
    #define     B16SemaHub_almostFull_ST_29i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_29i                      29
    #define   LSb16SemaHub_almostFull_ST_29i                      13
    #define       bSemaHub_almostFull_ST_29i                   1
    #define   MSK32SemaHub_almostFull_ST_29i                      0x20000000

    #define     BA_SemaHub_almostFull_ST_30i                   0x0397
    #define     B16SemaHub_almostFull_ST_30i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_30i                      30
    #define   LSb16SemaHub_almostFull_ST_30i                      14
    #define       bSemaHub_almostFull_ST_30i                   1
    #define   MSK32SemaHub_almostFull_ST_30i                      0x40000000

    #define     BA_SemaHub_almostFull_ST_31i                   0x0397
    #define     B16SemaHub_almostFull_ST_31i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_31i                      31
    #define   LSb16SemaHub_almostFull_ST_31i                      15
    #define       bSemaHub_almostFull_ST_31i                   1
    #define   MSK32SemaHub_almostFull_ST_31i                      0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaHub {
    ///////////////////////////////////////////////////////////
              SIE_SemaQuery                                    ie_counter[64];
    ///////////////////////////////////////////////////////////
              SIE_Semaphore                                    ie_cell[32];
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_PUSH_ID(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32SemaHub_PUSH_ID(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16SemaHub_PUSH_ID(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16SemaHub_PUSH_ID(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32SemaHub_PUSH_delta(r32)                     _BFGET_(r32,15, 8)
    #define   SET32SemaHub_PUSH_delta(r32,v)                   _BFSET_(r32,15, 8,v)
    #define   GET16SemaHub_PUSH_delta(r16)                     _BFGET_(r16,15, 8)
    #define   SET16SemaHub_PUSH_delta(r16,v)                   _BFSET_(r16,15, 8,v)

    #define     w32SemaHub_PUSH                                {\
            UNSG32 uPUSH_ID                                    :  8;\
            UNSG32 uPUSH_delta                                 :  8;\
            UNSG32 RSVDx380_b16                                : 16;\
          }
    union { UNSG32 u32SemaHub_PUSH;
            struct w32SemaHub_PUSH;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_POP_ID(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32SemaHub_POP_ID(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16SemaHub_POP_ID(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16SemaHub_POP_ID(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define   GET32SemaHub_POP_delta(r32)                      _BFGET_(r32,15, 8)
    #define   SET32SemaHub_POP_delta(r32,v)                    _BFSET_(r32,15, 8,v)
    #define   GET16SemaHub_POP_delta(r16)                      _BFGET_(r16,15, 8)
    #define   SET16SemaHub_POP_delta(r16,v)                    _BFSET_(r16,15, 8,v)

    #define     w32SemaHub_POP                                 {\
            UNSG32 uPOP_ID                                     :  8;\
            UNSG32 uPOP_delta                                  :  8;\
            UNSG32 RSVDx384_b16                                : 16;\
          }
    union { UNSG32 u32SemaHub_POP;
            struct w32SemaHub_POP;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_empty_ST_0i(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_empty_ST_0i(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_empty_ST_0i(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_empty_ST_0i(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_empty_ST_1i(r32)                    _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_empty_ST_1i(r32,v)                  _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_empty_ST_1i(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_empty_ST_1i(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_empty_ST_2i(r32)                    _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_empty_ST_2i(r32,v)                  _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_empty_ST_2i(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_empty_ST_2i(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_empty_ST_3i(r32)                    _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_empty_ST_3i(r32,v)                  _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_empty_ST_3i(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_empty_ST_3i(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_empty_ST_4i(r32)                    _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_empty_ST_4i(r32,v)                  _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_empty_ST_4i(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_empty_ST_4i(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_empty_ST_5i(r32)                    _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_empty_ST_5i(r32,v)                  _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_empty_ST_5i(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_empty_ST_5i(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_empty_ST_6i(r32)                    _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_empty_ST_6i(r32,v)                  _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_empty_ST_6i(r16)                    _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_empty_ST_6i(r16,v)                  _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_empty_ST_7i(r32)                    _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_empty_ST_7i(r32,v)                  _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_empty_ST_7i(r16)                    _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_empty_ST_7i(r16,v)                  _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_empty_ST_8i(r32)                    _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_empty_ST_8i(r32,v)                  _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_empty_ST_8i(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_empty_ST_8i(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_empty_ST_9i(r32)                    _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_empty_ST_9i(r32,v)                  _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_empty_ST_9i(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_empty_ST_9i(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_empty_ST_10i(r32)                   _BFGET_(r32,10,10)
    #define   SET32SemaHub_empty_ST_10i(r32,v)                 _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_empty_ST_10i(r16)                   _BFGET_(r16,10,10)
    #define   SET16SemaHub_empty_ST_10i(r16,v)                 _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_empty_ST_11i(r32)                   _BFGET_(r32,11,11)
    #define   SET32SemaHub_empty_ST_11i(r32,v)                 _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_empty_ST_11i(r16)                   _BFGET_(r16,11,11)
    #define   SET16SemaHub_empty_ST_11i(r16,v)                 _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_empty_ST_12i(r32)                   _BFGET_(r32,12,12)
    #define   SET32SemaHub_empty_ST_12i(r32,v)                 _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_empty_ST_12i(r16)                   _BFGET_(r16,12,12)
    #define   SET16SemaHub_empty_ST_12i(r16,v)                 _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_empty_ST_13i(r32)                   _BFGET_(r32,13,13)
    #define   SET32SemaHub_empty_ST_13i(r32,v)                 _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_empty_ST_13i(r16)                   _BFGET_(r16,13,13)
    #define   SET16SemaHub_empty_ST_13i(r16,v)                 _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_empty_ST_14i(r32)                   _BFGET_(r32,14,14)
    #define   SET32SemaHub_empty_ST_14i(r32,v)                 _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_empty_ST_14i(r16)                   _BFGET_(r16,14,14)
    #define   SET16SemaHub_empty_ST_14i(r16,v)                 _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_empty_ST_15i(r32)                   _BFGET_(r32,15,15)
    #define   SET32SemaHub_empty_ST_15i(r32,v)                 _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_empty_ST_15i(r16)                   _BFGET_(r16,15,15)
    #define   SET16SemaHub_empty_ST_15i(r16,v)                 _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_empty_ST_16i(r32)                   _BFGET_(r32,16,16)
    #define   SET32SemaHub_empty_ST_16i(r32,v)                 _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_empty_ST_16i(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_empty_ST_16i(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_empty_ST_17i(r32)                   _BFGET_(r32,17,17)
    #define   SET32SemaHub_empty_ST_17i(r32,v)                 _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_empty_ST_17i(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_empty_ST_17i(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_empty_ST_18i(r32)                   _BFGET_(r32,18,18)
    #define   SET32SemaHub_empty_ST_18i(r32,v)                 _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_empty_ST_18i(r16)                   _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_empty_ST_18i(r16,v)                 _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_empty_ST_19i(r32)                   _BFGET_(r32,19,19)
    #define   SET32SemaHub_empty_ST_19i(r32,v)                 _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_empty_ST_19i(r16)                   _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_empty_ST_19i(r16,v)                 _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_empty_ST_20i(r32)                   _BFGET_(r32,20,20)
    #define   SET32SemaHub_empty_ST_20i(r32,v)                 _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_empty_ST_20i(r16)                   _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_empty_ST_20i(r16,v)                 _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_empty_ST_21i(r32)                   _BFGET_(r32,21,21)
    #define   SET32SemaHub_empty_ST_21i(r32,v)                 _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_empty_ST_21i(r16)                   _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_empty_ST_21i(r16,v)                 _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_empty_ST_22i(r32)                   _BFGET_(r32,22,22)
    #define   SET32SemaHub_empty_ST_22i(r32,v)                 _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_empty_ST_22i(r16)                   _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_empty_ST_22i(r16,v)                 _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_empty_ST_23i(r32)                   _BFGET_(r32,23,23)
    #define   SET32SemaHub_empty_ST_23i(r32,v)                 _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_empty_ST_23i(r16)                   _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_empty_ST_23i(r16,v)                 _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_empty_ST_24i(r32)                   _BFGET_(r32,24,24)
    #define   SET32SemaHub_empty_ST_24i(r32,v)                 _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_empty_ST_24i(r16)                   _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_empty_ST_24i(r16,v)                 _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_empty_ST_25i(r32)                   _BFGET_(r32,25,25)
    #define   SET32SemaHub_empty_ST_25i(r32,v)                 _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_empty_ST_25i(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_empty_ST_25i(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_empty_ST_26i(r32)                   _BFGET_(r32,26,26)
    #define   SET32SemaHub_empty_ST_26i(r32,v)                 _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_empty_ST_26i(r16)                   _BFGET_(r16,10,10)
    #define   SET16SemaHub_empty_ST_26i(r16,v)                 _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_empty_ST_27i(r32)                   _BFGET_(r32,27,27)
    #define   SET32SemaHub_empty_ST_27i(r32,v)                 _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_empty_ST_27i(r16)                   _BFGET_(r16,11,11)
    #define   SET16SemaHub_empty_ST_27i(r16,v)                 _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_empty_ST_28i(r32)                   _BFGET_(r32,28,28)
    #define   SET32SemaHub_empty_ST_28i(r32,v)                 _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_empty_ST_28i(r16)                   _BFGET_(r16,12,12)
    #define   SET16SemaHub_empty_ST_28i(r16,v)                 _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_empty_ST_29i(r32)                   _BFGET_(r32,29,29)
    #define   SET32SemaHub_empty_ST_29i(r32,v)                 _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_empty_ST_29i(r16)                   _BFGET_(r16,13,13)
    #define   SET16SemaHub_empty_ST_29i(r16,v)                 _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_empty_ST_30i(r32)                   _BFGET_(r32,30,30)
    #define   SET32SemaHub_empty_ST_30i(r32,v)                 _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_empty_ST_30i(r16)                   _BFGET_(r16,14,14)
    #define   SET16SemaHub_empty_ST_30i(r16,v)                 _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_empty_ST_31i(r32)                   _BFGET_(r32,31,31)
    #define   SET32SemaHub_empty_ST_31i(r32,v)                 _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_empty_ST_31i(r16)                   _BFGET_(r16,15,15)
    #define   SET16SemaHub_empty_ST_31i(r16,v)                 _BFSET_(r16,15,15,v)

    #define     w32SemaHub_empty                               {\
            UNSG32 uempty_ST_0i                                :  1;\
            UNSG32 uempty_ST_1i                                :  1;\
            UNSG32 uempty_ST_2i                                :  1;\
            UNSG32 uempty_ST_3i                                :  1;\
            UNSG32 uempty_ST_4i                                :  1;\
            UNSG32 uempty_ST_5i                                :  1;\
            UNSG32 uempty_ST_6i                                :  1;\
            UNSG32 uempty_ST_7i                                :  1;\
            UNSG32 uempty_ST_8i                                :  1;\
            UNSG32 uempty_ST_9i                                :  1;\
            UNSG32 uempty_ST_10i                               :  1;\
            UNSG32 uempty_ST_11i                               :  1;\
            UNSG32 uempty_ST_12i                               :  1;\
            UNSG32 uempty_ST_13i                               :  1;\
            UNSG32 uempty_ST_14i                               :  1;\
            UNSG32 uempty_ST_15i                               :  1;\
            UNSG32 uempty_ST_16i                               :  1;\
            UNSG32 uempty_ST_17i                               :  1;\
            UNSG32 uempty_ST_18i                               :  1;\
            UNSG32 uempty_ST_19i                               :  1;\
            UNSG32 uempty_ST_20i                               :  1;\
            UNSG32 uempty_ST_21i                               :  1;\
            UNSG32 uempty_ST_22i                               :  1;\
            UNSG32 uempty_ST_23i                               :  1;\
            UNSG32 uempty_ST_24i                               :  1;\
            UNSG32 uempty_ST_25i                               :  1;\
            UNSG32 uempty_ST_26i                               :  1;\
            UNSG32 uempty_ST_27i                               :  1;\
            UNSG32 uempty_ST_28i                               :  1;\
            UNSG32 uempty_ST_29i                               :  1;\
            UNSG32 uempty_ST_30i                               :  1;\
            UNSG32 uempty_ST_31i                               :  1;\
          }
    union { UNSG32 u32SemaHub_empty;
            struct w32SemaHub_empty;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_full_ST_0i(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_full_ST_0i(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_full_ST_0i(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_full_ST_0i(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_full_ST_1i(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_full_ST_1i(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_full_ST_1i(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_full_ST_1i(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_full_ST_2i(r32)                     _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_full_ST_2i(r32,v)                   _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_full_ST_2i(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_full_ST_2i(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_full_ST_3i(r32)                     _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_full_ST_3i(r32,v)                   _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_full_ST_3i(r16)                     _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_full_ST_3i(r16,v)                   _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_full_ST_4i(r32)                     _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_full_ST_4i(r32,v)                   _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_full_ST_4i(r16)                     _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_full_ST_4i(r16,v)                   _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_full_ST_5i(r32)                     _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_full_ST_5i(r32,v)                   _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_full_ST_5i(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_full_ST_5i(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_full_ST_6i(r32)                     _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_full_ST_6i(r32,v)                   _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_full_ST_6i(r16)                     _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_full_ST_6i(r16,v)                   _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_full_ST_7i(r32)                     _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_full_ST_7i(r32,v)                   _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_full_ST_7i(r16)                     _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_full_ST_7i(r16,v)                   _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_full_ST_8i(r32)                     _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_full_ST_8i(r32,v)                   _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_full_ST_8i(r16)                     _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_full_ST_8i(r16,v)                   _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_full_ST_9i(r32)                     _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_full_ST_9i(r32,v)                   _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_full_ST_9i(r16)                     _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_full_ST_9i(r16,v)                   _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_full_ST_10i(r32)                    _BFGET_(r32,10,10)
    #define   SET32SemaHub_full_ST_10i(r32,v)                  _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_full_ST_10i(r16)                    _BFGET_(r16,10,10)
    #define   SET16SemaHub_full_ST_10i(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_full_ST_11i(r32)                    _BFGET_(r32,11,11)
    #define   SET32SemaHub_full_ST_11i(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_full_ST_11i(r16)                    _BFGET_(r16,11,11)
    #define   SET16SemaHub_full_ST_11i(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_full_ST_12i(r32)                    _BFGET_(r32,12,12)
    #define   SET32SemaHub_full_ST_12i(r32,v)                  _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_full_ST_12i(r16)                    _BFGET_(r16,12,12)
    #define   SET16SemaHub_full_ST_12i(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_full_ST_13i(r32)                    _BFGET_(r32,13,13)
    #define   SET32SemaHub_full_ST_13i(r32,v)                  _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_full_ST_13i(r16)                    _BFGET_(r16,13,13)
    #define   SET16SemaHub_full_ST_13i(r16,v)                  _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_full_ST_14i(r32)                    _BFGET_(r32,14,14)
    #define   SET32SemaHub_full_ST_14i(r32,v)                  _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_full_ST_14i(r16)                    _BFGET_(r16,14,14)
    #define   SET16SemaHub_full_ST_14i(r16,v)                  _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_full_ST_15i(r32)                    _BFGET_(r32,15,15)
    #define   SET32SemaHub_full_ST_15i(r32,v)                  _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_full_ST_15i(r16)                    _BFGET_(r16,15,15)
    #define   SET16SemaHub_full_ST_15i(r16,v)                  _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_full_ST_16i(r32)                    _BFGET_(r32,16,16)
    #define   SET32SemaHub_full_ST_16i(r32,v)                  _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_full_ST_16i(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_full_ST_16i(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_full_ST_17i(r32)                    _BFGET_(r32,17,17)
    #define   SET32SemaHub_full_ST_17i(r32,v)                  _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_full_ST_17i(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_full_ST_17i(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_full_ST_18i(r32)                    _BFGET_(r32,18,18)
    #define   SET32SemaHub_full_ST_18i(r32,v)                  _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_full_ST_18i(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_full_ST_18i(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_full_ST_19i(r32)                    _BFGET_(r32,19,19)
    #define   SET32SemaHub_full_ST_19i(r32,v)                  _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_full_ST_19i(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_full_ST_19i(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_full_ST_20i(r32)                    _BFGET_(r32,20,20)
    #define   SET32SemaHub_full_ST_20i(r32,v)                  _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_full_ST_20i(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_full_ST_20i(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_full_ST_21i(r32)                    _BFGET_(r32,21,21)
    #define   SET32SemaHub_full_ST_21i(r32,v)                  _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_full_ST_21i(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_full_ST_21i(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_full_ST_22i(r32)                    _BFGET_(r32,22,22)
    #define   SET32SemaHub_full_ST_22i(r32,v)                  _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_full_ST_22i(r16)                    _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_full_ST_22i(r16,v)                  _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_full_ST_23i(r32)                    _BFGET_(r32,23,23)
    #define   SET32SemaHub_full_ST_23i(r32,v)                  _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_full_ST_23i(r16)                    _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_full_ST_23i(r16,v)                  _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_full_ST_24i(r32)                    _BFGET_(r32,24,24)
    #define   SET32SemaHub_full_ST_24i(r32,v)                  _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_full_ST_24i(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_full_ST_24i(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_full_ST_25i(r32)                    _BFGET_(r32,25,25)
    #define   SET32SemaHub_full_ST_25i(r32,v)                  _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_full_ST_25i(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_full_ST_25i(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_full_ST_26i(r32)                    _BFGET_(r32,26,26)
    #define   SET32SemaHub_full_ST_26i(r32,v)                  _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_full_ST_26i(r16)                    _BFGET_(r16,10,10)
    #define   SET16SemaHub_full_ST_26i(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_full_ST_27i(r32)                    _BFGET_(r32,27,27)
    #define   SET32SemaHub_full_ST_27i(r32,v)                  _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_full_ST_27i(r16)                    _BFGET_(r16,11,11)
    #define   SET16SemaHub_full_ST_27i(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_full_ST_28i(r32)                    _BFGET_(r32,28,28)
    #define   SET32SemaHub_full_ST_28i(r32,v)                  _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_full_ST_28i(r16)                    _BFGET_(r16,12,12)
    #define   SET16SemaHub_full_ST_28i(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_full_ST_29i(r32)                    _BFGET_(r32,29,29)
    #define   SET32SemaHub_full_ST_29i(r32,v)                  _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_full_ST_29i(r16)                    _BFGET_(r16,13,13)
    #define   SET16SemaHub_full_ST_29i(r16,v)                  _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_full_ST_30i(r32)                    _BFGET_(r32,30,30)
    #define   SET32SemaHub_full_ST_30i(r32,v)                  _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_full_ST_30i(r16)                    _BFGET_(r16,14,14)
    #define   SET16SemaHub_full_ST_30i(r16,v)                  _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_full_ST_31i(r32)                    _BFGET_(r32,31,31)
    #define   SET32SemaHub_full_ST_31i(r32,v)                  _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_full_ST_31i(r16)                    _BFGET_(r16,15,15)
    #define   SET16SemaHub_full_ST_31i(r16,v)                  _BFSET_(r16,15,15,v)

    #define     w32SemaHub_full                                {\
            UNSG32 ufull_ST_0i                                 :  1;\
            UNSG32 ufull_ST_1i                                 :  1;\
            UNSG32 ufull_ST_2i                                 :  1;\
            UNSG32 ufull_ST_3i                                 :  1;\
            UNSG32 ufull_ST_4i                                 :  1;\
            UNSG32 ufull_ST_5i                                 :  1;\
            UNSG32 ufull_ST_6i                                 :  1;\
            UNSG32 ufull_ST_7i                                 :  1;\
            UNSG32 ufull_ST_8i                                 :  1;\
            UNSG32 ufull_ST_9i                                 :  1;\
            UNSG32 ufull_ST_10i                                :  1;\
            UNSG32 ufull_ST_11i                                :  1;\
            UNSG32 ufull_ST_12i                                :  1;\
            UNSG32 ufull_ST_13i                                :  1;\
            UNSG32 ufull_ST_14i                                :  1;\
            UNSG32 ufull_ST_15i                                :  1;\
            UNSG32 ufull_ST_16i                                :  1;\
            UNSG32 ufull_ST_17i                                :  1;\
            UNSG32 ufull_ST_18i                                :  1;\
            UNSG32 ufull_ST_19i                                :  1;\
            UNSG32 ufull_ST_20i                                :  1;\
            UNSG32 ufull_ST_21i                                :  1;\
            UNSG32 ufull_ST_22i                                :  1;\
            UNSG32 ufull_ST_23i                                :  1;\
            UNSG32 ufull_ST_24i                                :  1;\
            UNSG32 ufull_ST_25i                                :  1;\
            UNSG32 ufull_ST_26i                                :  1;\
            UNSG32 ufull_ST_27i                                :  1;\
            UNSG32 ufull_ST_28i                                :  1;\
            UNSG32 ufull_ST_29i                                :  1;\
            UNSG32 ufull_ST_30i                                :  1;\
            UNSG32 ufull_ST_31i                                :  1;\
          }
    union { UNSG32 u32SemaHub_full;
            struct w32SemaHub_full;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_almostEmpty_ST_0i(r32)              _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_almostEmpty_ST_0i(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_almostEmpty_ST_0i(r16)              _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostEmpty_ST_0i(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostEmpty_ST_1i(r32)              _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_almostEmpty_ST_1i(r32,v)            _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_almostEmpty_ST_1i(r16)              _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostEmpty_ST_1i(r16,v)            _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostEmpty_ST_2i(r32)              _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_almostEmpty_ST_2i(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_almostEmpty_ST_2i(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostEmpty_ST_2i(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostEmpty_ST_3i(r32)              _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_almostEmpty_ST_3i(r32,v)            _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_almostEmpty_ST_3i(r16)              _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostEmpty_ST_3i(r16,v)            _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostEmpty_ST_4i(r32)              _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_almostEmpty_ST_4i(r32,v)            _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_almostEmpty_ST_4i(r16)              _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostEmpty_ST_4i(r16,v)            _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostEmpty_ST_5i(r32)              _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_almostEmpty_ST_5i(r32,v)            _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_almostEmpty_ST_5i(r16)              _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostEmpty_ST_5i(r16,v)            _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostEmpty_ST_6i(r32)              _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_almostEmpty_ST_6i(r32,v)            _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_almostEmpty_ST_6i(r16)              _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostEmpty_ST_6i(r16,v)            _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostEmpty_ST_7i(r32)              _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_almostEmpty_ST_7i(r32,v)            _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_almostEmpty_ST_7i(r16)              _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostEmpty_ST_7i(r16,v)            _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostEmpty_ST_8i(r32)              _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_almostEmpty_ST_8i(r32,v)            _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_almostEmpty_ST_8i(r16)              _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostEmpty_ST_8i(r16,v)            _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostEmpty_ST_9i(r32)              _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_almostEmpty_ST_9i(r32,v)            _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_almostEmpty_ST_9i(r16)              _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostEmpty_ST_9i(r16,v)            _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostEmpty_ST_10i(r32)             _BFGET_(r32,10,10)
    #define   SET32SemaHub_almostEmpty_ST_10i(r32,v)           _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_almostEmpty_ST_10i(r16)             _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostEmpty_ST_10i(r16,v)           _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostEmpty_ST_11i(r32)             _BFGET_(r32,11,11)
    #define   SET32SemaHub_almostEmpty_ST_11i(r32,v)           _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_almostEmpty_ST_11i(r16)             _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostEmpty_ST_11i(r16,v)           _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostEmpty_ST_12i(r32)             _BFGET_(r32,12,12)
    #define   SET32SemaHub_almostEmpty_ST_12i(r32,v)           _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_almostEmpty_ST_12i(r16)             _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostEmpty_ST_12i(r16,v)           _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostEmpty_ST_13i(r32)             _BFGET_(r32,13,13)
    #define   SET32SemaHub_almostEmpty_ST_13i(r32,v)           _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_almostEmpty_ST_13i(r16)             _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostEmpty_ST_13i(r16,v)           _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostEmpty_ST_14i(r32)             _BFGET_(r32,14,14)
    #define   SET32SemaHub_almostEmpty_ST_14i(r32,v)           _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_almostEmpty_ST_14i(r16)             _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostEmpty_ST_14i(r16,v)           _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostEmpty_ST_15i(r32)             _BFGET_(r32,15,15)
    #define   SET32SemaHub_almostEmpty_ST_15i(r32,v)           _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_almostEmpty_ST_15i(r16)             _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostEmpty_ST_15i(r16,v)           _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_almostEmpty_ST_16i(r32)             _BFGET_(r32,16,16)
    #define   SET32SemaHub_almostEmpty_ST_16i(r32,v)           _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_almostEmpty_ST_16i(r16)             _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostEmpty_ST_16i(r16,v)           _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostEmpty_ST_17i(r32)             _BFGET_(r32,17,17)
    #define   SET32SemaHub_almostEmpty_ST_17i(r32,v)           _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_almostEmpty_ST_17i(r16)             _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostEmpty_ST_17i(r16,v)           _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostEmpty_ST_18i(r32)             _BFGET_(r32,18,18)
    #define   SET32SemaHub_almostEmpty_ST_18i(r32,v)           _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_almostEmpty_ST_18i(r16)             _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostEmpty_ST_18i(r16,v)           _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostEmpty_ST_19i(r32)             _BFGET_(r32,19,19)
    #define   SET32SemaHub_almostEmpty_ST_19i(r32,v)           _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_almostEmpty_ST_19i(r16)             _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostEmpty_ST_19i(r16,v)           _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostEmpty_ST_20i(r32)             _BFGET_(r32,20,20)
    #define   SET32SemaHub_almostEmpty_ST_20i(r32,v)           _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_almostEmpty_ST_20i(r16)             _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostEmpty_ST_20i(r16,v)           _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostEmpty_ST_21i(r32)             _BFGET_(r32,21,21)
    #define   SET32SemaHub_almostEmpty_ST_21i(r32,v)           _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_almostEmpty_ST_21i(r16)             _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostEmpty_ST_21i(r16,v)           _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostEmpty_ST_22i(r32)             _BFGET_(r32,22,22)
    #define   SET32SemaHub_almostEmpty_ST_22i(r32,v)           _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_almostEmpty_ST_22i(r16)             _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostEmpty_ST_22i(r16,v)           _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostEmpty_ST_23i(r32)             _BFGET_(r32,23,23)
    #define   SET32SemaHub_almostEmpty_ST_23i(r32,v)           _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_almostEmpty_ST_23i(r16)             _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostEmpty_ST_23i(r16,v)           _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostEmpty_ST_24i(r32)             _BFGET_(r32,24,24)
    #define   SET32SemaHub_almostEmpty_ST_24i(r32,v)           _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_almostEmpty_ST_24i(r16)             _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostEmpty_ST_24i(r16,v)           _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostEmpty_ST_25i(r32)             _BFGET_(r32,25,25)
    #define   SET32SemaHub_almostEmpty_ST_25i(r32,v)           _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_almostEmpty_ST_25i(r16)             _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostEmpty_ST_25i(r16,v)           _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostEmpty_ST_26i(r32)             _BFGET_(r32,26,26)
    #define   SET32SemaHub_almostEmpty_ST_26i(r32,v)           _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_almostEmpty_ST_26i(r16)             _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostEmpty_ST_26i(r16,v)           _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostEmpty_ST_27i(r32)             _BFGET_(r32,27,27)
    #define   SET32SemaHub_almostEmpty_ST_27i(r32,v)           _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_almostEmpty_ST_27i(r16)             _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostEmpty_ST_27i(r16,v)           _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostEmpty_ST_28i(r32)             _BFGET_(r32,28,28)
    #define   SET32SemaHub_almostEmpty_ST_28i(r32,v)           _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_almostEmpty_ST_28i(r16)             _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostEmpty_ST_28i(r16,v)           _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostEmpty_ST_29i(r32)             _BFGET_(r32,29,29)
    #define   SET32SemaHub_almostEmpty_ST_29i(r32,v)           _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_almostEmpty_ST_29i(r16)             _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostEmpty_ST_29i(r16,v)           _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostEmpty_ST_30i(r32)             _BFGET_(r32,30,30)
    #define   SET32SemaHub_almostEmpty_ST_30i(r32,v)           _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_almostEmpty_ST_30i(r16)             _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostEmpty_ST_30i(r16,v)           _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostEmpty_ST_31i(r32)             _BFGET_(r32,31,31)
    #define   SET32SemaHub_almostEmpty_ST_31i(r32,v)           _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_almostEmpty_ST_31i(r16)             _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostEmpty_ST_31i(r16,v)           _BFSET_(r16,15,15,v)

    #define     w32SemaHub_almostEmpty                         {\
            UNSG32 ualmostEmpty_ST_0i                          :  1;\
            UNSG32 ualmostEmpty_ST_1i                          :  1;\
            UNSG32 ualmostEmpty_ST_2i                          :  1;\
            UNSG32 ualmostEmpty_ST_3i                          :  1;\
            UNSG32 ualmostEmpty_ST_4i                          :  1;\
            UNSG32 ualmostEmpty_ST_5i                          :  1;\
            UNSG32 ualmostEmpty_ST_6i                          :  1;\
            UNSG32 ualmostEmpty_ST_7i                          :  1;\
            UNSG32 ualmostEmpty_ST_8i                          :  1;\
            UNSG32 ualmostEmpty_ST_9i                          :  1;\
            UNSG32 ualmostEmpty_ST_10i                         :  1;\
            UNSG32 ualmostEmpty_ST_11i                         :  1;\
            UNSG32 ualmostEmpty_ST_12i                         :  1;\
            UNSG32 ualmostEmpty_ST_13i                         :  1;\
            UNSG32 ualmostEmpty_ST_14i                         :  1;\
            UNSG32 ualmostEmpty_ST_15i                         :  1;\
            UNSG32 ualmostEmpty_ST_16i                         :  1;\
            UNSG32 ualmostEmpty_ST_17i                         :  1;\
            UNSG32 ualmostEmpty_ST_18i                         :  1;\
            UNSG32 ualmostEmpty_ST_19i                         :  1;\
            UNSG32 ualmostEmpty_ST_20i                         :  1;\
            UNSG32 ualmostEmpty_ST_21i                         :  1;\
            UNSG32 ualmostEmpty_ST_22i                         :  1;\
            UNSG32 ualmostEmpty_ST_23i                         :  1;\
            UNSG32 ualmostEmpty_ST_24i                         :  1;\
            UNSG32 ualmostEmpty_ST_25i                         :  1;\
            UNSG32 ualmostEmpty_ST_26i                         :  1;\
            UNSG32 ualmostEmpty_ST_27i                         :  1;\
            UNSG32 ualmostEmpty_ST_28i                         :  1;\
            UNSG32 ualmostEmpty_ST_29i                         :  1;\
            UNSG32 ualmostEmpty_ST_30i                         :  1;\
            UNSG32 ualmostEmpty_ST_31i                         :  1;\
          }
    union { UNSG32 u32SemaHub_almostEmpty;
            struct w32SemaHub_almostEmpty;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_almostFull_ST_0i(r32)               _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_almostFull_ST_0i(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_almostFull_ST_0i(r16)               _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostFull_ST_0i(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostFull_ST_1i(r32)               _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_almostFull_ST_1i(r32,v)             _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_almostFull_ST_1i(r16)               _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostFull_ST_1i(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostFull_ST_2i(r32)               _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_almostFull_ST_2i(r32,v)             _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_almostFull_ST_2i(r16)               _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostFull_ST_2i(r16,v)             _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostFull_ST_3i(r32)               _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_almostFull_ST_3i(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_almostFull_ST_3i(r16)               _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostFull_ST_3i(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostFull_ST_4i(r32)               _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_almostFull_ST_4i(r32,v)             _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_almostFull_ST_4i(r16)               _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostFull_ST_4i(r16,v)             _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostFull_ST_5i(r32)               _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_almostFull_ST_5i(r32,v)             _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_almostFull_ST_5i(r16)               _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostFull_ST_5i(r16,v)             _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostFull_ST_6i(r32)               _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_almostFull_ST_6i(r32,v)             _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_almostFull_ST_6i(r16)               _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostFull_ST_6i(r16,v)             _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostFull_ST_7i(r32)               _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_almostFull_ST_7i(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_almostFull_ST_7i(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostFull_ST_7i(r16,v)             _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostFull_ST_8i(r32)               _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_almostFull_ST_8i(r32,v)             _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_almostFull_ST_8i(r16)               _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostFull_ST_8i(r16,v)             _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostFull_ST_9i(r32)               _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_almostFull_ST_9i(r32,v)             _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_almostFull_ST_9i(r16)               _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostFull_ST_9i(r16,v)             _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostFull_ST_10i(r32)              _BFGET_(r32,10,10)
    #define   SET32SemaHub_almostFull_ST_10i(r32,v)            _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_almostFull_ST_10i(r16)              _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostFull_ST_10i(r16,v)            _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostFull_ST_11i(r32)              _BFGET_(r32,11,11)
    #define   SET32SemaHub_almostFull_ST_11i(r32,v)            _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_almostFull_ST_11i(r16)              _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostFull_ST_11i(r16,v)            _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostFull_ST_12i(r32)              _BFGET_(r32,12,12)
    #define   SET32SemaHub_almostFull_ST_12i(r32,v)            _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_almostFull_ST_12i(r16)              _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostFull_ST_12i(r16,v)            _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostFull_ST_13i(r32)              _BFGET_(r32,13,13)
    #define   SET32SemaHub_almostFull_ST_13i(r32,v)            _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_almostFull_ST_13i(r16)              _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostFull_ST_13i(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostFull_ST_14i(r32)              _BFGET_(r32,14,14)
    #define   SET32SemaHub_almostFull_ST_14i(r32,v)            _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_almostFull_ST_14i(r16)              _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostFull_ST_14i(r16,v)            _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostFull_ST_15i(r32)              _BFGET_(r32,15,15)
    #define   SET32SemaHub_almostFull_ST_15i(r32,v)            _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_almostFull_ST_15i(r16)              _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostFull_ST_15i(r16,v)            _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_almostFull_ST_16i(r32)              _BFGET_(r32,16,16)
    #define   SET32SemaHub_almostFull_ST_16i(r32,v)            _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_almostFull_ST_16i(r16)              _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostFull_ST_16i(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostFull_ST_17i(r32)              _BFGET_(r32,17,17)
    #define   SET32SemaHub_almostFull_ST_17i(r32,v)            _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_almostFull_ST_17i(r16)              _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostFull_ST_17i(r16,v)            _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostFull_ST_18i(r32)              _BFGET_(r32,18,18)
    #define   SET32SemaHub_almostFull_ST_18i(r32,v)            _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_almostFull_ST_18i(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostFull_ST_18i(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostFull_ST_19i(r32)              _BFGET_(r32,19,19)
    #define   SET32SemaHub_almostFull_ST_19i(r32,v)            _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_almostFull_ST_19i(r16)              _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostFull_ST_19i(r16,v)            _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostFull_ST_20i(r32)              _BFGET_(r32,20,20)
    #define   SET32SemaHub_almostFull_ST_20i(r32,v)            _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_almostFull_ST_20i(r16)              _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostFull_ST_20i(r16,v)            _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostFull_ST_21i(r32)              _BFGET_(r32,21,21)
    #define   SET32SemaHub_almostFull_ST_21i(r32,v)            _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_almostFull_ST_21i(r16)              _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostFull_ST_21i(r16,v)            _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostFull_ST_22i(r32)              _BFGET_(r32,22,22)
    #define   SET32SemaHub_almostFull_ST_22i(r32,v)            _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_almostFull_ST_22i(r16)              _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostFull_ST_22i(r16,v)            _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostFull_ST_23i(r32)              _BFGET_(r32,23,23)
    #define   SET32SemaHub_almostFull_ST_23i(r32,v)            _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_almostFull_ST_23i(r16)              _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostFull_ST_23i(r16,v)            _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostFull_ST_24i(r32)              _BFGET_(r32,24,24)
    #define   SET32SemaHub_almostFull_ST_24i(r32,v)            _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_almostFull_ST_24i(r16)              _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostFull_ST_24i(r16,v)            _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostFull_ST_25i(r32)              _BFGET_(r32,25,25)
    #define   SET32SemaHub_almostFull_ST_25i(r32,v)            _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_almostFull_ST_25i(r16)              _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostFull_ST_25i(r16,v)            _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostFull_ST_26i(r32)              _BFGET_(r32,26,26)
    #define   SET32SemaHub_almostFull_ST_26i(r32,v)            _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_almostFull_ST_26i(r16)              _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostFull_ST_26i(r16,v)            _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostFull_ST_27i(r32)              _BFGET_(r32,27,27)
    #define   SET32SemaHub_almostFull_ST_27i(r32,v)            _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_almostFull_ST_27i(r16)              _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostFull_ST_27i(r16,v)            _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostFull_ST_28i(r32)              _BFGET_(r32,28,28)
    #define   SET32SemaHub_almostFull_ST_28i(r32,v)            _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_almostFull_ST_28i(r16)              _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostFull_ST_28i(r16,v)            _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostFull_ST_29i(r32)              _BFGET_(r32,29,29)
    #define   SET32SemaHub_almostFull_ST_29i(r32,v)            _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_almostFull_ST_29i(r16)              _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostFull_ST_29i(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostFull_ST_30i(r32)              _BFGET_(r32,30,30)
    #define   SET32SemaHub_almostFull_ST_30i(r32,v)            _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_almostFull_ST_30i(r16)              _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostFull_ST_30i(r16,v)            _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostFull_ST_31i(r32)              _BFGET_(r32,31,31)
    #define   SET32SemaHub_almostFull_ST_31i(r32,v)            _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_almostFull_ST_31i(r16)              _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostFull_ST_31i(r16,v)            _BFSET_(r16,15,15,v)

    #define     w32SemaHub_almostFull                          {\
            UNSG32 ualmostFull_ST_0i                           :  1;\
            UNSG32 ualmostFull_ST_1i                           :  1;\
            UNSG32 ualmostFull_ST_2i                           :  1;\
            UNSG32 ualmostFull_ST_3i                           :  1;\
            UNSG32 ualmostFull_ST_4i                           :  1;\
            UNSG32 ualmostFull_ST_5i                           :  1;\
            UNSG32 ualmostFull_ST_6i                           :  1;\
            UNSG32 ualmostFull_ST_7i                           :  1;\
            UNSG32 ualmostFull_ST_8i                           :  1;\
            UNSG32 ualmostFull_ST_9i                           :  1;\
            UNSG32 ualmostFull_ST_10i                          :  1;\
            UNSG32 ualmostFull_ST_11i                          :  1;\
            UNSG32 ualmostFull_ST_12i                          :  1;\
            UNSG32 ualmostFull_ST_13i                          :  1;\
            UNSG32 ualmostFull_ST_14i                          :  1;\
            UNSG32 ualmostFull_ST_15i                          :  1;\
            UNSG32 ualmostFull_ST_16i                          :  1;\
            UNSG32 ualmostFull_ST_17i                          :  1;\
            UNSG32 ualmostFull_ST_18i                          :  1;\
            UNSG32 ualmostFull_ST_19i                          :  1;\
            UNSG32 ualmostFull_ST_20i                          :  1;\
            UNSG32 ualmostFull_ST_21i                          :  1;\
            UNSG32 ualmostFull_ST_22i                          :  1;\
            UNSG32 ualmostFull_ST_23i                          :  1;\
            UNSG32 ualmostFull_ST_24i                          :  1;\
            UNSG32 ualmostFull_ST_25i                          :  1;\
            UNSG32 ualmostFull_ST_26i                          :  1;\
            UNSG32 ualmostFull_ST_27i                          :  1;\
            UNSG32 ualmostFull_ST_28i                          :  1;\
            UNSG32 ualmostFull_ST_29i                          :  1;\
            UNSG32 ualmostFull_ST_30i                          :  1;\
            UNSG32 ualmostFull_ST_31i                          :  1;\
          }
    union { UNSG32 u32SemaHub_almostFull;
            struct w32SemaHub_almostFull;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx398                                    [104];
    ///////////////////////////////////////////////////////////
    } SIE_SemaHub;

    typedef union  T32SemaHub_PUSH
          { UNSG32 u32;
            struct w32SemaHub_PUSH;
                 } T32SemaHub_PUSH;
    typedef union  T32SemaHub_POP
          { UNSG32 u32;
            struct w32SemaHub_POP;
                 } T32SemaHub_POP;
    typedef union  T32SemaHub_empty
          { UNSG32 u32;
            struct w32SemaHub_empty;
                 } T32SemaHub_empty;
    typedef union  T32SemaHub_full
          { UNSG32 u32;
            struct w32SemaHub_full;
                 } T32SemaHub_full;
    typedef union  T32SemaHub_almostEmpty
          { UNSG32 u32;
            struct w32SemaHub_almostEmpty;
                 } T32SemaHub_almostEmpty;
    typedef union  T32SemaHub_almostFull
          { UNSG32 u32;
            struct w32SemaHub_almostFull;
                 } T32SemaHub_almostFull;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaHub_PUSH
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_PUSH;
                   };
                 } TSemaHub_PUSH;
    typedef union  TSemaHub_POP
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_POP;
                   };
                 } TSemaHub_POP;
    typedef union  TSemaHub_empty
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_empty;
                   };
                 } TSemaHub_empty;
    typedef union  TSemaHub_full
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_full;
                   };
                 } TSemaHub_full;
    typedef union  TSemaHub_almostEmpty
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_almostEmpty;
                   };
                 } TSemaHub_almostEmpty;
    typedef union  TSemaHub_almostFull
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_almostFull;
                   };
                 } TSemaHub_almostFull;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaHub_drvrd(SIE_SemaHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaHub_drvwr(SIE_SemaHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaHub_reset(SIE_SemaHub *p);
     SIGN32 SemaHub_cmp  (SIE_SemaHub *p, SIE_SemaHub *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaHub_check(p,pie,pfx,hLOG) SemaHub_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaHub_print(p,    pfx,hLOG) SemaHub_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaHub
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FiFo                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 20 BASE                      
///                                    ###
///                                    * Base address (byte-address) of a FIFO in the shared SRAM. A channel's read/write pointers will be added to this “BASE” to get exact location of shared SRAM.
///                                    * Note: aligned with base SRAM data bus.
///                                    * For example, if SRAM data is 64-bit, then base[2:0] should be 3'b0;
///                                    ###
///               %%        12         # Stuffing bits...
///     @ 0x00004 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to this register will enable this channel, or 0 to this register will disable this channel.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to clear FIFO pointers to 0.
///                                    * Note :
///                                    * CPU should make sure to disabled the channel (write 0 to START_EN register) before issue clear command, otherwise the clear request will be ignored.
///                                    * Do not restart the channel when clear operation is in process.
///                                    * HW will make sure there is no pending transactions before execute the clear operation.
///                                    * Associated semaphore cell needs reset separately by re-write “CFG_DEPTH”
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C FLUSH                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * No support for now
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      23b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FiFo
#define h_FiFo (){}

    #define     RA_FiFo_CFG                                    0x0000

    #define     BA_FiFo_CFG_BASE                               0x0000
    #define     B16FiFo_CFG_BASE                               0x0000
    #define   LSb32FiFo_CFG_BASE                                  0
    #define   LSb16FiFo_CFG_BASE                                  0
    #define       bFiFo_CFG_BASE                               20
    #define   MSK32FiFo_CFG_BASE                                  0x000FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FiFo_START                                  0x0004

    #define     BA_FiFo_START_EN                               0x0004
    #define     B16FiFo_START_EN                               0x0004
    #define   LSb32FiFo_START_EN                                  0
    #define   LSb16FiFo_START_EN                                  0
    #define       bFiFo_START_EN                               1
    #define   MSK32FiFo_START_EN                                  0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FiFo_CLEAR                                  0x0008

    #define     BA_FiFo_CLEAR_EN                               0x0008
    #define     B16FiFo_CLEAR_EN                               0x0008
    #define   LSb32FiFo_CLEAR_EN                                  0
    #define   LSb16FiFo_CLEAR_EN                                  0
    #define       bFiFo_CLEAR_EN                               1
    #define   MSK32FiFo_CLEAR_EN                                  0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FiFo_FLUSH                                  0x000C

    #define     BA_FiFo_FLUSH_EN                               0x000C
    #define     B16FiFo_FLUSH_EN                               0x000C
    #define   LSb32FiFo_FLUSH_EN                                  0
    #define   LSb16FiFo_FLUSH_EN                                  0
    #define       bFiFo_FLUSH_EN                               1
    #define   MSK32FiFo_FLUSH_EN                                  0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FiFo {
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_CFG_BASE(r32)                          _BFGET_(r32,19, 0)
    #define   SET32FiFo_CFG_BASE(r32,v)                        _BFSET_(r32,19, 0,v)

    #define     w32FiFo_CFG                                    {\
            UNSG32 uCFG_BASE                                   : 20;\
            UNSG32 RSVDx0_b20                                  : 12;\
          }
    union { UNSG32 u32FiFo_CFG;
            struct w32FiFo_CFG;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_START_EN(r32)                          _BFGET_(r32, 0, 0)
    #define   SET32FiFo_START_EN(r32,v)                        _BFSET_(r32, 0, 0,v)
    #define   GET16FiFo_START_EN(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FiFo_START_EN(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define     w32FiFo_START                                  {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32FiFo_START;
            struct w32FiFo_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_CLEAR_EN(r32)                          _BFGET_(r32, 0, 0)
    #define   SET32FiFo_CLEAR_EN(r32,v)                        _BFSET_(r32, 0, 0,v)
    #define   GET16FiFo_CLEAR_EN(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FiFo_CLEAR_EN(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define     w32FiFo_CLEAR                                  {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32FiFo_CLEAR;
            struct w32FiFo_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_FLUSH_EN(r32)                          _BFGET_(r32, 0, 0)
    #define   SET32FiFo_FLUSH_EN(r32,v)                        _BFSET_(r32, 0, 0,v)
    #define   GET16FiFo_FLUSH_EN(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FiFo_FLUSH_EN(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define     w32FiFo_FLUSH                                  {\
            UNSG32 uFLUSH_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32FiFo_FLUSH;
            struct w32FiFo_FLUSH;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FiFo;

    typedef union  T32FiFo_CFG
          { UNSG32 u32;
            struct w32FiFo_CFG;
                 } T32FiFo_CFG;
    typedef union  T32FiFo_START
          { UNSG32 u32;
            struct w32FiFo_START;
                 } T32FiFo_START;
    typedef union  T32FiFo_CLEAR
          { UNSG32 u32;
            struct w32FiFo_CLEAR;
                 } T32FiFo_CLEAR;
    typedef union  T32FiFo_FLUSH
          { UNSG32 u32;
            struct w32FiFo_FLUSH;
                 } T32FiFo_FLUSH;
    ///////////////////////////////////////////////////////////

    typedef union  TFiFo_CFG
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_CFG;
                   };
                 } TFiFo_CFG;
    typedef union  TFiFo_START
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_START;
                   };
                 } TFiFo_START;
    typedef union  TFiFo_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_CLEAR;
                   };
                 } TFiFo_CLEAR;
    typedef union  TFiFo_FLUSH
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_FLUSH;
                   };
                 } TFiFo_FLUSH;

    ///////////////////////////////////////////////////////////
     SIGN32 FiFo_drvrd(SIE_FiFo *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FiFo_drvwr(SIE_FiFo *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FiFo_reset(SIE_FiFo *p);
     SIGN32 FiFo_cmp  (SIE_FiFo *p, SIE_FiFo *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FiFo_check(p,pie,pfx,hLOG) FiFo_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FiFo_print(p,    pfx,hLOG) FiFo_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FiFo
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HBO                     biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 FiFoCtl              
///               $SemaHub             FiFoCtl           REG          
///     @ 0x00400 ARR                  (P)
///     # 0x00400 FiFo                 
///               $FiFo                FiFo              REG      [32]
///                                    ###
///                                    * Up-to 32 FIFO channels
///                                    * FiFo[N] is controlled by HBO.FiFoCtl.Channel[N]
///                                    ###
///     @ 0x00600 BUSY                 (R-)
///               %unsigned 32 ST                        
///                                    ###
///                                    * Per channel status
///                                    * Indicate the clear operation status.
///                                    * 1: clear is in process.
///                                    * 0 : clear is done.
///                                    ###
///     @ 0x00604                      (W-)
///     #         # Stuffing bytes...
///               %% 2016
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1792B, bits:    1920b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HBO
#define h_HBO (){}

    #define     RA_HBO_FiFoCtl                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HBO_ARR                                     0x0400
    #define     RA_HBO_FiFo                                    0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_HBO_BUSY                                    0x0600

    #define     BA_HBO_BUSY_ST                                 0x0600
    #define     B16HBO_BUSY_ST                                 0x0600
    #define   LSb32HBO_BUSY_ST                                    0
    #define   LSb16HBO_BUSY_ST                                    0
    #define       bHBO_BUSY_ST                                 32
    #define   MSK32HBO_BUSY_ST                                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HBO {
    ///////////////////////////////////////////////////////////
              SIE_SemaHub                                      ie_FiFoCtl;
    ///////////////////////////////////////////////////////////
              SIE_FiFo                                         ie_FiFo[32];
    ///////////////////////////////////////////////////////////
    #define   GET32HBO_BUSY_ST(r32)                            _BFGET_(r32,31, 0)
    #define   SET32HBO_BUSY_ST(r32,v)                          _BFSET_(r32,31, 0,v)

    #define     w32HBO_BUSY                                    {\
            UNSG32 uBUSY_ST                                    : 32;\
          }
    union { UNSG32 u32HBO_BUSY;
            struct w32HBO_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx604                                    [252];
    ///////////////////////////////////////////////////////////
    } SIE_HBO;

    typedef union  T32HBO_BUSY
          { UNSG32 u32;
            struct w32HBO_BUSY;
                 } T32HBO_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  THBO_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32HBO_BUSY;
                   };
                 } THBO_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 HBO_drvrd(SIE_HBO *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HBO_drvwr(SIE_HBO *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HBO_reset(SIE_HBO *p);
     SIGN32 HBO_cmp  (SIE_HBO *p, SIE_HBO *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HBO_check(p,pie,pfx,hLOG) HBO_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HBO_print(p,    pfx,hLOG) HBO_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HBO
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LLDesFmt                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 mem                  (P)
///               %unsigned 16 size                      
///                                    ###
///                                    * The size of one piece of scattered memory.
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_LLDesFmt
#define h_LLDesFmt (){}

    #define     RA_LLDesFmt_mem                                0x0000

    #define     BA_LLDesFmt_mem_size                           0x0000
    #define     B16LLDesFmt_mem_size                           0x0000
    #define   LSb32LLDesFmt_mem_size                              0
    #define   LSb16LLDesFmt_mem_size                              0
    #define       bLLDesFmt_mem_size                           16
    #define   MSK32LLDesFmt_mem_size                              0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LLDesFmt {
    ///////////////////////////////////////////////////////////
    #define   GET32LLDesFmt_mem_size(r32)                      _BFGET_(r32,15, 0)
    #define   SET32LLDesFmt_mem_size(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16LLDesFmt_mem_size(r16)                      _BFGET_(r16,15, 0)
    #define   SET16LLDesFmt_mem_size(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32LLDesFmt_mem                                {\
            UNSG32 umem_size                                   : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32LLDesFmt_mem;
            struct w32LLDesFmt_mem;
          };
    ///////////////////////////////////////////////////////////
    } SIE_LLDesFmt;

    typedef union  T32LLDesFmt_mem
          { UNSG32 u32;
            struct w32LLDesFmt_mem;
                 } T32LLDesFmt_mem;
    ///////////////////////////////////////////////////////////

    typedef union  TLLDesFmt_mem
          { UNSG32 u32[1];
            struct {
            struct w32LLDesFmt_mem;
                   };
                 } TLLDesFmt_mem;

    ///////////////////////////////////////////////////////////
     SIGN32 LLDesFmt_drvrd(SIE_LLDesFmt *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LLDesFmt_drvwr(SIE_LLDesFmt *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LLDesFmt_reset(SIE_LLDesFmt *p);
     SIGN32 LLDesFmt_cmp  (SIE_LLDesFmt *p, SIE_LLDesFmt *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LLDesFmt_check(p,pie,pfx,hLOG) LLDesFmt_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LLDesFmt_print(p,    pfx,hLOG) LLDesFmt_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LLDesFmt
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmdHDR                               (4,4)
///     ###
///     * 32-bit dHub command header
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 DESC                 (W-)
///               %unsigned 16 size                      
///                                    ###
///                                    * amount of data to be transferred, in bytes or MTU.
///                                    * Size of 0 is forbidden.
///                                    ###
///               %unsigned 1  sizeMTU                   
///                                    ###
///                                    * 0: size given in bytes;
///                                    * 1: size given in MTU (see dHubChCtl.CFG.MTU for MTU size definition)
///                                    ###
///               %unsigned 1  semOpMTU                  
///                                    ###
///                                    * 0: semaphore operations applied on dHubCmd level
///                                    * 1: semaphore operations applied on MTU level
///                                    ###
///               %unsigned 5  chkSemId                  
///                                    ###
///                                    * ID of semaphore to check before cmd / MTU;
///                                    * 0 indicates semaphore check is disabled
///                                    ###
///               %unsigned 5  updSemId                  
///                                    ###
///                                    * ID of semaphore to update after cmd / MTU;
///                                    * 0 indicates semaphore update is disabled
///                                    ###
///               %unsigned 1  interrupt                 
///                                    ###
///                                    * 1: raise interrupt upon command finish
///                                    * end dHubCmdHDR
///                                    ###
///               %%        3          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      29b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmdHDR
#define h_dHubCmdHDR (){}

    #define     RA_dHubCmdHDR_DESC                             0x0000

    #define     BA_dHubCmdHDR_DESC_size                        0x0000
    #define     B16dHubCmdHDR_DESC_size                        0x0000
    #define   LSb32dHubCmdHDR_DESC_size                           0
    #define   LSb16dHubCmdHDR_DESC_size                           0
    #define       bdHubCmdHDR_DESC_size                        16
    #define   MSK32dHubCmdHDR_DESC_size                           0x0000FFFF

    #define     BA_dHubCmdHDR_DESC_sizeMTU                     0x0002
    #define     B16dHubCmdHDR_DESC_sizeMTU                     0x0002
    #define   LSb32dHubCmdHDR_DESC_sizeMTU                        16
    #define   LSb16dHubCmdHDR_DESC_sizeMTU                        0
    #define       bdHubCmdHDR_DESC_sizeMTU                     1
    #define   MSK32dHubCmdHDR_DESC_sizeMTU                        0x00010000

    #define     BA_dHubCmdHDR_DESC_semOpMTU                    0x0002
    #define     B16dHubCmdHDR_DESC_semOpMTU                    0x0002
    #define   LSb32dHubCmdHDR_DESC_semOpMTU                       17
    #define   LSb16dHubCmdHDR_DESC_semOpMTU                       1
    #define       bdHubCmdHDR_DESC_semOpMTU                    1
    #define   MSK32dHubCmdHDR_DESC_semOpMTU                       0x00020000

    #define     BA_dHubCmdHDR_DESC_chkSemId                    0x0002
    #define     B16dHubCmdHDR_DESC_chkSemId                    0x0002
    #define   LSb32dHubCmdHDR_DESC_chkSemId                       18
    #define   LSb16dHubCmdHDR_DESC_chkSemId                       2
    #define       bdHubCmdHDR_DESC_chkSemId                    5
    #define   MSK32dHubCmdHDR_DESC_chkSemId                       0x007C0000

    #define     BA_dHubCmdHDR_DESC_updSemId                    0x0002
    #define     B16dHubCmdHDR_DESC_updSemId                    0x0002
    #define   LSb32dHubCmdHDR_DESC_updSemId                       23
    #define   LSb16dHubCmdHDR_DESC_updSemId                       7
    #define       bdHubCmdHDR_DESC_updSemId                    5
    #define   MSK32dHubCmdHDR_DESC_updSemId                       0x0F800000

    #define     BA_dHubCmdHDR_DESC_interrupt                   0x0003
    #define     B16dHubCmdHDR_DESC_interrupt                   0x0002
    #define   LSb32dHubCmdHDR_DESC_interrupt                      28
    #define   LSb16dHubCmdHDR_DESC_interrupt                      12
    #define       bdHubCmdHDR_DESC_interrupt                   1
    #define   MSK32dHubCmdHDR_DESC_interrupt                      0x10000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmdHDR {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmdHDR_DESC_size(r32)                   _BFGET_(r32,15, 0)
    #define   SET32dHubCmdHDR_DESC_size(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmdHDR_DESC_size(r16)                   _BFGET_(r16,15, 0)
    #define   SET16dHubCmdHDR_DESC_size(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmdHDR_DESC_sizeMTU(r32)                _BFGET_(r32,16,16)
    #define   SET32dHubCmdHDR_DESC_sizeMTU(r32,v)              _BFSET_(r32,16,16,v)
    #define   GET16dHubCmdHDR_DESC_sizeMTU(r16)                _BFGET_(r16, 0, 0)
    #define   SET16dHubCmdHDR_DESC_sizeMTU(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32dHubCmdHDR_DESC_semOpMTU(r32)               _BFGET_(r32,17,17)
    #define   SET32dHubCmdHDR_DESC_semOpMTU(r32,v)             _BFSET_(r32,17,17,v)
    #define   GET16dHubCmdHDR_DESC_semOpMTU(r16)               _BFGET_(r16, 1, 1)
    #define   SET16dHubCmdHDR_DESC_semOpMTU(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32dHubCmdHDR_DESC_chkSemId(r32)               _BFGET_(r32,22,18)
    #define   SET32dHubCmdHDR_DESC_chkSemId(r32,v)             _BFSET_(r32,22,18,v)
    #define   GET16dHubCmdHDR_DESC_chkSemId(r16)               _BFGET_(r16, 6, 2)
    #define   SET16dHubCmdHDR_DESC_chkSemId(r16,v)             _BFSET_(r16, 6, 2,v)

    #define   GET32dHubCmdHDR_DESC_updSemId(r32)               _BFGET_(r32,27,23)
    #define   SET32dHubCmdHDR_DESC_updSemId(r32,v)             _BFSET_(r32,27,23,v)
    #define   GET16dHubCmdHDR_DESC_updSemId(r16)               _BFGET_(r16,11, 7)
    #define   SET16dHubCmdHDR_DESC_updSemId(r16,v)             _BFSET_(r16,11, 7,v)

    #define   GET32dHubCmdHDR_DESC_interrupt(r32)              _BFGET_(r32,28,28)
    #define   SET32dHubCmdHDR_DESC_interrupt(r32,v)            _BFSET_(r32,28,28,v)
    #define   GET16dHubCmdHDR_DESC_interrupt(r16)              _BFGET_(r16,12,12)
    #define   SET16dHubCmdHDR_DESC_interrupt(r16,v)            _BFSET_(r16,12,12,v)

    #define     w32dHubCmdHDR_DESC                             {\
            UNSG32 uDESC_size                                  : 16;\
            UNSG32 uDESC_sizeMTU                               :  1;\
            UNSG32 uDESC_semOpMTU                              :  1;\
            UNSG32 uDESC_chkSemId                              :  5;\
            UNSG32 uDESC_updSemId                              :  5;\
            UNSG32 uDESC_interrupt                             :  1;\
            UNSG32 RSVDx0_b29                                  :  3;\
          }
    union { UNSG32 u32dHubCmdHDR_DESC;
            struct w32dHubCmdHDR_DESC;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmdHDR;

    typedef union  T32dHubCmdHDR_DESC
          { UNSG32 u32;
            struct w32dHubCmdHDR_DESC;
                 } T32dHubCmdHDR_DESC;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmdHDR_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmdHDR_DESC;
                   };
                 } TdHubCmdHDR_DESC;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmdHDR_drvrd(SIE_dHubCmdHDR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmdHDR_drvwr(SIE_dHubCmdHDR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmdHDR_reset(SIE_dHubCmdHDR *p);
     SIGN32 dHubCmdHDR_cmp  (SIE_dHubCmdHDR *p, SIE_dHubCmdHDR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmdHDR_check(p,pie,pfx,hLOG) dHubCmdHDR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmdHDR_print(p,    pfx,hLOG) dHubCmdHDR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmdHDR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmd                 biu              (4,4)
///     ###
///     * 64-bit dHub command issued by read/write masters
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 MEM                  (W-)
///               %unsigned 32 addr                      
///                                    ###
///                                    * DRAM data address, in bytes; not necessarily MTU aligned.
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 HDR                  
///               $dHubCmdHDR          HDR               REG          
///                                    ###
///                                    * end dHubCmd
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      61b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmd
#define h_dHubCmd (){}

    #define     RA_dHubCmd_MEM                                 0x0000

    #define     BA_dHubCmd_MEM_addr                            0x0000
    #define     B16dHubCmd_MEM_addr                            0x0000
    #define   LSb32dHubCmd_MEM_addr                               0
    #define   LSb16dHubCmd_MEM_addr                               0
    #define       bdHubCmd_MEM_addr                            32
    #define   MSK32dHubCmd_MEM_addr                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd_HDR                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd_MEM_addr(r32)                       _BFGET_(r32,31, 0)
    #define   SET32dHubCmd_MEM_addr(r32,v)                     _BFSET_(r32,31, 0,v)

    #define     w32dHubCmd_MEM                                 {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmd_MEM;
            struct w32dHubCmd_MEM;
          };
    ///////////////////////////////////////////////////////////
              SIE_dHubCmdHDR                                   ie_HDR;
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmd;

    typedef union  T32dHubCmd_MEM
          { UNSG32 u32;
            struct w32dHubCmd_MEM;
                 } T32dHubCmd_MEM;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmd_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd_MEM;
                   };
                 } TdHubCmd_MEM;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd_drvrd(SIE_dHubCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd_drvwr(SIE_dHubCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd_reset(SIE_dHubCmd *p);
     SIGN32 dHubCmd_cmp  (SIE_dHubCmd *p, SIE_dHubCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd_check(p,pie,pfx,hLOG) dHubCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd_print(p,    pfx,hLOG) dHubCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubChannel             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 2  MTU                       
///                                    : 8byte                     0x0
///                                    : 32byte                    0x1
///                                    : 128byte                   0x2
///                                    : 1024byte                  0x3
///                                                 ###
///                                                 * Minimum transfer unit of the channel
///                                                 ###
///               %unsigned 1  QoS                       
///                                    ###
///                                    * Write 1 to turn on QoS detection
///                                    ###
///               %unsigned 1  selfLoop                  
///                                    ###
///                                    * Write 1 to enable cmd looping support; 0 to turn off
///                                    ###
///               %unsigned 1  intrCtl                   0x0
///                                    : cmdDone                   0x0
///                                    : chIdle                    0x1
///                                                 ###
///                                                 * 0 : default vlaue, the interrupt is triggered by the finish of the dHub command if the interrupt bit is defined in the dHub command.
///                                                 * 1 : The interrupt is triggered if the dHub channel is idle ( no busy and no pending and the corresponding dHub command Q is empty).
///                                                 ###
///               %unsigned 1  hScan                     0x0
///                                    : rastScan                  0x0
///                                    : invScan                   0x1
///                                                 ###
///                                                 * This parameter will only apply to read channels.
///                                                 * It will affect 1D dHub command for the channel.
///                                                 * When scan is set to 1 (invScan), the data (beat) inside the dHub command will be fetched in the inverse order. ie. The data from the last address will come first and the data (beat) from the first address will come lastly.
///                                                 ###
///               %unsigned 1  vScan                     0x0
///                                    : rastScan                  0x0
///                                    : invScan                   0x1
///                                                 ###
///                                                 * This parameter will only apply to read channels.
///                                                 * It will affect 2D channels.
///                                                 * When scan is set to 1 (invScan),
///                                                 * The last address line (1D command) will be fetched first, and the first address line will be fetched lastly.
///                                                 ###
///               %%        25         # Stuffing bits...
///     @ 0x00004 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to enable the channel; 0 to pause the channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the channel controller state
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C FLUSH                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to start the data flushing process. Invalid for read (M2H) channels
///                                    * end dHubChannel
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      10b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubChannel
#define h_dHubChannel (){}

    #define     RA_dHubChannel_CFG                             0x0000

    #define     BA_dHubChannel_CFG_MTU                         0x0000
    #define     B16dHubChannel_CFG_MTU                         0x0000
    #define   LSb32dHubChannel_CFG_MTU                            0
    #define   LSb16dHubChannel_CFG_MTU                            0
    #define       bdHubChannel_CFG_MTU                         2
    #define   MSK32dHubChannel_CFG_MTU                            0x00000003
    #define        dHubChannel_CFG_MTU_8byte                                0x0
    #define        dHubChannel_CFG_MTU_32byte                               0x1
    #define        dHubChannel_CFG_MTU_128byte                              0x2
    #define        dHubChannel_CFG_MTU_1024byte                             0x3

    #define     BA_dHubChannel_CFG_QoS                         0x0000
    #define     B16dHubChannel_CFG_QoS                         0x0000
    #define   LSb32dHubChannel_CFG_QoS                            2
    #define   LSb16dHubChannel_CFG_QoS                            2
    #define       bdHubChannel_CFG_QoS                         1
    #define   MSK32dHubChannel_CFG_QoS                            0x00000004

    #define     BA_dHubChannel_CFG_selfLoop                    0x0000
    #define     B16dHubChannel_CFG_selfLoop                    0x0000
    #define   LSb32dHubChannel_CFG_selfLoop                       3
    #define   LSb16dHubChannel_CFG_selfLoop                       3
    #define       bdHubChannel_CFG_selfLoop                    1
    #define   MSK32dHubChannel_CFG_selfLoop                       0x00000008

    #define     BA_dHubChannel_CFG_intrCtl                     0x0000
    #define     B16dHubChannel_CFG_intrCtl                     0x0000
    #define   LSb32dHubChannel_CFG_intrCtl                        4
    #define   LSb16dHubChannel_CFG_intrCtl                        4
    #define       bdHubChannel_CFG_intrCtl                     1
    #define   MSK32dHubChannel_CFG_intrCtl                        0x00000010
    #define        dHubChannel_CFG_intrCtl_cmdDone                          0x0
    #define        dHubChannel_CFG_intrCtl_chIdle                           0x1

    #define     BA_dHubChannel_CFG_hScan                       0x0000
    #define     B16dHubChannel_CFG_hScan                       0x0000
    #define   LSb32dHubChannel_CFG_hScan                          5
    #define   LSb16dHubChannel_CFG_hScan                          5
    #define       bdHubChannel_CFG_hScan                       1
    #define   MSK32dHubChannel_CFG_hScan                          0x00000020
    #define        dHubChannel_CFG_hScan_rastScan                           0x0
    #define        dHubChannel_CFG_hScan_invScan                            0x1

    #define     BA_dHubChannel_CFG_vScan                       0x0000
    #define     B16dHubChannel_CFG_vScan                       0x0000
    #define   LSb32dHubChannel_CFG_vScan                          6
    #define   LSb16dHubChannel_CFG_vScan                          6
    #define       bdHubChannel_CFG_vScan                       1
    #define   MSK32dHubChannel_CFG_vScan                          0x00000040
    #define        dHubChannel_CFG_vScan_rastScan                           0x0
    #define        dHubChannel_CFG_vScan_invScan                            0x1
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannel_START                           0x0004

    #define     BA_dHubChannel_START_EN                        0x0004
    #define     B16dHubChannel_START_EN                        0x0004
    #define   LSb32dHubChannel_START_EN                           0
    #define   LSb16dHubChannel_START_EN                           0
    #define       bdHubChannel_START_EN                        1
    #define   MSK32dHubChannel_START_EN                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannel_CLEAR                           0x0008

    #define     BA_dHubChannel_CLEAR_EN                        0x0008
    #define     B16dHubChannel_CLEAR_EN                        0x0008
    #define   LSb32dHubChannel_CLEAR_EN                           0
    #define   LSb16dHubChannel_CLEAR_EN                           0
    #define       bdHubChannel_CLEAR_EN                        1
    #define   MSK32dHubChannel_CLEAR_EN                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannel_FLUSH                           0x000C

    #define     BA_dHubChannel_FLUSH_EN                        0x000C
    #define     B16dHubChannel_FLUSH_EN                        0x000C
    #define   LSb32dHubChannel_FLUSH_EN                           0
    #define   LSb16dHubChannel_FLUSH_EN                           0
    #define       bdHubChannel_FLUSH_EN                        1
    #define   MSK32dHubChannel_FLUSH_EN                           0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubChannel {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_CFG_MTU(r32)                    _BFGET_(r32, 1, 0)
    #define   SET32dHubChannel_CFG_MTU(r32,v)                  _BFSET_(r32, 1, 0,v)
    #define   GET16dHubChannel_CFG_MTU(r16)                    _BFGET_(r16, 1, 0)
    #define   SET16dHubChannel_CFG_MTU(r16,v)                  _BFSET_(r16, 1, 0,v)

    #define   GET32dHubChannel_CFG_QoS(r32)                    _BFGET_(r32, 2, 2)
    #define   SET32dHubChannel_CFG_QoS(r32,v)                  _BFSET_(r32, 2, 2,v)
    #define   GET16dHubChannel_CFG_QoS(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16dHubChannel_CFG_QoS(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32dHubChannel_CFG_selfLoop(r32)               _BFGET_(r32, 3, 3)
    #define   SET32dHubChannel_CFG_selfLoop(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16dHubChannel_CFG_selfLoop(r16)               _BFGET_(r16, 3, 3)
    #define   SET16dHubChannel_CFG_selfLoop(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32dHubChannel_CFG_intrCtl(r32)                _BFGET_(r32, 4, 4)
    #define   SET32dHubChannel_CFG_intrCtl(r32,v)              _BFSET_(r32, 4, 4,v)
    #define   GET16dHubChannel_CFG_intrCtl(r16)                _BFGET_(r16, 4, 4)
    #define   SET16dHubChannel_CFG_intrCtl(r16,v)              _BFSET_(r16, 4, 4,v)

    #define   GET32dHubChannel_CFG_hScan(r32)                  _BFGET_(r32, 5, 5)
    #define   SET32dHubChannel_CFG_hScan(r32,v)                _BFSET_(r32, 5, 5,v)
    #define   GET16dHubChannel_CFG_hScan(r16)                  _BFGET_(r16, 5, 5)
    #define   SET16dHubChannel_CFG_hScan(r16,v)                _BFSET_(r16, 5, 5,v)

    #define   GET32dHubChannel_CFG_vScan(r32)                  _BFGET_(r32, 6, 6)
    #define   SET32dHubChannel_CFG_vScan(r32,v)                _BFSET_(r32, 6, 6,v)
    #define   GET16dHubChannel_CFG_vScan(r16)                  _BFGET_(r16, 6, 6)
    #define   SET16dHubChannel_CFG_vScan(r16,v)                _BFSET_(r16, 6, 6,v)

    #define     w32dHubChannel_CFG                             {\
            UNSG32 uCFG_MTU                                    :  2;\
            UNSG32 uCFG_QoS                                    :  1;\
            UNSG32 uCFG_selfLoop                               :  1;\
            UNSG32 uCFG_intrCtl                                :  1;\
            UNSG32 uCFG_hScan                                  :  1;\
            UNSG32 uCFG_vScan                                  :  1;\
            UNSG32 RSVDx0_b7                                   : 25;\
          }
    union { UNSG32 u32dHubChannel_CFG;
            struct w32dHubChannel_CFG;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_START_EN(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubChannel_START_EN(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannel_START_EN(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubChannel_START_EN(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannel_START                           {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannel_START;
            struct w32dHubChannel_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_CLEAR_EN(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubChannel_CLEAR_EN(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannel_CLEAR_EN(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubChannel_CLEAR_EN(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannel_CLEAR                           {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannel_CLEAR;
            struct w32dHubChannel_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_FLUSH_EN(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubChannel_FLUSH_EN(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannel_FLUSH_EN(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubChannel_FLUSH_EN(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannel_FLUSH                           {\
            UNSG32 uFLUSH_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannel_FLUSH;
            struct w32dHubChannel_FLUSH;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubChannel;

    typedef union  T32dHubChannel_CFG
          { UNSG32 u32;
            struct w32dHubChannel_CFG;
                 } T32dHubChannel_CFG;
    typedef union  T32dHubChannel_START
          { UNSG32 u32;
            struct w32dHubChannel_START;
                 } T32dHubChannel_START;
    typedef union  T32dHubChannel_CLEAR
          { UNSG32 u32;
            struct w32dHubChannel_CLEAR;
                 } T32dHubChannel_CLEAR;
    typedef union  T32dHubChannel_FLUSH
          { UNSG32 u32;
            struct w32dHubChannel_FLUSH;
                 } T32dHubChannel_FLUSH;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubChannel_CFG
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_CFG;
                   };
                 } TdHubChannel_CFG;
    typedef union  TdHubChannel_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_START;
                   };
                 } TdHubChannel_START;
    typedef union  TdHubChannel_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_CLEAR;
                   };
                 } TdHubChannel_CLEAR;
    typedef union  TdHubChannel_FLUSH
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_FLUSH;
                   };
                 } TdHubChannel_FLUSH;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubChannel_drvrd(SIE_dHubChannel *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubChannel_drvwr(SIE_dHubChannel *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubChannel_reset(SIE_dHubChannel *p);
     SIGN32 dHubChannel_cmp  (SIE_dHubChannel *p, SIE_dHubChannel *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubChannel_check(p,pie,pfx,hLOG) dHubChannel_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubChannel_print(p,    pfx,hLOG) dHubChannel_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubChannel
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubReg                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 SemaHub              
///               $SemaHub             SemaHub           REG          
///                                    ###
///                                    * For dHub internal interrupts, also provide semaphore service for external (all channels will be opened to external to access).
///                                    * Channel 0 is used for dHub.HBO interrupt.
///                                    * Channel N+1 is used for dHub.Channel[N] interrupt.
///                                    ###
///     @ 0x00400                      (P)
///     # 0x00400 HBO                  
///               $HBO                 HBO               REG          
///                                    ###
///                                    * For dHub channels (command/data queues), also provide (unused) FIFO service for external.
///                                    * Channel 2N is used for dHub.Channel[N] command.
///                                    * Channel 2N+1 is used for dHub.Channel[N] data.
///                                    ###
///     @ 0x00B00 ARR                  (P)
///     # 0x00B00 channelCtl           
///               $dHubChannel         channelCtl        REG      [16]
///                                    ###
///                                    * Up-to 16 channels
///                                    ###
///     @ 0x00C00 BUSY                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: no ongoing command is being processed, and no flushing is taking place
///                                    * 1: channel controller is busy
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00C04 PENDING              (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: Response queue is empty, meaning no outstanding AXI transactions
///                                    * 1: there exist some outstanding AXI transactions
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00C08 busRstEn             (RW-)
///               %unsigned 1  reg                       0x0
///                                    ###
///                                    * Write one to this register will trigger gate-keeper to take over the AXI bus.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00C0C busRstDone           (R-)
///               %unsigned 1  reg                       0x1
///                                    ###
///                                    * After gate-keeper take over the AXI bus, it will assert this bit once there is no outstanding transactions on AXI bus.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00C10 flowCtl              (P)
///               %unsigned 8  rAlpha                    0x0
///               %unsigned 8  wAlpha                    0x0
///                                    ###
///                                    * Flow control parameter for read and write axi master.
///                                    * clkCnt=(alpha*bstLen)>>4.
///                                    * This # of clock cycles will be blocked for the axi master after an axi command with the burst length of “bstLen”.
///                                    * When set alpha to be 0, the master will never be blocked.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00C14 axiCmdCol            (P)
///               %unsigned 16 rCnt                      0x0
///               %unsigned 16 wCnt                      0x0
///                                    ###
///                                    * Axi command collection. The counter value indicate read/write do the command collection for # of clock cycles, start from the first command pushed to an empty command Q. Here are the conditions that will trigger the Axi master to send out command.
///                                    * Cmd Q full or the counter count down to “0” from the programmed value.
///                                    * Set the counter to 0 will disable the command collection.
///                                    * end dHubReg
///                                    ###
///     @ 0x00C18                      (W-)
///     #         # Stuffing bytes...
///               %% 1856
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    3328B, bits:    3314b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubReg
#define h_dHubReg (){}

    #define     RA_dHubReg_SemaHub                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_HBO                                 0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_ARR                                 0x0B00
    #define     RA_dHubReg_channelCtl                          0x0B00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_BUSY                                0x0C00

    #define     BA_dHubReg_BUSY_ST                             0x0C00
    #define     B16dHubReg_BUSY_ST                             0x0C00
    #define   LSb32dHubReg_BUSY_ST                                0
    #define   LSb16dHubReg_BUSY_ST                                0
    #define       bdHubReg_BUSY_ST                             16
    #define   MSK32dHubReg_BUSY_ST                                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_PENDING                             0x0C04

    #define     BA_dHubReg_PENDING_ST                          0x0C04
    #define     B16dHubReg_PENDING_ST                          0x0C04
    #define   LSb32dHubReg_PENDING_ST                             0
    #define   LSb16dHubReg_PENDING_ST                             0
    #define       bdHubReg_PENDING_ST                          16
    #define   MSK32dHubReg_PENDING_ST                             0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_busRstEn                            0x0C08

    #define     BA_dHubReg_busRstEn_reg                        0x0C08
    #define     B16dHubReg_busRstEn_reg                        0x0C08
    #define   LSb32dHubReg_busRstEn_reg                           0
    #define   LSb16dHubReg_busRstEn_reg                           0
    #define       bdHubReg_busRstEn_reg                        1
    #define   MSK32dHubReg_busRstEn_reg                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_busRstDone                          0x0C0C

    #define     BA_dHubReg_busRstDone_reg                      0x0C0C
    #define     B16dHubReg_busRstDone_reg                      0x0C0C
    #define   LSb32dHubReg_busRstDone_reg                         0
    #define   LSb16dHubReg_busRstDone_reg                         0
    #define       bdHubReg_busRstDone_reg                      1
    #define   MSK32dHubReg_busRstDone_reg                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_flowCtl                             0x0C10

    #define     BA_dHubReg_flowCtl_rAlpha                      0x0C10
    #define     B16dHubReg_flowCtl_rAlpha                      0x0C10
    #define   LSb32dHubReg_flowCtl_rAlpha                         0
    #define   LSb16dHubReg_flowCtl_rAlpha                         0
    #define       bdHubReg_flowCtl_rAlpha                      8
    #define   MSK32dHubReg_flowCtl_rAlpha                         0x000000FF

    #define     BA_dHubReg_flowCtl_wAlpha                      0x0C11
    #define     B16dHubReg_flowCtl_wAlpha                      0x0C10
    #define   LSb32dHubReg_flowCtl_wAlpha                         8
    #define   LSb16dHubReg_flowCtl_wAlpha                         8
    #define       bdHubReg_flowCtl_wAlpha                      8
    #define   MSK32dHubReg_flowCtl_wAlpha                         0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_axiCmdCol                           0x0C14

    #define     BA_dHubReg_axiCmdCol_rCnt                      0x0C14
    #define     B16dHubReg_axiCmdCol_rCnt                      0x0C14
    #define   LSb32dHubReg_axiCmdCol_rCnt                         0
    #define   LSb16dHubReg_axiCmdCol_rCnt                         0
    #define       bdHubReg_axiCmdCol_rCnt                      16
    #define   MSK32dHubReg_axiCmdCol_rCnt                         0x0000FFFF

    #define     BA_dHubReg_axiCmdCol_wCnt                      0x0C16
    #define     B16dHubReg_axiCmdCol_wCnt                      0x0C16
    #define   LSb32dHubReg_axiCmdCol_wCnt                         16
    #define   LSb16dHubReg_axiCmdCol_wCnt                         0
    #define       bdHubReg_axiCmdCol_wCnt                      16
    #define   MSK32dHubReg_axiCmdCol_wCnt                         0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubReg {
    ///////////////////////////////////////////////////////////
              SIE_SemaHub                                      ie_SemaHub;
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_HBO;
    ///////////////////////////////////////////////////////////
              SIE_dHubChannel                                  ie_channelCtl[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_BUSY_ST(r32)                        _BFGET_(r32,15, 0)
    #define   SET32dHubReg_BUSY_ST(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg_BUSY_ST(r16)                        _BFGET_(r16,15, 0)
    #define   SET16dHubReg_BUSY_ST(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32dHubReg_BUSY                                {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDxC00_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg_BUSY;
            struct w32dHubReg_BUSY;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_PENDING_ST(r32)                     _BFGET_(r32,15, 0)
    #define   SET32dHubReg_PENDING_ST(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg_PENDING_ST(r16)                     _BFGET_(r16,15, 0)
    #define   SET16dHubReg_PENDING_ST(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32dHubReg_PENDING                             {\
            UNSG32 uPENDING_ST                                 : 16;\
            UNSG32 RSVDxC04_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg_PENDING;
            struct w32dHubReg_PENDING;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_busRstEn_reg(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubReg_busRstEn_reg(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubReg_busRstEn_reg(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubReg_busRstEn_reg(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubReg_busRstEn                            {\
            UNSG32 ubusRstEn_reg                               :  1;\
            UNSG32 RSVDxC08_b1                                 : 31;\
          }
    union { UNSG32 u32dHubReg_busRstEn;
            struct w32dHubReg_busRstEn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_busRstDone_reg(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32dHubReg_busRstDone_reg(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16dHubReg_busRstDone_reg(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16dHubReg_busRstDone_reg(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32dHubReg_busRstDone                          {\
            UNSG32 ubusRstDone_reg                             :  1;\
            UNSG32 RSVDxC0C_b1                                 : 31;\
          }
    union { UNSG32 u32dHubReg_busRstDone;
            struct w32dHubReg_busRstDone;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_flowCtl_rAlpha(r32)                 _BFGET_(r32, 7, 0)
    #define   SET32dHubReg_flowCtl_rAlpha(r32,v)               _BFSET_(r32, 7, 0,v)
    #define   GET16dHubReg_flowCtl_rAlpha(r16)                 _BFGET_(r16, 7, 0)
    #define   SET16dHubReg_flowCtl_rAlpha(r16,v)               _BFSET_(r16, 7, 0,v)

    #define   GET32dHubReg_flowCtl_wAlpha(r32)                 _BFGET_(r32,15, 8)
    #define   SET32dHubReg_flowCtl_wAlpha(r32,v)               _BFSET_(r32,15, 8,v)
    #define   GET16dHubReg_flowCtl_wAlpha(r16)                 _BFGET_(r16,15, 8)
    #define   SET16dHubReg_flowCtl_wAlpha(r16,v)               _BFSET_(r16,15, 8,v)

    #define     w32dHubReg_flowCtl                             {\
            UNSG32 uflowCtl_rAlpha                             :  8;\
            UNSG32 uflowCtl_wAlpha                             :  8;\
            UNSG32 RSVDxC10_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg_flowCtl;
            struct w32dHubReg_flowCtl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_axiCmdCol_rCnt(r32)                 _BFGET_(r32,15, 0)
    #define   SET32dHubReg_axiCmdCol_rCnt(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg_axiCmdCol_rCnt(r16)                 _BFGET_(r16,15, 0)
    #define   SET16dHubReg_axiCmdCol_rCnt(r16,v)               _BFSET_(r16,15, 0,v)

    #define   GET32dHubReg_axiCmdCol_wCnt(r32)                 _BFGET_(r32,31,16)
    #define   SET32dHubReg_axiCmdCol_wCnt(r32,v)               _BFSET_(r32,31,16,v)
    #define   GET16dHubReg_axiCmdCol_wCnt(r16)                 _BFGET_(r16,15, 0)
    #define   SET16dHubReg_axiCmdCol_wCnt(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32dHubReg_axiCmdCol                           {\
            UNSG32 uaxiCmdCol_rCnt                             : 16;\
            UNSG32 uaxiCmdCol_wCnt                             : 16;\
          }
    union { UNSG32 u32dHubReg_axiCmdCol;
            struct w32dHubReg_axiCmdCol;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC18                                    [232];
    ///////////////////////////////////////////////////////////
    } SIE_dHubReg;

    typedef union  T32dHubReg_BUSY
          { UNSG32 u32;
            struct w32dHubReg_BUSY;
                 } T32dHubReg_BUSY;
    typedef union  T32dHubReg_PENDING
          { UNSG32 u32;
            struct w32dHubReg_PENDING;
                 } T32dHubReg_PENDING;
    typedef union  T32dHubReg_busRstEn
          { UNSG32 u32;
            struct w32dHubReg_busRstEn;
                 } T32dHubReg_busRstEn;
    typedef union  T32dHubReg_busRstDone
          { UNSG32 u32;
            struct w32dHubReg_busRstDone;
                 } T32dHubReg_busRstDone;
    typedef union  T32dHubReg_flowCtl
          { UNSG32 u32;
            struct w32dHubReg_flowCtl;
                 } T32dHubReg_flowCtl;
    typedef union  T32dHubReg_axiCmdCol
          { UNSG32 u32;
            struct w32dHubReg_axiCmdCol;
                 } T32dHubReg_axiCmdCol;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubReg_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_BUSY;
                   };
                 } TdHubReg_BUSY;
    typedef union  TdHubReg_PENDING
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_PENDING;
                   };
                 } TdHubReg_PENDING;
    typedef union  TdHubReg_busRstEn
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_busRstEn;
                   };
                 } TdHubReg_busRstEn;
    typedef union  TdHubReg_busRstDone
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_busRstDone;
                   };
                 } TdHubReg_busRstDone;
    typedef union  TdHubReg_flowCtl
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_flowCtl;
                   };
                 } TdHubReg_flowCtl;
    typedef union  TdHubReg_axiCmdCol
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_axiCmdCol;
                   };
                 } TdHubReg_axiCmdCol;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubReg_drvrd(SIE_dHubReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubReg_drvwr(SIE_dHubReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubReg_reset(SIE_dHubReg *p);
     SIGN32 dHubReg_cmp  (SIE_dHubReg *p, SIE_dHubReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubReg_check(p,pie,pfx,hLOG) dHubReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubReg_print(p,    pfx,hLOG) dHubReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmd2D               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 MEM                  (W-)
///               %unsigned 32 addr                      
///                                    ###
///                                    * DRAM data address of the 2D buffer, in bytes.
///                                    ###
///     @ 0x00004 DESC                 (W-)
///               %unsigned 16 stride                    
///                                    ###
///                                    * Line stride size in bytes
///                                    ###
///               %unsigned 13 numLine                   
///                                    ###
///                                    * Number of lines in buffer. Size of 0 is forbidden.
///                                    ###
///               %unsigned 2  hdrLoop                   
///                                    ###
///                                    * Size of line-loop for choosing dHubCmdHDR
///                                    * 0 is treated as 4
///                                    ###
///               %unsigned 1  interrupt                 
///                                    ###
///                                    * 1: raise interrupt upon whole 2D command finish.
///                                    * 1: set the last 1D command interrupt bit.
///                                    * 0 : use the default 1D command interrupt bit.
///                                    ###
///     @ 0x00008 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to enable the channel; 0 to pause the channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the 2D engine.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00010                      (P)
///     # 0x00010 HDR                  
///               $dHubCmdHDR          HDR               REG       [4]
///                                    ###
///                                    * Headers used in generating dHubCmd for each line in looping order, loop size (1,2,3,4) specified by DESC_hdrLoop
///                                    * end dHubCmd2D
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     182b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmd2D
#define h_dHubCmd2D (){}

    #define     RA_dHubCmd2D_MEM                               0x0000

    #define     BA_dHubCmd2D_MEM_addr                          0x0000
    #define     B16dHubCmd2D_MEM_addr                          0x0000
    #define   LSb32dHubCmd2D_MEM_addr                             0
    #define   LSb16dHubCmd2D_MEM_addr                             0
    #define       bdHubCmd2D_MEM_addr                          32
    #define   MSK32dHubCmd2D_MEM_addr                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_DESC                              0x0004

    #define     BA_dHubCmd2D_DESC_stride                       0x0004
    #define     B16dHubCmd2D_DESC_stride                       0x0004
    #define   LSb32dHubCmd2D_DESC_stride                          0
    #define   LSb16dHubCmd2D_DESC_stride                          0
    #define       bdHubCmd2D_DESC_stride                       16
    #define   MSK32dHubCmd2D_DESC_stride                          0x0000FFFF

    #define     BA_dHubCmd2D_DESC_numLine                      0x0006
    #define     B16dHubCmd2D_DESC_numLine                      0x0006
    #define   LSb32dHubCmd2D_DESC_numLine                         16
    #define   LSb16dHubCmd2D_DESC_numLine                         0
    #define       bdHubCmd2D_DESC_numLine                      13
    #define   MSK32dHubCmd2D_DESC_numLine                         0x1FFF0000

    #define     BA_dHubCmd2D_DESC_hdrLoop                      0x0007
    #define     B16dHubCmd2D_DESC_hdrLoop                      0x0006
    #define   LSb32dHubCmd2D_DESC_hdrLoop                         29
    #define   LSb16dHubCmd2D_DESC_hdrLoop                         13
    #define       bdHubCmd2D_DESC_hdrLoop                      2
    #define   MSK32dHubCmd2D_DESC_hdrLoop                         0x60000000

    #define     BA_dHubCmd2D_DESC_interrupt                    0x0007
    #define     B16dHubCmd2D_DESC_interrupt                    0x0006
    #define   LSb32dHubCmd2D_DESC_interrupt                       31
    #define   LSb16dHubCmd2D_DESC_interrupt                       15
    #define       bdHubCmd2D_DESC_interrupt                    1
    #define   MSK32dHubCmd2D_DESC_interrupt                       0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_START                             0x0008

    #define     BA_dHubCmd2D_START_EN                          0x0008
    #define     B16dHubCmd2D_START_EN                          0x0008
    #define   LSb32dHubCmd2D_START_EN                             0
    #define   LSb16dHubCmd2D_START_EN                             0
    #define       bdHubCmd2D_START_EN                          1
    #define   MSK32dHubCmd2D_START_EN                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_CLEAR                             0x000C

    #define     BA_dHubCmd2D_CLEAR_EN                          0x000C
    #define     B16dHubCmd2D_CLEAR_EN                          0x000C
    #define   LSb32dHubCmd2D_CLEAR_EN                             0
    #define   LSb16dHubCmd2D_CLEAR_EN                             0
    #define       bdHubCmd2D_CLEAR_EN                          1
    #define   MSK32dHubCmd2D_CLEAR_EN                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_HDR                               0x0010
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmd2D {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_MEM_addr(r32)                     _BFGET_(r32,31, 0)
    #define   SET32dHubCmd2D_MEM_addr(r32,v)                   _BFSET_(r32,31, 0,v)

    #define     w32dHubCmd2D_MEM                               {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmd2D_MEM;
            struct w32dHubCmd2D_MEM;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_DESC_stride(r32)                  _BFGET_(r32,15, 0)
    #define   SET32dHubCmd2D_DESC_stride(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmd2D_DESC_stride(r16)                  _BFGET_(r16,15, 0)
    #define   SET16dHubCmd2D_DESC_stride(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmd2D_DESC_numLine(r32)                 _BFGET_(r32,28,16)
    #define   SET32dHubCmd2D_DESC_numLine(r32,v)               _BFSET_(r32,28,16,v)
    #define   GET16dHubCmd2D_DESC_numLine(r16)                 _BFGET_(r16,12, 0)
    #define   SET16dHubCmd2D_DESC_numLine(r16,v)               _BFSET_(r16,12, 0,v)

    #define   GET32dHubCmd2D_DESC_hdrLoop(r32)                 _BFGET_(r32,30,29)
    #define   SET32dHubCmd2D_DESC_hdrLoop(r32,v)               _BFSET_(r32,30,29,v)
    #define   GET16dHubCmd2D_DESC_hdrLoop(r16)                 _BFGET_(r16,14,13)
    #define   SET16dHubCmd2D_DESC_hdrLoop(r16,v)               _BFSET_(r16,14,13,v)

    #define   GET32dHubCmd2D_DESC_interrupt(r32)               _BFGET_(r32,31,31)
    #define   SET32dHubCmd2D_DESC_interrupt(r32,v)             _BFSET_(r32,31,31,v)
    #define   GET16dHubCmd2D_DESC_interrupt(r16)               _BFGET_(r16,15,15)
    #define   SET16dHubCmd2D_DESC_interrupt(r16,v)             _BFSET_(r16,15,15,v)

    #define     w32dHubCmd2D_DESC                              {\
            UNSG32 uDESC_stride                                : 16;\
            UNSG32 uDESC_numLine                               : 13;\
            UNSG32 uDESC_hdrLoop                               :  2;\
            UNSG32 uDESC_interrupt                             :  1;\
          }
    union { UNSG32 u32dHubCmd2D_DESC;
            struct w32dHubCmd2D_DESC;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_START_EN(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2D_START_EN(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2D_START_EN(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2D_START_EN(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2D_START                             {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32dHubCmd2D_START;
            struct w32dHubCmd2D_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_CLEAR_EN(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2D_CLEAR_EN(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2D_CLEAR_EN(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2D_CLEAR_EN(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2D_CLEAR                             {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32dHubCmd2D_CLEAR;
            struct w32dHubCmd2D_CLEAR;
          };
    ///////////////////////////////////////////////////////////
              SIE_dHubCmdHDR                                   ie_HDR[4];
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmd2D;

    typedef union  T32dHubCmd2D_MEM
          { UNSG32 u32;
            struct w32dHubCmd2D_MEM;
                 } T32dHubCmd2D_MEM;
    typedef union  T32dHubCmd2D_DESC
          { UNSG32 u32;
            struct w32dHubCmd2D_DESC;
                 } T32dHubCmd2D_DESC;
    typedef union  T32dHubCmd2D_START
          { UNSG32 u32;
            struct w32dHubCmd2D_START;
                 } T32dHubCmd2D_START;
    typedef union  T32dHubCmd2D_CLEAR
          { UNSG32 u32;
            struct w32dHubCmd2D_CLEAR;
                 } T32dHubCmd2D_CLEAR;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmd2D_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_MEM;
                   };
                 } TdHubCmd2D_MEM;
    typedef union  TdHubCmd2D_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_DESC;
                   };
                 } TdHubCmd2D_DESC;
    typedef union  TdHubCmd2D_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_START;
                   };
                 } TdHubCmd2D_START;
    typedef union  TdHubCmd2D_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_CLEAR;
                   };
                 } TdHubCmd2D_CLEAR;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd2D_drvrd(SIE_dHubCmd2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd2D_drvwr(SIE_dHubCmd2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd2D_reset(SIE_dHubCmd2D *p);
     SIGN32 dHubCmd2D_cmp  (SIE_dHubCmd2D *p, SIE_dHubCmd2D *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd2D_check(p,pie,pfx,hLOG) dHubCmd2D_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd2D_print(p,    pfx,hLOG) dHubCmd2D_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd2D
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubQuery                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 RESP                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Dhub channel state machine status.
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubQuery
#define h_dHubQuery (){}

    #define     RA_dHubQuery_RESP                              0x0000

    #define     BA_dHubQuery_RESP_ST                           0x0000
    #define     B16dHubQuery_RESP_ST                           0x0000
    #define   LSb32dHubQuery_RESP_ST                              0
    #define   LSb16dHubQuery_RESP_ST                              0
    #define       bdHubQuery_RESP_ST                           16
    #define   MSK32dHubQuery_RESP_ST                              0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubQuery {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubQuery_RESP_ST(r32)                      _BFGET_(r32,15, 0)
    #define   SET32dHubQuery_RESP_ST(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16dHubQuery_RESP_ST(r16)                      _BFGET_(r16,15, 0)
    #define   SET16dHubQuery_RESP_ST(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32dHubQuery_RESP                              {\
            UNSG32 uRESP_ST                                    : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32dHubQuery_RESP;
            struct w32dHubQuery_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubQuery;

    typedef union  T32dHubQuery_RESP
          { UNSG32 u32;
            struct w32dHubQuery_RESP;
                 } T32dHubQuery_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubQuery_RESP
          { UNSG32 u32[1];
            struct {
            struct w32dHubQuery_RESP;
                   };
                 } TdHubQuery_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubQuery_drvrd(SIE_dHubQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubQuery_drvwr(SIE_dHubQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubQuery_reset(SIE_dHubQuery *p);
     SIGN32 dHubQuery_cmp  (SIE_dHubQuery *p, SIE_dHubQuery *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubQuery_check(p,pie,pfx,hLOG) dHubQuery_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubQuery_print(p,    pfx,hLOG) dHubQuery_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubQuery
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubReg2D               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 dHub                 
///               $dHubReg             dHub              REG          
///     @ 0x00D00 ARR                  (P)
///     # 0x00D00 Cmd2D                
///               $dHubCmd2D           Cmd2D             REG      [16]
///                                    ###
///                                    * Up-to 16 2D channels.
///                                    * 2D Channel[N] is connected to dHub.Channel[N] command queue, that is, dHub.HBO.Channel[2N]
///                                    * Note: Number of 2D channels could be less than dHub channels (rest of are 1D only)
///                                    ###
///     @ 0x00F00 BUSY                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: no ongoing command is being processed
///                                    * 1: channel controller is busy
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00F04                      (W-)
///     #         # Stuffing bytes...
///               %% 480
///     @ 0x00F40                      (P)
///     # 0x00F40 CH_ST                
///               $dHubQuery           CH_ST             MEM      [16]
///                                    ###
///                                    * end dHubReg2D
///                                    ###
///     @ 0x00F80                      (W-)
///     #         # Stuffing bytes...
///               %% 1024
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:    6274b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubReg2D
#define h_dHubReg2D (){}

    #define     RA_dHubReg2D_dHub                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_ARR                               0x0D00
    #define     RA_dHubReg2D_Cmd2D                             0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_BUSY                              0x0F00

    #define     BA_dHubReg2D_BUSY_ST                           0x0F00
    #define     B16dHubReg2D_BUSY_ST                           0x0F00
    #define   LSb32dHubReg2D_BUSY_ST                              0
    #define   LSb16dHubReg2D_BUSY_ST                              0
    #define       bdHubReg2D_BUSY_ST                           16
    #define   MSK32dHubReg2D_BUSY_ST                              0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_CH_ST                             0x0F40
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubReg2D {
    ///////////////////////////////////////////////////////////
              SIE_dHubReg                                      ie_dHub;
    ///////////////////////////////////////////////////////////
              SIE_dHubCmd2D                                    ie_Cmd2D[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg2D_BUSY_ST(r32)                      _BFGET_(r32,15, 0)
    #define   SET32dHubReg2D_BUSY_ST(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg2D_BUSY_ST(r16)                      _BFGET_(r16,15, 0)
    #define   SET16dHubReg2D_BUSY_ST(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32dHubReg2D_BUSY                              {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDxF00_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg2D_BUSY;
            struct w32dHubReg2D_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF04                                    [60];
    ///////////////////////////////////////////////////////////
              SIE_dHubQuery                                    ie_CH_ST[16];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF80                                    [128];
    ///////////////////////////////////////////////////////////
    } SIE_dHubReg2D;

    typedef union  T32dHubReg2D_BUSY
          { UNSG32 u32;
            struct w32dHubReg2D_BUSY;
                 } T32dHubReg2D_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubReg2D_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg2D_BUSY;
                   };
                 } TdHubReg2D_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubReg2D_drvrd(SIE_dHubReg2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubReg2D_drvwr(SIE_dHubReg2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubReg2D_reset(SIE_dHubReg2D *p);
     SIGN32 dHubReg2D_cmp  (SIE_dHubReg2D *p, SIE_dHubReg2D *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubReg2D_check(p,pie,pfx,hLOG) dHubReg2D_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubReg2D_print(p,    pfx,hLOG) dHubReg2D_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubReg2D
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DSmsg                   biu              (4,4)
///     ###
///     * Data Streamer message format
///     * [00:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 13 count                     
///                                    ###
///                                    * number of bytes to transfer, the starting address is byte aligned.
///                                    ###
///               %unsigned 1  NOS                       
///                                    ###
///                                    * No outstanding
///                                    * 1: this command will not be executed until the completion of all the previous command.
///                                    * 0: This command can be executed without checking the previous command completion status.
///                                    ###
///               %unsigned 1  dir                       
///                                    : m2h                       0x0
///                                                 ###
///                                                 * Data transfer from external memory to HBO
///                                                 ###
///                                    : h2m                       0x1
///                                                 ###
///                                                 * Data transfer from HBO to external memory
///                                                 ###
///               %unsigned 1  intr                      
///                                    ###
///                                    * Setting to 1 forces Data Streamer to raise interrupt after command completion
///                                    ###
///               %unsigned 16 hboAdr                    
///                                    ###
///                                    * HBO byte address for data transfer
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 memAdr                    
///                                    ###
///                                    * Memory address equivalent to DDR addr [31:0];
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DSmsg
#define h_DSmsg (){}

    #define     BA_DSmsg_count                                 0x0000
    #define     B16DSmsg_count                                 0x0000
    #define   LSb32DSmsg_count                                    0
    #define   LSb16DSmsg_count                                    0
    #define       bDSmsg_count                                 13
    #define   MSK32DSmsg_count                                    0x00001FFF

    #define     BA_DSmsg_NOS                                   0x0001
    #define     B16DSmsg_NOS                                   0x0000
    #define   LSb32DSmsg_NOS                                      13
    #define   LSb16DSmsg_NOS                                      13
    #define       bDSmsg_NOS                                   1
    #define   MSK32DSmsg_NOS                                      0x00002000

    #define     BA_DSmsg_dir                                   0x0001
    #define     B16DSmsg_dir                                   0x0000
    #define   LSb32DSmsg_dir                                      14
    #define   LSb16DSmsg_dir                                      14
    #define       bDSmsg_dir                                   1
    #define   MSK32DSmsg_dir                                      0x00004000
    #define        DSmsg_dir_m2h                                            0x0
    #define        DSmsg_dir_h2m                                            0x1

    #define     BA_DSmsg_intr                                  0x0001
    #define     B16DSmsg_intr                                  0x0000
    #define   LSb32DSmsg_intr                                     15
    #define   LSb16DSmsg_intr                                     15
    #define       bDSmsg_intr                                  1
    #define   MSK32DSmsg_intr                                     0x00008000

    #define     BA_DSmsg_hboAdr                                0x0002
    #define     B16DSmsg_hboAdr                                0x0002
    #define   LSb32DSmsg_hboAdr                                   16
    #define   LSb16DSmsg_hboAdr                                   0
    #define       bDSmsg_hboAdr                                16
    #define   MSK32DSmsg_hboAdr                                   0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_DSmsg_memAdr                                0x0004
    #define     B16DSmsg_memAdr                                0x0004
    #define   LSb32DSmsg_memAdr                                   0
    #define   LSb16DSmsg_memAdr                                   0
    #define       bDSmsg_memAdr                                32
    #define   MSK32DSmsg_memAdr                                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DSmsg {
    ///////////////////////////////////////////////////////////
    #define   GET32DSmsg_count(r32)                            _BFGET_(r32,12, 0)
    #define   SET32DSmsg_count(r32,v)                          _BFSET_(r32,12, 0,v)
    #define   GET16DSmsg_count(r16)                            _BFGET_(r16,12, 0)
    #define   SET16DSmsg_count(r16,v)                          _BFSET_(r16,12, 0,v)

    #define   GET32DSmsg_NOS(r32)                              _BFGET_(r32,13,13)
    #define   SET32DSmsg_NOS(r32,v)                            _BFSET_(r32,13,13,v)
    #define   GET16DSmsg_NOS(r16)                              _BFGET_(r16,13,13)
    #define   SET16DSmsg_NOS(r16,v)                            _BFSET_(r16,13,13,v)

    #define   GET32DSmsg_dir(r32)                              _BFGET_(r32,14,14)
    #define   SET32DSmsg_dir(r32,v)                            _BFSET_(r32,14,14,v)
    #define   GET16DSmsg_dir(r16)                              _BFGET_(r16,14,14)
    #define   SET16DSmsg_dir(r16,v)                            _BFSET_(r16,14,14,v)

    #define   GET32DSmsg_intr(r32)                             _BFGET_(r32,15,15)
    #define   SET32DSmsg_intr(r32,v)                           _BFSET_(r32,15,15,v)
    #define   GET16DSmsg_intr(r16)                             _BFGET_(r16,15,15)
    #define   SET16DSmsg_intr(r16,v)                           _BFSET_(r16,15,15,v)

    #define   GET32DSmsg_hboAdr(r32)                           _BFGET_(r32,31,16)
    #define   SET32DSmsg_hboAdr(r32,v)                         _BFSET_(r32,31,16,v)
    #define   GET16DSmsg_hboAdr(r16)                           _BFGET_(r16,15, 0)
    #define   SET16DSmsg_hboAdr(r16,v)                         _BFSET_(r16,15, 0,v)

            UNSG32 u_count                                     : 13;
            UNSG32 u_NOS                                       :  1;
            UNSG32 u_dir                                       :  1;
            UNSG32 u_intr                                      :  1;
            UNSG32 u_hboAdr                                    : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32DSmsg_memAdr(r32)                           _BFGET_(r32,31, 0)
    #define   SET32DSmsg_memAdr(r32,v)                         _BFSET_(r32,31, 0,v)

            UNSG32 u_memAdr                                    : 32;
    ///////////////////////////////////////////////////////////
    } SIE_DSmsg;

    ///////////////////////////////////////////////////////////
     SIGN32 DSmsg_drvrd(SIE_DSmsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DSmsg_drvwr(SIE_DSmsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DSmsg_reset(SIE_DSmsg *p);
     SIGN32 DSmsg_cmp  (SIE_DSmsg *p, SIE_DSmsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DSmsg_check(p,pie,pfx,hLOG) DSmsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DSmsg_print(p,    pfx,hLOG) DSmsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DSmsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dsCh                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 retID                (P)
///               %unsigned 16 addr                      0x0
///                                    ###
///                                    * The HBO address of the memory location at which the retired command ID is stored
///                                    * Note : the addr should be 64-bit aligned. Nor the RTL implementation will always put the 16-bit ID to lower 16-bit of the DTCM entry.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00004 initID               (P)
///               %unsigned 16 Val                       0x0
///                                    ###
///                                    * Initial retire id value
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dsCh
#define h_dsCh (){}

    #define     RA_dsCh_retID                                  0x0000

    #define     BA_dsCh_retID_addr                             0x0000
    #define     B16dsCh_retID_addr                             0x0000
    #define   LSb32dsCh_retID_addr                                0
    #define   LSb16dsCh_retID_addr                                0
    #define       bdsCh_retID_addr                             16
    #define   MSK32dsCh_retID_addr                                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dsCh_initID                                 0x0004

    #define     BA_dsCh_initID_Val                             0x0004
    #define     B16dsCh_initID_Val                             0x0004
    #define   LSb32dsCh_initID_Val                                0
    #define   LSb16dsCh_initID_Val                                0
    #define       bdsCh_initID_Val                             16
    #define   MSK32dsCh_initID_Val                                0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dsCh {
    ///////////////////////////////////////////////////////////
    #define   GET32dsCh_retID_addr(r32)                        _BFGET_(r32,15, 0)
    #define   SET32dsCh_retID_addr(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16dsCh_retID_addr(r16)                        _BFGET_(r16,15, 0)
    #define   SET16dsCh_retID_addr(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32dsCh_retID                                  {\
            UNSG32 uretID_addr                                 : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32dsCh_retID;
            struct w32dsCh_retID;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dsCh_initID_Val(r32)                        _BFGET_(r32,15, 0)
    #define   SET32dsCh_initID_Val(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16dsCh_initID_Val(r16)                        _BFGET_(r16,15, 0)
    #define   SET16dsCh_initID_Val(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32dsCh_initID                                 {\
            UNSG32 uinitID_Val                                 : 16;\
            UNSG32 RSVDx4_b16                                  : 16;\
          }
    union { UNSG32 u32dsCh_initID;
            struct w32dsCh_initID;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dsCh;

    typedef union  T32dsCh_retID
          { UNSG32 u32;
            struct w32dsCh_retID;
                 } T32dsCh_retID;
    typedef union  T32dsCh_initID
          { UNSG32 u32;
            struct w32dsCh_initID;
                 } T32dsCh_initID;
    ///////////////////////////////////////////////////////////

    typedef union  TdsCh_retID
          { UNSG32 u32[1];
            struct {
            struct w32dsCh_retID;
                   };
                 } TdsCh_retID;
    typedef union  TdsCh_initID
          { UNSG32 u32[1];
            struct {
            struct w32dsCh_initID;
                   };
                 } TdsCh_initID;

    ///////////////////////////////////////////////////////////
     SIGN32 dsCh_drvrd(SIE_dsCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dsCh_drvwr(SIE_dsCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dsCh_reset(SIE_dsCh *p);
     SIGN32 dsCh_cmp  (SIE_dsCh *p, SIE_dsCh *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dsCh_check(p,pie,pfx,hLOG) dsCh_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dsCh_print(p,    pfx,hLOG) dsCh_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dsCh
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DataStreamer            biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 dsCh                 (P)
///     # 0x00000 dsCh                 
///               $dsCh                dsCh              REG       [4]
///                                    ###
///                                    * The command that was just finished by Data Streamer generated interrupt; write 1 to clear
///                                    ###
///     @ 0x00020 intr                 (WOC-)
///               %unsigned 1  st_0i                     
///               %unsigned 1  st_1i                     
///               %unsigned 1  st_2i                     
///               %unsigned 1  st_3i                     
///                                    ###
///                                    * Interrupt status
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      36B, bits:     132b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DataStreamer
#define h_DataStreamer (){}

    #define     RA_DataStreamer_dsCh                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_DataStreamer_intr                           0x0020

    #define     BA_DataStreamer_intr_st_0i                     0x0020
    #define     B16DataStreamer_intr_st_0i                     0x0020
    #define   LSb32DataStreamer_intr_st_0i                        0
    #define   LSb16DataStreamer_intr_st_0i                        0
    #define       bDataStreamer_intr_st_0i                     1
    #define   MSK32DataStreamer_intr_st_0i                        0x00000001

    #define     BA_DataStreamer_intr_st_1i                     0x0020
    #define     B16DataStreamer_intr_st_1i                     0x0020
    #define   LSb32DataStreamer_intr_st_1i                        1
    #define   LSb16DataStreamer_intr_st_1i                        1
    #define       bDataStreamer_intr_st_1i                     1
    #define   MSK32DataStreamer_intr_st_1i                        0x00000002

    #define     BA_DataStreamer_intr_st_2i                     0x0020
    #define     B16DataStreamer_intr_st_2i                     0x0020
    #define   LSb32DataStreamer_intr_st_2i                        2
    #define   LSb16DataStreamer_intr_st_2i                        2
    #define       bDataStreamer_intr_st_2i                     1
    #define   MSK32DataStreamer_intr_st_2i                        0x00000004

    #define     BA_DataStreamer_intr_st_3i                     0x0020
    #define     B16DataStreamer_intr_st_3i                     0x0020
    #define   LSb32DataStreamer_intr_st_3i                        3
    #define   LSb16DataStreamer_intr_st_3i                        3
    #define       bDataStreamer_intr_st_3i                     1
    #define   MSK32DataStreamer_intr_st_3i                        0x00000008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DataStreamer {
    ///////////////////////////////////////////////////////////
              SIE_dsCh                                         ie_dsCh[4];
    ///////////////////////////////////////////////////////////
    #define   GET32DataStreamer_intr_st_0i(r32)                _BFGET_(r32, 0, 0)
    #define   SET32DataStreamer_intr_st_0i(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16DataStreamer_intr_st_0i(r16)                _BFGET_(r16, 0, 0)
    #define   SET16DataStreamer_intr_st_0i(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32DataStreamer_intr_st_1i(r32)                _BFGET_(r32, 1, 1)
    #define   SET32DataStreamer_intr_st_1i(r32,v)              _BFSET_(r32, 1, 1,v)
    #define   GET16DataStreamer_intr_st_1i(r16)                _BFGET_(r16, 1, 1)
    #define   SET16DataStreamer_intr_st_1i(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32DataStreamer_intr_st_2i(r32)                _BFGET_(r32, 2, 2)
    #define   SET32DataStreamer_intr_st_2i(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16DataStreamer_intr_st_2i(r16)                _BFGET_(r16, 2, 2)
    #define   SET16DataStreamer_intr_st_2i(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32DataStreamer_intr_st_3i(r32)                _BFGET_(r32, 3, 3)
    #define   SET32DataStreamer_intr_st_3i(r32,v)              _BFSET_(r32, 3, 3,v)
    #define   GET16DataStreamer_intr_st_3i(r16)                _BFGET_(r16, 3, 3)
    #define   SET16DataStreamer_intr_st_3i(r16,v)              _BFSET_(r16, 3, 3,v)

    #define     w32DataStreamer_intr                           {\
            UNSG32 uintr_st_0i                                 :  1;\
            UNSG32 uintr_st_1i                                 :  1;\
            UNSG32 uintr_st_2i                                 :  1;\
            UNSG32 uintr_st_3i                                 :  1;\
            UNSG32 RSVDx20_b4                                  : 28;\
          }
    union { UNSG32 u32DataStreamer_intr;
            struct w32DataStreamer_intr;
          };
    ///////////////////////////////////////////////////////////
    } SIE_DataStreamer;

    typedef union  T32DataStreamer_intr
          { UNSG32 u32;
            struct w32DataStreamer_intr;
                 } T32DataStreamer_intr;
    ///////////////////////////////////////////////////////////

    typedef union  TDataStreamer_intr
          { UNSG32 u32[1];
            struct {
            struct w32DataStreamer_intr;
                   };
                 } TDataStreamer_intr;

    ///////////////////////////////////////////////////////////
     SIGN32 DataStreamer_drvrd(SIE_DataStreamer *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DataStreamer_drvwr(SIE_DataStreamer *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DataStreamer_reset(SIE_DataStreamer *p);
     SIGN32 DataStreamer_cmp  (SIE_DataStreamer *p, SIE_DataStreamer *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DataStreamer_check(p,pie,pfx,hLOG) DataStreamer_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DataStreamer_print(p,    pfx,hLOG) DataStreamer_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DataStreamer
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ALU64CMD                                 (4,4)
///     ###
///     * 16-bit + 6-bit parameters for A64CMD
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 par                  (W-)
///               %unsigned 16 rS                        
///                                    ###
///                                    * rS register for A64CMD
///                                    ###
///               %unsigned 6  q6                        
///                                    ###
///                                    * q6 parameter for A64CMD
///                                    * end ALU64CMD
///                                    ###
///               %%        10         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      22b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ALU64CMD
#define h_ALU64CMD (){}

    #define     RA_ALU64CMD_par                                0x0000

    #define     BA_ALU64CMD_par_rS                             0x0000
    #define     B16ALU64CMD_par_rS                             0x0000
    #define   LSb32ALU64CMD_par_rS                                0
    #define   LSb16ALU64CMD_par_rS                                0
    #define       bALU64CMD_par_rS                             16
    #define   MSK32ALU64CMD_par_rS                                0x0000FFFF

    #define     BA_ALU64CMD_par_q6                             0x0002
    #define     B16ALU64CMD_par_q6                             0x0002
    #define   LSb32ALU64CMD_par_q6                                16
    #define   LSb16ALU64CMD_par_q6                                0
    #define       bALU64CMD_par_q6                             6
    #define   MSK32ALU64CMD_par_q6                                0x003F0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ALU64CMD {
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64CMD_par_rS(r32)                        _BFGET_(r32,15, 0)
    #define   SET32ALU64CMD_par_rS(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16ALU64CMD_par_rS(r16)                        _BFGET_(r16,15, 0)
    #define   SET16ALU64CMD_par_rS(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32ALU64CMD_par_q6(r32)                        _BFGET_(r32,21,16)
    #define   SET32ALU64CMD_par_q6(r32,v)                      _BFSET_(r32,21,16,v)
    #define   GET16ALU64CMD_par_q6(r16)                        _BFGET_(r16, 5, 0)
    #define   SET16ALU64CMD_par_q6(r16,v)                      _BFSET_(r16, 5, 0,v)

    #define     w32ALU64CMD_par                                {\
            UNSG32 upar_rS                                     : 16;\
            UNSG32 upar_q6                                     :  6;\
            UNSG32 RSVDx0_b22                                  : 10;\
          }
    union { UNSG32 u32ALU64CMD_par;
            struct w32ALU64CMD_par;
          };
    ///////////////////////////////////////////////////////////
    } SIE_ALU64CMD;

    typedef union  T32ALU64CMD_par
          { UNSG32 u32;
            struct w32ALU64CMD_par;
                 } T32ALU64CMD_par;
    ///////////////////////////////////////////////////////////

    typedef union  TALU64CMD_par
          { UNSG32 u32[1];
            struct {
            struct w32ALU64CMD_par;
                   };
                 } TALU64CMD_par;

    ///////////////////////////////////////////////////////////
     SIGN32 ALU64CMD_drvrd(SIE_ALU64CMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ALU64CMD_drvwr(SIE_ALU64CMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ALU64CMD_reset(SIE_ALU64CMD *p);
     SIGN32 ALU64CMD_cmp  (SIE_ALU64CMD *p, SIE_ALU64CMD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ALU64CMD_check(p,pie,pfx,hLOG) ALU64CMD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ALU64CMD_print(p,    pfx,hLOG) ALU64CMD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ALU64CMD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE A64CmdAll                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ext                  (P)
///     # 0x00000 ext                  
///               $ALU64CMD            ext               REG     [256]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1024B, bits:    5632b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_A64CmdAll
#define h_A64CmdAll (){}

    #define     RA_A64CmdAll_ext                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_A64CmdAll {
    ///////////////////////////////////////////////////////////
              SIE_ALU64CMD                                     ie_ext[256];
    ///////////////////////////////////////////////////////////
    } SIE_A64CmdAll;

    ///////////////////////////////////////////////////////////
     SIGN32 A64CmdAll_drvrd(SIE_A64CmdAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 A64CmdAll_drvwr(SIE_A64CmdAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void A64CmdAll_reset(SIE_A64CmdAll *p);
     SIGN32 A64CmdAll_cmp  (SIE_A64CmdAll *p, SIE_A64CmdAll *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define A64CmdAll_check(p,pie,pfx,hLOG) A64CmdAll_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define A64CmdAll_print(p,    pfx,hLOG) A64CmdAll_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: A64CmdAll
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ALU64DAT                                 (4,4)
///     ###
///     * 64-bit return data from ALU64 extensions
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 low                  (R-)
///               %unsigned 32 val                       
///                                    ###
///                                    * Lower 32-bit of the ALU64 return value; read triggers ALU64 extension pop
///                                    ###
///     @ 0x00004 high                 (R-)
///               %unsigned 32 val                       
///                                    ###
///                                    * Higher 32-bit of the ALU64 return value
///                                    * end ALU64DAT
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ALU64DAT
#define h_ALU64DAT (){}

    #define     RA_ALU64DAT_low                                0x0000

    #define     BA_ALU64DAT_low_val                            0x0000
    #define     B16ALU64DAT_low_val                            0x0000
    #define   LSb32ALU64DAT_low_val                               0
    #define   LSb16ALU64DAT_low_val                               0
    #define       bALU64DAT_low_val                            32
    #define   MSK32ALU64DAT_low_val                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64DAT_high                               0x0004

    #define     BA_ALU64DAT_high_val                           0x0004
    #define     B16ALU64DAT_high_val                           0x0004
    #define   LSb32ALU64DAT_high_val                              0
    #define   LSb16ALU64DAT_high_val                              0
    #define       bALU64DAT_high_val                           32
    #define   MSK32ALU64DAT_high_val                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ALU64DAT {
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64DAT_low_val(r32)                       _BFGET_(r32,31, 0)
    #define   SET32ALU64DAT_low_val(r32,v)                     _BFSET_(r32,31, 0,v)

    #define     w32ALU64DAT_low                                {\
            UNSG32 ulow_val                                    : 32;\
          }
    union { UNSG32 u32ALU64DAT_low;
            struct w32ALU64DAT_low;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64DAT_high_val(r32)                      _BFGET_(r32,31, 0)
    #define   SET32ALU64DAT_high_val(r32,v)                    _BFSET_(r32,31, 0,v)

    #define     w32ALU64DAT_high                               {\
            UNSG32 uhigh_val                                   : 32;\
          }
    union { UNSG32 u32ALU64DAT_high;
            struct w32ALU64DAT_high;
          };
    ///////////////////////////////////////////////////////////
    } SIE_ALU64DAT;

    typedef union  T32ALU64DAT_low
          { UNSG32 u32;
            struct w32ALU64DAT_low;
                 } T32ALU64DAT_low;
    typedef union  T32ALU64DAT_high
          { UNSG32 u32;
            struct w32ALU64DAT_high;
                 } T32ALU64DAT_high;
    ///////////////////////////////////////////////////////////

    typedef union  TALU64DAT_low
          { UNSG32 u32[1];
            struct {
            struct w32ALU64DAT_low;
                   };
                 } TALU64DAT_low;
    typedef union  TALU64DAT_high
          { UNSG32 u32[1];
            struct {
            struct w32ALU64DAT_high;
                   };
                 } TALU64DAT_high;

    ///////////////////////////////////////////////////////////
     SIGN32 ALU64DAT_drvrd(SIE_ALU64DAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ALU64DAT_drvwr(SIE_ALU64DAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ALU64DAT_reset(SIE_ALU64DAT *p);
     SIGN32 ALU64DAT_cmp  (SIE_ALU64DAT *p, SIE_ALU64DAT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ALU64DAT_check(p,pie,pfx,hLOG) ALU64DAT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ALU64DAT_print(p,    pfx,hLOG) ALU64DAT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ALU64DAT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE A64DatAll                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ext                  (P)
///     # 0x00000 ext                  
///               $ALU64DAT            ext               REG     [256]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2048B, bits:   16384b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_A64DatAll
#define h_A64DatAll (){}

    #define     RA_A64DatAll_ext                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_A64DatAll {
    ///////////////////////////////////////////////////////////
              SIE_ALU64DAT                                     ie_ext[256];
    ///////////////////////////////////////////////////////////
    } SIE_A64DatAll;

    ///////////////////////////////////////////////////////////
     SIGN32 A64DatAll_drvrd(SIE_A64DatAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 A64DatAll_drvwr(SIE_A64DatAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void A64DatAll_reset(SIE_A64DatAll *p);
     SIGN32 A64DatAll_cmp  (SIE_A64DatAll *p, SIE_A64DatAll *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define A64DatAll_check(p,pie,pfx,hLOG) A64DatAll_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define A64DatAll_print(p,    pfx,hLOG) A64DatAll_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: A64DatAll
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ALU64                   biu              (4,4)
///     ###
///     * Registers ports for CPU to access FIGO ALU64 extensions
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 xT_l                 (P)
///               %unsigned 32 val                       
///                                    ###
///                                    * Higher 32-bit of the FIGO xT register
///                                    ###
///     @ 0x00004 xT_h                 (P)
///               %unsigned 32 val                       
///                                    ###
///                                    * Lower 32-bit of the FIGO xT register
///                                    ###
///     @ 0x00008 X2Q                  (RW-)
///               %unsigned 6  adr                       
///                                    ###
///                                    * Write triggers a transfer from {xt_H, xt_L} to RF64 selected by the address
///                                    ###
///               %%        26         # Stuffing bits...
///     @ 0x0000C PopParam             (P)
///               %unsigned 16 rS                        
///                                    ###
///                                    * rS register for A64LD
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00010                      (W-)
///     #         # Stuffing bytes...
///               %% 8064
///     @ 0x00400 Push                 (P)
///     # 0x00400 a64CmdAll            
///               $A64CmdAll           a64CmdAll         MEM          
///                                    ###
///                                    * Write triggers A64CMD
///                                    ###
///     @ 0x00800 Pop                  (P)
///     # 0x00800 a64DatAll            
///               $A64DatAll           a64DatAll         MEM          
///                                    ###
///                                    * Read triggers A64LD
///                                    * ALU64 interface
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:     150b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ALU64
#define h_ALU64 (){}

    #define     RA_ALU64_xT_l                                  0x0000

    #define     BA_ALU64_xT_l_val                              0x0000
    #define     B16ALU64_xT_l_val                              0x0000
    #define   LSb32ALU64_xT_l_val                                 0
    #define   LSb16ALU64_xT_l_val                                 0
    #define       bALU64_xT_l_val                              32
    #define   MSK32ALU64_xT_l_val                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_xT_h                                  0x0004

    #define     BA_ALU64_xT_h_val                              0x0004
    #define     B16ALU64_xT_h_val                              0x0004
    #define   LSb32ALU64_xT_h_val                                 0
    #define   LSb16ALU64_xT_h_val                                 0
    #define       bALU64_xT_h_val                              32
    #define   MSK32ALU64_xT_h_val                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_X2Q                                   0x0008

    #define     BA_ALU64_X2Q_adr                               0x0008
    #define     B16ALU64_X2Q_adr                               0x0008
    #define   LSb32ALU64_X2Q_adr                                  0
    #define   LSb16ALU64_X2Q_adr                                  0
    #define       bALU64_X2Q_adr                               6
    #define   MSK32ALU64_X2Q_adr                                  0x0000003F
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_PopParam                              0x000C

    #define     BA_ALU64_PopParam_rS                           0x000C
    #define     B16ALU64_PopParam_rS                           0x000C
    #define   LSb32ALU64_PopParam_rS                              0
    #define   LSb16ALU64_PopParam_rS                              0
    #define       bALU64_PopParam_rS                           16
    #define   MSK32ALU64_PopParam_rS                              0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_Push                                  0x0400
    #define     RA_ALU64_a64CmdAll                             0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_Pop                                   0x0800
    #define     RA_ALU64_a64DatAll                             0x0800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ALU64 {
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_xT_l_val(r32)                         _BFGET_(r32,31, 0)
    #define   SET32ALU64_xT_l_val(r32,v)                       _BFSET_(r32,31, 0,v)

    #define     w32ALU64_xT_l                                  {\
            UNSG32 uxT_l_val                                   : 32;\
          }
    union { UNSG32 u32ALU64_xT_l;
            struct w32ALU64_xT_l;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_xT_h_val(r32)                         _BFGET_(r32,31, 0)
    #define   SET32ALU64_xT_h_val(r32,v)                       _BFSET_(r32,31, 0,v)

    #define     w32ALU64_xT_h                                  {\
            UNSG32 uxT_h_val                                   : 32;\
          }
    union { UNSG32 u32ALU64_xT_h;
            struct w32ALU64_xT_h;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_X2Q_adr(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32ALU64_X2Q_adr(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16ALU64_X2Q_adr(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16ALU64_X2Q_adr(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define     w32ALU64_X2Q                                   {\
            UNSG32 uX2Q_adr                                    :  6;\
            UNSG32 RSVDx8_b6                                   : 26;\
          }
    union { UNSG32 u32ALU64_X2Q;
            struct w32ALU64_X2Q;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_PopParam_rS(r32)                      _BFGET_(r32,15, 0)
    #define   SET32ALU64_PopParam_rS(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16ALU64_PopParam_rS(r16)                      _BFGET_(r16,15, 0)
    #define   SET16ALU64_PopParam_rS(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32ALU64_PopParam                              {\
            UNSG32 uPopParam_rS                                : 16;\
            UNSG32 RSVDxC_b16                                  : 16;\
          }
    union { UNSG32 u32ALU64_PopParam;
            struct w32ALU64_PopParam;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx10                                     [1008];
    ///////////////////////////////////////////////////////////
              SIE_A64CmdAll                                    ie_a64CmdAll;
    ///////////////////////////////////////////////////////////
              SIE_A64DatAll                                    ie_a64DatAll;
    ///////////////////////////////////////////////////////////
    } SIE_ALU64;

    typedef union  T32ALU64_xT_l
          { UNSG32 u32;
            struct w32ALU64_xT_l;
                 } T32ALU64_xT_l;
    typedef union  T32ALU64_xT_h
          { UNSG32 u32;
            struct w32ALU64_xT_h;
                 } T32ALU64_xT_h;
    typedef union  T32ALU64_X2Q
          { UNSG32 u32;
            struct w32ALU64_X2Q;
                 } T32ALU64_X2Q;
    typedef union  T32ALU64_PopParam
          { UNSG32 u32;
            struct w32ALU64_PopParam;
                 } T32ALU64_PopParam;
    ///////////////////////////////////////////////////////////

    typedef union  TALU64_xT_l
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_xT_l;
                   };
                 } TALU64_xT_l;
    typedef union  TALU64_xT_h
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_xT_h;
                   };
                 } TALU64_xT_h;
    typedef union  TALU64_X2Q
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_X2Q;
                   };
                 } TALU64_X2Q;
    typedef union  TALU64_PopParam
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_PopParam;
                   };
                 } TALU64_PopParam;

    ///////////////////////////////////////////////////////////
     SIGN32 ALU64_drvrd(SIE_ALU64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ALU64_drvwr(SIE_ALU64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ALU64_reset(SIE_ALU64 *p);
     SIGN32 ALU64_cmp  (SIE_ALU64 *p, SIE_ALU64 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ALU64_check(p,pie,pfx,hLOG) ALU64_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ALU64_print(p,    pfx,hLOG) ALU64_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ALU64
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoTraceBuf            biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (P)
///               %unsigned 32 val                       
///                                    ###
///                                    * Register window for the trace buffer
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoTraceBuf
#define h_FigoTraceBuf (){}

    #define     RA_FigoTraceBuf_entry                          0x0000

    #define     BA_FigoTraceBuf_entry_val                      0x0000
    #define     B16FigoTraceBuf_entry_val                      0x0000
    #define   LSb32FigoTraceBuf_entry_val                         0
    #define   LSb16FigoTraceBuf_entry_val                         0
    #define       bFigoTraceBuf_entry_val                      32
    #define   MSK32FigoTraceBuf_entry_val                         0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoTraceBuf {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoTraceBuf_entry_val(r32)                 _BFGET_(r32,31, 0)
    #define   SET32FigoTraceBuf_entry_val(r32,v)               _BFSET_(r32,31, 0,v)

    #define     w32FigoTraceBuf_entry                          {\
            UNSG32 uentry_val                                  : 32;\
          }
    union { UNSG32 u32FigoTraceBuf_entry;
            struct w32FigoTraceBuf_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoTraceBuf;

    typedef union  T32FigoTraceBuf_entry
          { UNSG32 u32;
            struct w32FigoTraceBuf_entry;
                 } T32FigoTraceBuf_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoTraceBuf_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoTraceBuf_entry;
                   };
                 } TFigoTraceBuf_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoTraceBuf_drvrd(SIE_FigoTraceBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoTraceBuf_drvwr(SIE_FigoTraceBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoTraceBuf_reset(SIE_FigoTraceBuf *p);
     SIGN32 FigoTraceBuf_cmp  (SIE_FigoTraceBuf *p, SIE_FigoTraceBuf *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoTraceBuf_check(p,pie,pfx,hLOG) FigoTraceBuf_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoTraceBuf_print(p,    pfx,hLOG) FigoTraceBuf_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoTraceBuf
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoReg16               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (P)
///               %unsigned 16 val                       
///                                    ###
///                                    * Register window for the trace buffer
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoReg16
#define h_FigoReg16 (){}

    #define     RA_FigoReg16_entry                             0x0000

    #define     BA_FigoReg16_entry_val                         0x0000
    #define     B16FigoReg16_entry_val                         0x0000
    #define   LSb32FigoReg16_entry_val                            0
    #define   LSb16FigoReg16_entry_val                            0
    #define       bFigoReg16_entry_val                         16
    #define   MSK32FigoReg16_entry_val                            0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoReg16 {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg16_entry_val(r32)                    _BFGET_(r32,15, 0)
    #define   SET32FigoReg16_entry_val(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg16_entry_val(r16)                    _BFGET_(r16,15, 0)
    #define   SET16FigoReg16_entry_val(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32FigoReg16_entry                             {\
            UNSG32 uentry_val                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32FigoReg16_entry;
            struct w32FigoReg16_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoReg16;

    typedef union  T32FigoReg16_entry
          { UNSG32 u32;
            struct w32FigoReg16_entry;
                 } T32FigoReg16_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoReg16_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg16_entry;
                   };
                 } TFigoReg16_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoReg16_drvrd(SIE_FigoReg16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoReg16_drvwr(SIE_FigoReg16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoReg16_reset(SIE_FigoReg16 *p);
     SIGN32 FigoReg16_cmp  (SIE_FigoReg16 *p, SIE_FigoReg16 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoReg16_check(p,pie,pfx,hLOG) FigoReg16_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoReg16_print(p,    pfx,hLOG) FigoReg16_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoReg16
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoRF16Reg             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (RW)
///               %unsigned 16 val                       0x0
///                                    ###
///                                    * Register window for the RF16 access in debug mode
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoRF16Reg
#define h_FigoRF16Reg (){}

    #define     RA_FigoRF16Reg_entry                           0x0000

    #define     BA_FigoRF16Reg_entry_val                       0x0000
    #define     B16FigoRF16Reg_entry_val                       0x0000
    #define   LSb32FigoRF16Reg_entry_val                          0
    #define   LSb16FigoRF16Reg_entry_val                          0
    #define       bFigoRF16Reg_entry_val                       16
    #define   MSK32FigoRF16Reg_entry_val                          0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoRF16Reg {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoRF16Reg_entry_val(r32)                  _BFGET_(r32,15, 0)
    #define   SET32FigoRF16Reg_entry_val(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16FigoRF16Reg_entry_val(r16)                  _BFGET_(r16,15, 0)
    #define   SET16FigoRF16Reg_entry_val(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32FigoRF16Reg_entry                           {\
            UNSG32 uentry_val                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32FigoRF16Reg_entry;
            struct w32FigoRF16Reg_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoRF16Reg;

    typedef union  T32FigoRF16Reg_entry
          { UNSG32 u32;
            struct w32FigoRF16Reg_entry;
                 } T32FigoRF16Reg_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoRF16Reg_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoRF16Reg_entry;
                   };
                 } TFigoRF16Reg_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoRF16Reg_drvrd(SIE_FigoRF16Reg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoRF16Reg_drvwr(SIE_FigoRF16Reg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoRF16Reg_reset(SIE_FigoRF16Reg *p);
     SIGN32 FigoRF16Reg_cmp  (SIE_FigoRF16Reg *p, SIE_FigoRF16Reg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoRF16Reg_check(p,pie,pfx,hLOG) FigoRF16Reg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoRF16Reg_print(p,    pfx,hLOG) FigoRF16Reg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoRF16Reg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoMem16                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (RW-)
///               %unsigned 16 val                       
///                                    ###
///                                    * Register window for the Jump Stack access in debug mode
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoMem16
#define h_FigoMem16 (){}

    #define     RA_FigoMem16_entry                             0x0000

    #define     BA_FigoMem16_entry_val                         0x0000
    #define     B16FigoMem16_entry_val                         0x0000
    #define   LSb32FigoMem16_entry_val                            0
    #define   LSb16FigoMem16_entry_val                            0
    #define       bFigoMem16_entry_val                         16
    #define   MSK32FigoMem16_entry_val                            0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoMem16 {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoMem16_entry_val(r32)                    _BFGET_(r32,15, 0)
    #define   SET32FigoMem16_entry_val(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16FigoMem16_entry_val(r16)                    _BFGET_(r16,15, 0)
    #define   SET16FigoMem16_entry_val(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32FigoMem16_entry                             {\
            UNSG32 uentry_val                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32FigoMem16_entry;
            struct w32FigoMem16_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoMem16;

    typedef union  T32FigoMem16_entry
          { UNSG32 u32;
            struct w32FigoMem16_entry;
                 } T32FigoMem16_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoMem16_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoMem16_entry;
                   };
                 } TFigoMem16_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoMem16_drvrd(SIE_FigoMem16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoMem16_drvwr(SIE_FigoMem16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoMem16_reset(SIE_FigoMem16 *p);
     SIGN32 FigoMem16_cmp  (SIE_FigoMem16 *p, SIE_FigoMem16 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoMem16_check(p,pie,pfx,hLOG) FigoMem16_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoMem16_print(p,    pfx,hLOG) FigoMem16_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoMem16
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoMem32                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (RW-)
///               %unsigned 32 val                       
///                                    ###
///                                    * Register window for the Jump Stack access in debug mode
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoMem32
#define h_FigoMem32 (){}

    #define     RA_FigoMem32_entry                             0x0000

    #define     BA_FigoMem32_entry_val                         0x0000
    #define     B16FigoMem32_entry_val                         0x0000
    #define   LSb32FigoMem32_entry_val                            0
    #define   LSb16FigoMem32_entry_val                            0
    #define       bFigoMem32_entry_val                         32
    #define   MSK32FigoMem32_entry_val                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoMem32 {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoMem32_entry_val(r32)                    _BFGET_(r32,31, 0)
    #define   SET32FigoMem32_entry_val(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32FigoMem32_entry                             {\
            UNSG32 uentry_val                                  : 32;\
          }
    union { UNSG32 u32FigoMem32_entry;
            struct w32FigoMem32_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoMem32;

    typedef union  T32FigoMem32_entry
          { UNSG32 u32;
            struct w32FigoMem32_entry;
                 } T32FigoMem32_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoMem32_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoMem32_entry;
                   };
                 } TFigoMem32_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoMem32_drvrd(SIE_FigoMem32 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoMem32_drvwr(SIE_FigoMem32 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoMem32_reset(SIE_FigoMem32 *p);
     SIGN32 FigoMem32_cmp  (SIE_FigoMem32 *p, SIE_FigoMem32 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoMem32_check(p,pie,pfx,hLOG) FigoMem32_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoMem32_print(p,    pfx,hLOG) FigoMem32_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoMem32
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoDebug               biu              (4,4)
///     ###
///     * FIGO debug mode related registers and signals
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 figoDbg              (RW-)
///               ###
///               * Puts FIGO in debug mode
///               ###
///               %unsigned 1  on                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00004 figoDbgMode          (P)
///               ###
///               * Determines FIGO's behavior in debug mode
///               ###
///               %unsigned 2  mode                      0x0
///                                    : stop                      0x0
///                                                 ###
///                                                 * FIGO flushes and stalls its pipeline
///                                                 ###
///                                    : step                      0x1
///                                                 ###
///                                                 * FIGO executes one instruction at a time. Repeat to execute the next instruction.
///                                                 ###
///                                    : slow_run                  0x2
///                                                 ###
///                                                 * FIGO inserts sufficient bubbles between each instruction to bypass all forwarding logic
///                                                 ###
///                                    : fast_run                  0x3
///                                                 ###
///                                                 * FIGO resumes full-speed operation. Feature has been disabled due to timing impact.
///                                                 ###
///               %%        30         # Stuffing bits...
///     @ 0x00008 figoDbgModeStatus    (R-)
///               ###
///               * Similar to figoDbgMode, but read-only. Shows the actual status of FIGO, as it may be different from what is set in figoDbgMode.
///               ###
///               %unsigned 2  mode                      0x0
///                                    : stop                      0x0
///                                    : step                      0x1
///                                    : slow_run                  0x2
///                                    : fast_run                  0x3
///                                                 ###
///                                                 * Same enumerations
///                                                 ###
///               %%        30         # Stuffing bits...
///     @ 0x0000C figoDbgTrigInMask    (P)
///               ###
///               * 4 mask bits for trigger-in signals from up to 4 other FIGOs hitting breakpoints.
///               ###
///               %unsigned 4  on                        0xF
///                                    ###
///                                    * On by default, all trigger-ins are blocked.
///                                    ###
///               %%        28         # Stuffing bits...
///     @ 0x00010                      (W-)
///     #         # Stuffing bytes...
///               %% 384
///     @ 0x00040 figoDbgRF16          (RW-)
///               ###
///               * BIU access to RF16
///               ###
///     # 0x00040 rf16                 
///               $FigoMem16           rf16              MEM      [16]
///                                    ###
///                                    * Register mapping
///                                    * x0 = {d0,c0,b0,a0} = MEM[3:0]
///                                    * x1 = {d1,c1,b1,a1} = MEM[7:4]
///                                    * x2 = {d2,c2,b2,a2} = MEM[11:8]
///                                    * x3 = {d3,c3,b3,a3} = MEM[15:12]
///                                    ###
///     @ 0x00080 figoDbgRB            (RW-)
///               ###
///               * BIU access to RB register
///               ###
///               %unsigned 16 rb                        0x0
///               %%        16         # Stuffing bits...
///     @ 0x00084 figoDbgPCAtFetch     (R-)
///               ###
///               * BIU access to PC register at Fetch stage
///               ###
///               %unsigned 16 pc                        0x0
///               %%        16         # Stuffing bits...
///     @ 0x00088                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00090 figoDbgJumpStack     (RW-)
///               ###
///               * BIU access to jump stack
///               ###
///     # 0x00090 stack                
///               $FigoMem32           stack             MEM       [4]
///                                    ###
///                                    * Register mapping
///                                    * MEM[0] = {branchPos[0],jumpDest[0]}
///                                    * MEM[1] = {branchPos[1],jumpDest[1]}
///                                    * MEM[2] = {branchPos[2],jumpDest[2]}
///                                    * MEM[3] = {branchPos[3],jumpDest[3]}
///                                    ###
///     @ 0x000A0 figoDbgStackDepth    (R-)
///               ###
///               * BIU access to number of current jump stack entries
///               ###
///               %unsigned 5  depth                     0x0
///                                    ###
///                                    * Values are one-hot. Following actual stack pointer implementation inside FIGO so that no additional logic is required.
///                                    * 00001 = 0 valid entries (stack empty)
///                                    * 00010 = 1 valid entry
///                                    * 00100 = 2 valid entries
///                                    * 01000 = 3 valid entries
///                                    * 10000 = 4 valid entries (stack full)
///                                    ###
///               %%        27         # Stuffing bits...
///     @ 0x000A4 figoDbgFlags         (R-)
///               ###
///               * BIU access to flags register
///               ###
///               %unsigned 16 flags                     0x0
///                                    ###
///                                    * flags[15:0] = {LSj, Lj, GSj, Gj, LS, L, GS, G, 1, 0, Cj, Zj, V, N, C, Z}
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x000A8 figoDbgBreak         (WOC-)
///               ###
///               * Bit that indicates FIGO entered debug mode due to breakpoint
///               ###
///               %unsigned 1  up                        0x0
///                                    ###
///                                    * Write one to clear
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x000AC figoDbgBkBitWen      (P)
///               ###
///               * Enable bit to allow breakpoint bits to be written into ITCM by BIU.
///               ###
///               %unsigned 1  en                        0x0
///                                    ###
///                                    * Additional enable bit to safeguard against accidentally writing ones into the breakpoint fields of the ITCM.
///                                    * Register window for the trace buffer
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x000B0                      (W-)
///     #         # Stuffing bytes...
///               %% 128
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     192B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoDebug
#define h_FigoDebug (){}

    #define     RA_FigoDebug_figoDbg                           0x0000

    #define     BA_FigoDebug_figoDbg_on                        0x0000
    #define     B16FigoDebug_figoDbg_on                        0x0000
    #define   LSb32FigoDebug_figoDbg_on                           0
    #define   LSb16FigoDebug_figoDbg_on                           0
    #define       bFigoDebug_figoDbg_on                        1
    #define   MSK32FigoDebug_figoDbg_on                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgMode                       0x0004

    #define     BA_FigoDebug_figoDbgMode_mode                  0x0004
    #define     B16FigoDebug_figoDbgMode_mode                  0x0004
    #define   LSb32FigoDebug_figoDbgMode_mode                     0
    #define   LSb16FigoDebug_figoDbgMode_mode                     0
    #define       bFigoDebug_figoDbgMode_mode                  2
    #define   MSK32FigoDebug_figoDbgMode_mode                     0x00000003
    #define        FigoDebug_figoDbgMode_mode_stop                          0x0
    #define        FigoDebug_figoDbgMode_mode_step                          0x1
    #define        FigoDebug_figoDbgMode_mode_slow_run                      0x2
    #define        FigoDebug_figoDbgMode_mode_fast_run                      0x3
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgModeStatus                 0x0008

    #define     BA_FigoDebug_figoDbgModeStatus_mode            0x0008
    #define     B16FigoDebug_figoDbgModeStatus_mode            0x0008
    #define   LSb32FigoDebug_figoDbgModeStatus_mode               0
    #define   LSb16FigoDebug_figoDbgModeStatus_mode               0
    #define       bFigoDebug_figoDbgModeStatus_mode            2
    #define   MSK32FigoDebug_figoDbgModeStatus_mode               0x00000003
    #define        FigoDebug_figoDbgModeStatus_mode_stop                    0x0
    #define        FigoDebug_figoDbgModeStatus_mode_step                    0x1
    #define        FigoDebug_figoDbgModeStatus_mode_slow_run                0x2
    #define        FigoDebug_figoDbgModeStatus_mode_fast_run                0x3
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgTrigInMask                 0x000C

    #define     BA_FigoDebug_figoDbgTrigInMask_on              0x000C
    #define     B16FigoDebug_figoDbgTrigInMask_on              0x000C
    #define   LSb32FigoDebug_figoDbgTrigInMask_on                 0
    #define   LSb16FigoDebug_figoDbgTrigInMask_on                 0
    #define       bFigoDebug_figoDbgTrigInMask_on              4
    #define   MSK32FigoDebug_figoDbgTrigInMask_on                 0x0000000F
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgRF16                       0x0040
    #define     RA_FigoDebug_rf16                              0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgRB                         0x0080

    #define     BA_FigoDebug_figoDbgRB_rb                      0x0080
    #define     B16FigoDebug_figoDbgRB_rb                      0x0080
    #define   LSb32FigoDebug_figoDbgRB_rb                         0
    #define   LSb16FigoDebug_figoDbgRB_rb                         0
    #define       bFigoDebug_figoDbgRB_rb                      16
    #define   MSK32FigoDebug_figoDbgRB_rb                         0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgPCAtFetch                  0x0084

    #define     BA_FigoDebug_figoDbgPCAtFetch_pc               0x0084
    #define     B16FigoDebug_figoDbgPCAtFetch_pc               0x0084
    #define   LSb32FigoDebug_figoDbgPCAtFetch_pc                  0
    #define   LSb16FigoDebug_figoDbgPCAtFetch_pc                  0
    #define       bFigoDebug_figoDbgPCAtFetch_pc               16
    #define   MSK32FigoDebug_figoDbgPCAtFetch_pc                  0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgJumpStack                  0x0090
    #define     RA_FigoDebug_stack                             0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgStackDepth                 0x00A0

    #define     BA_FigoDebug_figoDbgStackDepth_depth           0x00A0
    #define     B16FigoDebug_figoDbgStackDepth_depth           0x00A0
    #define   LSb32FigoDebug_figoDbgStackDepth_depth              0
    #define   LSb16FigoDebug_figoDbgStackDepth_depth              0
    #define       bFigoDebug_figoDbgStackDepth_depth           5
    #define   MSK32FigoDebug_figoDbgStackDepth_depth              0x0000001F
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgFlags                      0x00A4

    #define     BA_FigoDebug_figoDbgFlags_flags                0x00A4
    #define     B16FigoDebug_figoDbgFlags_flags                0x00A4
    #define   LSb32FigoDebug_figoDbgFlags_flags                   0
    #define   LSb16FigoDebug_figoDbgFlags_flags                   0
    #define       bFigoDebug_figoDbgFlags_flags                16
    #define   MSK32FigoDebug_figoDbgFlags_flags                   0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgBreak                      0x00A8

    #define     BA_FigoDebug_figoDbgBreak_up                   0x00A8
    #define     B16FigoDebug_figoDbgBreak_up                   0x00A8
    #define   LSb32FigoDebug_figoDbgBreak_up                      0
    #define   LSb16FigoDebug_figoDbgBreak_up                      0
    #define       bFigoDebug_figoDbgBreak_up                   1
    #define   MSK32FigoDebug_figoDbgBreak_up                      0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgBkBitWen                   0x00AC

    #define     BA_FigoDebug_figoDbgBkBitWen_en                0x00AC
    #define     B16FigoDebug_figoDbgBkBitWen_en                0x00AC
    #define   LSb32FigoDebug_figoDbgBkBitWen_en                   0
    #define   LSb16FigoDebug_figoDbgBkBitWen_en                   0
    #define       bFigoDebug_figoDbgBkBitWen_en                1
    #define   MSK32FigoDebug_figoDbgBkBitWen_en                   0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoDebug {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbg_on(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32FigoDebug_figoDbg_on(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16FigoDebug_figoDbg_on(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16FigoDebug_figoDbg_on(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32FigoDebug_figoDbg                           {\
            UNSG32 ufigoDbg_on                                 :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32FigoDebug_figoDbg;
            struct w32FigoDebug_figoDbg;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgMode_mode(r32)             _BFGET_(r32, 1, 0)
    #define   SET32FigoDebug_figoDbgMode_mode(r32,v)           _BFSET_(r32, 1, 0,v)
    #define   GET16FigoDebug_figoDbgMode_mode(r16)             _BFGET_(r16, 1, 0)
    #define   SET16FigoDebug_figoDbgMode_mode(r16,v)           _BFSET_(r16, 1, 0,v)

    #define     w32FigoDebug_figoDbgMode                       {\
            UNSG32 ufigoDbgMode_mode                           :  2;\
            UNSG32 RSVDx4_b2                                   : 30;\
          }
    union { UNSG32 u32FigoDebug_figoDbgMode;
            struct w32FigoDebug_figoDbgMode;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgModeStatus_mode(r32)       _BFGET_(r32, 1, 0)
    #define   SET32FigoDebug_figoDbgModeStatus_mode(r32,v)     _BFSET_(r32, 1, 0,v)
    #define   GET16FigoDebug_figoDbgModeStatus_mode(r16)       _BFGET_(r16, 1, 0)
    #define   SET16FigoDebug_figoDbgModeStatus_mode(r16,v)     _BFSET_(r16, 1, 0,v)

    #define     w32FigoDebug_figoDbgModeStatus                 {\
            UNSG32 ufigoDbgModeStatus_mode                     :  2;\
            UNSG32 RSVDx8_b2                                   : 30;\
          }
    union { UNSG32 u32FigoDebug_figoDbgModeStatus;
            struct w32FigoDebug_figoDbgModeStatus;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgTrigInMask_on(r32)         _BFGET_(r32, 3, 0)
    #define   SET32FigoDebug_figoDbgTrigInMask_on(r32,v)       _BFSET_(r32, 3, 0,v)
    #define   GET16FigoDebug_figoDbgTrigInMask_on(r16)         _BFGET_(r16, 3, 0)
    #define   SET16FigoDebug_figoDbgTrigInMask_on(r16,v)       _BFSET_(r16, 3, 0,v)

    #define     w32FigoDebug_figoDbgTrigInMask                 {\
            UNSG32 ufigoDbgTrigInMask_on                       :  4;\
            UNSG32 RSVDxC_b4                                   : 28;\
          }
    union { UNSG32 u32FigoDebug_figoDbgTrigInMask;
            struct w32FigoDebug_figoDbgTrigInMask;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx10                                     [48];
    ///////////////////////////////////////////////////////////
              SIE_FigoMem16                                    ie_rf16[16];
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgRB_rb(r32)                 _BFGET_(r32,15, 0)
    #define   SET32FigoDebug_figoDbgRB_rb(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16FigoDebug_figoDbgRB_rb(r16)                 _BFGET_(r16,15, 0)
    #define   SET16FigoDebug_figoDbgRB_rb(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32FigoDebug_figoDbgRB                         {\
            UNSG32 ufigoDbgRB_rb                               : 16;\
            UNSG32 RSVDx80_b16                                 : 16;\
          }
    union { UNSG32 u32FigoDebug_figoDbgRB;
            struct w32FigoDebug_figoDbgRB;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgPCAtFetch_pc(r32)          _BFGET_(r32,15, 0)
    #define   SET32FigoDebug_figoDbgPCAtFetch_pc(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16FigoDebug_figoDbgPCAtFetch_pc(r16)          _BFGET_(r16,15, 0)
    #define   SET16FigoDebug_figoDbgPCAtFetch_pc(r16,v)        _BFSET_(r16,15, 0,v)

    #define     w32FigoDebug_figoDbgPCAtFetch                  {\
            UNSG32 ufigoDbgPCAtFetch_pc                        : 16;\
            UNSG32 RSVDx84_b16                                 : 16;\
          }
    union { UNSG32 u32FigoDebug_figoDbgPCAtFetch;
            struct w32FigoDebug_figoDbgPCAtFetch;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx88                                     [8];
    ///////////////////////////////////////////////////////////
              SIE_FigoMem32                                    ie_stack[4];
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgStackDepth_depth(r32)      _BFGET_(r32, 4, 0)
    #define   SET32FigoDebug_figoDbgStackDepth_depth(r32,v)    _BFSET_(r32, 4, 0,v)
    #define   GET16FigoDebug_figoDbgStackDepth_depth(r16)      _BFGET_(r16, 4, 0)
    #define   SET16FigoDebug_figoDbgStackDepth_depth(r16,v)    _BFSET_(r16, 4, 0,v)

    #define     w32FigoDebug_figoDbgStackDepth                 {\
            UNSG32 ufigoDbgStackDepth_depth                    :  5;\
            UNSG32 RSVDxA0_b5                                  : 27;\
          }
    union { UNSG32 u32FigoDebug_figoDbgStackDepth;
            struct w32FigoDebug_figoDbgStackDepth;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgFlags_flags(r32)           _BFGET_(r32,15, 0)
    #define   SET32FigoDebug_figoDbgFlags_flags(r32,v)         _BFSET_(r32,15, 0,v)
    #define   GET16FigoDebug_figoDbgFlags_flags(r16)           _BFGET_(r16,15, 0)
    #define   SET16FigoDebug_figoDbgFlags_flags(r16,v)         _BFSET_(r16,15, 0,v)

    #define     w32FigoDebug_figoDbgFlags                      {\
            UNSG32 ufigoDbgFlags_flags                         : 16;\
            UNSG32 RSVDxA4_b16                                 : 16;\
          }
    union { UNSG32 u32FigoDebug_figoDbgFlags;
            struct w32FigoDebug_figoDbgFlags;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgBreak_up(r32)              _BFGET_(r32, 0, 0)
    #define   SET32FigoDebug_figoDbgBreak_up(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16FigoDebug_figoDbgBreak_up(r16)              _BFGET_(r16, 0, 0)
    #define   SET16FigoDebug_figoDbgBreak_up(r16,v)            _BFSET_(r16, 0, 0,v)

    #define     w32FigoDebug_figoDbgBreak                      {\
            UNSG32 ufigoDbgBreak_up                            :  1;\
            UNSG32 RSVDxA8_b1                                  : 31;\
          }
    union { UNSG32 u32FigoDebug_figoDbgBreak;
            struct w32FigoDebug_figoDbgBreak;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgBkBitWen_en(r32)           _BFGET_(r32, 0, 0)
    #define   SET32FigoDebug_figoDbgBkBitWen_en(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16FigoDebug_figoDbgBkBitWen_en(r16)           _BFGET_(r16, 0, 0)
    #define   SET16FigoDebug_figoDbgBkBitWen_en(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32FigoDebug_figoDbgBkBitWen                   {\
            UNSG32 ufigoDbgBkBitWen_en                         :  1;\
            UNSG32 RSVDxAC_b1                                  : 31;\
          }
    union { UNSG32 u32FigoDebug_figoDbgBkBitWen;
            struct w32FigoDebug_figoDbgBkBitWen;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxB0                                     [16];
    ///////////////////////////////////////////////////////////
    } SIE_FigoDebug;

    typedef union  T32FigoDebug_figoDbg
          { UNSG32 u32;
            struct w32FigoDebug_figoDbg;
                 } T32FigoDebug_figoDbg;
    typedef union  T32FigoDebug_figoDbgMode
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgMode;
                 } T32FigoDebug_figoDbgMode;
    typedef union  T32FigoDebug_figoDbgModeStatus
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgModeStatus;
                 } T32FigoDebug_figoDbgModeStatus;
    typedef union  T32FigoDebug_figoDbgTrigInMask
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgTrigInMask;
                 } T32FigoDebug_figoDbgTrigInMask;
    typedef union  T32FigoDebug_figoDbgRB
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgRB;
                 } T32FigoDebug_figoDbgRB;
    typedef union  T32FigoDebug_figoDbgPCAtFetch
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgPCAtFetch;
                 } T32FigoDebug_figoDbgPCAtFetch;
    typedef union  T32FigoDebug_figoDbgStackDepth
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgStackDepth;
                 } T32FigoDebug_figoDbgStackDepth;
    typedef union  T32FigoDebug_figoDbgFlags
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgFlags;
                 } T32FigoDebug_figoDbgFlags;
    typedef union  T32FigoDebug_figoDbgBreak
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgBreak;
                 } T32FigoDebug_figoDbgBreak;
    typedef union  T32FigoDebug_figoDbgBkBitWen
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgBkBitWen;
                 } T32FigoDebug_figoDbgBkBitWen;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoDebug_figoDbg
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbg;
                   };
                 } TFigoDebug_figoDbg;
    typedef union  TFigoDebug_figoDbgMode
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgMode;
                   };
                 } TFigoDebug_figoDbgMode;
    typedef union  TFigoDebug_figoDbgModeStatus
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgModeStatus;
                   };
                 } TFigoDebug_figoDbgModeStatus;
    typedef union  TFigoDebug_figoDbgTrigInMask
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgTrigInMask;
                   };
                 } TFigoDebug_figoDbgTrigInMask;
    typedef union  TFigoDebug_figoDbgRB
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgRB;
                   };
                 } TFigoDebug_figoDbgRB;
    typedef union  TFigoDebug_figoDbgPCAtFetch
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgPCAtFetch;
                   };
                 } TFigoDebug_figoDbgPCAtFetch;
    typedef union  TFigoDebug_figoDbgStackDepth
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgStackDepth;
                   };
                 } TFigoDebug_figoDbgStackDepth;
    typedef union  TFigoDebug_figoDbgFlags
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgFlags;
                   };
                 } TFigoDebug_figoDbgFlags;
    typedef union  TFigoDebug_figoDbgBreak
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgBreak;
                   };
                 } TFigoDebug_figoDbgBreak;
    typedef union  TFigoDebug_figoDbgBkBitWen
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgBkBitWen;
                   };
                 } TFigoDebug_figoDbgBkBitWen;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoDebug_drvrd(SIE_FigoDebug *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoDebug_drvwr(SIE_FigoDebug *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoDebug_reset(SIE_FigoDebug *p);
     SIGN32 FigoDebug_cmp  (SIE_FigoDebug *p, SIE_FigoDebug *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoDebug_check(p,pie,pfx,hLOG) FigoDebug_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoDebug_print(p,    pfx,hLOG) FigoDebug_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoDebug
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoReg                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 figoCtrl             (P)
///               %unsigned 16 pcStartLoc                0x0
///               %unsigned 1  tBufMode                  0x0
///                                    : freeRun                   0x0
///                                                 ###
///                                                 * Trace buffer operating as ring buffer
///                                                 ###
///                                    : fifoMode                  0x1
///                                                 ###
///                                                 * Trace buffer operating as FIFO; FIGO stalls when full
///                                                 ###
///               %%        15         # Stuffing bits...
///     @ 0x00004 figoID               (R-)
///               ###
///               * Processor ID, unique for each FIGO
///               ###
///               %unsigned 16 ID                        0x0
///                                    ###
///                                    * Processor ID. Specified in FIGO baseline subsystem configuration file.
///                                    ###
///               %unsigned 16 REV                       0x0
///                                    ###
///                                    * Revision ID. Hard-coded in FIGO core RTL.
///                                    ###
///     @ 0x00008 figoMaxAdr           (P)
///               ###
///               * Max address for ITCM and DTCM, used to detect addr out-of-bound
///               ###
///               %unsigned 16 itcm                      0xFFFF
///               %unsigned 16 dtcm                      0xFFFF
///     @ 0x0000C figoFlags            (WOC-)
///               ###
///               * Exception flags; FIGO halts when unmasked exception happens; write one to clear
///               ###
///               %unsigned 1  itcmAdrOOB                0x0
///                                    ###
///                                    * ITCM address > figoMaxAdr.itcm
///                                    ###
///               %unsigned 1  dtcmAdrOOB                0x0
///                                    ###
///                                    * DTCM address > figoMaxAdr.dtcm
///                                    ###
///               %unsigned 1  divideBy0                 0x0
///                                    ###
///                                    * MDU divide by 0 detected
///                                    ###
///               %unsigned 1  traceBufFull              0x0
///                                    ###
///                                    * Trace buffer is full. Only valid when figoCtrl.tBufMode = fifoMode
///                                    ###
///               %unsigned 1  illegalIns                0x0
///                                    ###
///                                    * Illegal instruction detected at ID stage
///                                    ###
///               %unsigned 1  ALU64Overflow             0x0
///                                    ###
///                                    * One of the ALU64 extensions asserted a command push overflow.
///                                    ###
///               %unsigned 1  JTInvdPush                0x0
///                                    ###
///                                    * Detected a jump table push when it's already full.
///                                    ###
///               %%        25         # Stuffing bits...
///     @ 0x00010 figoFlagsMask        (P)
///               ###
///               * Mask bits for FIGO exception flags. Does not block exception flags from asserting, instead, it prevents FIGO from halting when the masked exception occurs.
///               ###
///               %unsigned 1  itcmAdrOOBMask            0x0
///               %unsigned 1  dtcmAdrOOBMask            0x0
///               %unsigned 1  divideBy0Mask             0x0
///               %unsigned 1  traceBufFullMask          0x0
///               %unsigned 1  illegalInsMask            0x0
///               %unsigned 1  ALU64OverflowMask         0x0
///               %unsigned 1  JTInvdPushMask            0x0
///               %%        25         # Stuffing bits...
///     @ 0x00014 figoLastPC           (R-)
///               ###
///               * Last PC value before exception occurred
///               ###
///               %unsigned 16 val                       0x0
///               %%        16         # Stuffing bits...
///     @ 0x00018 figoCurrPC           (R-)
///     # 0x00018 pc                   
///               $FigoReg16           pc                MEM          
///                                    ###
///                                    * Current PC value @ ID stage
///                                    ###
///     @ 0x0001C figoTraceBuf         (RW-)
///     # 0x0001C tbuf                 
///               $FigoTraceBuf        tbuf              MEM          
///                                    ###
///                                    * Register window for the trace buffer
///                                    ###
///     @ 0x00020 figoIntr             (W-)
///               ###
///               * Special register for FIGO to raise interrupt to CPU via vPro semaphore; write to raise interrupt; no status
///               ###
///               %unsigned 1  up                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00024 figoIntrLvl          (WOC-)
///               ###
///               * Special register to record that interrupt has occurred; to be used as level interrupt; cleared by writing 1
///               ###
///               %unsigned 1  st                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00028 figoRstn             (RW-)
///               ###
///               * Special register to stop / reset FIGO execution; write 1 to release FIGO, write 0 to reset FIGO (sticky)
///               ###
///               %unsigned 1  up                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x0002C figoCnt              (RW-)
///               ###
///               * Controls the FIGO counter behavior
///               ###
///               %unsigned 1  en                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00030 figoCntClr           (W-)
///               ###
///               * Clear FIGO counters; write 1 to clear specific counters
///               ###
///               %unsigned 1  run                       
///               %unsigned 1  stall                     
///               %%        30         # Stuffing bits...
///     @ 0x00034 figoRun              (R-)
///               %unsigned 32 Cnt                       0x0
///     @ 0x00038 figoStall            (R-)
///               %unsigned 32 Cnt                       0x0
///     @ 0x0003C                      (W-)
///     #         # Stuffing bytes...
///               %% 15904
///     @ 0x00800 ALU64                (P)
///     # 0x00800 alu64                
///               $ALU64               alu64             REG          
///                                    ###
///                                    * **DONT_EXPAND_BELOW**
///                                    * ALU64 extensions access via AHB
///                                    ###
///     @ 0x01800 FIGODBG              (P)
///     # 0x01800 debug                
///               $FigoDebug           debug             REG          
///                                    ###
///                                    * **DONT_EXPAND_BELOW**
///                                    * Debug mode related registers
///                                    ###
///     @ 0x018C0                      (W-)
///     #         # Stuffing bytes...
///               %% 14848
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    8192B, bits:     523b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoReg
#define h_FigoReg (){}

    #define     RA_FigoReg_figoCtrl                            0x0000

    #define     BA_FigoReg_figoCtrl_pcStartLoc                 0x0000
    #define     B16FigoReg_figoCtrl_pcStartLoc                 0x0000
    #define   LSb32FigoReg_figoCtrl_pcStartLoc                    0
    #define   LSb16FigoReg_figoCtrl_pcStartLoc                    0
    #define       bFigoReg_figoCtrl_pcStartLoc                 16
    #define   MSK32FigoReg_figoCtrl_pcStartLoc                    0x0000FFFF

    #define     BA_FigoReg_figoCtrl_tBufMode                   0x0002
    #define     B16FigoReg_figoCtrl_tBufMode                   0x0002
    #define   LSb32FigoReg_figoCtrl_tBufMode                      16
    #define   LSb16FigoReg_figoCtrl_tBufMode                      0
    #define       bFigoReg_figoCtrl_tBufMode                   1
    #define   MSK32FigoReg_figoCtrl_tBufMode                      0x00010000
    #define        FigoReg_figoCtrl_tBufMode_freeRun                        0x0
    #define        FigoReg_figoCtrl_tBufMode_fifoMode                       0x1
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoID                              0x0004

    #define     BA_FigoReg_figoID_ID                           0x0004
    #define     B16FigoReg_figoID_ID                           0x0004
    #define   LSb32FigoReg_figoID_ID                              0
    #define   LSb16FigoReg_figoID_ID                              0
    #define       bFigoReg_figoID_ID                           16
    #define   MSK32FigoReg_figoID_ID                              0x0000FFFF

    #define     BA_FigoReg_figoID_REV                          0x0006
    #define     B16FigoReg_figoID_REV                          0x0006
    #define   LSb32FigoReg_figoID_REV                             16
    #define   LSb16FigoReg_figoID_REV                             0
    #define       bFigoReg_figoID_REV                          16
    #define   MSK32FigoReg_figoID_REV                             0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoMaxAdr                          0x0008

    #define     BA_FigoReg_figoMaxAdr_itcm                     0x0008
    #define     B16FigoReg_figoMaxAdr_itcm                     0x0008
    #define   LSb32FigoReg_figoMaxAdr_itcm                        0
    #define   LSb16FigoReg_figoMaxAdr_itcm                        0
    #define       bFigoReg_figoMaxAdr_itcm                     16
    #define   MSK32FigoReg_figoMaxAdr_itcm                        0x0000FFFF

    #define     BA_FigoReg_figoMaxAdr_dtcm                     0x000A
    #define     B16FigoReg_figoMaxAdr_dtcm                     0x000A
    #define   LSb32FigoReg_figoMaxAdr_dtcm                        16
    #define   LSb16FigoReg_figoMaxAdr_dtcm                        0
    #define       bFigoReg_figoMaxAdr_dtcm                     16
    #define   MSK32FigoReg_figoMaxAdr_dtcm                        0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoFlags                           0x000C

    #define     BA_FigoReg_figoFlags_itcmAdrOOB                0x000C
    #define     B16FigoReg_figoFlags_itcmAdrOOB                0x000C
    #define   LSb32FigoReg_figoFlags_itcmAdrOOB                   0
    #define   LSb16FigoReg_figoFlags_itcmAdrOOB                   0
    #define       bFigoReg_figoFlags_itcmAdrOOB                1
    #define   MSK32FigoReg_figoFlags_itcmAdrOOB                   0x00000001

    #define     BA_FigoReg_figoFlags_dtcmAdrOOB                0x000C
    #define     B16FigoReg_figoFlags_dtcmAdrOOB                0x000C
    #define   LSb32FigoReg_figoFlags_dtcmAdrOOB                   1
    #define   LSb16FigoReg_figoFlags_dtcmAdrOOB                   1
    #define       bFigoReg_figoFlags_dtcmAdrOOB                1
    #define   MSK32FigoReg_figoFlags_dtcmAdrOOB                   0x00000002

    #define     BA_FigoReg_figoFlags_divideBy0                 0x000C
    #define     B16FigoReg_figoFlags_divideBy0                 0x000C
    #define   LSb32FigoReg_figoFlags_divideBy0                    2
    #define   LSb16FigoReg_figoFlags_divideBy0                    2
    #define       bFigoReg_figoFlags_divideBy0                 1
    #define   MSK32FigoReg_figoFlags_divideBy0                    0x00000004

    #define     BA_FigoReg_figoFlags_traceBufFull              0x000C
    #define     B16FigoReg_figoFlags_traceBufFull              0x000C
    #define   LSb32FigoReg_figoFlags_traceBufFull                 3
    #define   LSb16FigoReg_figoFlags_traceBufFull                 3
    #define       bFigoReg_figoFlags_traceBufFull              1
    #define   MSK32FigoReg_figoFlags_traceBufFull                 0x00000008

    #define     BA_FigoReg_figoFlags_illegalIns                0x000C
    #define     B16FigoReg_figoFlags_illegalIns                0x000C
    #define   LSb32FigoReg_figoFlags_illegalIns                   4
    #define   LSb16FigoReg_figoFlags_illegalIns                   4
    #define       bFigoReg_figoFlags_illegalIns                1
    #define   MSK32FigoReg_figoFlags_illegalIns                   0x00000010

    #define     BA_FigoReg_figoFlags_ALU64Overflow             0x000C
    #define     B16FigoReg_figoFlags_ALU64Overflow             0x000C
    #define   LSb32FigoReg_figoFlags_ALU64Overflow                5
    #define   LSb16FigoReg_figoFlags_ALU64Overflow                5
    #define       bFigoReg_figoFlags_ALU64Overflow             1
    #define   MSK32FigoReg_figoFlags_ALU64Overflow                0x00000020

    #define     BA_FigoReg_figoFlags_JTInvdPush                0x000C
    #define     B16FigoReg_figoFlags_JTInvdPush                0x000C
    #define   LSb32FigoReg_figoFlags_JTInvdPush                   6
    #define   LSb16FigoReg_figoFlags_JTInvdPush                   6
    #define       bFigoReg_figoFlags_JTInvdPush                1
    #define   MSK32FigoReg_figoFlags_JTInvdPush                   0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoFlagsMask                       0x0010

    #define     BA_FigoReg_figoFlagsMask_itcmAdrOOBMask        0x0010
    #define     B16FigoReg_figoFlagsMask_itcmAdrOOBMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_itcmAdrOOBMask           0
    #define   LSb16FigoReg_figoFlagsMask_itcmAdrOOBMask           0
    #define       bFigoReg_figoFlagsMask_itcmAdrOOBMask        1
    #define   MSK32FigoReg_figoFlagsMask_itcmAdrOOBMask           0x00000001

    #define     BA_FigoReg_figoFlagsMask_dtcmAdrOOBMask        0x0010
    #define     B16FigoReg_figoFlagsMask_dtcmAdrOOBMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_dtcmAdrOOBMask           1
    #define   LSb16FigoReg_figoFlagsMask_dtcmAdrOOBMask           1
    #define       bFigoReg_figoFlagsMask_dtcmAdrOOBMask        1
    #define   MSK32FigoReg_figoFlagsMask_dtcmAdrOOBMask           0x00000002

    #define     BA_FigoReg_figoFlagsMask_divideBy0Mask         0x0010
    #define     B16FigoReg_figoFlagsMask_divideBy0Mask         0x0010
    #define   LSb32FigoReg_figoFlagsMask_divideBy0Mask            2
    #define   LSb16FigoReg_figoFlagsMask_divideBy0Mask            2
    #define       bFigoReg_figoFlagsMask_divideBy0Mask         1
    #define   MSK32FigoReg_figoFlagsMask_divideBy0Mask            0x00000004

    #define     BA_FigoReg_figoFlagsMask_traceBufFullMask      0x0010
    #define     B16FigoReg_figoFlagsMask_traceBufFullMask      0x0010
    #define   LSb32FigoReg_figoFlagsMask_traceBufFullMask         3
    #define   LSb16FigoReg_figoFlagsMask_traceBufFullMask         3
    #define       bFigoReg_figoFlagsMask_traceBufFullMask      1
    #define   MSK32FigoReg_figoFlagsMask_traceBufFullMask         0x00000008

    #define     BA_FigoReg_figoFlagsMask_illegalInsMask        0x0010
    #define     B16FigoReg_figoFlagsMask_illegalInsMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_illegalInsMask           4
    #define   LSb16FigoReg_figoFlagsMask_illegalInsMask           4
    #define       bFigoReg_figoFlagsMask_illegalInsMask        1
    #define   MSK32FigoReg_figoFlagsMask_illegalInsMask           0x00000010

    #define     BA_FigoReg_figoFlagsMask_ALU64OverflowMask     0x0010
    #define     B16FigoReg_figoFlagsMask_ALU64OverflowMask     0x0010
    #define   LSb32FigoReg_figoFlagsMask_ALU64OverflowMask        5
    #define   LSb16FigoReg_figoFlagsMask_ALU64OverflowMask        5
    #define       bFigoReg_figoFlagsMask_ALU64OverflowMask     1
    #define   MSK32FigoReg_figoFlagsMask_ALU64OverflowMask        0x00000020

    #define     BA_FigoReg_figoFlagsMask_JTInvdPushMask        0x0010
    #define     B16FigoReg_figoFlagsMask_JTInvdPushMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_JTInvdPushMask           6
    #define   LSb16FigoReg_figoFlagsMask_JTInvdPushMask           6
    #define       bFigoReg_figoFlagsMask_JTInvdPushMask        1
    #define   MSK32FigoReg_figoFlagsMask_JTInvdPushMask           0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoLastPC                          0x0014

    #define     BA_FigoReg_figoLastPC_val                      0x0014
    #define     B16FigoReg_figoLastPC_val                      0x0014
    #define   LSb32FigoReg_figoLastPC_val                         0
    #define   LSb16FigoReg_figoLastPC_val                         0
    #define       bFigoReg_figoLastPC_val                      16
    #define   MSK32FigoReg_figoLastPC_val                         0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoCurrPC                          0x0018
    #define     RA_FigoReg_pc                                  0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoTraceBuf                        0x001C
    #define     RA_FigoReg_tbuf                                0x001C
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoIntr                            0x0020

    #define     BA_FigoReg_figoIntr_up                         0x0020
    #define     B16FigoReg_figoIntr_up                         0x0020
    #define   LSb32FigoReg_figoIntr_up                            0
    #define   LSb16FigoReg_figoIntr_up                            0
    #define       bFigoReg_figoIntr_up                         1
    #define   MSK32FigoReg_figoIntr_up                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoIntrLvl                         0x0024

    #define     BA_FigoReg_figoIntrLvl_st                      0x0024
    #define     B16FigoReg_figoIntrLvl_st                      0x0024
    #define   LSb32FigoReg_figoIntrLvl_st                         0
    #define   LSb16FigoReg_figoIntrLvl_st                         0
    #define       bFigoReg_figoIntrLvl_st                      1
    #define   MSK32FigoReg_figoIntrLvl_st                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoRstn                            0x0028

    #define     BA_FigoReg_figoRstn_up                         0x0028
    #define     B16FigoReg_figoRstn_up                         0x0028
    #define   LSb32FigoReg_figoRstn_up                            0
    #define   LSb16FigoReg_figoRstn_up                            0
    #define       bFigoReg_figoRstn_up                         1
    #define   MSK32FigoReg_figoRstn_up                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoCnt                             0x002C

    #define     BA_FigoReg_figoCnt_en                          0x002C
    #define     B16FigoReg_figoCnt_en                          0x002C
    #define   LSb32FigoReg_figoCnt_en                             0
    #define   LSb16FigoReg_figoCnt_en                             0
    #define       bFigoReg_figoCnt_en                          1
    #define   MSK32FigoReg_figoCnt_en                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoCntClr                          0x0030

    #define     BA_FigoReg_figoCntClr_run                      0x0030
    #define     B16FigoReg_figoCntClr_run                      0x0030
    #define   LSb32FigoReg_figoCntClr_run                         0
    #define   LSb16FigoReg_figoCntClr_run                         0
    #define       bFigoReg_figoCntClr_run                      1
    #define   MSK32FigoReg_figoCntClr_run                         0x00000001

    #define     BA_FigoReg_figoCntClr_stall                    0x0030
    #define     B16FigoReg_figoCntClr_stall                    0x0030
    #define   LSb32FigoReg_figoCntClr_stall                       1
    #define   LSb16FigoReg_figoCntClr_stall                       1
    #define       bFigoReg_figoCntClr_stall                    1
    #define   MSK32FigoReg_figoCntClr_stall                       0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoRun                             0x0034

    #define     BA_FigoReg_figoRun_Cnt                         0x0034
    #define     B16FigoReg_figoRun_Cnt                         0x0034
    #define   LSb32FigoReg_figoRun_Cnt                            0
    #define   LSb16FigoReg_figoRun_Cnt                            0
    #define       bFigoReg_figoRun_Cnt                         32
    #define   MSK32FigoReg_figoRun_Cnt                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoStall                           0x0038

    #define     BA_FigoReg_figoStall_Cnt                       0x0038
    #define     B16FigoReg_figoStall_Cnt                       0x0038
    #define   LSb32FigoReg_figoStall_Cnt                          0
    #define   LSb16FigoReg_figoStall_Cnt                          0
    #define       bFigoReg_figoStall_Cnt                       32
    #define   MSK32FigoReg_figoStall_Cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_ALU64                               0x0800
    #define     RA_FigoReg_alu64                               0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_FIGODBG                             0x1800
    #define     RA_FigoReg_debug                               0x1800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoReg {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoCtrl_pcStartLoc(r32)            _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoCtrl_pcStartLoc(r32,v)          _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoCtrl_pcStartLoc(r16)            _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoCtrl_pcStartLoc(r16,v)          _BFSET_(r16,15, 0,v)

    #define   GET32FigoReg_figoCtrl_tBufMode(r32)              _BFGET_(r32,16,16)
    #define   SET32FigoReg_figoCtrl_tBufMode(r32,v)            _BFSET_(r32,16,16,v)
    #define   GET16FigoReg_figoCtrl_tBufMode(r16)              _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoCtrl_tBufMode(r16,v)            _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoCtrl                            {\
            UNSG32 ufigoCtrl_pcStartLoc                        : 16;\
            UNSG32 ufigoCtrl_tBufMode                          :  1;\
            UNSG32 RSVDx0_b17                                  : 15;\
          }
    union { UNSG32 u32FigoReg_figoCtrl;
            struct w32FigoReg_figoCtrl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoID_ID(r32)                      _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoID_ID(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoID_ID(r16)                      _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoID_ID(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32FigoReg_figoID_REV(r32)                     _BFGET_(r32,31,16)
    #define   SET32FigoReg_figoID_REV(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16FigoReg_figoID_REV(r16)                     _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoID_REV(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32FigoReg_figoID                              {\
            UNSG32 ufigoID_ID                                  : 16;\
            UNSG32 ufigoID_REV                                 : 16;\
          }
    union { UNSG32 u32FigoReg_figoID;
            struct w32FigoReg_figoID;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoMaxAdr_itcm(r32)                _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoMaxAdr_itcm(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoMaxAdr_itcm(r16)                _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoMaxAdr_itcm(r16,v)              _BFSET_(r16,15, 0,v)

    #define   GET32FigoReg_figoMaxAdr_dtcm(r32)                _BFGET_(r32,31,16)
    #define   SET32FigoReg_figoMaxAdr_dtcm(r32,v)              _BFSET_(r32,31,16,v)
    #define   GET16FigoReg_figoMaxAdr_dtcm(r16)                _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoMaxAdr_dtcm(r16,v)              _BFSET_(r16,15, 0,v)

    #define     w32FigoReg_figoMaxAdr                          {\
            UNSG32 ufigoMaxAdr_itcm                            : 16;\
            UNSG32 ufigoMaxAdr_dtcm                            : 16;\
          }
    union { UNSG32 u32FigoReg_figoMaxAdr;
            struct w32FigoReg_figoMaxAdr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoFlags_itcmAdrOOB(r32)           _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoFlags_itcmAdrOOB(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoFlags_itcmAdrOOB(r16)           _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoFlags_itcmAdrOOB(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32FigoReg_figoFlags_dtcmAdrOOB(r32)           _BFGET_(r32, 1, 1)
    #define   SET32FigoReg_figoFlags_dtcmAdrOOB(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16FigoReg_figoFlags_dtcmAdrOOB(r16)           _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoFlags_dtcmAdrOOB(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32FigoReg_figoFlags_divideBy0(r32)            _BFGET_(r32, 2, 2)
    #define   SET32FigoReg_figoFlags_divideBy0(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16FigoReg_figoFlags_divideBy0(r16)            _BFGET_(r16, 2, 2)
    #define   SET16FigoReg_figoFlags_divideBy0(r16,v)          _BFSET_(r16, 2, 2,v)

    #define   GET32FigoReg_figoFlags_traceBufFull(r32)         _BFGET_(r32, 3, 3)
    #define   SET32FigoReg_figoFlags_traceBufFull(r32,v)       _BFSET_(r32, 3, 3,v)
    #define   GET16FigoReg_figoFlags_traceBufFull(r16)         _BFGET_(r16, 3, 3)
    #define   SET16FigoReg_figoFlags_traceBufFull(r16,v)       _BFSET_(r16, 3, 3,v)

    #define   GET32FigoReg_figoFlags_illegalIns(r32)           _BFGET_(r32, 4, 4)
    #define   SET32FigoReg_figoFlags_illegalIns(r32,v)         _BFSET_(r32, 4, 4,v)
    #define   GET16FigoReg_figoFlags_illegalIns(r16)           _BFGET_(r16, 4, 4)
    #define   SET16FigoReg_figoFlags_illegalIns(r16,v)         _BFSET_(r16, 4, 4,v)

    #define   GET32FigoReg_figoFlags_ALU64Overflow(r32)        _BFGET_(r32, 5, 5)
    #define   SET32FigoReg_figoFlags_ALU64Overflow(r32,v)      _BFSET_(r32, 5, 5,v)
    #define   GET16FigoReg_figoFlags_ALU64Overflow(r16)        _BFGET_(r16, 5, 5)
    #define   SET16FigoReg_figoFlags_ALU64Overflow(r16,v)      _BFSET_(r16, 5, 5,v)

    #define   GET32FigoReg_figoFlags_JTInvdPush(r32)           _BFGET_(r32, 6, 6)
    #define   SET32FigoReg_figoFlags_JTInvdPush(r32,v)         _BFSET_(r32, 6, 6,v)
    #define   GET16FigoReg_figoFlags_JTInvdPush(r16)           _BFGET_(r16, 6, 6)
    #define   SET16FigoReg_figoFlags_JTInvdPush(r16,v)         _BFSET_(r16, 6, 6,v)

    #define     w32FigoReg_figoFlags                           {\
            UNSG32 ufigoFlags_itcmAdrOOB                       :  1;\
            UNSG32 ufigoFlags_dtcmAdrOOB                       :  1;\
            UNSG32 ufigoFlags_divideBy0                        :  1;\
            UNSG32 ufigoFlags_traceBufFull                     :  1;\
            UNSG32 ufigoFlags_illegalIns                       :  1;\
            UNSG32 ufigoFlags_ALU64Overflow                    :  1;\
            UNSG32 ufigoFlags_JTInvdPush                       :  1;\
            UNSG32 RSVDxC_b7                                   : 25;\
          }
    union { UNSG32 u32FigoReg_figoFlags;
            struct w32FigoReg_figoFlags;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoFlagsMask_itcmAdrOOBMask(r32)   _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoFlagsMask_itcmAdrOOBMask(r32,v) _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoFlagsMask_itcmAdrOOBMask(r16)   _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoFlagsMask_itcmAdrOOBMask(r16,v) _BFSET_(r16, 0, 0,v)

    #define   GET32FigoReg_figoFlagsMask_dtcmAdrOOBMask(r32)   _BFGET_(r32, 1, 1)
    #define   SET32FigoReg_figoFlagsMask_dtcmAdrOOBMask(r32,v) _BFSET_(r32, 1, 1,v)
    #define   GET16FigoReg_figoFlagsMask_dtcmAdrOOBMask(r16)   _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoFlagsMask_dtcmAdrOOBMask(r16,v) _BFSET_(r16, 1, 1,v)

    #define   GET32FigoReg_figoFlagsMask_divideBy0Mask(r32)    _BFGET_(r32, 2, 2)
    #define   SET32FigoReg_figoFlagsMask_divideBy0Mask(r32,v)  _BFSET_(r32, 2, 2,v)
    #define   GET16FigoReg_figoFlagsMask_divideBy0Mask(r16)    _BFGET_(r16, 2, 2)
    #define   SET16FigoReg_figoFlagsMask_divideBy0Mask(r16,v)  _BFSET_(r16, 2, 2,v)

    #define   GET32FigoReg_figoFlagsMask_traceBufFullMask(r32) _BFGET_(r32, 3, 3)
    #define   SET32FigoReg_figoFlagsMask_traceBufFullMask(r32,v) _BFSET_(r32, 3, 3,v)
    #define   GET16FigoReg_figoFlagsMask_traceBufFullMask(r16) _BFGET_(r16, 3, 3)
    #define   SET16FigoReg_figoFlagsMask_traceBufFullMask(r16,v) _BFSET_(r16, 3, 3,v)

    #define   GET32FigoReg_figoFlagsMask_illegalInsMask(r32)   _BFGET_(r32, 4, 4)
    #define   SET32FigoReg_figoFlagsMask_illegalInsMask(r32,v) _BFSET_(r32, 4, 4,v)
    #define   GET16FigoReg_figoFlagsMask_illegalInsMask(r16)   _BFGET_(r16, 4, 4)
    #define   SET16FigoReg_figoFlagsMask_illegalInsMask(r16,v) _BFSET_(r16, 4, 4,v)

    #define   GET32FigoReg_figoFlagsMask_ALU64OverflowMask(r32) _BFGET_(r32, 5, 5)
    #define   SET32FigoReg_figoFlagsMask_ALU64OverflowMask(r32,v) _BFSET_(r32, 5, 5,v)
    #define   GET16FigoReg_figoFlagsMask_ALU64OverflowMask(r16) _BFGET_(r16, 5, 5)
    #define   SET16FigoReg_figoFlagsMask_ALU64OverflowMask(r16,v) _BFSET_(r16, 5, 5,v)

    #define   GET32FigoReg_figoFlagsMask_JTInvdPushMask(r32)   _BFGET_(r32, 6, 6)
    #define   SET32FigoReg_figoFlagsMask_JTInvdPushMask(r32,v) _BFSET_(r32, 6, 6,v)
    #define   GET16FigoReg_figoFlagsMask_JTInvdPushMask(r16)   _BFGET_(r16, 6, 6)
    #define   SET16FigoReg_figoFlagsMask_JTInvdPushMask(r16,v) _BFSET_(r16, 6, 6,v)

    #define     w32FigoReg_figoFlagsMask                       {\
            UNSG32 ufigoFlagsMask_itcmAdrOOBMask               :  1;\
            UNSG32 ufigoFlagsMask_dtcmAdrOOBMask               :  1;\
            UNSG32 ufigoFlagsMask_divideBy0Mask                :  1;\
            UNSG32 ufigoFlagsMask_traceBufFullMask             :  1;\
            UNSG32 ufigoFlagsMask_illegalInsMask               :  1;\
            UNSG32 ufigoFlagsMask_ALU64OverflowMask            :  1;\
            UNSG32 ufigoFlagsMask_JTInvdPushMask               :  1;\
            UNSG32 RSVDx10_b7                                  : 25;\
          }
    union { UNSG32 u32FigoReg_figoFlagsMask;
            struct w32FigoReg_figoFlagsMask;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoLastPC_val(r32)                 _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoLastPC_val(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoLastPC_val(r16)                 _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoLastPC_val(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32FigoReg_figoLastPC                          {\
            UNSG32 ufigoLastPC_val                             : 16;\
            UNSG32 RSVDx14_b16                                 : 16;\
          }
    union { UNSG32 u32FigoReg_figoLastPC;
            struct w32FigoReg_figoLastPC;
          };
    ///////////////////////////////////////////////////////////
              SIE_FigoReg16                                    ie_pc;
    ///////////////////////////////////////////////////////////
              SIE_FigoTraceBuf                                 ie_tbuf;
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoIntr_up(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoIntr_up(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoIntr_up(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoIntr_up(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoIntr                            {\
            UNSG32 ufigoIntr_up                                :  1;\
            UNSG32 RSVDx20_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoIntr;
            struct w32FigoReg_figoIntr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoIntrLvl_st(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoIntrLvl_st(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoIntrLvl_st(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoIntrLvl_st(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoIntrLvl                         {\
            UNSG32 ufigoIntrLvl_st                             :  1;\
            UNSG32 RSVDx24_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoIntrLvl;
            struct w32FigoReg_figoIntrLvl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoRstn_up(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoRstn_up(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoRstn_up(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoRstn_up(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoRstn                            {\
            UNSG32 ufigoRstn_up                                :  1;\
            UNSG32 RSVDx28_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoRstn;
            struct w32FigoReg_figoRstn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoCnt_en(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoCnt_en(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoCnt_en(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoCnt_en(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoCnt                             {\
            UNSG32 ufigoCnt_en                                 :  1;\
            UNSG32 RSVDx2C_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoCnt;
            struct w32FigoReg_figoCnt;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoCntClr_run(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoCntClr_run(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoCntClr_run(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoCntClr_run(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32FigoReg_figoCntClr_stall(r32)               _BFGET_(r32, 1, 1)
    #define   SET32FigoReg_figoCntClr_stall(r32,v)             _BFSET_(r32, 1, 1,v)
    #define   GET16FigoReg_figoCntClr_stall(r16)               _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoCntClr_stall(r16,v)             _BFSET_(r16, 1, 1,v)

    #define     w32FigoReg_figoCntClr                          {\
            UNSG32 ufigoCntClr_run                             :  1;\
            UNSG32 ufigoCntClr_stall                           :  1;\
            UNSG32 RSVDx30_b2                                  : 30;\
          }
    union { UNSG32 u32FigoReg_figoCntClr;
            struct w32FigoReg_figoCntClr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoRun_Cnt(r32)                    _BFGET_(r32,31, 0)
    #define   SET32FigoReg_figoRun_Cnt(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32FigoReg_figoRun                             {\
            UNSG32 ufigoRun_Cnt                                : 32;\
          }
    union { UNSG32 u32FigoReg_figoRun;
            struct w32FigoReg_figoRun;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoStall_Cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32FigoReg_figoStall_Cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32FigoReg_figoStall                           {\
            UNSG32 ufigoStall_Cnt                              : 32;\
          }
    union { UNSG32 u32FigoReg_figoStall;
            struct w32FigoReg_figoStall;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx3C                                     [1988];
    ///////////////////////////////////////////////////////////
              SIE_ALU64                                        ie_alu64;
    ///////////////////////////////////////////////////////////
              SIE_FigoDebug                                    ie_debug;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx18C0                                   [1856];
    ///////////////////////////////////////////////////////////
    } SIE_FigoReg;

    typedef union  T32FigoReg_figoCtrl
          { UNSG32 u32;
            struct w32FigoReg_figoCtrl;
                 } T32FigoReg_figoCtrl;
    typedef union  T32FigoReg_figoID
          { UNSG32 u32;
            struct w32FigoReg_figoID;
                 } T32FigoReg_figoID;
    typedef union  T32FigoReg_figoMaxAdr
          { UNSG32 u32;
            struct w32FigoReg_figoMaxAdr;
                 } T32FigoReg_figoMaxAdr;
    typedef union  T32FigoReg_figoFlags
          { UNSG32 u32;
            struct w32FigoReg_figoFlags;
                 } T32FigoReg_figoFlags;
    typedef union  T32FigoReg_figoFlagsMask
          { UNSG32 u32;
            struct w32FigoReg_figoFlagsMask;
                 } T32FigoReg_figoFlagsMask;
    typedef union  T32FigoReg_figoLastPC
          { UNSG32 u32;
            struct w32FigoReg_figoLastPC;
                 } T32FigoReg_figoLastPC;
    typedef union  T32FigoReg_figoIntr
          { UNSG32 u32;
            struct w32FigoReg_figoIntr;
                 } T32FigoReg_figoIntr;
    typedef union  T32FigoReg_figoIntrLvl
          { UNSG32 u32;
            struct w32FigoReg_figoIntrLvl;
                 } T32FigoReg_figoIntrLvl;
    typedef union  T32FigoReg_figoRstn
          { UNSG32 u32;
            struct w32FigoReg_figoRstn;
                 } T32FigoReg_figoRstn;
    typedef union  T32FigoReg_figoCnt
          { UNSG32 u32;
            struct w32FigoReg_figoCnt;
                 } T32FigoReg_figoCnt;
    typedef union  T32FigoReg_figoCntClr
          { UNSG32 u32;
            struct w32FigoReg_figoCntClr;
                 } T32FigoReg_figoCntClr;
    typedef union  T32FigoReg_figoRun
          { UNSG32 u32;
            struct w32FigoReg_figoRun;
                 } T32FigoReg_figoRun;
    typedef union  T32FigoReg_figoStall
          { UNSG32 u32;
            struct w32FigoReg_figoStall;
                 } T32FigoReg_figoStall;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoReg_figoCtrl
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoCtrl;
                   };
                 } TFigoReg_figoCtrl;
    typedef union  TFigoReg_figoID
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoID;
                   };
                 } TFigoReg_figoID;
    typedef union  TFigoReg_figoMaxAdr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoMaxAdr;
                   };
                 } TFigoReg_figoMaxAdr;
    typedef union  TFigoReg_figoFlags
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoFlags;
                   };
                 } TFigoReg_figoFlags;
    typedef union  TFigoReg_figoFlagsMask
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoFlagsMask;
                   };
                 } TFigoReg_figoFlagsMask;
    typedef union  TFigoReg_figoLastPC
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoLastPC;
                   };
                 } TFigoReg_figoLastPC;
    typedef union  TFigoReg_figoIntr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoIntr;
                   };
                 } TFigoReg_figoIntr;
    typedef union  TFigoReg_figoIntrLvl
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoIntrLvl;
                   };
                 } TFigoReg_figoIntrLvl;
    typedef union  TFigoReg_figoRstn
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoRstn;
                   };
                 } TFigoReg_figoRstn;
    typedef union  TFigoReg_figoCnt
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoCnt;
                   };
                 } TFigoReg_figoCnt;
    typedef union  TFigoReg_figoCntClr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoCntClr;
                   };
                 } TFigoReg_figoCntClr;
    typedef union  TFigoReg_figoRun
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoRun;
                   };
                 } TFigoReg_figoRun;
    typedef union  TFigoReg_figoStall
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoStall;
                   };
                 } TFigoReg_figoStall;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoReg_drvrd(SIE_FigoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoReg_drvwr(SIE_FigoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoReg_reset(SIE_FigoReg *p);
     SIGN32 FigoReg_cmp  (SIE_FigoReg *p, SIE_FigoReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoReg_check(p,pie,pfx,hLOG) FigoReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoReg_print(p,    pfx,hLOG) FigoReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoInst                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (RW)
///               ###
///               * Instruction opcode, 24-bit word
///               ###
///               %unsigned 24 opcode                    0x0
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      24b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoInst
#define h_FigoInst (){}

    #define     BA_FigoInst_opcode                             0x0000
    #define     B16FigoInst_opcode                             0x0000
    #define   LSb32FigoInst_opcode                                0
    #define   LSb16FigoInst_opcode                                0
    #define       bFigoInst_opcode                             24
    #define   MSK32FigoInst_opcode                                0x00FFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoInst {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoInst_opcode(r32)                        _BFGET_(r32,23, 0)
    #define   SET32FigoInst_opcode(r32,v)                      _BFSET_(r32,23, 0,v)

            UNSG32 u_opcode                                    : 24;
            UNSG32 RSVDx0_b24                                  :  8;
    ///////////////////////////////////////////////////////////
    } SIE_FigoInst;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoInst_drvrd(SIE_FigoInst *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoInst_drvwr(SIE_FigoInst *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoInst_reset(SIE_FigoInst *p);
     SIGN32 FigoInst_cmp  (SIE_FigoInst *p, SIE_FigoInst *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoInst_check(p,pie,pfx,hLOG) FigoInst_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoInst_print(p,    pfx,hLOG) FigoInst_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoInst
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ITCM                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 figoItcm             (P)
///     # 0x00000 inst                 
///               $FigoInst            inst              REG    [2048]
///                                    ###
///                                    * Instruction memory, 8K word each maximum
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    8192B, bits:   49152b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ITCM
#define h_ITCM (){}

    #define     RA_ITCM_figoItcm                               0x0000
    #define     RA_ITCM_inst                                   0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ITCM {
    ///////////////////////////////////////////////////////////
              SIE_FigoInst                                     ie_inst[2048];
    ///////////////////////////////////////////////////////////
    } SIE_ITCM;

    ///////////////////////////////////////////////////////////
     SIGN32 ITCM_drvrd(SIE_ITCM *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ITCM_drvwr(SIE_ITCM *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ITCM_reset(SIE_ITCM *p);
     SIGN32 ITCM_cmp  (SIE_ITCM *p, SIE_ITCM *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ITCM_check(p,pie,pfx,hLOG) ITCM_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ITCM_print(p,    pfx,hLOG) ITCM_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ITCM
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoData                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (RW)
///               ###
///               * 32-bit data
///               ###
///               %unsigned 32 data_0i                   
///               %unsigned 32 data_1i                   
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoData
#define h_FigoData (){}

    #define     BA_FigoData_data_0i                            0x0000
    #define     B16FigoData_data_0i                            0x0000
    #define   LSb32FigoData_data_0i                               0
    #define   LSb16FigoData_data_0i                               0
    #define       bFigoData_data_0i                            32
    #define   MSK32FigoData_data_0i                               0xFFFFFFFF

    #define     BA_FigoData_data_1i                            0x0004
    #define     B16FigoData_data_1i                            0x0004
    #define   LSb32FigoData_data_1i                               0
    #define   LSb16FigoData_data_1i                               0
    #define       bFigoData_data_1i                            32
    #define   MSK32FigoData_data_1i                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoData {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoData_data_0i(r32)                       _BFGET_(r32,31, 0)
    #define   SET32FigoData_data_0i(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_data_0i                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32FigoData_data_1i(r32)                       _BFGET_(r32,31, 0)
    #define   SET32FigoData_data_1i(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_data_1i                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_FigoData;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoData_drvrd(SIE_FigoData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoData_drvwr(SIE_FigoData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoData_reset(SIE_FigoData *p);
     SIGN32 FigoData_cmp  (SIE_FigoData *p, SIE_FigoData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoData_check(p,pie,pfx,hLOG) FigoData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoData_print(p,    pfx,hLOG) FigoData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoSys                 biu              (4,4)
///     ###
///     * FigoSys registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 HBO0                 (P)
///     # 0x00000 hbo0                 
///               $HBO                 hbo0              REG          
///                                    ###
///                                    * **DONT_EXPAND_BELOW** HBO IP
///                                    ###
///     @ 0x00700 HBO1                 (P)
///     # 0x00700 hbo1                 
///               $HBO                 hbo1              REG          
///                                    ###
///                                    * **DONT_EXPAND_BELOW** HBO IP
///                                    ###
///     @ 0x00E00                      (W-)
///     #         # Stuffing bytes...
///               %% 4096
///     @ 0x01000 FIGO0                (P)
///     # 0x01000 figo0                
///               $FigoReg             figo0             REG          
///     @ 0x03000 FIGO1                (P)
///     # 0x03000 figo1                
///               $FigoReg             figo1             REG          
///     @ 0x05000 DS                   (P)
///     # 0x05000 ds                   
///               $DataStreamer        ds                REG          
///     @ 0x05024                      (W-)
///     #         # Stuffing bytes...
///               %% 16096
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   22528B, bits:    5018b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoSys
#define h_FigoSys (){}

    #define     RA_FigoSys_HBO0                                0x0000
    #define     RA_FigoSys_hbo0                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_HBO1                                0x0700
    #define     RA_FigoSys_hbo1                                0x0700
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_FIGO0                               0x1000
    #define     RA_FigoSys_figo0                               0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_FIGO1                               0x3000
    #define     RA_FigoSys_figo1                               0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_DS                                  0x5000
    #define     RA_FigoSys_ds                                  0x5000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoSys {
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo0;
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo1;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE00                                    [512];
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo0;
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo1;
    ///////////////////////////////////////////////////////////
              SIE_DataStreamer                                 ie_ds;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx5024                                   [2012];
    ///////////////////////////////////////////////////////////
    } SIE_FigoSys;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoSys_drvrd(SIE_FigoSys *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoSys_drvwr(SIE_FigoSys *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoSys_reset(SIE_FigoSys *p);
     SIGN32 FigoSys_cmp  (SIE_FigoSys *p, SIE_FigoSys *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoSys_check(p,pie,pfx,hLOG) FigoSys_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoSys_print(p,    pfx,hLOG) FigoSys_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoSys
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoSysBasic            biu              (4,4)
///     ###
///     * FigoSys registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 HBO0                 (P)
///     # 0x00000 hbo0                 
///               $HBO                 hbo0              REG          
///     @ 0x00700                      (W-)
///     #         # Stuffing bytes...
///               %% 2048
///     @ 0x00800 FIGO0                (P)
///     # 0x00800 figo0                
///               $FigoReg             figo0             REG          
///     @ 0x02800 DS                   (P)
///     # 0x02800 ds                   
///               $DataStreamer        ds                REG          
///     @ 0x02824                      (W-)
///     #         # Stuffing bytes...
///               %% 16096
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   12288B, bits:    2575b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoSysBasic
#define h_FigoSysBasic (){}

    #define     RA_FigoSysBasic_HBO0                           0x0000
    #define     RA_FigoSysBasic_hbo0                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSysBasic_FIGO0                          0x0800
    #define     RA_FigoSysBasic_figo0                          0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSysBasic_DS                             0x2800
    #define     RA_FigoSysBasic_ds                             0x2800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoSysBasic {
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo0;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx700                                    [256];
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo0;
    ///////////////////////////////////////////////////////////
              SIE_DataStreamer                                 ie_ds;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2824                                   [2012];
    ///////////////////////////////////////////////////////////
    } SIE_FigoSysBasic;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoSysBasic_drvrd(SIE_FigoSysBasic *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoSysBasic_drvwr(SIE_FigoSysBasic *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoSysBasic_reset(SIE_FigoSysBasic *p);
     SIGN32 FigoSysBasic_cmp  (SIE_FigoSysBasic *p, SIE_FigoSysBasic *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoSysBasic_check(p,pie,pfx,hLOG) FigoSysBasic_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoSysBasic_print(p,    pfx,hLOG) FigoSysBasic_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoSysBasic
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspTsiReg               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 global               (P)
///               %unsigned 1  reset                     0x1
///                                    ###
///                                    * 1: reset the TSI
///                                    * 0: normal operation
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00004 tso_to_tsi           (P)
///               %unsigned 1  loop_back_mode            0x0
///                                    ###
///                                    * 1: capture data from TSO
///                                    * 0: capture data from TSI input ports
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 packet_format        (P)
///               %unsigned 8  input_size                0xBC
///                                    ###
///                                    * Size (in byte) of the packet from the TS input ports
///                                    * 0 is mapped to 256
///                                    ###
///               %unsigned 8  captured_offset           0x0
///                                    ###
///                                    * Number of bytes before the first byte to be captured in the input packet
///                                    ###
///               %unsigned 8  captured_size             0xBC
///                                    ###
///                                    * Size (in byte) of the packet body to be captured in the input packet;
///                                    * Valid range is 1~248
///                                    ###
///               %unsigned 8  output_size               0xC8
///                                    ###
///                                    * Size (in byte) of the packet written into the TS packet FIFO; including the 8-byte TSI command at the tail
///                                    * This number must be a multiple of 8.
///                                    * 0 is mapped to 256
///                                    * input_size must be no less than the sum of captured_offset and captured_size.
///                                    * output_size must be no less than captured_size plus 8.
///                                    * Hardware may behave unpredictably if the setting violates these rules.
///                                    ###
///     @ 0x0000C port_ctrl            (P)
///               %unsigned 1  serial_mode               0x0
///                                    ###
///                                    * 1: TS input works in serial mode.
///                                    * 0: TS input works in 8-bit parallel mode.
///                                    ###
///               %unsigned 1  serial_pin_select         0x0
///                                    ###
///                                    * 1: In serial mode, use tsiData[7] as data pins
///                                    * 0: In serial mode, use tsiData[0] as data pins
///                                    ###
///               %unsigned 1  lsb_first                 0x0
///                                    ###
///                                    * 0: In serial mode, MSB of a byte comes in first
///                                    * 1: In serial mode, LSB of a byte comes in first
///                                    * Valid only when serial_mode is one.
///                                    ###
///               %unsigned 1  ignore_ts_valid           0x0
///                                    ###
///                                    * 0: Use the tsiValid signal as valid data indicator
///                                    * 1: Ignore tsiValid signal and treat every tsiData as valid data
///                                    ###
///               %unsigned 1  ignore_ts_error           0x0
///                                    ###
///                                    * 0: Use the tsiError signal as error indicator
///                                    * 1: Ignore tsiError signal
///                                    ###
///               %unsigned 3  reserved_0                0x0
///               %unsigned 1  ts_clock_polarity         0x1
///                                    ###
///                                    * 1: sample input TS signals with rising edge of TS input clock
///                                    * 0: sample input TS signals with falling edge of TS input clock
///                                    ###
///               %unsigned 1  ts_valid_polarity         0x1
///                                    ###
///                                    * 1: tsiValid is active high
///                                    * 0: tsiValid is active low
///                                    ###
///               %unsigned 1  ts_sync_polarity          0x1
///                                    ###
///                                    * 1: tsiSync is active high
///                                    * 0: tsiSync is active low
///                                    ###
///               %unsigned 1  ts_error_polarity         0x1
///                                    ###
///                                    * 1: tsiError is active high
///                                    * 0: tsiError is active low
///                                    ###
///               %unsigned 4  reserved_1                0x0
///               %%        16         # Stuffing bits...
///     @ 0x00010 sync_detect          (P)
///               %unsigned 2  sync_detect_mode          0x0
///                                    ###
///                                    * 0: use tsSync signal to signify the start of a packet.
///                                    * 1: use tsSync signal to signify the sync byte of a packet.
///                                    * 2: use the transition from inactive to active of tsValid to signify the start of a packet
///                                    * 3: enable the internal sync byte detection and use the matching result to signify the sync byte of packet.
///                                    * For option 0 and 2, sync byte position is derived from sync_byte_position.
///                                    * For option 1 and 3, start of a packet is derived from sync_byte_position.
///                                    ###
///               %unsigned 1  sync_at_first_valid       0x0
///                                    ###
///                                    * This field is valid only when sync_detect_mode is 3:
///                                    * 1: check for sync byte only at the first cycle after tsValid change from inactive to active.
///                                    * 0: check for sync byte for each and every cycle when tsValid is active
///                                    * This bit should be set to one only when there is guaranteed idle cycle (tsValid is inactive) in front of every sync byte (the first bit of the sync byte in serial mode), otherwise it should be set to zero.
///                                    * When the condition described above is met, setting this bit to one will increase the accuracy of sync byte detection, but TSI will still work with this bit set to zero.
///                                    ###
///               %unsigned 5  reserved_0                0x0
///               %unsigned 5  sync_byte_position        0x0
///                                    ###
///                                    * Number of bytes before sync byte in the input packet from TS ports
///                                    * In case that the first byte is the sync byte, this field should be 0.
///                                    ###
///               %unsigned 3  reserved_1                0x0
///               %unsigned 8  sync_byte_value           0x47
///                                    ###
///                                    * Value of the sync byte
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x00014 error_detect         (P)
///               %unsigned 1  ignore_sync_byte_error    0x0
///                                    ###
///                                    * 1: ignore the error of sync byte in packet being different from the value specified in sync_detect.sync_byte_value field.
///                                    * 0: do not ignore the error
///                                    ###
///               %unsigned 7  reserved_0                0x0
///               %unsigned 8  success_gate              0x0
///                                    ###
///                                    * obsolete
///                                    ###
///               %unsigned 8  fail_gate                 0x0
///                                    ###
///                                    * obsolete
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x00018 pid_filter           (P)
///               %unsigned 8  ltsid_offset              0x0
///                                    ###
///                                    * Number of bits before LTSID in the input packet from TS ports
///                                    ###
///               %unsigned 8  pid_offset                0xB
///                                    ###
///                                    * Number of bits before PID in the input packet from TS ports
///                                    ###
///               %unsigned 8  pid_start_address         0x0
///                                    ###
///                                    * Physical address of the first PID table entry
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x0001C stc_clock_div        (P)
///               %unsigned 16 divisor_0                 0x0
///                                    ###
///                                    * Divisor used to divide stcClk0 before it is being used to drive STC counter
///                                    * 0 means to stop the counter
///                                    * Updating the divisor may cause unpredictable value change of stc_counter. Firmware should update stc_counter after changing divisor if a clean base is required.
///                                    ###
///               %unsigned 16 divisor_1                 0x0
///                                    ###
///                                    * Divisor used to divide stcClk1.
///                                    ###
///     @ 0x00020 stc_counter_0        (RW)
///               %unsigned 32 lower                     0x0
///     # 0x00024 stc_counter_01       
///               %unsigned 10 upper                     0x0
///                                    ###
///                                    * Value of STC counter 0
///                                    * Firmware should always read and write the two parts of STC counter together, in the order of upper filed first and lower field second.
///                                    ###
///               %%        22         # Stuffing bits...
///     @ 0x00028 stc_counter_1        (RW)
///               %unsigned 32 lower                     0x0
///     # 0x0002C stc_counter_11       
///               %unsigned 10 upper                     0x0
///                                    ###
///                                    * Value of STC counter 1
///                                    ###
///               %%        22         # Stuffing bits...
///     @ 0x00030 fifo_select          (P)
///               %unsigned 1  figo1                     0x0
///                                    ###
///                                    * 0: connect to HBO of FIGO 0
///                                    * 1: connect to HBO of FIGO 1
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      52B, bits:     239b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspTsiReg
#define h_TspTsiReg (){}

    #define     RA_TspTsiReg_global                            0x0000

    #define     BA_TspTsiReg_global_reset                      0x0000
    #define     B16TspTsiReg_global_reset                      0x0000
    #define   LSb32TspTsiReg_global_reset                         0
    #define   LSb16TspTsiReg_global_reset                         0
    #define       bTspTsiReg_global_reset                      1
    #define   MSK32TspTsiReg_global_reset                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_tso_to_tsi                        0x0004

    #define     BA_TspTsiReg_tso_to_tsi_loop_back_mode         0x0004
    #define     B16TspTsiReg_tso_to_tsi_loop_back_mode         0x0004
    #define   LSb32TspTsiReg_tso_to_tsi_loop_back_mode            0
    #define   LSb16TspTsiReg_tso_to_tsi_loop_back_mode            0
    #define       bTspTsiReg_tso_to_tsi_loop_back_mode         1
    #define   MSK32TspTsiReg_tso_to_tsi_loop_back_mode            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_packet_format                     0x0008

    #define     BA_TspTsiReg_packet_format_input_size          0x0008
    #define     B16TspTsiReg_packet_format_input_size          0x0008
    #define   LSb32TspTsiReg_packet_format_input_size             0
    #define   LSb16TspTsiReg_packet_format_input_size             0
    #define       bTspTsiReg_packet_format_input_size          8
    #define   MSK32TspTsiReg_packet_format_input_size             0x000000FF

    #define     BA_TspTsiReg_packet_format_captured_offset     0x0009
    #define     B16TspTsiReg_packet_format_captured_offset     0x0008
    #define   LSb32TspTsiReg_packet_format_captured_offset        8
    #define   LSb16TspTsiReg_packet_format_captured_offset        8
    #define       bTspTsiReg_packet_format_captured_offset     8
    #define   MSK32TspTsiReg_packet_format_captured_offset        0x0000FF00

    #define     BA_TspTsiReg_packet_format_captured_size       0x000A
    #define     B16TspTsiReg_packet_format_captured_size       0x000A
    #define   LSb32TspTsiReg_packet_format_captured_size          16
    #define   LSb16TspTsiReg_packet_format_captured_size          0
    #define       bTspTsiReg_packet_format_captured_size       8
    #define   MSK32TspTsiReg_packet_format_captured_size          0x00FF0000

    #define     BA_TspTsiReg_packet_format_output_size         0x000B
    #define     B16TspTsiReg_packet_format_output_size         0x000A
    #define   LSb32TspTsiReg_packet_format_output_size            24
    #define   LSb16TspTsiReg_packet_format_output_size            8
    #define       bTspTsiReg_packet_format_output_size         8
    #define   MSK32TspTsiReg_packet_format_output_size            0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_port_ctrl                         0x000C

    #define     BA_TspTsiReg_port_ctrl_serial_mode             0x000C
    #define     B16TspTsiReg_port_ctrl_serial_mode             0x000C
    #define   LSb32TspTsiReg_port_ctrl_serial_mode                0
    #define   LSb16TspTsiReg_port_ctrl_serial_mode                0
    #define       bTspTsiReg_port_ctrl_serial_mode             1
    #define   MSK32TspTsiReg_port_ctrl_serial_mode                0x00000001

    #define     BA_TspTsiReg_port_ctrl_serial_pin_select       0x000C
    #define     B16TspTsiReg_port_ctrl_serial_pin_select       0x000C
    #define   LSb32TspTsiReg_port_ctrl_serial_pin_select          1
    #define   LSb16TspTsiReg_port_ctrl_serial_pin_select          1
    #define       bTspTsiReg_port_ctrl_serial_pin_select       1
    #define   MSK32TspTsiReg_port_ctrl_serial_pin_select          0x00000002

    #define     BA_TspTsiReg_port_ctrl_lsb_first               0x000C
    #define     B16TspTsiReg_port_ctrl_lsb_first               0x000C
    #define   LSb32TspTsiReg_port_ctrl_lsb_first                  2
    #define   LSb16TspTsiReg_port_ctrl_lsb_first                  2
    #define       bTspTsiReg_port_ctrl_lsb_first               1
    #define   MSK32TspTsiReg_port_ctrl_lsb_first                  0x00000004

    #define     BA_TspTsiReg_port_ctrl_ignore_ts_valid         0x000C
    #define     B16TspTsiReg_port_ctrl_ignore_ts_valid         0x000C
    #define   LSb32TspTsiReg_port_ctrl_ignore_ts_valid            3
    #define   LSb16TspTsiReg_port_ctrl_ignore_ts_valid            3
    #define       bTspTsiReg_port_ctrl_ignore_ts_valid         1
    #define   MSK32TspTsiReg_port_ctrl_ignore_ts_valid            0x00000008

    #define     BA_TspTsiReg_port_ctrl_ignore_ts_error         0x000C
    #define     B16TspTsiReg_port_ctrl_ignore_ts_error         0x000C
    #define   LSb32TspTsiReg_port_ctrl_ignore_ts_error            4
    #define   LSb16TspTsiReg_port_ctrl_ignore_ts_error            4
    #define       bTspTsiReg_port_ctrl_ignore_ts_error         1
    #define   MSK32TspTsiReg_port_ctrl_ignore_ts_error            0x00000010

    #define     BA_TspTsiReg_port_ctrl_reserved_0              0x000C
    #define     B16TspTsiReg_port_ctrl_reserved_0              0x000C
    #define   LSb32TspTsiReg_port_ctrl_reserved_0                 5
    #define   LSb16TspTsiReg_port_ctrl_reserved_0                 5
    #define       bTspTsiReg_port_ctrl_reserved_0              3
    #define   MSK32TspTsiReg_port_ctrl_reserved_0                 0x000000E0

    #define     BA_TspTsiReg_port_ctrl_ts_clock_polarity       0x000D
    #define     B16TspTsiReg_port_ctrl_ts_clock_polarity       0x000C
    #define   LSb32TspTsiReg_port_ctrl_ts_clock_polarity          8
    #define   LSb16TspTsiReg_port_ctrl_ts_clock_polarity          8
    #define       bTspTsiReg_port_ctrl_ts_clock_polarity       1
    #define   MSK32TspTsiReg_port_ctrl_ts_clock_polarity          0x00000100

    #define     BA_TspTsiReg_port_ctrl_ts_valid_polarity       0x000D
    #define     B16TspTsiReg_port_ctrl_ts_valid_polarity       0x000C
    #define   LSb32TspTsiReg_port_ctrl_ts_valid_polarity          9
    #define   LSb16TspTsiReg_port_ctrl_ts_valid_polarity          9
    #define       bTspTsiReg_port_ctrl_ts_valid_polarity       1
    #define   MSK32TspTsiReg_port_ctrl_ts_valid_polarity          0x00000200

    #define     BA_TspTsiReg_port_ctrl_ts_sync_polarity        0x000D
    #define     B16TspTsiReg_port_ctrl_ts_sync_polarity        0x000C
    #define   LSb32TspTsiReg_port_ctrl_ts_sync_polarity           10
    #define   LSb16TspTsiReg_port_ctrl_ts_sync_polarity           10
    #define       bTspTsiReg_port_ctrl_ts_sync_polarity        1
    #define   MSK32TspTsiReg_port_ctrl_ts_sync_polarity           0x00000400

    #define     BA_TspTsiReg_port_ctrl_ts_error_polarity       0x000D
    #define     B16TspTsiReg_port_ctrl_ts_error_polarity       0x000C
    #define   LSb32TspTsiReg_port_ctrl_ts_error_polarity          11
    #define   LSb16TspTsiReg_port_ctrl_ts_error_polarity          11
    #define       bTspTsiReg_port_ctrl_ts_error_polarity       1
    #define   MSK32TspTsiReg_port_ctrl_ts_error_polarity          0x00000800

    #define     BA_TspTsiReg_port_ctrl_reserved_1              0x000D
    #define     B16TspTsiReg_port_ctrl_reserved_1              0x000C
    #define   LSb32TspTsiReg_port_ctrl_reserved_1                 12
    #define   LSb16TspTsiReg_port_ctrl_reserved_1                 12
    #define       bTspTsiReg_port_ctrl_reserved_1              4
    #define   MSK32TspTsiReg_port_ctrl_reserved_1                 0x0000F000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_sync_detect                       0x0010

    #define     BA_TspTsiReg_sync_detect_sync_detect_mode      0x0010
    #define     B16TspTsiReg_sync_detect_sync_detect_mode      0x0010
    #define   LSb32TspTsiReg_sync_detect_sync_detect_mode         0
    #define   LSb16TspTsiReg_sync_detect_sync_detect_mode         0
    #define       bTspTsiReg_sync_detect_sync_detect_mode      2
    #define   MSK32TspTsiReg_sync_detect_sync_detect_mode         0x00000003

    #define     BA_TspTsiReg_sync_detect_sync_at_first_valid   0x0010
    #define     B16TspTsiReg_sync_detect_sync_at_first_valid   0x0010
    #define   LSb32TspTsiReg_sync_detect_sync_at_first_valid      2
    #define   LSb16TspTsiReg_sync_detect_sync_at_first_valid      2
    #define       bTspTsiReg_sync_detect_sync_at_first_valid   1
    #define   MSK32TspTsiReg_sync_detect_sync_at_first_valid      0x00000004

    #define     BA_TspTsiReg_sync_detect_reserved_0            0x0010
    #define     B16TspTsiReg_sync_detect_reserved_0            0x0010
    #define   LSb32TspTsiReg_sync_detect_reserved_0               3
    #define   LSb16TspTsiReg_sync_detect_reserved_0               3
    #define       bTspTsiReg_sync_detect_reserved_0            5
    #define   MSK32TspTsiReg_sync_detect_reserved_0               0x000000F8

    #define     BA_TspTsiReg_sync_detect_sync_byte_position    0x0011
    #define     B16TspTsiReg_sync_detect_sync_byte_position    0x0010
    #define   LSb32TspTsiReg_sync_detect_sync_byte_position       8
    #define   LSb16TspTsiReg_sync_detect_sync_byte_position       8
    #define       bTspTsiReg_sync_detect_sync_byte_position    5
    #define   MSK32TspTsiReg_sync_detect_sync_byte_position       0x00001F00

    #define     BA_TspTsiReg_sync_detect_reserved_1            0x0011
    #define     B16TspTsiReg_sync_detect_reserved_1            0x0010
    #define   LSb32TspTsiReg_sync_detect_reserved_1               13
    #define   LSb16TspTsiReg_sync_detect_reserved_1               13
    #define       bTspTsiReg_sync_detect_reserved_1            3
    #define   MSK32TspTsiReg_sync_detect_reserved_1               0x0000E000

    #define     BA_TspTsiReg_sync_detect_sync_byte_value       0x0012
    #define     B16TspTsiReg_sync_detect_sync_byte_value       0x0012
    #define   LSb32TspTsiReg_sync_detect_sync_byte_value          16
    #define   LSb16TspTsiReg_sync_detect_sync_byte_value          0
    #define       bTspTsiReg_sync_detect_sync_byte_value       8
    #define   MSK32TspTsiReg_sync_detect_sync_byte_value          0x00FF0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_error_detect                      0x0014

    #define     BA_TspTsiReg_error_detect_ignore_sync_byte_error 0x0014
    #define     B16TspTsiReg_error_detect_ignore_sync_byte_error 0x0014
    #define   LSb32TspTsiReg_error_detect_ignore_sync_byte_error    0
    #define   LSb16TspTsiReg_error_detect_ignore_sync_byte_error    0
    #define       bTspTsiReg_error_detect_ignore_sync_byte_error 1
    #define   MSK32TspTsiReg_error_detect_ignore_sync_byte_error    0x00000001

    #define     BA_TspTsiReg_error_detect_reserved_0           0x0014
    #define     B16TspTsiReg_error_detect_reserved_0           0x0014
    #define   LSb32TspTsiReg_error_detect_reserved_0              1
    #define   LSb16TspTsiReg_error_detect_reserved_0              1
    #define       bTspTsiReg_error_detect_reserved_0           7
    #define   MSK32TspTsiReg_error_detect_reserved_0              0x000000FE

    #define     BA_TspTsiReg_error_detect_success_gate         0x0015
    #define     B16TspTsiReg_error_detect_success_gate         0x0014
    #define   LSb32TspTsiReg_error_detect_success_gate            8
    #define   LSb16TspTsiReg_error_detect_success_gate            8
    #define       bTspTsiReg_error_detect_success_gate         8
    #define   MSK32TspTsiReg_error_detect_success_gate            0x0000FF00

    #define     BA_TspTsiReg_error_detect_fail_gate            0x0016
    #define     B16TspTsiReg_error_detect_fail_gate            0x0016
    #define   LSb32TspTsiReg_error_detect_fail_gate               16
    #define   LSb16TspTsiReg_error_detect_fail_gate               0
    #define       bTspTsiReg_error_detect_fail_gate            8
    #define   MSK32TspTsiReg_error_detect_fail_gate               0x00FF0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_pid_filter                        0x0018

    #define     BA_TspTsiReg_pid_filter_ltsid_offset           0x0018
    #define     B16TspTsiReg_pid_filter_ltsid_offset           0x0018
    #define   LSb32TspTsiReg_pid_filter_ltsid_offset              0
    #define   LSb16TspTsiReg_pid_filter_ltsid_offset              0
    #define       bTspTsiReg_pid_filter_ltsid_offset           8
    #define   MSK32TspTsiReg_pid_filter_ltsid_offset              0x000000FF

    #define     BA_TspTsiReg_pid_filter_pid_offset             0x0019
    #define     B16TspTsiReg_pid_filter_pid_offset             0x0018
    #define   LSb32TspTsiReg_pid_filter_pid_offset                8
    #define   LSb16TspTsiReg_pid_filter_pid_offset                8
    #define       bTspTsiReg_pid_filter_pid_offset             8
    #define   MSK32TspTsiReg_pid_filter_pid_offset                0x0000FF00

    #define     BA_TspTsiReg_pid_filter_pid_start_address      0x001A
    #define     B16TspTsiReg_pid_filter_pid_start_address      0x001A
    #define   LSb32TspTsiReg_pid_filter_pid_start_address         16
    #define   LSb16TspTsiReg_pid_filter_pid_start_address         0
    #define       bTspTsiReg_pid_filter_pid_start_address      8
    #define   MSK32TspTsiReg_pid_filter_pid_start_address         0x00FF0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_stc_clock_div                     0x001C

    #define     BA_TspTsiReg_stc_clock_div_divisor_0           0x001C
    #define     B16TspTsiReg_stc_clock_div_divisor_0           0x001C
    #define   LSb32TspTsiReg_stc_clock_div_divisor_0              0
    #define   LSb16TspTsiReg_stc_clock_div_divisor_0              0
    #define       bTspTsiReg_stc_clock_div_divisor_0           16
    #define   MSK32TspTsiReg_stc_clock_div_divisor_0              0x0000FFFF

    #define     BA_TspTsiReg_stc_clock_div_divisor_1           0x001E
    #define     B16TspTsiReg_stc_clock_div_divisor_1           0x001E
    #define   LSb32TspTsiReg_stc_clock_div_divisor_1              16
    #define   LSb16TspTsiReg_stc_clock_div_divisor_1              0
    #define       bTspTsiReg_stc_clock_div_divisor_1           16
    #define   MSK32TspTsiReg_stc_clock_div_divisor_1              0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_stc_counter_0                     0x0020

    #define     BA_TspTsiReg_stc_counter_0_lower               0x0020
    #define     B16TspTsiReg_stc_counter_0_lower               0x0020
    #define   LSb32TspTsiReg_stc_counter_0_lower                  0
    #define   LSb16TspTsiReg_stc_counter_0_lower                  0
    #define       bTspTsiReg_stc_counter_0_lower               32
    #define   MSK32TspTsiReg_stc_counter_0_lower                  0xFFFFFFFF

    #define     RA_TspTsiReg_stc_counter_01                    0x0024

    #define     BA_TspTsiReg_stc_counter_0_upper               0x0024
    #define     B16TspTsiReg_stc_counter_0_upper               0x0024
    #define   LSb32TspTsiReg_stc_counter_0_upper                  0
    #define   LSb16TspTsiReg_stc_counter_0_upper                  0
    #define       bTspTsiReg_stc_counter_0_upper               10
    #define   MSK32TspTsiReg_stc_counter_0_upper                  0x000003FF
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_stc_counter_1                     0x0028

    #define     BA_TspTsiReg_stc_counter_1_lower               0x0028
    #define     B16TspTsiReg_stc_counter_1_lower               0x0028
    #define   LSb32TspTsiReg_stc_counter_1_lower                  0
    #define   LSb16TspTsiReg_stc_counter_1_lower                  0
    #define       bTspTsiReg_stc_counter_1_lower               32
    #define   MSK32TspTsiReg_stc_counter_1_lower                  0xFFFFFFFF

    #define     RA_TspTsiReg_stc_counter_11                    0x002C

    #define     BA_TspTsiReg_stc_counter_1_upper               0x002C
    #define     B16TspTsiReg_stc_counter_1_upper               0x002C
    #define   LSb32TspTsiReg_stc_counter_1_upper                  0
    #define   LSb16TspTsiReg_stc_counter_1_upper                  0
    #define       bTspTsiReg_stc_counter_1_upper               10
    #define   MSK32TspTsiReg_stc_counter_1_upper                  0x000003FF
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsiReg_fifo_select                       0x0030

    #define     BA_TspTsiReg_fifo_select_figo1                 0x0030
    #define     B16TspTsiReg_fifo_select_figo1                 0x0030
    #define   LSb32TspTsiReg_fifo_select_figo1                    0
    #define   LSb16TspTsiReg_fifo_select_figo1                    0
    #define       bTspTsiReg_fifo_select_figo1                 1
    #define   MSK32TspTsiReg_fifo_select_figo1                    0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspTsiReg {
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_global_reset(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32TspTsiReg_global_reset(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsiReg_global_reset(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16TspTsiReg_global_reset(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32TspTsiReg_global                            {\
            UNSG32 uglobal_reset                               :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32TspTsiReg_global;
            struct w32TspTsiReg_global;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_tso_to_tsi_loop_back_mode(r32)    _BFGET_(r32, 0, 0)
    #define   SET32TspTsiReg_tso_to_tsi_loop_back_mode(r32,v)  _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsiReg_tso_to_tsi_loop_back_mode(r16)    _BFGET_(r16, 0, 0)
    #define   SET16TspTsiReg_tso_to_tsi_loop_back_mode(r16,v)  _BFSET_(r16, 0, 0,v)

    #define     w32TspTsiReg_tso_to_tsi                        {\
            UNSG32 utso_to_tsi_loop_back_mode                  :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32TspTsiReg_tso_to_tsi;
            struct w32TspTsiReg_tso_to_tsi;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_packet_format_input_size(r32)     _BFGET_(r32, 7, 0)
    #define   SET32TspTsiReg_packet_format_input_size(r32,v)   _BFSET_(r32, 7, 0,v)
    #define   GET16TspTsiReg_packet_format_input_size(r16)     _BFGET_(r16, 7, 0)
    #define   SET16TspTsiReg_packet_format_input_size(r16,v)   _BFSET_(r16, 7, 0,v)

    #define   GET32TspTsiReg_packet_format_captured_offset(r32) _BFGET_(r32,15, 8)
    #define   SET32TspTsiReg_packet_format_captured_offset(r32,v) _BFSET_(r32,15, 8,v)
    #define   GET16TspTsiReg_packet_format_captured_offset(r16) _BFGET_(r16,15, 8)
    #define   SET16TspTsiReg_packet_format_captured_offset(r16,v) _BFSET_(r16,15, 8,v)

    #define   GET32TspTsiReg_packet_format_captured_size(r32)  _BFGET_(r32,23,16)
    #define   SET32TspTsiReg_packet_format_captured_size(r32,v) _BFSET_(r32,23,16,v)
    #define   GET16TspTsiReg_packet_format_captured_size(r16)  _BFGET_(r16, 7, 0)
    #define   SET16TspTsiReg_packet_format_captured_size(r16,v) _BFSET_(r16, 7, 0,v)

    #define   GET32TspTsiReg_packet_format_output_size(r32)    _BFGET_(r32,31,24)
    #define   SET32TspTsiReg_packet_format_output_size(r32,v)  _BFSET_(r32,31,24,v)
    #define   GET16TspTsiReg_packet_format_output_size(r16)    _BFGET_(r16,15, 8)
    #define   SET16TspTsiReg_packet_format_output_size(r16,v)  _BFSET_(r16,15, 8,v)

    #define     w32TspTsiReg_packet_format                     {\
            UNSG32 upacket_format_input_size                   :  8;\
            UNSG32 upacket_format_captured_offset              :  8;\
            UNSG32 upacket_format_captured_size                :  8;\
            UNSG32 upacket_format_output_size                  :  8;\
          }
    union { UNSG32 u32TspTsiReg_packet_format;
            struct w32TspTsiReg_packet_format;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_port_ctrl_serial_mode(r32)        _BFGET_(r32, 0, 0)
    #define   SET32TspTsiReg_port_ctrl_serial_mode(r32,v)      _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsiReg_port_ctrl_serial_mode(r16)        _BFGET_(r16, 0, 0)
    #define   SET16TspTsiReg_port_ctrl_serial_mode(r16,v)      _BFSET_(r16, 0, 0,v)

    #define   GET32TspTsiReg_port_ctrl_serial_pin_select(r32)  _BFGET_(r32, 1, 1)
    #define   SET32TspTsiReg_port_ctrl_serial_pin_select(r32,v) _BFSET_(r32, 1, 1,v)
    #define   GET16TspTsiReg_port_ctrl_serial_pin_select(r16)  _BFGET_(r16, 1, 1)
    #define   SET16TspTsiReg_port_ctrl_serial_pin_select(r16,v) _BFSET_(r16, 1, 1,v)

    #define   GET32TspTsiReg_port_ctrl_lsb_first(r32)          _BFGET_(r32, 2, 2)
    #define   SET32TspTsiReg_port_ctrl_lsb_first(r32,v)        _BFSET_(r32, 2, 2,v)
    #define   GET16TspTsiReg_port_ctrl_lsb_first(r16)          _BFGET_(r16, 2, 2)
    #define   SET16TspTsiReg_port_ctrl_lsb_first(r16,v)        _BFSET_(r16, 2, 2,v)

    #define   GET32TspTsiReg_port_ctrl_ignore_ts_valid(r32)    _BFGET_(r32, 3, 3)
    #define   SET32TspTsiReg_port_ctrl_ignore_ts_valid(r32,v)  _BFSET_(r32, 3, 3,v)
    #define   GET16TspTsiReg_port_ctrl_ignore_ts_valid(r16)    _BFGET_(r16, 3, 3)
    #define   SET16TspTsiReg_port_ctrl_ignore_ts_valid(r16,v)  _BFSET_(r16, 3, 3,v)

    #define   GET32TspTsiReg_port_ctrl_ignore_ts_error(r32)    _BFGET_(r32, 4, 4)
    #define   SET32TspTsiReg_port_ctrl_ignore_ts_error(r32,v)  _BFSET_(r32, 4, 4,v)
    #define   GET16TspTsiReg_port_ctrl_ignore_ts_error(r16)    _BFGET_(r16, 4, 4)
    #define   SET16TspTsiReg_port_ctrl_ignore_ts_error(r16,v)  _BFSET_(r16, 4, 4,v)

    #define   GET32TspTsiReg_port_ctrl_reserved_0(r32)         _BFGET_(r32, 7, 5)
    #define   SET32TspTsiReg_port_ctrl_reserved_0(r32,v)       _BFSET_(r32, 7, 5,v)
    #define   GET16TspTsiReg_port_ctrl_reserved_0(r16)         _BFGET_(r16, 7, 5)
    #define   SET16TspTsiReg_port_ctrl_reserved_0(r16,v)       _BFSET_(r16, 7, 5,v)

    #define   GET32TspTsiReg_port_ctrl_ts_clock_polarity(r32)  _BFGET_(r32, 8, 8)
    #define   SET32TspTsiReg_port_ctrl_ts_clock_polarity(r32,v) _BFSET_(r32, 8, 8,v)
    #define   GET16TspTsiReg_port_ctrl_ts_clock_polarity(r16)  _BFGET_(r16, 8, 8)
    #define   SET16TspTsiReg_port_ctrl_ts_clock_polarity(r16,v) _BFSET_(r16, 8, 8,v)

    #define   GET32TspTsiReg_port_ctrl_ts_valid_polarity(r32)  _BFGET_(r32, 9, 9)
    #define   SET32TspTsiReg_port_ctrl_ts_valid_polarity(r32,v) _BFSET_(r32, 9, 9,v)
    #define   GET16TspTsiReg_port_ctrl_ts_valid_polarity(r16)  _BFGET_(r16, 9, 9)
    #define   SET16TspTsiReg_port_ctrl_ts_valid_polarity(r16,v) _BFSET_(r16, 9, 9,v)

    #define   GET32TspTsiReg_port_ctrl_ts_sync_polarity(r32)   _BFGET_(r32,10,10)
    #define   SET32TspTsiReg_port_ctrl_ts_sync_polarity(r32,v) _BFSET_(r32,10,10,v)
    #define   GET16TspTsiReg_port_ctrl_ts_sync_polarity(r16)   _BFGET_(r16,10,10)
    #define   SET16TspTsiReg_port_ctrl_ts_sync_polarity(r16,v) _BFSET_(r16,10,10,v)

    #define   GET32TspTsiReg_port_ctrl_ts_error_polarity(r32)  _BFGET_(r32,11,11)
    #define   SET32TspTsiReg_port_ctrl_ts_error_polarity(r32,v) _BFSET_(r32,11,11,v)
    #define   GET16TspTsiReg_port_ctrl_ts_error_polarity(r16)  _BFGET_(r16,11,11)
    #define   SET16TspTsiReg_port_ctrl_ts_error_polarity(r16,v) _BFSET_(r16,11,11,v)

    #define   GET32TspTsiReg_port_ctrl_reserved_1(r32)         _BFGET_(r32,15,12)
    #define   SET32TspTsiReg_port_ctrl_reserved_1(r32,v)       _BFSET_(r32,15,12,v)
    #define   GET16TspTsiReg_port_ctrl_reserved_1(r16)         _BFGET_(r16,15,12)
    #define   SET16TspTsiReg_port_ctrl_reserved_1(r16,v)       _BFSET_(r16,15,12,v)

    #define     w32TspTsiReg_port_ctrl                         {\
            UNSG32 uport_ctrl_serial_mode                      :  1;\
            UNSG32 uport_ctrl_serial_pin_select                :  1;\
            UNSG32 uport_ctrl_lsb_first                        :  1;\
            UNSG32 uport_ctrl_ignore_ts_valid                  :  1;\
            UNSG32 uport_ctrl_ignore_ts_error                  :  1;\
            UNSG32 uport_ctrl_reserved_0                       :  3;\
            UNSG32 uport_ctrl_ts_clock_polarity                :  1;\
            UNSG32 uport_ctrl_ts_valid_polarity                :  1;\
            UNSG32 uport_ctrl_ts_sync_polarity                 :  1;\
            UNSG32 uport_ctrl_ts_error_polarity                :  1;\
            UNSG32 uport_ctrl_reserved_1                       :  4;\
            UNSG32 RSVDxC_b16                                  : 16;\
          }
    union { UNSG32 u32TspTsiReg_port_ctrl;
            struct w32TspTsiReg_port_ctrl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_sync_detect_sync_detect_mode(r32) _BFGET_(r32, 1, 0)
    #define   SET32TspTsiReg_sync_detect_sync_detect_mode(r32,v) _BFSET_(r32, 1, 0,v)
    #define   GET16TspTsiReg_sync_detect_sync_detect_mode(r16) _BFGET_(r16, 1, 0)
    #define   SET16TspTsiReg_sync_detect_sync_detect_mode(r16,v) _BFSET_(r16, 1, 0,v)

    #define   GET32TspTsiReg_sync_detect_sync_at_first_valid(r32) _BFGET_(r32, 2, 2)
    #define   SET32TspTsiReg_sync_detect_sync_at_first_valid(r32,v) _BFSET_(r32, 2, 2,v)
    #define   GET16TspTsiReg_sync_detect_sync_at_first_valid(r16) _BFGET_(r16, 2, 2)
    #define   SET16TspTsiReg_sync_detect_sync_at_first_valid(r16,v) _BFSET_(r16, 2, 2,v)

    #define   GET32TspTsiReg_sync_detect_reserved_0(r32)       _BFGET_(r32, 7, 3)
    #define   SET32TspTsiReg_sync_detect_reserved_0(r32,v)     _BFSET_(r32, 7, 3,v)
    #define   GET16TspTsiReg_sync_detect_reserved_0(r16)       _BFGET_(r16, 7, 3)
    #define   SET16TspTsiReg_sync_detect_reserved_0(r16,v)     _BFSET_(r16, 7, 3,v)

    #define   GET32TspTsiReg_sync_detect_sync_byte_position(r32) _BFGET_(r32,12, 8)
    #define   SET32TspTsiReg_sync_detect_sync_byte_position(r32,v) _BFSET_(r32,12, 8,v)
    #define   GET16TspTsiReg_sync_detect_sync_byte_position(r16) _BFGET_(r16,12, 8)
    #define   SET16TspTsiReg_sync_detect_sync_byte_position(r16,v) _BFSET_(r16,12, 8,v)

    #define   GET32TspTsiReg_sync_detect_reserved_1(r32)       _BFGET_(r32,15,13)
    #define   SET32TspTsiReg_sync_detect_reserved_1(r32,v)     _BFSET_(r32,15,13,v)
    #define   GET16TspTsiReg_sync_detect_reserved_1(r16)       _BFGET_(r16,15,13)
    #define   SET16TspTsiReg_sync_detect_reserved_1(r16,v)     _BFSET_(r16,15,13,v)

    #define   GET32TspTsiReg_sync_detect_sync_byte_value(r32)  _BFGET_(r32,23,16)
    #define   SET32TspTsiReg_sync_detect_sync_byte_value(r32,v) _BFSET_(r32,23,16,v)
    #define   GET16TspTsiReg_sync_detect_sync_byte_value(r16)  _BFGET_(r16, 7, 0)
    #define   SET16TspTsiReg_sync_detect_sync_byte_value(r16,v) _BFSET_(r16, 7, 0,v)

    #define     w32TspTsiReg_sync_detect                       {\
            UNSG32 usync_detect_sync_detect_mode               :  2;\
            UNSG32 usync_detect_sync_at_first_valid            :  1;\
            UNSG32 usync_detect_reserved_0                     :  5;\
            UNSG32 usync_detect_sync_byte_position             :  5;\
            UNSG32 usync_detect_reserved_1                     :  3;\
            UNSG32 usync_detect_sync_byte_value                :  8;\
            UNSG32 RSVDx10_b24                                 :  8;\
          }
    union { UNSG32 u32TspTsiReg_sync_detect;
            struct w32TspTsiReg_sync_detect;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_error_detect_ignore_sync_byte_error(r32) _BFGET_(r32, 0, 0)
    #define   SET32TspTsiReg_error_detect_ignore_sync_byte_error(r32,v) _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsiReg_error_detect_ignore_sync_byte_error(r16) _BFGET_(r16, 0, 0)
    #define   SET16TspTsiReg_error_detect_ignore_sync_byte_error(r16,v) _BFSET_(r16, 0, 0,v)

    #define   GET32TspTsiReg_error_detect_reserved_0(r32)      _BFGET_(r32, 7, 1)
    #define   SET32TspTsiReg_error_detect_reserved_0(r32,v)    _BFSET_(r32, 7, 1,v)
    #define   GET16TspTsiReg_error_detect_reserved_0(r16)      _BFGET_(r16, 7, 1)
    #define   SET16TspTsiReg_error_detect_reserved_0(r16,v)    _BFSET_(r16, 7, 1,v)

    #define   GET32TspTsiReg_error_detect_success_gate(r32)    _BFGET_(r32,15, 8)
    #define   SET32TspTsiReg_error_detect_success_gate(r32,v)  _BFSET_(r32,15, 8,v)
    #define   GET16TspTsiReg_error_detect_success_gate(r16)    _BFGET_(r16,15, 8)
    #define   SET16TspTsiReg_error_detect_success_gate(r16,v)  _BFSET_(r16,15, 8,v)

    #define   GET32TspTsiReg_error_detect_fail_gate(r32)       _BFGET_(r32,23,16)
    #define   SET32TspTsiReg_error_detect_fail_gate(r32,v)     _BFSET_(r32,23,16,v)
    #define   GET16TspTsiReg_error_detect_fail_gate(r16)       _BFGET_(r16, 7, 0)
    #define   SET16TspTsiReg_error_detect_fail_gate(r16,v)     _BFSET_(r16, 7, 0,v)

    #define     w32TspTsiReg_error_detect                      {\
            UNSG32 uerror_detect_ignore_sync_byte_error        :  1;\
            UNSG32 uerror_detect_reserved_0                    :  7;\
            UNSG32 uerror_detect_success_gate                  :  8;\
            UNSG32 uerror_detect_fail_gate                     :  8;\
            UNSG32 RSVDx14_b24                                 :  8;\
          }
    union { UNSG32 u32TspTsiReg_error_detect;
            struct w32TspTsiReg_error_detect;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_pid_filter_ltsid_offset(r32)      _BFGET_(r32, 7, 0)
    #define   SET32TspTsiReg_pid_filter_ltsid_offset(r32,v)    _BFSET_(r32, 7, 0,v)
    #define   GET16TspTsiReg_pid_filter_ltsid_offset(r16)      _BFGET_(r16, 7, 0)
    #define   SET16TspTsiReg_pid_filter_ltsid_offset(r16,v)    _BFSET_(r16, 7, 0,v)

    #define   GET32TspTsiReg_pid_filter_pid_offset(r32)        _BFGET_(r32,15, 8)
    #define   SET32TspTsiReg_pid_filter_pid_offset(r32,v)      _BFSET_(r32,15, 8,v)
    #define   GET16TspTsiReg_pid_filter_pid_offset(r16)        _BFGET_(r16,15, 8)
    #define   SET16TspTsiReg_pid_filter_pid_offset(r16,v)      _BFSET_(r16,15, 8,v)

    #define   GET32TspTsiReg_pid_filter_pid_start_address(r32) _BFGET_(r32,23,16)
    #define   SET32TspTsiReg_pid_filter_pid_start_address(r32,v) _BFSET_(r32,23,16,v)
    #define   GET16TspTsiReg_pid_filter_pid_start_address(r16) _BFGET_(r16, 7, 0)
    #define   SET16TspTsiReg_pid_filter_pid_start_address(r16,v) _BFSET_(r16, 7, 0,v)

    #define     w32TspTsiReg_pid_filter                        {\
            UNSG32 upid_filter_ltsid_offset                    :  8;\
            UNSG32 upid_filter_pid_offset                      :  8;\
            UNSG32 upid_filter_pid_start_address               :  8;\
            UNSG32 RSVDx18_b24                                 :  8;\
          }
    union { UNSG32 u32TspTsiReg_pid_filter;
            struct w32TspTsiReg_pid_filter;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_stc_clock_div_divisor_0(r32)      _BFGET_(r32,15, 0)
    #define   SET32TspTsiReg_stc_clock_div_divisor_0(r32,v)    _BFSET_(r32,15, 0,v)
    #define   GET16TspTsiReg_stc_clock_div_divisor_0(r16)      _BFGET_(r16,15, 0)
    #define   SET16TspTsiReg_stc_clock_div_divisor_0(r16,v)    _BFSET_(r16,15, 0,v)

    #define   GET32TspTsiReg_stc_clock_div_divisor_1(r32)      _BFGET_(r32,31,16)
    #define   SET32TspTsiReg_stc_clock_div_divisor_1(r32,v)    _BFSET_(r32,31,16,v)
    #define   GET16TspTsiReg_stc_clock_div_divisor_1(r16)      _BFGET_(r16,15, 0)
    #define   SET16TspTsiReg_stc_clock_div_divisor_1(r16,v)    _BFSET_(r16,15, 0,v)

    #define     w32TspTsiReg_stc_clock_div                     {\
            UNSG32 ustc_clock_div_divisor_0                    : 16;\
            UNSG32 ustc_clock_div_divisor_1                    : 16;\
          }
    union { UNSG32 u32TspTsiReg_stc_clock_div;
            struct w32TspTsiReg_stc_clock_div;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_stc_counter_0_lower(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspTsiReg_stc_counter_0_lower(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspTsiReg_stc_counter_0                     {\
            UNSG32 ustc_counter_0_lower                        : 32;\
          }
    union { UNSG32 u32TspTsiReg_stc_counter_0;
            struct w32TspTsiReg_stc_counter_0;
          };
    #define   GET32TspTsiReg_stc_counter_0_upper(r32)          _BFGET_(r32, 9, 0)
    #define   SET32TspTsiReg_stc_counter_0_upper(r32,v)        _BFSET_(r32, 9, 0,v)
    #define   GET16TspTsiReg_stc_counter_0_upper(r16)          _BFGET_(r16, 9, 0)
    #define   SET16TspTsiReg_stc_counter_0_upper(r16,v)        _BFSET_(r16, 9, 0,v)

    #define     w32TspTsiReg_stc_counter_01                    {\
            UNSG32 ustc_counter_0_upper                        : 10;\
            UNSG32 RSVDx24_b10                                 : 22;\
          }
    union { UNSG32 u32TspTsiReg_stc_counter_01;
            struct w32TspTsiReg_stc_counter_01;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_stc_counter_1_lower(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspTsiReg_stc_counter_1_lower(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspTsiReg_stc_counter_1                     {\
            UNSG32 ustc_counter_1_lower                        : 32;\
          }
    union { UNSG32 u32TspTsiReg_stc_counter_1;
            struct w32TspTsiReg_stc_counter_1;
          };
    #define   GET32TspTsiReg_stc_counter_1_upper(r32)          _BFGET_(r32, 9, 0)
    #define   SET32TspTsiReg_stc_counter_1_upper(r32,v)        _BFSET_(r32, 9, 0,v)
    #define   GET16TspTsiReg_stc_counter_1_upper(r16)          _BFGET_(r16, 9, 0)
    #define   SET16TspTsiReg_stc_counter_1_upper(r16,v)        _BFSET_(r16, 9, 0,v)

    #define     w32TspTsiReg_stc_counter_11                    {\
            UNSG32 ustc_counter_1_upper                        : 10;\
            UNSG32 RSVDx2C_b10                                 : 22;\
          }
    union { UNSG32 u32TspTsiReg_stc_counter_11;
            struct w32TspTsiReg_stc_counter_11;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsiReg_fifo_select_figo1(r32)            _BFGET_(r32, 0, 0)
    #define   SET32TspTsiReg_fifo_select_figo1(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsiReg_fifo_select_figo1(r16)            _BFGET_(r16, 0, 0)
    #define   SET16TspTsiReg_fifo_select_figo1(r16,v)          _BFSET_(r16, 0, 0,v)

    #define     w32TspTsiReg_fifo_select                       {\
            UNSG32 ufifo_select_figo1                          :  1;\
            UNSG32 RSVDx30_b1                                  : 31;\
          }
    union { UNSG32 u32TspTsiReg_fifo_select;
            struct w32TspTsiReg_fifo_select;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspTsiReg;

    typedef union  T32TspTsiReg_global
          { UNSG32 u32;
            struct w32TspTsiReg_global;
                 } T32TspTsiReg_global;
    typedef union  T32TspTsiReg_tso_to_tsi
          { UNSG32 u32;
            struct w32TspTsiReg_tso_to_tsi;
                 } T32TspTsiReg_tso_to_tsi;
    typedef union  T32TspTsiReg_packet_format
          { UNSG32 u32;
            struct w32TspTsiReg_packet_format;
                 } T32TspTsiReg_packet_format;
    typedef union  T32TspTsiReg_port_ctrl
          { UNSG32 u32;
            struct w32TspTsiReg_port_ctrl;
                 } T32TspTsiReg_port_ctrl;
    typedef union  T32TspTsiReg_sync_detect
          { UNSG32 u32;
            struct w32TspTsiReg_sync_detect;
                 } T32TspTsiReg_sync_detect;
    typedef union  T32TspTsiReg_error_detect
          { UNSG32 u32;
            struct w32TspTsiReg_error_detect;
                 } T32TspTsiReg_error_detect;
    typedef union  T32TspTsiReg_pid_filter
          { UNSG32 u32;
            struct w32TspTsiReg_pid_filter;
                 } T32TspTsiReg_pid_filter;
    typedef union  T32TspTsiReg_stc_clock_div
          { UNSG32 u32;
            struct w32TspTsiReg_stc_clock_div;
                 } T32TspTsiReg_stc_clock_div;
    typedef union  T32TspTsiReg_stc_counter_0
          { UNSG32 u32;
            struct w32TspTsiReg_stc_counter_0;
                 } T32TspTsiReg_stc_counter_0;
    typedef union  T32TspTsiReg_stc_counter_01
          { UNSG32 u32;
            struct w32TspTsiReg_stc_counter_01;
                 } T32TspTsiReg_stc_counter_01;
    typedef union  T32TspTsiReg_stc_counter_1
          { UNSG32 u32;
            struct w32TspTsiReg_stc_counter_1;
                 } T32TspTsiReg_stc_counter_1;
    typedef union  T32TspTsiReg_stc_counter_11
          { UNSG32 u32;
            struct w32TspTsiReg_stc_counter_11;
                 } T32TspTsiReg_stc_counter_11;
    typedef union  T32TspTsiReg_fifo_select
          { UNSG32 u32;
            struct w32TspTsiReg_fifo_select;
                 } T32TspTsiReg_fifo_select;
    ///////////////////////////////////////////////////////////

    typedef union  TTspTsiReg_global
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_global;
                   };
                 } TTspTsiReg_global;
    typedef union  TTspTsiReg_tso_to_tsi
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_tso_to_tsi;
                   };
                 } TTspTsiReg_tso_to_tsi;
    typedef union  TTspTsiReg_packet_format
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_packet_format;
                   };
                 } TTspTsiReg_packet_format;
    typedef union  TTspTsiReg_port_ctrl
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_port_ctrl;
                   };
                 } TTspTsiReg_port_ctrl;
    typedef union  TTspTsiReg_sync_detect
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_sync_detect;
                   };
                 } TTspTsiReg_sync_detect;
    typedef union  TTspTsiReg_error_detect
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_error_detect;
                   };
                 } TTspTsiReg_error_detect;
    typedef union  TTspTsiReg_pid_filter
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_pid_filter;
                   };
                 } TTspTsiReg_pid_filter;
    typedef union  TTspTsiReg_stc_clock_div
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_stc_clock_div;
                   };
                 } TTspTsiReg_stc_clock_div;
    typedef union  TTspTsiReg_stc_counter_0
          { UNSG32 u32[2];
            struct {
            struct w32TspTsiReg_stc_counter_0;
            struct w32TspTsiReg_stc_counter_01;
                   };
                 } TTspTsiReg_stc_counter_0;
    typedef union  TTspTsiReg_stc_counter_1
          { UNSG32 u32[2];
            struct {
            struct w32TspTsiReg_stc_counter_1;
            struct w32TspTsiReg_stc_counter_11;
                   };
                 } TTspTsiReg_stc_counter_1;
    typedef union  TTspTsiReg_fifo_select
          { UNSG32 u32[1];
            struct {
            struct w32TspTsiReg_fifo_select;
                   };
                 } TTspTsiReg_fifo_select;

    ///////////////////////////////////////////////////////////
     SIGN32 TspTsiReg_drvrd(SIE_TspTsiReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspTsiReg_drvwr(SIE_TspTsiReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspTsiReg_reset(SIE_TspTsiReg *p);
     SIGN32 TspTsiReg_cmp  (SIE_TspTsiReg *p, SIE_TspTsiReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspTsiReg_check(p,pie,pfx,hLOG) TspTsiReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspTsiReg_print(p,    pfx,hLOG) TspTsiReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspTsiReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspTsoReg               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 global               (P)
///               %unsigned 1  reset                     0x1
///                                    ###
///                                    * 1: reset the TSO
///                                    * 0: normal operation
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00004 packet_format        (P)
///               %unsigned 8  original_size             0xC0
///                                    ###
///                                    * Size (in byte) of the original packet in the TS packet FIFO
///                                    * It must be a multiple of 8. Hardware will ignore the three LSB.
///                                    * 0 is mapped to 256
///                                    ###
///               %unsigned 8  header_padding_size       0x0
///                                    ###
///                                    * Number of bytes before the first byte to output in the original packet
///                                    ###
///               %unsigned 8  output_size               0xBC
///                                    ###
///                                    * Size (in byte) of the packet output to TSO port;
///                                    * 0 is mapped to 256
///                                    * original_size must be no less than the sum of header_padding_size and output_size.
///                                    * Hardware may behave unpredictably if the setting violates these rules.
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x00008 clock_ctrl           (P)
///               %unsigned 1  clock_on                  0x0
///                                    ###
///                                    * 1: turn on the TS output clock
///                                    * 0: turn off the TS output clock
///                                    * Firmware should update other fields in clock_ctrl register only when clock_on is set to zero.
///                                    ###
///               %unsigned 1  clock_gating_enable       0x0
///                                    ###
///                                    * 1: dynamically gate TS clock for invalid byte
///                                    * 0: TS clock is free running
///                                    ###
///               %unsigned 6  reserved_0                
///               %unsigned 8  divisor                   0x1
///                                    ###
///                                    * Divisor used to generate TS output clock from TS reference clock
///                                    * 0 is mapped to 256
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0000C port_ctrl            (P)
///               %unsigned 1  serial_mode               0x0
///                                    ###
///                                    * 1: TS output works in serial mode.
///                                    * 0: TS output works in 8-bit parallel mode.
///                                    ###
///               %unsigned 1  serial_pin_select         0x0
///                                    ###
///                                    * 1: In serial mode, use tsoData[7] as data pins
///                                    * 0: In serial mode, use tsoData[0] as data pins
///                                    ###
///               %unsigned 1  lsb_first                 0x0
///                                    ###
///                                    * 1: In serial mode, output MSB of a byte first
///                                    * 0: In serial mode, output LSB of a byte first
///                                    * Valid only when serial_mode is one
///                                    ###
///               %unsigned 1  sync_pulse_8bit           0x0
///                                    ###
///                                    * 1: tsoSync signal is set for all the 8 bits in sync byte.
///                                    * 0: tsoSync signal is set for the first bit in sync byte.
///                                    * Valid only when serial_mode is one.
///                                    ###
///               %unsigned 4  reserved_0                
///               %unsigned 1  ts_clock_polarity         0x0
///                                    ###
///                                    * 1: TS output data/control signals change at rising edge of TS output clock
///                                    * 0: TS output data/control signals change at falling edge of TS output clock
///                                    ###
///               %unsigned 1  ts_valid_polarity         0x1
///                                    ###
///                                    * 1: tsoValid is active high
///                                    * 0: tsoValid is active low
///                                    ###
///               %unsigned 1  ts_sync_polarity          0x1
///                                    ###
///                                    * 1: tsoSync is active high
///                                    * 0: tsoSync is active low
///                                    ###
///               %unsigned 5  reserved_1                
///               %unsigned 8  gap_size_between_bytes    0x0
///                                    ###
///                                    * Number of idle cycles between two valid bytes
///                                    ###
///               %unsigned 8  gap_size_between_packets  0x1
///                                    ###
///                                    * Number of idle cycles between two TS packets
///                                    ###
///     @ 0x00010 status               (R-)
///               %unsigned 1  idle                      0x1
///                                    ###
///                                    * 1: TSO is idle. All the state machines are idle and all the pipelines are empty
///                                    * 0: TSO is in the middle of transferring data.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00014 fifo_select          (P)
///               %unsigned 1  figo1                     0x0
///                                    ###
///                                    * 0: connect to HBO of FIGO 0
///                                    * 1: connect to HBO of FIGO 1
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      24B, bits:      75b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspTsoReg
#define h_TspTsoReg (){}

    #define     RA_TspTsoReg_global                            0x0000

    #define     BA_TspTsoReg_global_reset                      0x0000
    #define     B16TspTsoReg_global_reset                      0x0000
    #define   LSb32TspTsoReg_global_reset                         0
    #define   LSb16TspTsoReg_global_reset                         0
    #define       bTspTsoReg_global_reset                      1
    #define   MSK32TspTsoReg_global_reset                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsoReg_packet_format                     0x0004

    #define     BA_TspTsoReg_packet_format_original_size       0x0004
    #define     B16TspTsoReg_packet_format_original_size       0x0004
    #define   LSb32TspTsoReg_packet_format_original_size          0
    #define   LSb16TspTsoReg_packet_format_original_size          0
    #define       bTspTsoReg_packet_format_original_size       8
    #define   MSK32TspTsoReg_packet_format_original_size          0x000000FF

    #define     BA_TspTsoReg_packet_format_header_padding_size 0x0005
    #define     B16TspTsoReg_packet_format_header_padding_size 0x0004
    #define   LSb32TspTsoReg_packet_format_header_padding_size    8
    #define   LSb16TspTsoReg_packet_format_header_padding_size    8
    #define       bTspTsoReg_packet_format_header_padding_size 8
    #define   MSK32TspTsoReg_packet_format_header_padding_size    0x0000FF00

    #define     BA_TspTsoReg_packet_format_output_size         0x0006
    #define     B16TspTsoReg_packet_format_output_size         0x0006
    #define   LSb32TspTsoReg_packet_format_output_size            16
    #define   LSb16TspTsoReg_packet_format_output_size            0
    #define       bTspTsoReg_packet_format_output_size         8
    #define   MSK32TspTsoReg_packet_format_output_size            0x00FF0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsoReg_clock_ctrl                        0x0008

    #define     BA_TspTsoReg_clock_ctrl_clock_on               0x0008
    #define     B16TspTsoReg_clock_ctrl_clock_on               0x0008
    #define   LSb32TspTsoReg_clock_ctrl_clock_on                  0
    #define   LSb16TspTsoReg_clock_ctrl_clock_on                  0
    #define       bTspTsoReg_clock_ctrl_clock_on               1
    #define   MSK32TspTsoReg_clock_ctrl_clock_on                  0x00000001

    #define     BA_TspTsoReg_clock_ctrl_clock_gating_enable    0x0008
    #define     B16TspTsoReg_clock_ctrl_clock_gating_enable    0x0008
    #define   LSb32TspTsoReg_clock_ctrl_clock_gating_enable       1
    #define   LSb16TspTsoReg_clock_ctrl_clock_gating_enable       1
    #define       bTspTsoReg_clock_ctrl_clock_gating_enable    1
    #define   MSK32TspTsoReg_clock_ctrl_clock_gating_enable       0x00000002

    #define     BA_TspTsoReg_clock_ctrl_reserved_0             0x0008
    #define     B16TspTsoReg_clock_ctrl_reserved_0             0x0008
    #define   LSb32TspTsoReg_clock_ctrl_reserved_0                2
    #define   LSb16TspTsoReg_clock_ctrl_reserved_0                2
    #define       bTspTsoReg_clock_ctrl_reserved_0             6
    #define   MSK32TspTsoReg_clock_ctrl_reserved_0                0x000000FC

    #define     BA_TspTsoReg_clock_ctrl_divisor                0x0009
    #define     B16TspTsoReg_clock_ctrl_divisor                0x0008
    #define   LSb32TspTsoReg_clock_ctrl_divisor                   8
    #define   LSb16TspTsoReg_clock_ctrl_divisor                   8
    #define       bTspTsoReg_clock_ctrl_divisor                8
    #define   MSK32TspTsoReg_clock_ctrl_divisor                   0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsoReg_port_ctrl                         0x000C

    #define     BA_TspTsoReg_port_ctrl_serial_mode             0x000C
    #define     B16TspTsoReg_port_ctrl_serial_mode             0x000C
    #define   LSb32TspTsoReg_port_ctrl_serial_mode                0
    #define   LSb16TspTsoReg_port_ctrl_serial_mode                0
    #define       bTspTsoReg_port_ctrl_serial_mode             1
    #define   MSK32TspTsoReg_port_ctrl_serial_mode                0x00000001

    #define     BA_TspTsoReg_port_ctrl_serial_pin_select       0x000C
    #define     B16TspTsoReg_port_ctrl_serial_pin_select       0x000C
    #define   LSb32TspTsoReg_port_ctrl_serial_pin_select          1
    #define   LSb16TspTsoReg_port_ctrl_serial_pin_select          1
    #define       bTspTsoReg_port_ctrl_serial_pin_select       1
    #define   MSK32TspTsoReg_port_ctrl_serial_pin_select          0x00000002

    #define     BA_TspTsoReg_port_ctrl_lsb_first               0x000C
    #define     B16TspTsoReg_port_ctrl_lsb_first               0x000C
    #define   LSb32TspTsoReg_port_ctrl_lsb_first                  2
    #define   LSb16TspTsoReg_port_ctrl_lsb_first                  2
    #define       bTspTsoReg_port_ctrl_lsb_first               1
    #define   MSK32TspTsoReg_port_ctrl_lsb_first                  0x00000004

    #define     BA_TspTsoReg_port_ctrl_sync_pulse_8bit         0x000C
    #define     B16TspTsoReg_port_ctrl_sync_pulse_8bit         0x000C
    #define   LSb32TspTsoReg_port_ctrl_sync_pulse_8bit            3
    #define   LSb16TspTsoReg_port_ctrl_sync_pulse_8bit            3
    #define       bTspTsoReg_port_ctrl_sync_pulse_8bit         1
    #define   MSK32TspTsoReg_port_ctrl_sync_pulse_8bit            0x00000008

    #define     BA_TspTsoReg_port_ctrl_reserved_0              0x000C
    #define     B16TspTsoReg_port_ctrl_reserved_0              0x000C
    #define   LSb32TspTsoReg_port_ctrl_reserved_0                 4
    #define   LSb16TspTsoReg_port_ctrl_reserved_0                 4
    #define       bTspTsoReg_port_ctrl_reserved_0              4
    #define   MSK32TspTsoReg_port_ctrl_reserved_0                 0x000000F0

    #define     BA_TspTsoReg_port_ctrl_ts_clock_polarity       0x000D
    #define     B16TspTsoReg_port_ctrl_ts_clock_polarity       0x000C
    #define   LSb32TspTsoReg_port_ctrl_ts_clock_polarity          8
    #define   LSb16TspTsoReg_port_ctrl_ts_clock_polarity          8
    #define       bTspTsoReg_port_ctrl_ts_clock_polarity       1
    #define   MSK32TspTsoReg_port_ctrl_ts_clock_polarity          0x00000100

    #define     BA_TspTsoReg_port_ctrl_ts_valid_polarity       0x000D
    #define     B16TspTsoReg_port_ctrl_ts_valid_polarity       0x000C
    #define   LSb32TspTsoReg_port_ctrl_ts_valid_polarity          9
    #define   LSb16TspTsoReg_port_ctrl_ts_valid_polarity          9
    #define       bTspTsoReg_port_ctrl_ts_valid_polarity       1
    #define   MSK32TspTsoReg_port_ctrl_ts_valid_polarity          0x00000200

    #define     BA_TspTsoReg_port_ctrl_ts_sync_polarity        0x000D
    #define     B16TspTsoReg_port_ctrl_ts_sync_polarity        0x000C
    #define   LSb32TspTsoReg_port_ctrl_ts_sync_polarity           10
    #define   LSb16TspTsoReg_port_ctrl_ts_sync_polarity           10
    #define       bTspTsoReg_port_ctrl_ts_sync_polarity        1
    #define   MSK32TspTsoReg_port_ctrl_ts_sync_polarity           0x00000400

    #define     BA_TspTsoReg_port_ctrl_reserved_1              0x000D
    #define     B16TspTsoReg_port_ctrl_reserved_1              0x000C
    #define   LSb32TspTsoReg_port_ctrl_reserved_1                 11
    #define   LSb16TspTsoReg_port_ctrl_reserved_1                 11
    #define       bTspTsoReg_port_ctrl_reserved_1              5
    #define   MSK32TspTsoReg_port_ctrl_reserved_1                 0x0000F800

    #define     BA_TspTsoReg_port_ctrl_gap_size_between_bytes  0x000E
    #define     B16TspTsoReg_port_ctrl_gap_size_between_bytes  0x000E
    #define   LSb32TspTsoReg_port_ctrl_gap_size_between_bytes     16
    #define   LSb16TspTsoReg_port_ctrl_gap_size_between_bytes     0
    #define       bTspTsoReg_port_ctrl_gap_size_between_bytes  8
    #define   MSK32TspTsoReg_port_ctrl_gap_size_between_bytes     0x00FF0000

    #define     BA_TspTsoReg_port_ctrl_gap_size_between_packets 0x000F
    #define     B16TspTsoReg_port_ctrl_gap_size_between_packets 0x000E
    #define   LSb32TspTsoReg_port_ctrl_gap_size_between_packets    24
    #define   LSb16TspTsoReg_port_ctrl_gap_size_between_packets    8
    #define       bTspTsoReg_port_ctrl_gap_size_between_packets 8
    #define   MSK32TspTsoReg_port_ctrl_gap_size_between_packets    0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsoReg_status                            0x0010

    #define     BA_TspTsoReg_status_idle                       0x0010
    #define     B16TspTsoReg_status_idle                       0x0010
    #define   LSb32TspTsoReg_status_idle                          0
    #define   LSb16TspTsoReg_status_idle                          0
    #define       bTspTsoReg_status_idle                       1
    #define   MSK32TspTsoReg_status_idle                          0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_TspTsoReg_fifo_select                       0x0014

    #define     BA_TspTsoReg_fifo_select_figo1                 0x0014
    #define     B16TspTsoReg_fifo_select_figo1                 0x0014
    #define   LSb32TspTsoReg_fifo_select_figo1                    0
    #define   LSb16TspTsoReg_fifo_select_figo1                    0
    #define       bTspTsoReg_fifo_select_figo1                 1
    #define   MSK32TspTsoReg_fifo_select_figo1                    0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspTsoReg {
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsoReg_global_reset(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32TspTsoReg_global_reset(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsoReg_global_reset(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16TspTsoReg_global_reset(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32TspTsoReg_global                            {\
            UNSG32 uglobal_reset                               :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32TspTsoReg_global;
            struct w32TspTsoReg_global;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsoReg_packet_format_original_size(r32)  _BFGET_(r32, 7, 0)
    #define   SET32TspTsoReg_packet_format_original_size(r32,v) _BFSET_(r32, 7, 0,v)
    #define   GET16TspTsoReg_packet_format_original_size(r16)  _BFGET_(r16, 7, 0)
    #define   SET16TspTsoReg_packet_format_original_size(r16,v) _BFSET_(r16, 7, 0,v)

    #define   GET32TspTsoReg_packet_format_header_padding_size(r32) _BFGET_(r32,15, 8)
    #define   SET32TspTsoReg_packet_format_header_padding_size(r32,v) _BFSET_(r32,15, 8,v)
    #define   GET16TspTsoReg_packet_format_header_padding_size(r16) _BFGET_(r16,15, 8)
    #define   SET16TspTsoReg_packet_format_header_padding_size(r16,v) _BFSET_(r16,15, 8,v)

    #define   GET32TspTsoReg_packet_format_output_size(r32)    _BFGET_(r32,23,16)
    #define   SET32TspTsoReg_packet_format_output_size(r32,v)  _BFSET_(r32,23,16,v)
    #define   GET16TspTsoReg_packet_format_output_size(r16)    _BFGET_(r16, 7, 0)
    #define   SET16TspTsoReg_packet_format_output_size(r16,v)  _BFSET_(r16, 7, 0,v)

    #define     w32TspTsoReg_packet_format                     {\
            UNSG32 upacket_format_original_size                :  8;\
            UNSG32 upacket_format_header_padding_size          :  8;\
            UNSG32 upacket_format_output_size                  :  8;\
            UNSG32 RSVDx4_b24                                  :  8;\
          }
    union { UNSG32 u32TspTsoReg_packet_format;
            struct w32TspTsoReg_packet_format;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsoReg_clock_ctrl_clock_on(r32)          _BFGET_(r32, 0, 0)
    #define   SET32TspTsoReg_clock_ctrl_clock_on(r32,v)        _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsoReg_clock_ctrl_clock_on(r16)          _BFGET_(r16, 0, 0)
    #define   SET16TspTsoReg_clock_ctrl_clock_on(r16,v)        _BFSET_(r16, 0, 0,v)

    #define   GET32TspTsoReg_clock_ctrl_clock_gating_enable(r32) _BFGET_(r32, 1, 1)
    #define   SET32TspTsoReg_clock_ctrl_clock_gating_enable(r32,v) _BFSET_(r32, 1, 1,v)
    #define   GET16TspTsoReg_clock_ctrl_clock_gating_enable(r16) _BFGET_(r16, 1, 1)
    #define   SET16TspTsoReg_clock_ctrl_clock_gating_enable(r16,v) _BFSET_(r16, 1, 1,v)

    #define   GET32TspTsoReg_clock_ctrl_reserved_0(r32)        _BFGET_(r32, 7, 2)
    #define   SET32TspTsoReg_clock_ctrl_reserved_0(r32,v)      _BFSET_(r32, 7, 2,v)
    #define   GET16TspTsoReg_clock_ctrl_reserved_0(r16)        _BFGET_(r16, 7, 2)
    #define   SET16TspTsoReg_clock_ctrl_reserved_0(r16,v)      _BFSET_(r16, 7, 2,v)

    #define   GET32TspTsoReg_clock_ctrl_divisor(r32)           _BFGET_(r32,15, 8)
    #define   SET32TspTsoReg_clock_ctrl_divisor(r32,v)         _BFSET_(r32,15, 8,v)
    #define   GET16TspTsoReg_clock_ctrl_divisor(r16)           _BFGET_(r16,15, 8)
    #define   SET16TspTsoReg_clock_ctrl_divisor(r16,v)         _BFSET_(r16,15, 8,v)

    #define     w32TspTsoReg_clock_ctrl                        {\
            UNSG32 uclock_ctrl_clock_on                        :  1;\
            UNSG32 uclock_ctrl_clock_gating_enable             :  1;\
            UNSG32 uclock_ctrl_reserved_0                      :  6;\
            UNSG32 uclock_ctrl_divisor                         :  8;\
            UNSG32 RSVDx8_b16                                  : 16;\
          }
    union { UNSG32 u32TspTsoReg_clock_ctrl;
            struct w32TspTsoReg_clock_ctrl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsoReg_port_ctrl_serial_mode(r32)        _BFGET_(r32, 0, 0)
    #define   SET32TspTsoReg_port_ctrl_serial_mode(r32,v)      _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsoReg_port_ctrl_serial_mode(r16)        _BFGET_(r16, 0, 0)
    #define   SET16TspTsoReg_port_ctrl_serial_mode(r16,v)      _BFSET_(r16, 0, 0,v)

    #define   GET32TspTsoReg_port_ctrl_serial_pin_select(r32)  _BFGET_(r32, 1, 1)
    #define   SET32TspTsoReg_port_ctrl_serial_pin_select(r32,v) _BFSET_(r32, 1, 1,v)
    #define   GET16TspTsoReg_port_ctrl_serial_pin_select(r16)  _BFGET_(r16, 1, 1)
    #define   SET16TspTsoReg_port_ctrl_serial_pin_select(r16,v) _BFSET_(r16, 1, 1,v)

    #define   GET32TspTsoReg_port_ctrl_lsb_first(r32)          _BFGET_(r32, 2, 2)
    #define   SET32TspTsoReg_port_ctrl_lsb_first(r32,v)        _BFSET_(r32, 2, 2,v)
    #define   GET16TspTsoReg_port_ctrl_lsb_first(r16)          _BFGET_(r16, 2, 2)
    #define   SET16TspTsoReg_port_ctrl_lsb_first(r16,v)        _BFSET_(r16, 2, 2,v)

    #define   GET32TspTsoReg_port_ctrl_sync_pulse_8bit(r32)    _BFGET_(r32, 3, 3)
    #define   SET32TspTsoReg_port_ctrl_sync_pulse_8bit(r32,v)  _BFSET_(r32, 3, 3,v)
    #define   GET16TspTsoReg_port_ctrl_sync_pulse_8bit(r16)    _BFGET_(r16, 3, 3)
    #define   SET16TspTsoReg_port_ctrl_sync_pulse_8bit(r16,v)  _BFSET_(r16, 3, 3,v)

    #define   GET32TspTsoReg_port_ctrl_reserved_0(r32)         _BFGET_(r32, 7, 4)
    #define   SET32TspTsoReg_port_ctrl_reserved_0(r32,v)       _BFSET_(r32, 7, 4,v)
    #define   GET16TspTsoReg_port_ctrl_reserved_0(r16)         _BFGET_(r16, 7, 4)
    #define   SET16TspTsoReg_port_ctrl_reserved_0(r16,v)       _BFSET_(r16, 7, 4,v)

    #define   GET32TspTsoReg_port_ctrl_ts_clock_polarity(r32)  _BFGET_(r32, 8, 8)
    #define   SET32TspTsoReg_port_ctrl_ts_clock_polarity(r32,v) _BFSET_(r32, 8, 8,v)
    #define   GET16TspTsoReg_port_ctrl_ts_clock_polarity(r16)  _BFGET_(r16, 8, 8)
    #define   SET16TspTsoReg_port_ctrl_ts_clock_polarity(r16,v) _BFSET_(r16, 8, 8,v)

    #define   GET32TspTsoReg_port_ctrl_ts_valid_polarity(r32)  _BFGET_(r32, 9, 9)
    #define   SET32TspTsoReg_port_ctrl_ts_valid_polarity(r32,v) _BFSET_(r32, 9, 9,v)
    #define   GET16TspTsoReg_port_ctrl_ts_valid_polarity(r16)  _BFGET_(r16, 9, 9)
    #define   SET16TspTsoReg_port_ctrl_ts_valid_polarity(r16,v) _BFSET_(r16, 9, 9,v)

    #define   GET32TspTsoReg_port_ctrl_ts_sync_polarity(r32)   _BFGET_(r32,10,10)
    #define   SET32TspTsoReg_port_ctrl_ts_sync_polarity(r32,v) _BFSET_(r32,10,10,v)
    #define   GET16TspTsoReg_port_ctrl_ts_sync_polarity(r16)   _BFGET_(r16,10,10)
    #define   SET16TspTsoReg_port_ctrl_ts_sync_polarity(r16,v) _BFSET_(r16,10,10,v)

    #define   GET32TspTsoReg_port_ctrl_reserved_1(r32)         _BFGET_(r32,15,11)
    #define   SET32TspTsoReg_port_ctrl_reserved_1(r32,v)       _BFSET_(r32,15,11,v)
    #define   GET16TspTsoReg_port_ctrl_reserved_1(r16)         _BFGET_(r16,15,11)
    #define   SET16TspTsoReg_port_ctrl_reserved_1(r16,v)       _BFSET_(r16,15,11,v)

    #define   GET32TspTsoReg_port_ctrl_gap_size_between_bytes(r32) _BFGET_(r32,23,16)
    #define   SET32TspTsoReg_port_ctrl_gap_size_between_bytes(r32,v) _BFSET_(r32,23,16,v)
    #define   GET16TspTsoReg_port_ctrl_gap_size_between_bytes(r16) _BFGET_(r16, 7, 0)
    #define   SET16TspTsoReg_port_ctrl_gap_size_between_bytes(r16,v) _BFSET_(r16, 7, 0,v)

    #define   GET32TspTsoReg_port_ctrl_gap_size_between_packets(r32) _BFGET_(r32,31,24)
    #define   SET32TspTsoReg_port_ctrl_gap_size_between_packets(r32,v) _BFSET_(r32,31,24,v)
    #define   GET16TspTsoReg_port_ctrl_gap_size_between_packets(r16) _BFGET_(r16,15, 8)
    #define   SET16TspTsoReg_port_ctrl_gap_size_between_packets(r16,v) _BFSET_(r16,15, 8,v)

    #define     w32TspTsoReg_port_ctrl                         {\
            UNSG32 uport_ctrl_serial_mode                      :  1;\
            UNSG32 uport_ctrl_serial_pin_select                :  1;\
            UNSG32 uport_ctrl_lsb_first                        :  1;\
            UNSG32 uport_ctrl_sync_pulse_8bit                  :  1;\
            UNSG32 uport_ctrl_reserved_0                       :  4;\
            UNSG32 uport_ctrl_ts_clock_polarity                :  1;\
            UNSG32 uport_ctrl_ts_valid_polarity                :  1;\
            UNSG32 uport_ctrl_ts_sync_polarity                 :  1;\
            UNSG32 uport_ctrl_reserved_1                       :  5;\
            UNSG32 uport_ctrl_gap_size_between_bytes           :  8;\
            UNSG32 uport_ctrl_gap_size_between_packets         :  8;\
          }
    union { UNSG32 u32TspTsoReg_port_ctrl;
            struct w32TspTsoReg_port_ctrl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsoReg_status_idle(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32TspTsoReg_status_idle(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsoReg_status_idle(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16TspTsoReg_status_idle(r16,v)                _BFSET_(r16, 0, 0,v)

    #define     w32TspTsoReg_status                            {\
            UNSG32 ustatus_idle                                :  1;\
            UNSG32 RSVDx10_b1                                  : 31;\
          }
    union { UNSG32 u32TspTsoReg_status;
            struct w32TspTsoReg_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspTsoReg_fifo_select_figo1(r32)            _BFGET_(r32, 0, 0)
    #define   SET32TspTsoReg_fifo_select_figo1(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16TspTsoReg_fifo_select_figo1(r16)            _BFGET_(r16, 0, 0)
    #define   SET16TspTsoReg_fifo_select_figo1(r16,v)          _BFSET_(r16, 0, 0,v)

    #define     w32TspTsoReg_fifo_select                       {\
            UNSG32 ufifo_select_figo1                          :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32TspTsoReg_fifo_select;
            struct w32TspTsoReg_fifo_select;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspTsoReg;

    typedef union  T32TspTsoReg_global
          { UNSG32 u32;
            struct w32TspTsoReg_global;
                 } T32TspTsoReg_global;
    typedef union  T32TspTsoReg_packet_format
          { UNSG32 u32;
            struct w32TspTsoReg_packet_format;
                 } T32TspTsoReg_packet_format;
    typedef union  T32TspTsoReg_clock_ctrl
          { UNSG32 u32;
            struct w32TspTsoReg_clock_ctrl;
                 } T32TspTsoReg_clock_ctrl;
    typedef union  T32TspTsoReg_port_ctrl
          { UNSG32 u32;
            struct w32TspTsoReg_port_ctrl;
                 } T32TspTsoReg_port_ctrl;
    typedef union  T32TspTsoReg_status
          { UNSG32 u32;
            struct w32TspTsoReg_status;
                 } T32TspTsoReg_status;
    typedef union  T32TspTsoReg_fifo_select
          { UNSG32 u32;
            struct w32TspTsoReg_fifo_select;
                 } T32TspTsoReg_fifo_select;
    ///////////////////////////////////////////////////////////

    typedef union  TTspTsoReg_global
          { UNSG32 u32[1];
            struct {
            struct w32TspTsoReg_global;
                   };
                 } TTspTsoReg_global;
    typedef union  TTspTsoReg_packet_format
          { UNSG32 u32[1];
            struct {
            struct w32TspTsoReg_packet_format;
                   };
                 } TTspTsoReg_packet_format;
    typedef union  TTspTsoReg_clock_ctrl
          { UNSG32 u32[1];
            struct {
            struct w32TspTsoReg_clock_ctrl;
                   };
                 } TTspTsoReg_clock_ctrl;
    typedef union  TTspTsoReg_port_ctrl
          { UNSG32 u32[1];
            struct {
            struct w32TspTsoReg_port_ctrl;
                   };
                 } TTspTsoReg_port_ctrl;
    typedef union  TTspTsoReg_status
          { UNSG32 u32[1];
            struct {
            struct w32TspTsoReg_status;
                   };
                 } TTspTsoReg_status;
    typedef union  TTspTsoReg_fifo_select
          { UNSG32 u32[1];
            struct {
            struct w32TspTsoReg_fifo_select;
                   };
                 } TTspTsoReg_fifo_select;

    ///////////////////////////////////////////////////////////
     SIGN32 TspTsoReg_drvrd(SIE_TspTsoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspTsoReg_drvwr(SIE_TspTsoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspTsoReg_reset(SIE_TspTsoReg *p);
     SIGN32 TspTsoReg_cmp  (SIE_TspTsoReg *p, SIE_TspTsoReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspTsoReg_check(p,pie,pfx,hLOG) TspTsoReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspTsoReg_print(p,    pfx,hLOG) TspTsoReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspTsoReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSecRegRule                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 enable               (W-)
///               %unsigned 32 enable                    
///                                    ###
///                                    * Writing 1 to a bit enables corresponded rule
///                                    ###
///     @ 0x00004 disable              (W-)
///               %unsigned 32 disable                   
///                                    ###
///                                    * Writing 1 to a bit disables the correspond rule
///                                    ###
///     @ 0x00008 status               (R-)
///               %unsigned 32 status                    
///                                    ###
///                                    * Rule status.
///                                    * 1: enabled
///                                    * 0: disabled
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      12B, bits:      96b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSecRegRule
#define h_TspSecRegRule (){}

    #define     RA_TspSecRegRule_enable                        0x0000

    #define     BA_TspSecRegRule_enable_enable                 0x0000
    #define     B16TspSecRegRule_enable_enable                 0x0000
    #define   LSb32TspSecRegRule_enable_enable                    0
    #define   LSb16TspSecRegRule_enable_enable                    0
    #define       bTspSecRegRule_enable_enable                 32
    #define   MSK32TspSecRegRule_enable_enable                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRegRule_disable                       0x0004

    #define     BA_TspSecRegRule_disable_disable               0x0004
    #define     B16TspSecRegRule_disable_disable               0x0004
    #define   LSb32TspSecRegRule_disable_disable                  0
    #define   LSb16TspSecRegRule_disable_disable                  0
    #define       bTspSecRegRule_disable_disable               32
    #define   MSK32TspSecRegRule_disable_disable                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecRegRule_status                        0x0008

    #define     BA_TspSecRegRule_status_status                 0x0008
    #define     B16TspSecRegRule_status_status                 0x0008
    #define   LSb32TspSecRegRule_status_status                    0
    #define   LSb16TspSecRegRule_status_status                    0
    #define       bTspSecRegRule_status_status                 32
    #define   MSK32TspSecRegRule_status_status                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSecRegRule {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRegRule_enable_enable(r32)            _BFGET_(r32,31, 0)
    #define   SET32TspSecRegRule_enable_enable(r32,v)          _BFSET_(r32,31, 0,v)

    #define     w32TspSecRegRule_enable                        {\
            UNSG32 uenable_enable                              : 32;\
          }
    union { UNSG32 u32TspSecRegRule_enable;
            struct w32TspSecRegRule_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRegRule_disable_disable(r32)          _BFGET_(r32,31, 0)
    #define   SET32TspSecRegRule_disable_disable(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32TspSecRegRule_disable                       {\
            UNSG32 udisable_disable                            : 32;\
          }
    union { UNSG32 u32TspSecRegRule_disable;
            struct w32TspSecRegRule_disable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecRegRule_status_status(r32)            _BFGET_(r32,31, 0)
    #define   SET32TspSecRegRule_status_status(r32,v)          _BFSET_(r32,31, 0,v)

    #define     w32TspSecRegRule_status                        {\
            UNSG32 ustatus_status                              : 32;\
          }
    union { UNSG32 u32TspSecRegRule_status;
            struct w32TspSecRegRule_status;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspSecRegRule;

    typedef union  T32TspSecRegRule_enable
          { UNSG32 u32;
            struct w32TspSecRegRule_enable;
                 } T32TspSecRegRule_enable;
    typedef union  T32TspSecRegRule_disable
          { UNSG32 u32;
            struct w32TspSecRegRule_disable;
                 } T32TspSecRegRule_disable;
    typedef union  T32TspSecRegRule_status
          { UNSG32 u32;
            struct w32TspSecRegRule_status;
                 } T32TspSecRegRule_status;
    ///////////////////////////////////////////////////////////

    typedef union  TTspSecRegRule_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRegRule_enable;
                   };
                 } TTspSecRegRule_enable;
    typedef union  TTspSecRegRule_disable
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRegRule_disable;
                   };
                 } TTspSecRegRule_disable;
    typedef union  TTspSecRegRule_status
          { UNSG32 u32[1];
            struct {
            struct w32TspSecRegRule_status;
                   };
                 } TTspSecRegRule_status;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSecRegRule_drvrd(SIE_TspSecRegRule *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSecRegRule_drvwr(SIE_TspSecRegRule *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSecRegRule_reset(SIE_TspSecRegRule *p);
     SIGN32 TspSecRegRule_cmp  (SIE_TspSecRegRule *p, SIE_TspSecRegRule *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSecRegRule_check(p,pie,pfx,hLOG) TspSecRegRule_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSecRegRule_print(p,    pfx,hLOG) TspSecRegRule_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSecRegRule
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSecReg               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 global               (P)
///               %unsigned 1  reset                     0x1
///                                    ###
///                                    * 1: reset section filter;
///                                    * 0: normal operation
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00004                      (P)
///     # 0x00004 rule_0               
///               $TspSecRegRule       rule_0            REG          
///                                    ###
///                                    * Register to control rule 0 to rule 31.
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 rule_32              
///               $TspSecRegRule       rule_32           REG          
///                                    ###
///                                    * Register to control rule 32 to rule 63.
///                                    ###
///     @ 0x0001C                      (P)
///     # 0x0001C rule_64              
///               $TspSecRegRule       rule_64           REG          
///                                    ###
///                                    * Register to control rule 64 to rule 95.
///                                    ###
///     @ 0x00028                      (P)
///     # 0x00028 rule_96              
///               $TspSecRegRule       rule_96           REG          
///                                    ###
///                                    * Register to control rule 96 to rule 127.
///                                    ###
///     @ 0x00034 status               (R-)
///               %unsigned 16 rule_address              0x0
///                                    ###
///                                    * current section filter rule pointer
///                                    ###
///               %unsigned 8  filter_id                 0x0
///                                    ###
///                                    * current section filter ID the engine is matching on
///                                    ###
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      56B, bits:     409b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSecReg
#define h_TspSecReg (){}

    #define     RA_TspSecReg_global                            0x0000

    #define     BA_TspSecReg_global_reset                      0x0000
    #define     B16TspSecReg_global_reset                      0x0000
    #define   LSb32TspSecReg_global_reset                         0
    #define   LSb16TspSecReg_global_reset                         0
    #define       bTspSecReg_global_reset                      1
    #define   MSK32TspSecReg_global_reset                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecReg_rule_0                            0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecReg_rule_32                           0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecReg_rule_64                           0x001C
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecReg_rule_96                           0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_TspSecReg_status                            0x0034

    #define     BA_TspSecReg_status_rule_address               0x0034
    #define     B16TspSecReg_status_rule_address               0x0034
    #define   LSb32TspSecReg_status_rule_address                  0
    #define   LSb16TspSecReg_status_rule_address                  0
    #define       bTspSecReg_status_rule_address               16
    #define   MSK32TspSecReg_status_rule_address                  0x0000FFFF

    #define     BA_TspSecReg_status_filter_id                  0x0036
    #define     B16TspSecReg_status_filter_id                  0x0036
    #define   LSb32TspSecReg_status_filter_id                     16
    #define   LSb16TspSecReg_status_filter_id                     0
    #define       bTspSecReg_status_filter_id                  8
    #define   MSK32TspSecReg_status_filter_id                     0x00FF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSecReg {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecReg_global_reset(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32TspSecReg_global_reset(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16TspSecReg_global_reset(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16TspSecReg_global_reset(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32TspSecReg_global                            {\
            UNSG32 uglobal_reset                               :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32TspSecReg_global;
            struct w32TspSecReg_global;
          };
    ///////////////////////////////////////////////////////////
              SIE_TspSecRegRule                                ie_rule_0;
    ///////////////////////////////////////////////////////////
              SIE_TspSecRegRule                                ie_rule_32;
    ///////////////////////////////////////////////////////////
              SIE_TspSecRegRule                                ie_rule_64;
    ///////////////////////////////////////////////////////////
              SIE_TspSecRegRule                                ie_rule_96;
    ///////////////////////////////////////////////////////////
    #define   GET32TspSecReg_status_rule_address(r32)          _BFGET_(r32,15, 0)
    #define   SET32TspSecReg_status_rule_address(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16TspSecReg_status_rule_address(r16)          _BFGET_(r16,15, 0)
    #define   SET16TspSecReg_status_rule_address(r16,v)        _BFSET_(r16,15, 0,v)

    #define   GET32TspSecReg_status_filter_id(r32)             _BFGET_(r32,23,16)
    #define   SET32TspSecReg_status_filter_id(r32,v)           _BFSET_(r32,23,16,v)
    #define   GET16TspSecReg_status_filter_id(r16)             _BFGET_(r16, 7, 0)
    #define   SET16TspSecReg_status_filter_id(r16,v)           _BFSET_(r16, 7, 0,v)

    #define     w32TspSecReg_status                            {\
            UNSG32 ustatus_rule_address                        : 16;\
            UNSG32 ustatus_filter_id                           :  8;\
            UNSG32 RSVDx34_b24                                 :  8;\
          }
    union { UNSG32 u32TspSecReg_status;
            struct w32TspSecReg_status;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspSecReg;

    typedef union  T32TspSecReg_global
          { UNSG32 u32;
            struct w32TspSecReg_global;
                 } T32TspSecReg_global;
    typedef union  T32TspSecReg_status
          { UNSG32 u32;
            struct w32TspSecReg_status;
                 } T32TspSecReg_status;
    ///////////////////////////////////////////////////////////

    typedef union  TTspSecReg_global
          { UNSG32 u32[1];
            struct {
            struct w32TspSecReg_global;
                   };
                 } TTspSecReg_global;
    typedef union  TTspSecReg_status
          { UNSG32 u32[1];
            struct {
            struct w32TspSecReg_status;
                   };
                 } TTspSecReg_status;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSecReg_drvrd(SIE_TspSecReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSecReg_drvwr(SIE_TspSecReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSecReg_reset(SIE_TspSecReg *p);
     SIGN32 TspSecReg_cmp  (SIE_TspSecReg *p, SIE_TspSecReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSecReg_check(p,pie,pfx,hLOG) TspSecReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSecReg_print(p,    pfx,hLOG) TspSecReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSecReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspCryReg               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 global               (P)
///               %unsigned 1  reset                     0x1
///                                    ###
///                                    * 1: reset the crypto engine;
///                                    * 0: normal operation;
///                                    * After resetting crypto engine, firmware also needs to reinitialize the command FIFO before releasing the reset, otherwise, hardware may behave unpredictably.
///                                    ###
///               %unsigned 1  clock_gating_disable      0x0
///                                    ###
///                                    * 0: enable clock gating
///                                    * 1: disable clock gating
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00004 return_address       (P)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Address used to save the return value of command FIFO 0.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00008 command_count        (RW)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Number of command been executed from command FIFO 0;
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0000C return_address_1     (P)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Address used to save the return value of command FIFO 1.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00010 command_count_1      (RW)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Number of command been executed from command FIFO 1;
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00014 return_address_2     (P)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Address used to save the return value of command FIFO 2.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00018 command_count_2      (RW)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Number of command been executed from command FIFO 2;
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0001C return_address_3     (P)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Address used to save the return value of command FIFO 3.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00020 command_count_3      (RW)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Number of command been executed from command FIFO 3;
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00024 return_address_4     (P)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Address used to save the return value of command FIFO 4.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00028 command_count_4      (RW)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Number of command been executed from command FIFO 4;
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0002C return_address_5     (P)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Address used to save the return value of command FIFO 5.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00030 command_count_5      (RW)
///               %unsigned 16 bits                      0x0
///                                    ###
///                                    * Number of command been executed from command FIFO 5;
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      52B, bits:     194b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspCryReg
#define h_TspCryReg (){}

    #define     RA_TspCryReg_global                            0x0000

    #define     BA_TspCryReg_global_reset                      0x0000
    #define     B16TspCryReg_global_reset                      0x0000
    #define   LSb32TspCryReg_global_reset                         0
    #define   LSb16TspCryReg_global_reset                         0
    #define       bTspCryReg_global_reset                      1
    #define   MSK32TspCryReg_global_reset                         0x00000001

    #define     BA_TspCryReg_global_clock_gating_disable       0x0000
    #define     B16TspCryReg_global_clock_gating_disable       0x0000
    #define   LSb32TspCryReg_global_clock_gating_disable          1
    #define   LSb16TspCryReg_global_clock_gating_disable          1
    #define       bTspCryReg_global_clock_gating_disable       1
    #define   MSK32TspCryReg_global_clock_gating_disable          0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_return_address                    0x0004

    #define     BA_TspCryReg_return_address_bits               0x0004
    #define     B16TspCryReg_return_address_bits               0x0004
    #define   LSb32TspCryReg_return_address_bits                  0
    #define   LSb16TspCryReg_return_address_bits                  0
    #define       bTspCryReg_return_address_bits               16
    #define   MSK32TspCryReg_return_address_bits                  0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_command_count                     0x0008

    #define     BA_TspCryReg_command_count_bits                0x0008
    #define     B16TspCryReg_command_count_bits                0x0008
    #define   LSb32TspCryReg_command_count_bits                   0
    #define   LSb16TspCryReg_command_count_bits                   0
    #define       bTspCryReg_command_count_bits                16
    #define   MSK32TspCryReg_command_count_bits                   0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_return_address_1                  0x000C

    #define     BA_TspCryReg_return_address_1_bits             0x000C
    #define     B16TspCryReg_return_address_1_bits             0x000C
    #define   LSb32TspCryReg_return_address_1_bits                0
    #define   LSb16TspCryReg_return_address_1_bits                0
    #define       bTspCryReg_return_address_1_bits             16
    #define   MSK32TspCryReg_return_address_1_bits                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_command_count_1                   0x0010

    #define     BA_TspCryReg_command_count_1_bits              0x0010
    #define     B16TspCryReg_command_count_1_bits              0x0010
    #define   LSb32TspCryReg_command_count_1_bits                 0
    #define   LSb16TspCryReg_command_count_1_bits                 0
    #define       bTspCryReg_command_count_1_bits              16
    #define   MSK32TspCryReg_command_count_1_bits                 0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_return_address_2                  0x0014

    #define     BA_TspCryReg_return_address_2_bits             0x0014
    #define     B16TspCryReg_return_address_2_bits             0x0014
    #define   LSb32TspCryReg_return_address_2_bits                0
    #define   LSb16TspCryReg_return_address_2_bits                0
    #define       bTspCryReg_return_address_2_bits             16
    #define   MSK32TspCryReg_return_address_2_bits                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_command_count_2                   0x0018

    #define     BA_TspCryReg_command_count_2_bits              0x0018
    #define     B16TspCryReg_command_count_2_bits              0x0018
    #define   LSb32TspCryReg_command_count_2_bits                 0
    #define   LSb16TspCryReg_command_count_2_bits                 0
    #define       bTspCryReg_command_count_2_bits              16
    #define   MSK32TspCryReg_command_count_2_bits                 0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_return_address_3                  0x001C

    #define     BA_TspCryReg_return_address_3_bits             0x001C
    #define     B16TspCryReg_return_address_3_bits             0x001C
    #define   LSb32TspCryReg_return_address_3_bits                0
    #define   LSb16TspCryReg_return_address_3_bits                0
    #define       bTspCryReg_return_address_3_bits             16
    #define   MSK32TspCryReg_return_address_3_bits                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_command_count_3                   0x0020

    #define     BA_TspCryReg_command_count_3_bits              0x0020
    #define     B16TspCryReg_command_count_3_bits              0x0020
    #define   LSb32TspCryReg_command_count_3_bits                 0
    #define   LSb16TspCryReg_command_count_3_bits                 0
    #define       bTspCryReg_command_count_3_bits              16
    #define   MSK32TspCryReg_command_count_3_bits                 0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_return_address_4                  0x0024

    #define     BA_TspCryReg_return_address_4_bits             0x0024
    #define     B16TspCryReg_return_address_4_bits             0x0024
    #define   LSb32TspCryReg_return_address_4_bits                0
    #define   LSb16TspCryReg_return_address_4_bits                0
    #define       bTspCryReg_return_address_4_bits             16
    #define   MSK32TspCryReg_return_address_4_bits                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_command_count_4                   0x0028

    #define     BA_TspCryReg_command_count_4_bits              0x0028
    #define     B16TspCryReg_command_count_4_bits              0x0028
    #define   LSb32TspCryReg_command_count_4_bits                 0
    #define   LSb16TspCryReg_command_count_4_bits                 0
    #define       bTspCryReg_command_count_4_bits              16
    #define   MSK32TspCryReg_command_count_4_bits                 0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_return_address_5                  0x002C

    #define     BA_TspCryReg_return_address_5_bits             0x002C
    #define     B16TspCryReg_return_address_5_bits             0x002C
    #define   LSb32TspCryReg_return_address_5_bits                0
    #define   LSb16TspCryReg_return_address_5_bits                0
    #define       bTspCryReg_return_address_5_bits             16
    #define   MSK32TspCryReg_return_address_5_bits                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspCryReg_command_count_5                   0x0030

    #define     BA_TspCryReg_command_count_5_bits              0x0030
    #define     B16TspCryReg_command_count_5_bits              0x0030
    #define   LSb32TspCryReg_command_count_5_bits                 0
    #define   LSb16TspCryReg_command_count_5_bits                 0
    #define       bTspCryReg_command_count_5_bits              16
    #define   MSK32TspCryReg_command_count_5_bits                 0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspCryReg {
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_global_reset(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32TspCryReg_global_reset(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16TspCryReg_global_reset(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16TspCryReg_global_reset(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32TspCryReg_global_clock_gating_disable(r32)  _BFGET_(r32, 1, 1)
    #define   SET32TspCryReg_global_clock_gating_disable(r32,v) _BFSET_(r32, 1, 1,v)
    #define   GET16TspCryReg_global_clock_gating_disable(r16)  _BFGET_(r16, 1, 1)
    #define   SET16TspCryReg_global_clock_gating_disable(r16,v) _BFSET_(r16, 1, 1,v)

    #define     w32TspCryReg_global                            {\
            UNSG32 uglobal_reset                               :  1;\
            UNSG32 uglobal_clock_gating_disable                :  1;\
            UNSG32 RSVDx0_b2                                   : 30;\
          }
    union { UNSG32 u32TspCryReg_global;
            struct w32TspCryReg_global;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_return_address_bits(r32)          _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_return_address_bits(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_return_address_bits(r16)          _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_return_address_bits(r16,v)        _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_return_address                    {\
            UNSG32 ureturn_address_bits                        : 16;\
            UNSG32 RSVDx4_b16                                  : 16;\
          }
    union { UNSG32 u32TspCryReg_return_address;
            struct w32TspCryReg_return_address;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_command_count_bits(r32)           _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_command_count_bits(r32,v)         _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_command_count_bits(r16)           _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_command_count_bits(r16,v)         _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_command_count                     {\
            UNSG32 ucommand_count_bits                         : 16;\
            UNSG32 RSVDx8_b16                                  : 16;\
          }
    union { UNSG32 u32TspCryReg_command_count;
            struct w32TspCryReg_command_count;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_return_address_1_bits(r32)        _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_return_address_1_bits(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_return_address_1_bits(r16)        _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_return_address_1_bits(r16,v)      _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_return_address_1                  {\
            UNSG32 ureturn_address_1_bits                      : 16;\
            UNSG32 RSVDxC_b16                                  : 16;\
          }
    union { UNSG32 u32TspCryReg_return_address_1;
            struct w32TspCryReg_return_address_1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_command_count_1_bits(r32)         _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_command_count_1_bits(r32,v)       _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_command_count_1_bits(r16)         _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_command_count_1_bits(r16,v)       _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_command_count_1                   {\
            UNSG32 ucommand_count_1_bits                       : 16;\
            UNSG32 RSVDx10_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_command_count_1;
            struct w32TspCryReg_command_count_1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_return_address_2_bits(r32)        _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_return_address_2_bits(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_return_address_2_bits(r16)        _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_return_address_2_bits(r16,v)      _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_return_address_2                  {\
            UNSG32 ureturn_address_2_bits                      : 16;\
            UNSG32 RSVDx14_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_return_address_2;
            struct w32TspCryReg_return_address_2;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_command_count_2_bits(r32)         _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_command_count_2_bits(r32,v)       _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_command_count_2_bits(r16)         _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_command_count_2_bits(r16,v)       _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_command_count_2                   {\
            UNSG32 ucommand_count_2_bits                       : 16;\
            UNSG32 RSVDx18_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_command_count_2;
            struct w32TspCryReg_command_count_2;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_return_address_3_bits(r32)        _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_return_address_3_bits(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_return_address_3_bits(r16)        _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_return_address_3_bits(r16,v)      _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_return_address_3                  {\
            UNSG32 ureturn_address_3_bits                      : 16;\
            UNSG32 RSVDx1C_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_return_address_3;
            struct w32TspCryReg_return_address_3;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_command_count_3_bits(r32)         _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_command_count_3_bits(r32,v)       _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_command_count_3_bits(r16)         _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_command_count_3_bits(r16,v)       _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_command_count_3                   {\
            UNSG32 ucommand_count_3_bits                       : 16;\
            UNSG32 RSVDx20_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_command_count_3;
            struct w32TspCryReg_command_count_3;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_return_address_4_bits(r32)        _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_return_address_4_bits(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_return_address_4_bits(r16)        _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_return_address_4_bits(r16,v)      _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_return_address_4                  {\
            UNSG32 ureturn_address_4_bits                      : 16;\
            UNSG32 RSVDx24_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_return_address_4;
            struct w32TspCryReg_return_address_4;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_command_count_4_bits(r32)         _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_command_count_4_bits(r32,v)       _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_command_count_4_bits(r16)         _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_command_count_4_bits(r16,v)       _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_command_count_4                   {\
            UNSG32 ucommand_count_4_bits                       : 16;\
            UNSG32 RSVDx28_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_command_count_4;
            struct w32TspCryReg_command_count_4;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_return_address_5_bits(r32)        _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_return_address_5_bits(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_return_address_5_bits(r16)        _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_return_address_5_bits(r16,v)      _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_return_address_5                  {\
            UNSG32 ureturn_address_5_bits                      : 16;\
            UNSG32 RSVDx2C_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_return_address_5;
            struct w32TspCryReg_return_address_5;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspCryReg_command_count_5_bits(r32)         _BFGET_(r32,15, 0)
    #define   SET32TspCryReg_command_count_5_bits(r32,v)       _BFSET_(r32,15, 0,v)
    #define   GET16TspCryReg_command_count_5_bits(r16)         _BFGET_(r16,15, 0)
    #define   SET16TspCryReg_command_count_5_bits(r16,v)       _BFSET_(r16,15, 0,v)

    #define     w32TspCryReg_command_count_5                   {\
            UNSG32 ucommand_count_5_bits                       : 16;\
            UNSG32 RSVDx30_b16                                 : 16;\
          }
    union { UNSG32 u32TspCryReg_command_count_5;
            struct w32TspCryReg_command_count_5;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspCryReg;

    typedef union  T32TspCryReg_global
          { UNSG32 u32;
            struct w32TspCryReg_global;
                 } T32TspCryReg_global;
    typedef union  T32TspCryReg_return_address
          { UNSG32 u32;
            struct w32TspCryReg_return_address;
                 } T32TspCryReg_return_address;
    typedef union  T32TspCryReg_command_count
          { UNSG32 u32;
            struct w32TspCryReg_command_count;
                 } T32TspCryReg_command_count;
    typedef union  T32TspCryReg_return_address_1
          { UNSG32 u32;
            struct w32TspCryReg_return_address_1;
                 } T32TspCryReg_return_address_1;
    typedef union  T32TspCryReg_command_count_1
          { UNSG32 u32;
            struct w32TspCryReg_command_count_1;
                 } T32TspCryReg_command_count_1;
    typedef union  T32TspCryReg_return_address_2
          { UNSG32 u32;
            struct w32TspCryReg_return_address_2;
                 } T32TspCryReg_return_address_2;
    typedef union  T32TspCryReg_command_count_2
          { UNSG32 u32;
            struct w32TspCryReg_command_count_2;
                 } T32TspCryReg_command_count_2;
    typedef union  T32TspCryReg_return_address_3
          { UNSG32 u32;
            struct w32TspCryReg_return_address_3;
                 } T32TspCryReg_return_address_3;
    typedef union  T32TspCryReg_command_count_3
          { UNSG32 u32;
            struct w32TspCryReg_command_count_3;
                 } T32TspCryReg_command_count_3;
    typedef union  T32TspCryReg_return_address_4
          { UNSG32 u32;
            struct w32TspCryReg_return_address_4;
                 } T32TspCryReg_return_address_4;
    typedef union  T32TspCryReg_command_count_4
          { UNSG32 u32;
            struct w32TspCryReg_command_count_4;
                 } T32TspCryReg_command_count_4;
    typedef union  T32TspCryReg_return_address_5
          { UNSG32 u32;
            struct w32TspCryReg_return_address_5;
                 } T32TspCryReg_return_address_5;
    typedef union  T32TspCryReg_command_count_5
          { UNSG32 u32;
            struct w32TspCryReg_command_count_5;
                 } T32TspCryReg_command_count_5;
    ///////////////////////////////////////////////////////////

    typedef union  TTspCryReg_global
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_global;
                   };
                 } TTspCryReg_global;
    typedef union  TTspCryReg_return_address
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_return_address;
                   };
                 } TTspCryReg_return_address;
    typedef union  TTspCryReg_command_count
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_command_count;
                   };
                 } TTspCryReg_command_count;
    typedef union  TTspCryReg_return_address_1
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_return_address_1;
                   };
                 } TTspCryReg_return_address_1;
    typedef union  TTspCryReg_command_count_1
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_command_count_1;
                   };
                 } TTspCryReg_command_count_1;
    typedef union  TTspCryReg_return_address_2
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_return_address_2;
                   };
                 } TTspCryReg_return_address_2;
    typedef union  TTspCryReg_command_count_2
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_command_count_2;
                   };
                 } TTspCryReg_command_count_2;
    typedef union  TTspCryReg_return_address_3
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_return_address_3;
                   };
                 } TTspCryReg_return_address_3;
    typedef union  TTspCryReg_command_count_3
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_command_count_3;
                   };
                 } TTspCryReg_command_count_3;
    typedef union  TTspCryReg_return_address_4
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_return_address_4;
                   };
                 } TTspCryReg_return_address_4;
    typedef union  TTspCryReg_command_count_4
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_command_count_4;
                   };
                 } TTspCryReg_command_count_4;
    typedef union  TTspCryReg_return_address_5
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_return_address_5;
                   };
                 } TTspCryReg_return_address_5;
    typedef union  TTspCryReg_command_count_5
          { UNSG32 u32[1];
            struct {
            struct w32TspCryReg_command_count_5;
                   };
                 } TTspCryReg_command_count_5;

    ///////////////////////////////////////////////////////////
     SIGN32 TspCryReg_drvrd(SIE_TspCryReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspCryReg_drvwr(SIE_TspCryReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspCryReg_reset(SIE_TspCryReg *p);
     SIGN32 TspCryReg_cmp  (SIE_TspCryReg *p, SIE_TspCryReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspCryReg_check(p,pie,pfx,hLOG) TspCryReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspCryReg_print(p,    pfx,hLOG) TspCryReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspCryReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspSwdReg               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 global               (P)
///               %unsigned 2  reset                     0x3
///                                    ###
///                                    * 1: reset the SWD;
///                                    * 0: normal operation;
///                                    * After resetting ,SWD firmware also needs to reinitialize the command FIFO before releasing the reset, otherwise, hardware may behave unpredictably.
///                                    * There are two reset bits, one for each SWD.
///                                    ###
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       2b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspSwdReg
#define h_TspSwdReg (){}

    #define     RA_TspSwdReg_global                            0x0000

    #define     BA_TspSwdReg_global_reset                      0x0000
    #define     B16TspSwdReg_global_reset                      0x0000
    #define   LSb32TspSwdReg_global_reset                         0
    #define   LSb16TspSwdReg_global_reset                         0
    #define       bTspSwdReg_global_reset                      2
    #define   MSK32TspSwdReg_global_reset                         0x00000003
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspSwdReg {
    ///////////////////////////////////////////////////////////
    #define   GET32TspSwdReg_global_reset(r32)                 _BFGET_(r32, 1, 0)
    #define   SET32TspSwdReg_global_reset(r32,v)               _BFSET_(r32, 1, 0,v)
    #define   GET16TspSwdReg_global_reset(r16)                 _BFGET_(r16, 1, 0)
    #define   SET16TspSwdReg_global_reset(r16,v)               _BFSET_(r16, 1, 0,v)

    #define     w32TspSwdReg_global                            {\
            UNSG32 uglobal_reset                               :  2;\
            UNSG32 RSVDx0_b2                                   : 30;\
          }
    union { UNSG32 u32TspSwdReg_global;
            struct w32TspSwdReg_global;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspSwdReg;

    typedef union  T32TspSwdReg_global
          { UNSG32 u32;
            struct w32TspSwdReg_global;
                 } T32TspSwdReg_global;
    ///////////////////////////////////////////////////////////

    typedef union  TTspSwdReg_global
          { UNSG32 u32[1];
            struct {
            struct w32TspSwdReg_global;
                   };
                 } TTspSwdReg_global;

    ///////////////////////////////////////////////////////////
     SIGN32 TspSwdReg_drvrd(SIE_TspSwdReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspSwdReg_drvwr(SIE_TspSwdReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspSwdReg_reset(SIE_TspSwdReg *p);
     SIGN32 TspSwdReg_cmp  (SIE_TspSwdReg *p, SIE_TspSwdReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspSwdReg_check(p,pie,pfx,hLOG) TspSwdReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspSwdReg_print(p,    pfx,hLOG) TspSwdReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspSwdReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspIntReg               biu              (4,4)
///     ###
///     * This table defines all the interrupt sources of TSP. These include interrupt from hardware blocks, HBO FIFO status and software generated interrupt.
///     * Hardware block and HBO FIFO interrupt will set port tspHwInt to one, and software generated interrupt will set port intFigo to one.
///     * The interrupt enable bit enables the interrupt port to be asserted when the interrupt source is active. It does not mask the status bit. Firmware can still read the status even the enable bit is cleared.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 hw_block_int_enable  (P)
///               %unsigned 1  tsi0                      0x0
///               %unsigned 1  tsi1                      0x0
///               %unsigned 1  tsi2                      0x0
///               %unsigned 1  tsi3                      0x0
///               %unsigned 1  tsi4                      0x0
///               %unsigned 1  tsi5                      0x0
///               %unsigned 1  tsi6                      0x0
///               %unsigned 1  tsi7                      0x0
///               %unsigned 1  tsi8                      0x0
///               %unsigned 1  tsi9                      0x0
///               %unsigned 1  tsi10                     0x0
///               %unsigned 1  tsi11                     0x0
///               %unsigned 1  tsi12                     0x0
///               %%        19         # Stuffing bits...
///     @ 0x00004 hw_block_int_status  (WOC-)
///               %unsigned 1  tsi0                      0x0
///               %unsigned 1  tsi1                      0x0
///               %unsigned 1  tsi2                      0x0
///               %unsigned 1  tsi3                      0x0
///               %unsigned 1  tsi4                      0x0
///               %unsigned 1  tsi5                      0x0
///               %unsigned 1  tsi6                      0x0
///               %unsigned 1  tsi7                      0x0
///               %unsigned 1  tsi8                      0x0
///               %unsigned 1  tsi9                      0x0
///               %unsigned 1  tsi10                     0x0
///               %unsigned 1  tsi11                     0x0
///               %unsigned 1  tsi12                     0x0
///                                    ###
///                                    * These bits are set to 1 when there are errors during TSI input sampling. It indicates an unstable TS input clock.
///                                    * Writing one to any status bits will clears those bits.
///                                    ###
///               %%        19         # Stuffing bits...
///     @ 0x00008 hbo_aempty_enable    (P)
///               %unsigned 23 Enable                    0x0
///                                    ###
///                                    * Enable FIFO almost empty interrupts from HBO of FIGO0
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x0000C hbo_aempty_status    (R-)
///               %unsigned 23 status                    0x0
///                                    ###
///                                    * Status of the FIFO almost empty interrupts from HBO of FIGO0
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x00010 hbo_afull_enable     (P)
///               %unsigned 23 enable                    0x0
///                                    ###
///                                    * Enable FIFO almost full interrupts from HBO of FIGO0
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x00014 hbo_afull_status     (R-)
///               %unsigned 23 status                    0x0
///                                    ###
///                                    * Status of the FIFO almost full interrupts from HBO of FIGO0
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x00018 hbo1_aempty_enable   (P)
///               %unsigned 23 enable                    0x0
///                                    ###
///                                    * Enable FIFO almost empty interrupts from HBO of FIGO 1
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x0001C hbo1_aempty_status   (R-)
///               %unsigned 23 status                    0x0
///                                    ###
///                                    * Status of the FIFO almost empty interrupts from HBO of FIGO1
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x00020 hbo1_afull_enable    (P)
///               %unsigned 23 enable                    0x0
///                                    ###
///                                    * Enable FIFO almost full interrupts from HBO of FIGO1
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x00024 hbo1_afull_status    (R-)
///               %unsigned 23 status                    0x0
///                                    ###
///                                    * Status of the FIFO almost full interrupts from HBO of FIGO1
///                                    * The HBO interrupt bits follow the same order defined in chapter related to HBO FIFO mapping.
///                                    * TSP_HBO_FIFO_ID can be used as the index of these interrupt bits.
///                                    ###
///               %%        9          # Stuffing bits...
///     @ 0x00028 software_int_enable  (P)
///               %unsigned 32 enable                    0x0
///                                    ###
///                                    * Software Interrupt enable bits;
///                                    ###
///     @ 0x0002C software_int_status  (WOC-)
///               %unsigned 32 status                    0x0
///                                    ###
///                                    * Software interrupt status bits; Writing one to any status bits will clears those bits.
///                                    ###
///     @ 0x00030 software_int_set     (W-)
///               %unsigned 32 set                       0x0
///                                    ###
///                                    * Write one to any bits will set the corresponding status bits
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      52B, bits:     306b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspIntReg
#define h_TspIntReg (){}

    #define     RA_TspIntReg_hw_block_int_enable               0x0000

    #define     BA_TspIntReg_hw_block_int_enable_tsi0          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi0          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi0             0
    #define   LSb16TspIntReg_hw_block_int_enable_tsi0             0
    #define       bTspIntReg_hw_block_int_enable_tsi0          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi0             0x00000001

    #define     BA_TspIntReg_hw_block_int_enable_tsi1          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi1          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi1             1
    #define   LSb16TspIntReg_hw_block_int_enable_tsi1             1
    #define       bTspIntReg_hw_block_int_enable_tsi1          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi1             0x00000002

    #define     BA_TspIntReg_hw_block_int_enable_tsi2          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi2          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi2             2
    #define   LSb16TspIntReg_hw_block_int_enable_tsi2             2
    #define       bTspIntReg_hw_block_int_enable_tsi2          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi2             0x00000004

    #define     BA_TspIntReg_hw_block_int_enable_tsi3          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi3          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi3             3
    #define   LSb16TspIntReg_hw_block_int_enable_tsi3             3
    #define       bTspIntReg_hw_block_int_enable_tsi3          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi3             0x00000008

    #define     BA_TspIntReg_hw_block_int_enable_tsi4          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi4          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi4             4
    #define   LSb16TspIntReg_hw_block_int_enable_tsi4             4
    #define       bTspIntReg_hw_block_int_enable_tsi4          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi4             0x00000010

    #define     BA_TspIntReg_hw_block_int_enable_tsi5          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi5          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi5             5
    #define   LSb16TspIntReg_hw_block_int_enable_tsi5             5
    #define       bTspIntReg_hw_block_int_enable_tsi5          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi5             0x00000020

    #define     BA_TspIntReg_hw_block_int_enable_tsi6          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi6          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi6             6
    #define   LSb16TspIntReg_hw_block_int_enable_tsi6             6
    #define       bTspIntReg_hw_block_int_enable_tsi6          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi6             0x00000040

    #define     BA_TspIntReg_hw_block_int_enable_tsi7          0x0000
    #define     B16TspIntReg_hw_block_int_enable_tsi7          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi7             7
    #define   LSb16TspIntReg_hw_block_int_enable_tsi7             7
    #define       bTspIntReg_hw_block_int_enable_tsi7          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi7             0x00000080

    #define     BA_TspIntReg_hw_block_int_enable_tsi8          0x0001
    #define     B16TspIntReg_hw_block_int_enable_tsi8          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi8             8
    #define   LSb16TspIntReg_hw_block_int_enable_tsi8             8
    #define       bTspIntReg_hw_block_int_enable_tsi8          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi8             0x00000100

    #define     BA_TspIntReg_hw_block_int_enable_tsi9          0x0001
    #define     B16TspIntReg_hw_block_int_enable_tsi9          0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi9             9
    #define   LSb16TspIntReg_hw_block_int_enable_tsi9             9
    #define       bTspIntReg_hw_block_int_enable_tsi9          1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi9             0x00000200

    #define     BA_TspIntReg_hw_block_int_enable_tsi10         0x0001
    #define     B16TspIntReg_hw_block_int_enable_tsi10         0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi10            10
    #define   LSb16TspIntReg_hw_block_int_enable_tsi10            10
    #define       bTspIntReg_hw_block_int_enable_tsi10         1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi10            0x00000400

    #define     BA_TspIntReg_hw_block_int_enable_tsi11         0x0001
    #define     B16TspIntReg_hw_block_int_enable_tsi11         0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi11            11
    #define   LSb16TspIntReg_hw_block_int_enable_tsi11            11
    #define       bTspIntReg_hw_block_int_enable_tsi11         1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi11            0x00000800

    #define     BA_TspIntReg_hw_block_int_enable_tsi12         0x0001
    #define     B16TspIntReg_hw_block_int_enable_tsi12         0x0000
    #define   LSb32TspIntReg_hw_block_int_enable_tsi12            12
    #define   LSb16TspIntReg_hw_block_int_enable_tsi12            12
    #define       bTspIntReg_hw_block_int_enable_tsi12         1
    #define   MSK32TspIntReg_hw_block_int_enable_tsi12            0x00001000
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hw_block_int_status               0x0004

    #define     BA_TspIntReg_hw_block_int_status_tsi0          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi0          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi0             0
    #define   LSb16TspIntReg_hw_block_int_status_tsi0             0
    #define       bTspIntReg_hw_block_int_status_tsi0          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi0             0x00000001

    #define     BA_TspIntReg_hw_block_int_status_tsi1          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi1          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi1             1
    #define   LSb16TspIntReg_hw_block_int_status_tsi1             1
    #define       bTspIntReg_hw_block_int_status_tsi1          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi1             0x00000002

    #define     BA_TspIntReg_hw_block_int_status_tsi2          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi2          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi2             2
    #define   LSb16TspIntReg_hw_block_int_status_tsi2             2
    #define       bTspIntReg_hw_block_int_status_tsi2          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi2             0x00000004

    #define     BA_TspIntReg_hw_block_int_status_tsi3          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi3          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi3             3
    #define   LSb16TspIntReg_hw_block_int_status_tsi3             3
    #define       bTspIntReg_hw_block_int_status_tsi3          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi3             0x00000008

    #define     BA_TspIntReg_hw_block_int_status_tsi4          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi4          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi4             4
    #define   LSb16TspIntReg_hw_block_int_status_tsi4             4
    #define       bTspIntReg_hw_block_int_status_tsi4          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi4             0x00000010

    #define     BA_TspIntReg_hw_block_int_status_tsi5          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi5          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi5             5
    #define   LSb16TspIntReg_hw_block_int_status_tsi5             5
    #define       bTspIntReg_hw_block_int_status_tsi5          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi5             0x00000020

    #define     BA_TspIntReg_hw_block_int_status_tsi6          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi6          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi6             6
    #define   LSb16TspIntReg_hw_block_int_status_tsi6             6
    #define       bTspIntReg_hw_block_int_status_tsi6          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi6             0x00000040

    #define     BA_TspIntReg_hw_block_int_status_tsi7          0x0004
    #define     B16TspIntReg_hw_block_int_status_tsi7          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi7             7
    #define   LSb16TspIntReg_hw_block_int_status_tsi7             7
    #define       bTspIntReg_hw_block_int_status_tsi7          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi7             0x00000080

    #define     BA_TspIntReg_hw_block_int_status_tsi8          0x0005
    #define     B16TspIntReg_hw_block_int_status_tsi8          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi8             8
    #define   LSb16TspIntReg_hw_block_int_status_tsi8             8
    #define       bTspIntReg_hw_block_int_status_tsi8          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi8             0x00000100

    #define     BA_TspIntReg_hw_block_int_status_tsi9          0x0005
    #define     B16TspIntReg_hw_block_int_status_tsi9          0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi9             9
    #define   LSb16TspIntReg_hw_block_int_status_tsi9             9
    #define       bTspIntReg_hw_block_int_status_tsi9          1
    #define   MSK32TspIntReg_hw_block_int_status_tsi9             0x00000200

    #define     BA_TspIntReg_hw_block_int_status_tsi10         0x0005
    #define     B16TspIntReg_hw_block_int_status_tsi10         0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi10            10
    #define   LSb16TspIntReg_hw_block_int_status_tsi10            10
    #define       bTspIntReg_hw_block_int_status_tsi10         1
    #define   MSK32TspIntReg_hw_block_int_status_tsi10            0x00000400

    #define     BA_TspIntReg_hw_block_int_status_tsi11         0x0005
    #define     B16TspIntReg_hw_block_int_status_tsi11         0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi11            11
    #define   LSb16TspIntReg_hw_block_int_status_tsi11            11
    #define       bTspIntReg_hw_block_int_status_tsi11         1
    #define   MSK32TspIntReg_hw_block_int_status_tsi11            0x00000800

    #define     BA_TspIntReg_hw_block_int_status_tsi12         0x0005
    #define     B16TspIntReg_hw_block_int_status_tsi12         0x0004
    #define   LSb32TspIntReg_hw_block_int_status_tsi12            12
    #define   LSb16TspIntReg_hw_block_int_status_tsi12            12
    #define       bTspIntReg_hw_block_int_status_tsi12         1
    #define   MSK32TspIntReg_hw_block_int_status_tsi12            0x00001000
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo_aempty_enable                 0x0008

    #define     BA_TspIntReg_hbo_aempty_enable_Enable          0x0008
    #define     B16TspIntReg_hbo_aempty_enable_Enable          0x0008
    #define   LSb32TspIntReg_hbo_aempty_enable_Enable             0
    #define   LSb16TspIntReg_hbo_aempty_enable_Enable             0
    #define       bTspIntReg_hbo_aempty_enable_Enable          23
    #define   MSK32TspIntReg_hbo_aempty_enable_Enable             0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo_aempty_status                 0x000C

    #define     BA_TspIntReg_hbo_aempty_status_status          0x000C
    #define     B16TspIntReg_hbo_aempty_status_status          0x000C
    #define   LSb32TspIntReg_hbo_aempty_status_status             0
    #define   LSb16TspIntReg_hbo_aempty_status_status             0
    #define       bTspIntReg_hbo_aempty_status_status          23
    #define   MSK32TspIntReg_hbo_aempty_status_status             0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo_afull_enable                  0x0010

    #define     BA_TspIntReg_hbo_afull_enable_enable           0x0010
    #define     B16TspIntReg_hbo_afull_enable_enable           0x0010
    #define   LSb32TspIntReg_hbo_afull_enable_enable              0
    #define   LSb16TspIntReg_hbo_afull_enable_enable              0
    #define       bTspIntReg_hbo_afull_enable_enable           23
    #define   MSK32TspIntReg_hbo_afull_enable_enable              0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo_afull_status                  0x0014

    #define     BA_TspIntReg_hbo_afull_status_status           0x0014
    #define     B16TspIntReg_hbo_afull_status_status           0x0014
    #define   LSb32TspIntReg_hbo_afull_status_status              0
    #define   LSb16TspIntReg_hbo_afull_status_status              0
    #define       bTspIntReg_hbo_afull_status_status           23
    #define   MSK32TspIntReg_hbo_afull_status_status              0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo1_aempty_enable                0x0018

    #define     BA_TspIntReg_hbo1_aempty_enable_enable         0x0018
    #define     B16TspIntReg_hbo1_aempty_enable_enable         0x0018
    #define   LSb32TspIntReg_hbo1_aempty_enable_enable            0
    #define   LSb16TspIntReg_hbo1_aempty_enable_enable            0
    #define       bTspIntReg_hbo1_aempty_enable_enable         23
    #define   MSK32TspIntReg_hbo1_aempty_enable_enable            0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo1_aempty_status                0x001C

    #define     BA_TspIntReg_hbo1_aempty_status_status         0x001C
    #define     B16TspIntReg_hbo1_aempty_status_status         0x001C
    #define   LSb32TspIntReg_hbo1_aempty_status_status            0
    #define   LSb16TspIntReg_hbo1_aempty_status_status            0
    #define       bTspIntReg_hbo1_aempty_status_status         23
    #define   MSK32TspIntReg_hbo1_aempty_status_status            0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo1_afull_enable                 0x0020

    #define     BA_TspIntReg_hbo1_afull_enable_enable          0x0020
    #define     B16TspIntReg_hbo1_afull_enable_enable          0x0020
    #define   LSb32TspIntReg_hbo1_afull_enable_enable             0
    #define   LSb16TspIntReg_hbo1_afull_enable_enable             0
    #define       bTspIntReg_hbo1_afull_enable_enable          23
    #define   MSK32TspIntReg_hbo1_afull_enable_enable             0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_hbo1_afull_status                 0x0024

    #define     BA_TspIntReg_hbo1_afull_status_status          0x0024
    #define     B16TspIntReg_hbo1_afull_status_status          0x0024
    #define   LSb32TspIntReg_hbo1_afull_status_status             0
    #define   LSb16TspIntReg_hbo1_afull_status_status             0
    #define       bTspIntReg_hbo1_afull_status_status          23
    #define   MSK32TspIntReg_hbo1_afull_status_status             0x007FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_software_int_enable               0x0028

    #define     BA_TspIntReg_software_int_enable_enable        0x0028
    #define     B16TspIntReg_software_int_enable_enable        0x0028
    #define   LSb32TspIntReg_software_int_enable_enable           0
    #define   LSb16TspIntReg_software_int_enable_enable           0
    #define       bTspIntReg_software_int_enable_enable        32
    #define   MSK32TspIntReg_software_int_enable_enable           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_software_int_status               0x002C

    #define     BA_TspIntReg_software_int_status_status        0x002C
    #define     B16TspIntReg_software_int_status_status        0x002C
    #define   LSb32TspIntReg_software_int_status_status           0
    #define   LSb16TspIntReg_software_int_status_status           0
    #define       bTspIntReg_software_int_status_status        32
    #define   MSK32TspIntReg_software_int_status_status           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_TspIntReg_software_int_set                  0x0030

    #define     BA_TspIntReg_software_int_set_set              0x0030
    #define     B16TspIntReg_software_int_set_set              0x0030
    #define   LSb32TspIntReg_software_int_set_set                 0
    #define   LSb16TspIntReg_software_int_set_set                 0
    #define       bTspIntReg_software_int_set_set              32
    #define   MSK32TspIntReg_software_int_set_set                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspIntReg {
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hw_block_int_enable_tsi0(r32)     _BFGET_(r32, 0, 0)
    #define   SET32TspIntReg_hw_block_int_enable_tsi0(r32,v)   _BFSET_(r32, 0, 0,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi0(r16)     _BFGET_(r16, 0, 0)
    #define   SET16TspIntReg_hw_block_int_enable_tsi0(r16,v)   _BFSET_(r16, 0, 0,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi1(r32)     _BFGET_(r32, 1, 1)
    #define   SET32TspIntReg_hw_block_int_enable_tsi1(r32,v)   _BFSET_(r32, 1, 1,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi1(r16)     _BFGET_(r16, 1, 1)
    #define   SET16TspIntReg_hw_block_int_enable_tsi1(r16,v)   _BFSET_(r16, 1, 1,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi2(r32)     _BFGET_(r32, 2, 2)
    #define   SET32TspIntReg_hw_block_int_enable_tsi2(r32,v)   _BFSET_(r32, 2, 2,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi2(r16)     _BFGET_(r16, 2, 2)
    #define   SET16TspIntReg_hw_block_int_enable_tsi2(r16,v)   _BFSET_(r16, 2, 2,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi3(r32)     _BFGET_(r32, 3, 3)
    #define   SET32TspIntReg_hw_block_int_enable_tsi3(r32,v)   _BFSET_(r32, 3, 3,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi3(r16)     _BFGET_(r16, 3, 3)
    #define   SET16TspIntReg_hw_block_int_enable_tsi3(r16,v)   _BFSET_(r16, 3, 3,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi4(r32)     _BFGET_(r32, 4, 4)
    #define   SET32TspIntReg_hw_block_int_enable_tsi4(r32,v)   _BFSET_(r32, 4, 4,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi4(r16)     _BFGET_(r16, 4, 4)
    #define   SET16TspIntReg_hw_block_int_enable_tsi4(r16,v)   _BFSET_(r16, 4, 4,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi5(r32)     _BFGET_(r32, 5, 5)
    #define   SET32TspIntReg_hw_block_int_enable_tsi5(r32,v)   _BFSET_(r32, 5, 5,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi5(r16)     _BFGET_(r16, 5, 5)
    #define   SET16TspIntReg_hw_block_int_enable_tsi5(r16,v)   _BFSET_(r16, 5, 5,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi6(r32)     _BFGET_(r32, 6, 6)
    #define   SET32TspIntReg_hw_block_int_enable_tsi6(r32,v)   _BFSET_(r32, 6, 6,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi6(r16)     _BFGET_(r16, 6, 6)
    #define   SET16TspIntReg_hw_block_int_enable_tsi6(r16,v)   _BFSET_(r16, 6, 6,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi7(r32)     _BFGET_(r32, 7, 7)
    #define   SET32TspIntReg_hw_block_int_enable_tsi7(r32,v)   _BFSET_(r32, 7, 7,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi7(r16)     _BFGET_(r16, 7, 7)
    #define   SET16TspIntReg_hw_block_int_enable_tsi7(r16,v)   _BFSET_(r16, 7, 7,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi8(r32)     _BFGET_(r32, 8, 8)
    #define   SET32TspIntReg_hw_block_int_enable_tsi8(r32,v)   _BFSET_(r32, 8, 8,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi8(r16)     _BFGET_(r16, 8, 8)
    #define   SET16TspIntReg_hw_block_int_enable_tsi8(r16,v)   _BFSET_(r16, 8, 8,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi9(r32)     _BFGET_(r32, 9, 9)
    #define   SET32TspIntReg_hw_block_int_enable_tsi9(r32,v)   _BFSET_(r32, 9, 9,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi9(r16)     _BFGET_(r16, 9, 9)
    #define   SET16TspIntReg_hw_block_int_enable_tsi9(r16,v)   _BFSET_(r16, 9, 9,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi10(r32)    _BFGET_(r32,10,10)
    #define   SET32TspIntReg_hw_block_int_enable_tsi10(r32,v)  _BFSET_(r32,10,10,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi10(r16)    _BFGET_(r16,10,10)
    #define   SET16TspIntReg_hw_block_int_enable_tsi10(r16,v)  _BFSET_(r16,10,10,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi11(r32)    _BFGET_(r32,11,11)
    #define   SET32TspIntReg_hw_block_int_enable_tsi11(r32,v)  _BFSET_(r32,11,11,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi11(r16)    _BFGET_(r16,11,11)
    #define   SET16TspIntReg_hw_block_int_enable_tsi11(r16,v)  _BFSET_(r16,11,11,v)

    #define   GET32TspIntReg_hw_block_int_enable_tsi12(r32)    _BFGET_(r32,12,12)
    #define   SET32TspIntReg_hw_block_int_enable_tsi12(r32,v)  _BFSET_(r32,12,12,v)
    #define   GET16TspIntReg_hw_block_int_enable_tsi12(r16)    _BFGET_(r16,12,12)
    #define   SET16TspIntReg_hw_block_int_enable_tsi12(r16,v)  _BFSET_(r16,12,12,v)

    #define     w32TspIntReg_hw_block_int_enable               {\
            UNSG32 uhw_block_int_enable_tsi0                   :  1;\
            UNSG32 uhw_block_int_enable_tsi1                   :  1;\
            UNSG32 uhw_block_int_enable_tsi2                   :  1;\
            UNSG32 uhw_block_int_enable_tsi3                   :  1;\
            UNSG32 uhw_block_int_enable_tsi4                   :  1;\
            UNSG32 uhw_block_int_enable_tsi5                   :  1;\
            UNSG32 uhw_block_int_enable_tsi6                   :  1;\
            UNSG32 uhw_block_int_enable_tsi7                   :  1;\
            UNSG32 uhw_block_int_enable_tsi8                   :  1;\
            UNSG32 uhw_block_int_enable_tsi9                   :  1;\
            UNSG32 uhw_block_int_enable_tsi10                  :  1;\
            UNSG32 uhw_block_int_enable_tsi11                  :  1;\
            UNSG32 uhw_block_int_enable_tsi12                  :  1;\
            UNSG32 RSVDx0_b13                                  : 19;\
          }
    union { UNSG32 u32TspIntReg_hw_block_int_enable;
            struct w32TspIntReg_hw_block_int_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hw_block_int_status_tsi0(r32)     _BFGET_(r32, 0, 0)
    #define   SET32TspIntReg_hw_block_int_status_tsi0(r32,v)   _BFSET_(r32, 0, 0,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi0(r16)     _BFGET_(r16, 0, 0)
    #define   SET16TspIntReg_hw_block_int_status_tsi0(r16,v)   _BFSET_(r16, 0, 0,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi1(r32)     _BFGET_(r32, 1, 1)
    #define   SET32TspIntReg_hw_block_int_status_tsi1(r32,v)   _BFSET_(r32, 1, 1,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi1(r16)     _BFGET_(r16, 1, 1)
    #define   SET16TspIntReg_hw_block_int_status_tsi1(r16,v)   _BFSET_(r16, 1, 1,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi2(r32)     _BFGET_(r32, 2, 2)
    #define   SET32TspIntReg_hw_block_int_status_tsi2(r32,v)   _BFSET_(r32, 2, 2,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi2(r16)     _BFGET_(r16, 2, 2)
    #define   SET16TspIntReg_hw_block_int_status_tsi2(r16,v)   _BFSET_(r16, 2, 2,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi3(r32)     _BFGET_(r32, 3, 3)
    #define   SET32TspIntReg_hw_block_int_status_tsi3(r32,v)   _BFSET_(r32, 3, 3,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi3(r16)     _BFGET_(r16, 3, 3)
    #define   SET16TspIntReg_hw_block_int_status_tsi3(r16,v)   _BFSET_(r16, 3, 3,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi4(r32)     _BFGET_(r32, 4, 4)
    #define   SET32TspIntReg_hw_block_int_status_tsi4(r32,v)   _BFSET_(r32, 4, 4,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi4(r16)     _BFGET_(r16, 4, 4)
    #define   SET16TspIntReg_hw_block_int_status_tsi4(r16,v)   _BFSET_(r16, 4, 4,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi5(r32)     _BFGET_(r32, 5, 5)
    #define   SET32TspIntReg_hw_block_int_status_tsi5(r32,v)   _BFSET_(r32, 5, 5,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi5(r16)     _BFGET_(r16, 5, 5)
    #define   SET16TspIntReg_hw_block_int_status_tsi5(r16,v)   _BFSET_(r16, 5, 5,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi6(r32)     _BFGET_(r32, 6, 6)
    #define   SET32TspIntReg_hw_block_int_status_tsi6(r32,v)   _BFSET_(r32, 6, 6,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi6(r16)     _BFGET_(r16, 6, 6)
    #define   SET16TspIntReg_hw_block_int_status_tsi6(r16,v)   _BFSET_(r16, 6, 6,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi7(r32)     _BFGET_(r32, 7, 7)
    #define   SET32TspIntReg_hw_block_int_status_tsi7(r32,v)   _BFSET_(r32, 7, 7,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi7(r16)     _BFGET_(r16, 7, 7)
    #define   SET16TspIntReg_hw_block_int_status_tsi7(r16,v)   _BFSET_(r16, 7, 7,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi8(r32)     _BFGET_(r32, 8, 8)
    #define   SET32TspIntReg_hw_block_int_status_tsi8(r32,v)   _BFSET_(r32, 8, 8,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi8(r16)     _BFGET_(r16, 8, 8)
    #define   SET16TspIntReg_hw_block_int_status_tsi8(r16,v)   _BFSET_(r16, 8, 8,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi9(r32)     _BFGET_(r32, 9, 9)
    #define   SET32TspIntReg_hw_block_int_status_tsi9(r32,v)   _BFSET_(r32, 9, 9,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi9(r16)     _BFGET_(r16, 9, 9)
    #define   SET16TspIntReg_hw_block_int_status_tsi9(r16,v)   _BFSET_(r16, 9, 9,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi10(r32)    _BFGET_(r32,10,10)
    #define   SET32TspIntReg_hw_block_int_status_tsi10(r32,v)  _BFSET_(r32,10,10,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi10(r16)    _BFGET_(r16,10,10)
    #define   SET16TspIntReg_hw_block_int_status_tsi10(r16,v)  _BFSET_(r16,10,10,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi11(r32)    _BFGET_(r32,11,11)
    #define   SET32TspIntReg_hw_block_int_status_tsi11(r32,v)  _BFSET_(r32,11,11,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi11(r16)    _BFGET_(r16,11,11)
    #define   SET16TspIntReg_hw_block_int_status_tsi11(r16,v)  _BFSET_(r16,11,11,v)

    #define   GET32TspIntReg_hw_block_int_status_tsi12(r32)    _BFGET_(r32,12,12)
    #define   SET32TspIntReg_hw_block_int_status_tsi12(r32,v)  _BFSET_(r32,12,12,v)
    #define   GET16TspIntReg_hw_block_int_status_tsi12(r16)    _BFGET_(r16,12,12)
    #define   SET16TspIntReg_hw_block_int_status_tsi12(r16,v)  _BFSET_(r16,12,12,v)

    #define     w32TspIntReg_hw_block_int_status               {\
            UNSG32 uhw_block_int_status_tsi0                   :  1;\
            UNSG32 uhw_block_int_status_tsi1                   :  1;\
            UNSG32 uhw_block_int_status_tsi2                   :  1;\
            UNSG32 uhw_block_int_status_tsi3                   :  1;\
            UNSG32 uhw_block_int_status_tsi4                   :  1;\
            UNSG32 uhw_block_int_status_tsi5                   :  1;\
            UNSG32 uhw_block_int_status_tsi6                   :  1;\
            UNSG32 uhw_block_int_status_tsi7                   :  1;\
            UNSG32 uhw_block_int_status_tsi8                   :  1;\
            UNSG32 uhw_block_int_status_tsi9                   :  1;\
            UNSG32 uhw_block_int_status_tsi10                  :  1;\
            UNSG32 uhw_block_int_status_tsi11                  :  1;\
            UNSG32 uhw_block_int_status_tsi12                  :  1;\
            UNSG32 RSVDx4_b13                                  : 19;\
          }
    union { UNSG32 u32TspIntReg_hw_block_int_status;
            struct w32TspIntReg_hw_block_int_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo_aempty_enable_Enable(r32)     _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo_aempty_enable_Enable(r32,v)   _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo_aempty_enable                 {\
            UNSG32 uhbo_aempty_enable_Enable                   : 23;\
            UNSG32 RSVDx8_b23                                  :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo_aempty_enable;
            struct w32TspIntReg_hbo_aempty_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo_aempty_status_status(r32)     _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo_aempty_status_status(r32,v)   _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo_aempty_status                 {\
            UNSG32 uhbo_aempty_status_status                   : 23;\
            UNSG32 RSVDxC_b23                                  :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo_aempty_status;
            struct w32TspIntReg_hbo_aempty_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo_afull_enable_enable(r32)      _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo_afull_enable_enable(r32,v)    _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo_afull_enable                  {\
            UNSG32 uhbo_afull_enable_enable                    : 23;\
            UNSG32 RSVDx10_b23                                 :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo_afull_enable;
            struct w32TspIntReg_hbo_afull_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo_afull_status_status(r32)      _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo_afull_status_status(r32,v)    _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo_afull_status                  {\
            UNSG32 uhbo_afull_status_status                    : 23;\
            UNSG32 RSVDx14_b23                                 :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo_afull_status;
            struct w32TspIntReg_hbo_afull_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo1_aempty_enable_enable(r32)    _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo1_aempty_enable_enable(r32,v)  _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo1_aempty_enable                {\
            UNSG32 uhbo1_aempty_enable_enable                  : 23;\
            UNSG32 RSVDx18_b23                                 :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo1_aempty_enable;
            struct w32TspIntReg_hbo1_aempty_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo1_aempty_status_status(r32)    _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo1_aempty_status_status(r32,v)  _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo1_aempty_status                {\
            UNSG32 uhbo1_aempty_status_status                  : 23;\
            UNSG32 RSVDx1C_b23                                 :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo1_aempty_status;
            struct w32TspIntReg_hbo1_aempty_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo1_afull_enable_enable(r32)     _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo1_afull_enable_enable(r32,v)   _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo1_afull_enable                 {\
            UNSG32 uhbo1_afull_enable_enable                   : 23;\
            UNSG32 RSVDx20_b23                                 :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo1_afull_enable;
            struct w32TspIntReg_hbo1_afull_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_hbo1_afull_status_status(r32)     _BFGET_(r32,22, 0)
    #define   SET32TspIntReg_hbo1_afull_status_status(r32,v)   _BFSET_(r32,22, 0,v)

    #define     w32TspIntReg_hbo1_afull_status                 {\
            UNSG32 uhbo1_afull_status_status                   : 23;\
            UNSG32 RSVDx24_b23                                 :  9;\
          }
    union { UNSG32 u32TspIntReg_hbo1_afull_status;
            struct w32TspIntReg_hbo1_afull_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_software_int_enable_enable(r32)   _BFGET_(r32,31, 0)
    #define   SET32TspIntReg_software_int_enable_enable(r32,v) _BFSET_(r32,31, 0,v)

    #define     w32TspIntReg_software_int_enable               {\
            UNSG32 usoftware_int_enable_enable                 : 32;\
          }
    union { UNSG32 u32TspIntReg_software_int_enable;
            struct w32TspIntReg_software_int_enable;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_software_int_status_status(r32)   _BFGET_(r32,31, 0)
    #define   SET32TspIntReg_software_int_status_status(r32,v) _BFSET_(r32,31, 0,v)

    #define     w32TspIntReg_software_int_status               {\
            UNSG32 usoftware_int_status_status                 : 32;\
          }
    union { UNSG32 u32TspIntReg_software_int_status;
            struct w32TspIntReg_software_int_status;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32TspIntReg_software_int_set_set(r32)         _BFGET_(r32,31, 0)
    #define   SET32TspIntReg_software_int_set_set(r32,v)       _BFSET_(r32,31, 0,v)

    #define     w32TspIntReg_software_int_set                  {\
            UNSG32 usoftware_int_set_set                       : 32;\
          }
    union { UNSG32 u32TspIntReg_software_int_set;
            struct w32TspIntReg_software_int_set;
          };
    ///////////////////////////////////////////////////////////
    } SIE_TspIntReg;

    typedef union  T32TspIntReg_hw_block_int_enable
          { UNSG32 u32;
            struct w32TspIntReg_hw_block_int_enable;
                 } T32TspIntReg_hw_block_int_enable;
    typedef union  T32TspIntReg_hw_block_int_status
          { UNSG32 u32;
            struct w32TspIntReg_hw_block_int_status;
                 } T32TspIntReg_hw_block_int_status;
    typedef union  T32TspIntReg_hbo_aempty_enable
          { UNSG32 u32;
            struct w32TspIntReg_hbo_aempty_enable;
                 } T32TspIntReg_hbo_aempty_enable;
    typedef union  T32TspIntReg_hbo_aempty_status
          { UNSG32 u32;
            struct w32TspIntReg_hbo_aempty_status;
                 } T32TspIntReg_hbo_aempty_status;
    typedef union  T32TspIntReg_hbo_afull_enable
          { UNSG32 u32;
            struct w32TspIntReg_hbo_afull_enable;
                 } T32TspIntReg_hbo_afull_enable;
    typedef union  T32TspIntReg_hbo_afull_status
          { UNSG32 u32;
            struct w32TspIntReg_hbo_afull_status;
                 } T32TspIntReg_hbo_afull_status;
    typedef union  T32TspIntReg_hbo1_aempty_enable
          { UNSG32 u32;
            struct w32TspIntReg_hbo1_aempty_enable;
                 } T32TspIntReg_hbo1_aempty_enable;
    typedef union  T32TspIntReg_hbo1_aempty_status
          { UNSG32 u32;
            struct w32TspIntReg_hbo1_aempty_status;
                 } T32TspIntReg_hbo1_aempty_status;
    typedef union  T32TspIntReg_hbo1_afull_enable
          { UNSG32 u32;
            struct w32TspIntReg_hbo1_afull_enable;
                 } T32TspIntReg_hbo1_afull_enable;
    typedef union  T32TspIntReg_hbo1_afull_status
          { UNSG32 u32;
            struct w32TspIntReg_hbo1_afull_status;
                 } T32TspIntReg_hbo1_afull_status;
    typedef union  T32TspIntReg_software_int_enable
          { UNSG32 u32;
            struct w32TspIntReg_software_int_enable;
                 } T32TspIntReg_software_int_enable;
    typedef union  T32TspIntReg_software_int_status
          { UNSG32 u32;
            struct w32TspIntReg_software_int_status;
                 } T32TspIntReg_software_int_status;
    typedef union  T32TspIntReg_software_int_set
          { UNSG32 u32;
            struct w32TspIntReg_software_int_set;
                 } T32TspIntReg_software_int_set;
    ///////////////////////////////////////////////////////////

    typedef union  TTspIntReg_hw_block_int_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hw_block_int_enable;
                   };
                 } TTspIntReg_hw_block_int_enable;
    typedef union  TTspIntReg_hw_block_int_status
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hw_block_int_status;
                   };
                 } TTspIntReg_hw_block_int_status;
    typedef union  TTspIntReg_hbo_aempty_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo_aempty_enable;
                   };
                 } TTspIntReg_hbo_aempty_enable;
    typedef union  TTspIntReg_hbo_aempty_status
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo_aempty_status;
                   };
                 } TTspIntReg_hbo_aempty_status;
    typedef union  TTspIntReg_hbo_afull_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo_afull_enable;
                   };
                 } TTspIntReg_hbo_afull_enable;
    typedef union  TTspIntReg_hbo_afull_status
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo_afull_status;
                   };
                 } TTspIntReg_hbo_afull_status;
    typedef union  TTspIntReg_hbo1_aempty_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo1_aempty_enable;
                   };
                 } TTspIntReg_hbo1_aempty_enable;
    typedef union  TTspIntReg_hbo1_aempty_status
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo1_aempty_status;
                   };
                 } TTspIntReg_hbo1_aempty_status;
    typedef union  TTspIntReg_hbo1_afull_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo1_afull_enable;
                   };
                 } TTspIntReg_hbo1_afull_enable;
    typedef union  TTspIntReg_hbo1_afull_status
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_hbo1_afull_status;
                   };
                 } TTspIntReg_hbo1_afull_status;
    typedef union  TTspIntReg_software_int_enable
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_software_int_enable;
                   };
                 } TTspIntReg_software_int_enable;
    typedef union  TTspIntReg_software_int_status
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_software_int_status;
                   };
                 } TTspIntReg_software_int_status;
    typedef union  TTspIntReg_software_int_set
          { UNSG32 u32[1];
            struct {
            struct w32TspIntReg_software_int_set;
                   };
                 } TTspIntReg_software_int_set;

    ///////////////////////////////////////////////////////////
     SIGN32 TspIntReg_drvrd(SIE_TspIntReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspIntReg_drvwr(SIE_TspIntReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspIntReg_reset(SIE_TspIntReg *p);
     SIGN32 TspIntReg_cmp  (SIE_TspIntReg *p, SIE_TspIntReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspIntReg_check(p,pie,pfx,hLOG) TspIntReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspIntReg_print(p,    pfx,hLOG) TspIntReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspIntReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspReg                  biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 FigoDtcm             
///               $FigoData            FigoDtcm          MEM    [4096]
///     @ 0x08000                      (P)
///     # 0x08000 FigoReg              
///               $FigoSysBasic        FigoReg           REG          
///     @ 0x0B000                      (W-)
///     #         # Stuffing bytes...
///               %% 32768
///     @ 0x0C000                      (P)
///     # 0x0C000 SecTbl               
///               $TspSecTbl           SecTbl            MEM    [2048]
///     @ 0x0E000                      (P)
///     # 0x0E000 PidTbl               
///               $TspPidTbl           PidTbl            MEM     [256]
///     @ 0x0E800                      (W-)
///     #         # Stuffing bytes...
///               %% 16384
///     @ 0x0F000                      (P)
///     # 0x0F000 Tsi0Reg              
///               $TspTsiReg           Tsi0Reg           REG          
///     @ 0x0F034                      (P)
///     # 0x0F034 Tsi1Reg              
///               $TspTsiReg           Tsi1Reg           REG          
///     @ 0x0F068                      (P)
///     # 0x0F068 Tsi2Reg              
///               $TspTsiReg           Tsi2Reg           REG          
///     @ 0x0F09C                      (P)
///     # 0x0F09C Tsi3Reg              
///               $TspTsiReg           Tsi3Reg           REG          
///     @ 0x0F0D0                      (P)
///     # 0x0F0D0 Tsi4Reg              
///               $TspTsiReg           Tsi4Reg           REG          
///     @ 0x0F104                      (P)
///     # 0x0F104 Tsi5Reg              
///               $TspTsiReg           Tsi5Reg           REG          
///     @ 0x0F138                      (P)
///     # 0x0F138 Tsi6Reg              
///               $TspTsiReg           Tsi6Reg           REG          
///     @ 0x0F16C                      (P)
///     # 0x0F16C Tsi7Reg              
///               $TspTsiReg           Tsi7Reg           REG          
///     @ 0x0F1A0                      (P)
///     # 0x0F1A0 Tsi8Reg              
///               $TspTsiReg           Tsi8Reg           REG          
///     @ 0x0F1D4                      (P)
///     # 0x0F1D4 Tsi9Reg              
///               $TspTsiReg           Tsi9Reg           REG          
///     @ 0x0F208                      (P)
///     # 0x0F208 Tsi10Reg             
///               $TspTsiReg           Tsi10Reg          REG          
///     @ 0x0F23C                      (P)
///     # 0x0F23C Tsi11Reg             
///               $TspTsiReg           Tsi11Reg          REG          
///     @ 0x0F270                      (P)
///     # 0x0F270 Tsi12Reg             
///               $TspTsiReg           Tsi12Reg          REG          
///     @ 0x0F2A4                      (P)
///     # 0x0F2A4 Tso0Reg              
///               $TspTsoReg           Tso0Reg           REG          
///     @ 0x0F2BC                      (P)
///     # 0x0F2BC Tso1Reg              
///               $TspTsoReg           Tso1Reg           REG          
///     @ 0x0F2D4                      (P)
///     # 0x0F2D4 SecReg               
///               $TspSecReg           SecReg            REG          
///     @ 0x0F30C                      (P)
///     # 0x0F30C CryReg               
///               $TspCryReg           CryReg            REG          
///     @ 0x0F340                      (P)
///     # 0x0F340 SwdReg               
///               $TspSwdReg           SwdReg            REG          
///     @ 0x0F344                      (P)
///     # 0x0F344 IntReg               
///               $TspIntReg           IntReg            REG          
///     @ 0x0F378                      (W-)
///     #         # Stuffing bytes...
///               %% 25664
///     @ 0x10000                      (P)
///     # 0x10000 FigoItcm             
///               $FigoInst            FigoItcm          MEM   [16384]
///     @ 0x20000                      (P)
///     # 0x20000 Figo1Dtcm            
///               $FigoData            Figo1Dtcm         MEM    [4096]
///     @ 0x28000                      (P)
///     # 0x28000 Figo1Reg             
///               $FigoSysBasic        Figo1Reg          REG          
///                                    ###
///                                    * 0x2c000 ~ 0x2ffff
///                                    * Alias of 0xc000 ~ 0xffff
///                                    ###
///     @ 0x2B000                      (W-)
///     #         # Stuffing bytes...
///               %% 163840
///     @ 0x30000                      (P)
///     # 0x30000 Figo1Itcm            
///               $FigoInst            Figo1Itcm         MEM   [16384]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:  262144B, bits:    9510b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspReg
#define h_TspReg (){}

    #define     RA_TspReg_FigoDtcm                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_FigoReg                              0x8000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_SecTbl                               0xC000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_PidTbl                               0xE000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi0Reg                              0xF000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi1Reg                              0xF034
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi2Reg                              0xF068
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi3Reg                              0xF09C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi4Reg                              0xF0D0
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi5Reg                              0xF104
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi6Reg                              0xF138
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi7Reg                              0xF16C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi8Reg                              0xF1A0
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi9Reg                              0xF1D4
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi10Reg                             0xF208
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi11Reg                             0xF23C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi12Reg                             0xF270
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tso0Reg                              0xF2A4
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tso1Reg                              0xF2BC
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_SecReg                               0xF2D4
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_CryReg                               0xF30C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_SwdReg                               0xF340
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_IntReg                               0xF344
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_FigoItcm                             0x10000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1Dtcm                            0x20000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1Reg                             0x28000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1Itcm                            0x30000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspReg {
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_FigoDtcm[4096];
    ///////////////////////////////////////////////////////////
              SIE_FigoSysBasic                                 ie_FigoReg;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxB000                                   [4096];
    ///////////////////////////////////////////////////////////
              SIE_TspSecTbl                                    ie_SecTbl[2048];
    ///////////////////////////////////////////////////////////
              SIE_TspPidTbl                                    ie_PidTbl[256];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE800                                   [2048];
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi0Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi1Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi2Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi3Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi4Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi5Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi6Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi7Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi8Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi9Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi10Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi11Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsiReg                                    ie_Tsi12Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsoReg                                    ie_Tso0Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspTsoReg                                    ie_Tso1Reg;
    ///////////////////////////////////////////////////////////
              SIE_TspSecReg                                    ie_SecReg;
    ///////////////////////////////////////////////////////////
              SIE_TspCryReg                                    ie_CryReg;
    ///////////////////////////////////////////////////////////
              SIE_TspSwdReg                                    ie_SwdReg;
    ///////////////////////////////////////////////////////////
              SIE_TspIntReg                                    ie_IntReg;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF378                                   [3208];
    ///////////////////////////////////////////////////////////
              SIE_FigoInst                                     ie_FigoItcm[16384];
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_Figo1Dtcm[4096];
    ///////////////////////////////////////////////////////////
              SIE_FigoSysBasic                                 ie_Figo1Reg;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2B000                                  [20480];
    ///////////////////////////////////////////////////////////
              SIE_FigoInst                                     ie_Figo1Itcm[16384];
    ///////////////////////////////////////////////////////////
    } SIE_TspReg;

    ///////////////////////////////////////////////////////////
     SIGN32 TspReg_drvrd(SIE_TspReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspReg_drvwr(SIE_TspReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspReg_reset(SIE_TspReg *p);
     SIGN32 TspReg_cmp  (SIE_TspReg *p, SIE_TspReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspReg_check(p,pie,pfx,hLOG) TspReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspReg_print(p,    pfx,hLOG) TspReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspReg
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: tsp.h
////////////////////////////////////////////////////////////

