//////
/// 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                
///                                    ###
///                                    * Obsolete;
///                                    * The filtering stops whenever there is a miss, regardless of the value of this field.
///                                    ###
///               %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
///                                    : ASA                      0x10
///                                    : HMAC                     0x11
///                                    : GHASH                    0x12
///               %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        TspCryCmd_type_ASA                                       0x10
    #define        TspCryCmd_type_HMAC                                      0x11
    #define        TspCryCmd_type_GHASH                                     0x12

    #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      0xA000
///               : Nsk2TsKeyTblBase   0xC000
///               : Nsk2M2mKeyTblBase  0xE000
///               : NagraKeyTblBase    0xE800
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       0B, bits:       0b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspKeyTblAdr
#define h_TspKeyTblAdr (){}

    #define        TspKeyTblAdr_TspKeyTblBase                  0xA000
    #define        TspKeyTblAdr_Nsk2TsKeyTblBase               0xC000
    #define        TspKeyTblAdr_Nsk2M2mKeyTblBase              0xE000
    #define        TspKeyTblAdr_NagraKeyTblBase                0xE800
    ///////////////////////////////////////////////////////////

#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
///                                    : HMAC                     0x11
///                                    : GHASH                    0x12
///               %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        TspKeyEntry_crypto_type_HMAC                             0x11
    #define        TspKeyEntry_crypto_type_GHASH                            0x12

    #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 TspHmacParam                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  init                      0x0
///               %unsigned 1  final                     0x0
///               %unsigned 1  loadContext               0x0
///                                    ###
///                                    * Whether load context
///                                    * 0: not loading context. HW
///                                    * 1: load context from
///                                    ###
///               %unsigned 1  hwPadding                 0x0
///                                    ###
///                                    * HW padding
///                                    * 0: No hardware padding. SW generate padded messages
///                                    * 1: HW padding
///                                    ###
///               %unsigned 3  Algorithm                 0x0
///                                    ###
///                                    * Hash algorithm
///                                    ###
///                                    : MD5                       0x0
///                                    : SHA1                      0x1
///                                    : SHA224                    0x2
///                                    : SHA256                    0x3
///                                    : SHA384                    0x4
///                                    : SHA512                    0x5
///                                    : SHA512_224                0x6
///                                    : SHA512_256                0x7
///               %unsigned 1  hmac                      0x0
///                                    ###
///                                    * 1: hmac enable
///                                    * 0: hash only
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspHmacParam
#define h_TspHmacParam (){}

    #define     BA_TspHmacParam_init                           0x0000
    #define     B16TspHmacParam_init                           0x0000
    #define   LSb32TspHmacParam_init                              0
    #define   LSb16TspHmacParam_init                              0
    #define       bTspHmacParam_init                           1
    #define   MSK32TspHmacParam_init                              0x00000001

    #define     BA_TspHmacParam_final                          0x0000
    #define     B16TspHmacParam_final                          0x0000
    #define   LSb32TspHmacParam_final                             1
    #define   LSb16TspHmacParam_final                             1
    #define       bTspHmacParam_final                          1
    #define   MSK32TspHmacParam_final                             0x00000002

    #define     BA_TspHmacParam_loadContext                    0x0000
    #define     B16TspHmacParam_loadContext                    0x0000
    #define   LSb32TspHmacParam_loadContext                       2
    #define   LSb16TspHmacParam_loadContext                       2
    #define       bTspHmacParam_loadContext                    1
    #define   MSK32TspHmacParam_loadContext                       0x00000004

    #define     BA_TspHmacParam_hwPadding                      0x0000
    #define     B16TspHmacParam_hwPadding                      0x0000
    #define   LSb32TspHmacParam_hwPadding                         3
    #define   LSb16TspHmacParam_hwPadding                         3
    #define       bTspHmacParam_hwPadding                      1
    #define   MSK32TspHmacParam_hwPadding                         0x00000008

    #define     BA_TspHmacParam_Algorithm                      0x0000
    #define     B16TspHmacParam_Algorithm                      0x0000
    #define   LSb32TspHmacParam_Algorithm                         4
    #define   LSb16TspHmacParam_Algorithm                         4
    #define       bTspHmacParam_Algorithm                      3
    #define   MSK32TspHmacParam_Algorithm                         0x00000070
    #define        TspHmacParam_Algorithm_MD5                               0x0
    #define        TspHmacParam_Algorithm_SHA1                              0x1
    #define        TspHmacParam_Algorithm_SHA224                            0x2
    #define        TspHmacParam_Algorithm_SHA256                            0x3
    #define        TspHmacParam_Algorithm_SHA384                            0x4
    #define        TspHmacParam_Algorithm_SHA512                            0x5
    #define        TspHmacParam_Algorithm_SHA512_224                        0x6
    #define        TspHmacParam_Algorithm_SHA512_256                        0x7

    #define     BA_TspHmacParam_hmac                           0x0000
    #define     B16TspHmacParam_hmac                           0x0000
    #define   LSb32TspHmacParam_hmac                              7
    #define   LSb16TspHmacParam_hmac                              7
    #define       bTspHmacParam_hmac                           1
    #define   MSK32TspHmacParam_hmac                              0x00000080
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspHmacParam {
    ///////////////////////////////////////////////////////////
    #define   GET32TspHmacParam_init(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32TspHmacParam_init(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16TspHmacParam_init(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16TspHmacParam_init(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define   GET32TspHmacParam_final(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32TspHmacParam_final(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16TspHmacParam_final(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16TspHmacParam_final(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32TspHmacParam_loadContext(r32)               _BFGET_(r32, 2, 2)
    #define   SET32TspHmacParam_loadContext(r32,v)             _BFSET_(r32, 2, 2,v)
    #define   GET16TspHmacParam_loadContext(r16)               _BFGET_(r16, 2, 2)
    #define   SET16TspHmacParam_loadContext(r16,v)             _BFSET_(r16, 2, 2,v)

    #define   GET32TspHmacParam_hwPadding(r32)                 _BFGET_(r32, 3, 3)
    #define   SET32TspHmacParam_hwPadding(r32,v)               _BFSET_(r32, 3, 3,v)
    #define   GET16TspHmacParam_hwPadding(r16)                 _BFGET_(r16, 3, 3)
    #define   SET16TspHmacParam_hwPadding(r16,v)               _BFSET_(r16, 3, 3,v)

    #define   GET32TspHmacParam_Algorithm(r32)                 _BFGET_(r32, 6, 4)
    #define   SET32TspHmacParam_Algorithm(r32,v)               _BFSET_(r32, 6, 4,v)
    #define   GET16TspHmacParam_Algorithm(r16)                 _BFGET_(r16, 6, 4)
    #define   SET16TspHmacParam_Algorithm(r16,v)               _BFSET_(r16, 6, 4,v)

    #define   GET32TspHmacParam_hmac(r32)                      _BFGET_(r32, 7, 7)
    #define   SET32TspHmacParam_hmac(r32,v)                    _BFSET_(r32, 7, 7,v)
    #define   GET16TspHmacParam_hmac(r16)                      _BFGET_(r16, 7, 7)
    #define   SET16TspHmacParam_hmac(r16,v)                    _BFSET_(r16, 7, 7,v)

            UNSG32 u_init                                      :  1;
            UNSG32 u_final                                     :  1;
            UNSG32 u_loadContext                               :  1;
            UNSG32 u_hwPadding                                 :  1;
            UNSG32 u_Algorithm                                 :  3;
            UNSG32 u_hmac                                      :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TspHmacParam;

    ///////////////////////////////////////////////////////////
     SIGN32 TspHmacParam_drvrd(SIE_TspHmacParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspHmacParam_drvwr(SIE_TspHmacParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspHmacParam_reset(SIE_TspHmacParam *p);
     SIGN32 TspHmacParam_cmp  (SIE_TspHmacParam *p, SIE_TspHmacParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspHmacParam_check(p,pie,pfx,hLOG) TspHmacParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspHmacParam_print(p,    pfx,hLOG) TspHmacParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspHmacParam
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspHmacParam1                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  keyLength                 0x0
///                                    ###
///                                    * Key length in byte.
///                                    * 0 mapping to 256
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspHmacParam1
#define h_TspHmacParam1 (){}

    #define     BA_TspHmacParam1_keyLength                     0x0000
    #define     B16TspHmacParam1_keyLength                     0x0000
    #define   LSb32TspHmacParam1_keyLength                        0
    #define   LSb16TspHmacParam1_keyLength                        0
    #define       bTspHmacParam1_keyLength                     8
    #define   MSK32TspHmacParam1_keyLength                        0x000000FF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspHmacParam1 {
    ///////////////////////////////////////////////////////////
    #define   GET32TspHmacParam1_keyLength(r32)                _BFGET_(r32, 7, 0)
    #define   SET32TspHmacParam1_keyLength(r32,v)              _BFSET_(r32, 7, 0,v)
    #define   GET16TspHmacParam1_keyLength(r16)                _BFGET_(r16, 7, 0)
    #define   SET16TspHmacParam1_keyLength(r16,v)              _BFSET_(r16, 7, 0,v)

            UNSG32 u_keyLength                                 :  8;
    ///////////////////////////////////////////////////////////
    } SIE_TspHmacParam1;

    ///////////////////////////////////////////////////////////
     SIGN32 TspHmacParam1_drvrd(SIE_TspHmacParam1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspHmacParam1_drvwr(SIE_TspHmacParam1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspHmacParam1_reset(SIE_TspHmacParam1 *p);
     SIGN32 TspHmacParam1_cmp  (SIE_TspHmacParam1 *p, SIE_TspHmacParam1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspHmacParam1_check(p,pie,pfx,hLOG) TspHmacParam1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspHmacParam1_print(p,    pfx,hLOG) TspHmacParam1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspHmacParam1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TspGhashParam                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  fstpkg                    0x0
///               %unsigned 1  lstpkg                    0x0
///               %unsigned 1  swapHash                  0x0
///               %unsigned 1  swapWcntx                 0x0
///               %unsigned 1  swapKey                   0x0
///                                    ###
///                                    * Hash algorithm
///                                    ###
///               %unsigned 1  swapMessage               0x0
///               %unsigned 1  swapLen                   0x0
///               %unsigned 1  swapRcntx                 0x0
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspGhashParam
#define h_TspGhashParam (){}

    #define     BA_TspGhashParam_fstpkg                        0x0000
    #define     B16TspGhashParam_fstpkg                        0x0000
    #define   LSb32TspGhashParam_fstpkg                           0
    #define   LSb16TspGhashParam_fstpkg                           0
    #define       bTspGhashParam_fstpkg                        1
    #define   MSK32TspGhashParam_fstpkg                           0x00000001

    #define     BA_TspGhashParam_lstpkg                        0x0000
    #define     B16TspGhashParam_lstpkg                        0x0000
    #define   LSb32TspGhashParam_lstpkg                           1
    #define   LSb16TspGhashParam_lstpkg                           1
    #define       bTspGhashParam_lstpkg                        1
    #define   MSK32TspGhashParam_lstpkg                           0x00000002

    #define     BA_TspGhashParam_swapHash                      0x0000
    #define     B16TspGhashParam_swapHash                      0x0000
    #define   LSb32TspGhashParam_swapHash                         2
    #define   LSb16TspGhashParam_swapHash                         2
    #define       bTspGhashParam_swapHash                      1
    #define   MSK32TspGhashParam_swapHash                         0x00000004

    #define     BA_TspGhashParam_swapWcntx                     0x0000
    #define     B16TspGhashParam_swapWcntx                     0x0000
    #define   LSb32TspGhashParam_swapWcntx                        3
    #define   LSb16TspGhashParam_swapWcntx                        3
    #define       bTspGhashParam_swapWcntx                     1
    #define   MSK32TspGhashParam_swapWcntx                        0x00000008

    #define     BA_TspGhashParam_swapKey                       0x0000
    #define     B16TspGhashParam_swapKey                       0x0000
    #define   LSb32TspGhashParam_swapKey                          4
    #define   LSb16TspGhashParam_swapKey                          4
    #define       bTspGhashParam_swapKey                       1
    #define   MSK32TspGhashParam_swapKey                          0x00000010

    #define     BA_TspGhashParam_swapMessage                   0x0000
    #define     B16TspGhashParam_swapMessage                   0x0000
    #define   LSb32TspGhashParam_swapMessage                      5
    #define   LSb16TspGhashParam_swapMessage                      5
    #define       bTspGhashParam_swapMessage                   1
    #define   MSK32TspGhashParam_swapMessage                      0x00000020

    #define     BA_TspGhashParam_swapLen                       0x0000
    #define     B16TspGhashParam_swapLen                       0x0000
    #define   LSb32TspGhashParam_swapLen                          6
    #define   LSb16TspGhashParam_swapLen                          6
    #define       bTspGhashParam_swapLen                       1
    #define   MSK32TspGhashParam_swapLen                          0x00000040

    #define     BA_TspGhashParam_swapRcntx                     0x0000
    #define     B16TspGhashParam_swapRcntx                     0x0000
    #define   LSb32TspGhashParam_swapRcntx                        7
    #define   LSb16TspGhashParam_swapRcntx                        7
    #define       bTspGhashParam_swapRcntx                     1
    #define   MSK32TspGhashParam_swapRcntx                        0x00000080
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspGhashParam {
    ///////////////////////////////////////////////////////////
    #define   GET32TspGhashParam_fstpkg(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32TspGhashParam_fstpkg(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16TspGhashParam_fstpkg(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16TspGhashParam_fstpkg(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32TspGhashParam_lstpkg(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32TspGhashParam_lstpkg(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16TspGhashParam_lstpkg(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16TspGhashParam_lstpkg(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32TspGhashParam_swapHash(r32)                 _BFGET_(r32, 2, 2)
    #define   SET32TspGhashParam_swapHash(r32,v)               _BFSET_(r32, 2, 2,v)
    #define   GET16TspGhashParam_swapHash(r16)                 _BFGET_(r16, 2, 2)
    #define   SET16TspGhashParam_swapHash(r16,v)               _BFSET_(r16, 2, 2,v)

    #define   GET32TspGhashParam_swapWcntx(r32)                _BFGET_(r32, 3, 3)
    #define   SET32TspGhashParam_swapWcntx(r32,v)              _BFSET_(r32, 3, 3,v)
    #define   GET16TspGhashParam_swapWcntx(r16)                _BFGET_(r16, 3, 3)
    #define   SET16TspGhashParam_swapWcntx(r16,v)              _BFSET_(r16, 3, 3,v)

    #define   GET32TspGhashParam_swapKey(r32)                  _BFGET_(r32, 4, 4)
    #define   SET32TspGhashParam_swapKey(r32,v)                _BFSET_(r32, 4, 4,v)
    #define   GET16TspGhashParam_swapKey(r16)                  _BFGET_(r16, 4, 4)
    #define   SET16TspGhashParam_swapKey(r16,v)                _BFSET_(r16, 4, 4,v)

    #define   GET32TspGhashParam_swapMessage(r32)              _BFGET_(r32, 5, 5)
    #define   SET32TspGhashParam_swapMessage(r32,v)            _BFSET_(r32, 5, 5,v)
    #define   GET16TspGhashParam_swapMessage(r16)              _BFGET_(r16, 5, 5)
    #define   SET16TspGhashParam_swapMessage(r16,v)            _BFSET_(r16, 5, 5,v)

    #define   GET32TspGhashParam_swapLen(r32)                  _BFGET_(r32, 6, 6)
    #define   SET32TspGhashParam_swapLen(r32,v)                _BFSET_(r32, 6, 6,v)
    #define   GET16TspGhashParam_swapLen(r16)                  _BFGET_(r16, 6, 6)
    #define   SET16TspGhashParam_swapLen(r16,v)                _BFSET_(r16, 6, 6,v)

    #define   GET32TspGhashParam_swapRcntx(r32)                _BFGET_(r32, 7, 7)
    #define   SET32TspGhashParam_swapRcntx(r32,v)              _BFSET_(r32, 7, 7,v)
    #define   GET16TspGhashParam_swapRcntx(r16)                _BFGET_(r16, 7, 7)
    #define   SET16TspGhashParam_swapRcntx(r16,v)              _BFSET_(r16, 7, 7,v)

            UNSG32 u_fstpkg                                    :  1;
            UNSG32 u_lstpkg                                    :  1;
            UNSG32 u_swapHash                                  :  1;
            UNSG32 u_swapWcntx                                 :  1;
            UNSG32 u_swapKey                                   :  1;
            UNSG32 u_swapMessage                               :  1;
            UNSG32 u_swapLen                                   :  1;
            UNSG32 u_swapRcntx                                 :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TspGhashParam;

    ///////////////////////////////////////////////////////////
     SIGN32 TspGhashParam_drvrd(SIE_TspGhashParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TspGhashParam_drvwr(SIE_TspGhashParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TspGhashParam_reset(SIE_TspGhashParam *p);
     SIGN32 TspGhashParam_cmp  (SIE_TspGhashParam *p, SIE_TspGhashParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TspGhashParam_check(p,pie,pfx,hLOG) TspGhashParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TspGhashParam_print(p,    pfx,hLOG) TspGhashParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TspGhashParam
////////////////////////////////////////////////////////////

//////
/// 
/// $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 SemaINTRLite                             (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_SemaINTRLite
#define h_SemaINTRLite (){}

    #define     RA_SemaINTRLite_mask                           0x0000

    #define     BA_SemaINTRLite_mask_empty                     0x0000
    #define     B16SemaINTRLite_mask_empty                     0x0000
    #define   LSb32SemaINTRLite_mask_empty                        0
    #define   LSb16SemaINTRLite_mask_empty                        0
    #define       bSemaINTRLite_mask_empty                     1
    #define   MSK32SemaINTRLite_mask_empty                        0x00000001

    #define     BA_SemaINTRLite_mask_full                      0x0000
    #define     B16SemaINTRLite_mask_full                      0x0000
    #define   LSb32SemaINTRLite_mask_full                         1
    #define   LSb16SemaINTRLite_mask_full                         1
    #define       bSemaINTRLite_mask_full                      1
    #define   MSK32SemaINTRLite_mask_full                         0x00000002

    #define     BA_SemaINTRLite_mask_almostEmpty               0x0000
    #define     B16SemaINTRLite_mask_almostEmpty               0x0000
    #define   LSb32SemaINTRLite_mask_almostEmpty                  2
    #define   LSb16SemaINTRLite_mask_almostEmpty                  2
    #define       bSemaINTRLite_mask_almostEmpty               1
    #define   MSK32SemaINTRLite_mask_almostEmpty                  0x00000004

    #define     BA_SemaINTRLite_mask_almostFull                0x0000
    #define     B16SemaINTRLite_mask_almostFull                0x0000
    #define   LSb32SemaINTRLite_mask_almostFull                   3
    #define   LSb16SemaINTRLite_mask_almostFull                   3
    #define       bSemaINTRLite_mask_almostFull                1
    #define   MSK32SemaINTRLite_mask_almostFull                   0x00000008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaINTRLite {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaINTRLite_mask_empty(r32)                _BFGET_(r32, 0, 0)
    #define   SET32SemaINTRLite_mask_empty(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16SemaINTRLite_mask_empty(r16)                _BFGET_(r16, 0, 0)
    #define   SET16SemaINTRLite_mask_empty(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32SemaINTRLite_mask_full(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32SemaINTRLite_mask_full(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16SemaINTRLite_mask_full(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16SemaINTRLite_mask_full(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32SemaINTRLite_mask_almostEmpty(r32)          _BFGET_(r32, 2, 2)
    #define   SET32SemaINTRLite_mask_almostEmpty(r32,v)        _BFSET_(r32, 2, 2,v)
    #define   GET16SemaINTRLite_mask_almostEmpty(r16)          _BFGET_(r16, 2, 2)
    #define   SET16SemaINTRLite_mask_almostEmpty(r16,v)        _BFSET_(r16, 2, 2,v)

    #define   GET32SemaINTRLite_mask_almostFull(r32)           _BFGET_(r32, 3, 3)
    #define   SET32SemaINTRLite_mask_almostFull(r32,v)         _BFSET_(r32, 3, 3,v)
    #define   GET16SemaINTRLite_mask_almostFull(r16)           _BFGET_(r16, 3, 3)
    #define   SET16SemaINTRLite_mask_almostFull(r16,v)         _BFSET_(r16, 3, 3,v)

    #define     w32SemaINTRLite_mask                           {\
            UNSG32 umask_empty                                 :  1;\
            UNSG32 umask_full                                  :  1;\
            UNSG32 umask_almostEmpty                           :  1;\
            UNSG32 umask_almostFull                            :  1;\
            UNSG32 RSVDx0_b4                                   : 28;\
          }
    union { UNSG32 u32SemaINTRLite_mask;
            struct w32SemaINTRLite_mask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaINTRLite;

    typedef union  T32SemaINTRLite_mask
          { UNSG32 u32;
            struct w32SemaINTRLite_mask;
                 } T32SemaINTRLite_mask;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaINTRLite_mask
          { UNSG32 u32[1];
            struct {
            struct w32SemaINTRLite_mask;
                   };
                 } TSemaINTRLite_mask;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaINTRLite_drvrd(SIE_SemaINTRLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaINTRLite_drvwr(SIE_SemaINTRLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaINTRLite_reset(SIE_SemaINTRLite *p);
     SIGN32 SemaINTRLite_cmp  (SIE_SemaINTRLite *p, SIE_SemaINTRLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaINTRLite_check(p,pie,pfx,hLOG) SemaINTRLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaINTRLite_print(p,    pfx,hLOG) SemaINTRLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaINTRLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaphoreLite           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                 
///               $SemaINTRLite        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_SemaphoreLite
#define h_SemaphoreLite (){}

    #define     RA_SemaphoreLite_CFG                           0x0000

    #define     BA_SemaphoreLite_CFG_DEPTH                     0x0000
    #define     B16SemaphoreLite_CFG_DEPTH                     0x0000
    #define   LSb32SemaphoreLite_CFG_DEPTH                        0
    #define   LSb16SemaphoreLite_CFG_DEPTH                        0
    #define       bSemaphoreLite_CFG_DEPTH                     16
    #define   MSK32SemaphoreLite_CFG_DEPTH                        0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SemaphoreLite_INTR                          0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_SemaphoreLite_mask                          0x0010

    #define     BA_SemaphoreLite_mask_full                     0x0010
    #define     B16SemaphoreLite_mask_full                     0x0010
    #define   LSb32SemaphoreLite_mask_full                        0
    #define   LSb16SemaphoreLite_mask_full                        0
    #define       bSemaphoreLite_mask_full                     1
    #define   MSK32SemaphoreLite_mask_full                        0x00000001

    #define     BA_SemaphoreLite_mask_emp                      0x0010
    #define     B16SemaphoreLite_mask_emp                      0x0010
    #define   LSb32SemaphoreLite_mask_emp                         1
    #define   LSb16SemaphoreLite_mask_emp                         1
    #define       bSemaphoreLite_mask_emp                      1
    #define   MSK32SemaphoreLite_mask_emp                         0x00000002
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaphoreLite {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaphoreLite_CFG_DEPTH(r32)                _BFGET_(r32,15, 0)
    #define   SET32SemaphoreLite_CFG_DEPTH(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16SemaphoreLite_CFG_DEPTH(r16)                _BFGET_(r16,15, 0)
    #define   SET16SemaphoreLite_CFG_DEPTH(r16,v)              _BFSET_(r16,15, 0,v)

    #define     w32SemaphoreLite_CFG                           {\
            UNSG32 uCFG_DEPTH                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32SemaphoreLite_CFG;
            struct w32SemaphoreLite_CFG;
          };
    ///////////////////////////////////////////////////////////
              SIE_SemaINTRLite                                 ie_INTR[3];
    ///////////////////////////////////////////////////////////
    #define   GET32SemaphoreLite_mask_full(r32)                _BFGET_(r32, 0, 0)
    #define   SET32SemaphoreLite_mask_full(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16SemaphoreLite_mask_full(r16)                _BFGET_(r16, 0, 0)
    #define   SET16SemaphoreLite_mask_full(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32SemaphoreLite_mask_emp(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32SemaphoreLite_mask_emp(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16SemaphoreLite_mask_emp(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16SemaphoreLite_mask_emp(r16,v)               _BFSET_(r16, 1, 1,v)

    #define     w32SemaphoreLite_mask                          {\
            UNSG32 umask_full                                  :  1;\
            UNSG32 umask_emp                                   :  1;\
            UNSG32 RSVDx10_b2                                  : 30;\
          }
    union { UNSG32 u32SemaphoreLite_mask;
            struct w32SemaphoreLite_mask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaphoreLite;

    typedef union  T32SemaphoreLite_CFG
          { UNSG32 u32;
            struct w32SemaphoreLite_CFG;
                 } T32SemaphoreLite_CFG;
    typedef union  T32SemaphoreLite_mask
          { UNSG32 u32;
            struct w32SemaphoreLite_mask;
                 } T32SemaphoreLite_mask;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaphoreLite_CFG
          { UNSG32 u32[1];
            struct {
            struct w32SemaphoreLite_CFG;
                   };
                 } TSemaphoreLite_CFG;
    typedef union  TSemaphoreLite_mask
          { UNSG32 u32[1];
            struct {
            struct w32SemaphoreLite_mask;
                   };
                 } TSemaphoreLite_mask;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaphoreLite_drvrd(SIE_SemaphoreLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaphoreLite_drvwr(SIE_SemaphoreLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaphoreLite_reset(SIE_SemaphoreLite *p);
     SIGN32 SemaphoreLite_cmp  (SIE_SemaphoreLite *p, SIE_SemaphoreLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaphoreLite_check(p,pie,pfx,hLOG) SemaphoreLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaphoreLite_print(p,    pfx,hLOG) SemaphoreLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaphoreLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaQueryLite                            (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_SemaQueryLite
#define h_SemaQueryLite (){}

    #define     RA_SemaQueryLite_RESP                          0x0000

    #define     BA_SemaQueryLite_RESP_CNT                      0x0000
    #define     B16SemaQueryLite_RESP_CNT                      0x0000
    #define   LSb32SemaQueryLite_RESP_CNT                         0
    #define   LSb16SemaQueryLite_RESP_CNT                         0
    #define       bSemaQueryLite_RESP_CNT                      16
    #define   MSK32SemaQueryLite_RESP_CNT                         0x0000FFFF

    #define     BA_SemaQueryLite_RESP_PTR                      0x0002
    #define     B16SemaQueryLite_RESP_PTR                      0x0002
    #define   LSb32SemaQueryLite_RESP_PTR                         16
    #define   LSb16SemaQueryLite_RESP_PTR                         0
    #define       bSemaQueryLite_RESP_PTR                      16
    #define   MSK32SemaQueryLite_RESP_PTR                         0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaQueryLite {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaQueryLite_RESP_CNT(r32)                 _BFGET_(r32,15, 0)
    #define   SET32SemaQueryLite_RESP_CNT(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16SemaQueryLite_RESP_CNT(r16)                 _BFGET_(r16,15, 0)
    #define   SET16SemaQueryLite_RESP_CNT(r16,v)               _BFSET_(r16,15, 0,v)

    #define   GET32SemaQueryLite_RESP_PTR(r32)                 _BFGET_(r32,31,16)
    #define   SET32SemaQueryLite_RESP_PTR(r32,v)               _BFSET_(r32,31,16,v)
    #define   GET16SemaQueryLite_RESP_PTR(r16)                 _BFGET_(r16,15, 0)
    #define   SET16SemaQueryLite_RESP_PTR(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32SemaQueryLite_RESP                          {\
            UNSG32 uRESP_CNT                                   : 16;\
            UNSG32 uRESP_PTR                                   : 16;\
          }
    union { UNSG32 u32SemaQueryLite_RESP;
            struct w32SemaQueryLite_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaQueryLite;

    typedef union  T32SemaQueryLite_RESP
          { UNSG32 u32;
            struct w32SemaQueryLite_RESP;
                 } T32SemaQueryLite_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaQueryLite_RESP
          { UNSG32 u32[1];
            struct {
            struct w32SemaQueryLite_RESP;
                   };
                 } TSemaQueryLite_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaQueryLite_drvrd(SIE_SemaQueryLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaQueryLite_drvwr(SIE_SemaQueryLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaQueryLite_reset(SIE_SemaQueryLite *p);
     SIGN32 SemaQueryLite_cmp  (SIE_SemaQueryLite *p, SIE_SemaQueryLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaQueryLite_check(p,pie,pfx,hLOG) SemaQueryLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaQueryLite_print(p,    pfx,hLOG) SemaQueryLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaQueryLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaQueryMapLite                         (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_SemaQueryMapLite
#define h_SemaQueryMapLite (){}

    #define     RA_SemaQueryMapLite_ADDR                       0x0000

    #define     BA_SemaQueryMapLite_ADDR_byte                  0x0000
    #define     B16SemaQueryMapLite_ADDR_byte                  0x0000
    #define   LSb32SemaQueryMapLite_ADDR_byte                     0
    #define   LSb16SemaQueryMapLite_ADDR_byte                     0
    #define       bSemaQueryMapLite_ADDR_byte                  2
    #define   MSK32SemaQueryMapLite_ADDR_byte                     0x00000003

    #define     BA_SemaQueryMapLite_ADDR_ID                    0x0000
    #define     B16SemaQueryMapLite_ADDR_ID                    0x0000
    #define   LSb32SemaQueryMapLite_ADDR_ID                       2
    #define   LSb16SemaQueryMapLite_ADDR_ID                       2
    #define       bSemaQueryMapLite_ADDR_ID                    5
    #define   MSK32SemaQueryMapLite_ADDR_ID                       0x0000007C

    #define     BA_SemaQueryMapLite_ADDR_master                0x0000
    #define     B16SemaQueryMapLite_ADDR_master                0x0000
    #define   LSb32SemaQueryMapLite_ADDR_master                   7
    #define   LSb16SemaQueryMapLite_ADDR_master                   7
    #define       bSemaQueryMapLite_ADDR_master                1
    #define   MSK32SemaQueryMapLite_ADDR_master                   0x00000080
    #define        SemaQueryMapLite_ADDR_master_producer                    0x0
    #define        SemaQueryMapLite_ADDR_master_consumer                    0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaQueryMapLite {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaQueryMapLite_ADDR_byte(r32)             _BFGET_(r32, 1, 0)
    #define   SET32SemaQueryMapLite_ADDR_byte(r32,v)           _BFSET_(r32, 1, 0,v)
    #define   GET16SemaQueryMapLite_ADDR_byte(r16)             _BFGET_(r16, 1, 0)
    #define   SET16SemaQueryMapLite_ADDR_byte(r16,v)           _BFSET_(r16, 1, 0,v)

    #define   GET32SemaQueryMapLite_ADDR_ID(r32)               _BFGET_(r32, 6, 2)
    #define   SET32SemaQueryMapLite_ADDR_ID(r32,v)             _BFSET_(r32, 6, 2,v)
    #define   GET16SemaQueryMapLite_ADDR_ID(r16)               _BFGET_(r16, 6, 2)
    #define   SET16SemaQueryMapLite_ADDR_ID(r16,v)             _BFSET_(r16, 6, 2,v)

    #define   GET32SemaQueryMapLite_ADDR_master(r32)           _BFGET_(r32, 7, 7)
    #define   SET32SemaQueryMapLite_ADDR_master(r32,v)         _BFSET_(r32, 7, 7,v)
    #define   GET16SemaQueryMapLite_ADDR_master(r16)           _BFGET_(r16, 7, 7)
    #define   SET16SemaQueryMapLite_ADDR_master(r16,v)         _BFSET_(r16, 7, 7,v)

    #define     w32SemaQueryMapLite_ADDR                       {\
            UNSG32 uADDR_byte                                  :  2;\
            UNSG32 uADDR_ID                                    :  5;\
            UNSG32 uADDR_master                                :  1;\
            UNSG32 RSVDx0_b8                                   : 24;\
          }
    union { UNSG32 u32SemaQueryMapLite_ADDR;
            struct w32SemaQueryMapLite_ADDR;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaQueryMapLite;

    typedef union  T32SemaQueryMapLite_ADDR
          { UNSG32 u32;
            struct w32SemaQueryMapLite_ADDR;
                 } T32SemaQueryMapLite_ADDR;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaQueryMapLite_ADDR
          { UNSG32 u32[1];
            struct {
            struct w32SemaQueryMapLite_ADDR;
                   };
                 } TSemaQueryMapLite_ADDR;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaQueryMapLite_drvrd(SIE_SemaQueryMapLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaQueryMapLite_drvwr(SIE_SemaQueryMapLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaQueryMapLite_reset(SIE_SemaQueryMapLite *p);
     SIGN32 SemaQueryMapLite_cmp  (SIE_SemaQueryMapLite *p, SIE_SemaQueryMapLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaQueryMapLite_check(p,pie,pfx,hLOG) SemaQueryMapLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaQueryMapLite_print(p,    pfx,hLOG) SemaQueryMapLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaQueryMapLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaHubLite             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 Query                (R-)
///     # 0x00000 counter              
///               $SemaQueryLite       counter           MEM      [64]
///                                    ###
///                                    * Access address as defined above
///                                    ###
///     @ 0x00100 ARR                  (P)
///     # 0x00100 cell                 
///               $SemaphoreLite       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_SemaHubLite
#define h_SemaHubLite (){}

    #define     RA_SemaHubLite_Query                           0x0000
    #define     RA_SemaHubLite_counter                         0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_ARR                             0x0100
    #define     RA_SemaHubLite_cell                            0x0100
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_PUSH                            0x0380

    #define     BA_SemaHubLite_PUSH_ID                         0x0380
    #define     B16SemaHubLite_PUSH_ID                         0x0380
    #define   LSb32SemaHubLite_PUSH_ID                            0
    #define   LSb16SemaHubLite_PUSH_ID                            0
    #define       bSemaHubLite_PUSH_ID                         8
    #define   MSK32SemaHubLite_PUSH_ID                            0x000000FF

    #define     BA_SemaHubLite_PUSH_delta                      0x0381
    #define     B16SemaHubLite_PUSH_delta                      0x0380
    #define   LSb32SemaHubLite_PUSH_delta                         8
    #define   LSb16SemaHubLite_PUSH_delta                         8
    #define       bSemaHubLite_PUSH_delta                      8
    #define   MSK32SemaHubLite_PUSH_delta                         0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_POP                             0x0384

    #define     BA_SemaHubLite_POP_ID                          0x0384
    #define     B16SemaHubLite_POP_ID                          0x0384
    #define   LSb32SemaHubLite_POP_ID                             0
    #define   LSb16SemaHubLite_POP_ID                             0
    #define       bSemaHubLite_POP_ID                          8
    #define   MSK32SemaHubLite_POP_ID                             0x000000FF

    #define     BA_SemaHubLite_POP_delta                       0x0385
    #define     B16SemaHubLite_POP_delta                       0x0384
    #define   LSb32SemaHubLite_POP_delta                          8
    #define   LSb16SemaHubLite_POP_delta                          8
    #define       bSemaHubLite_POP_delta                       8
    #define   MSK32SemaHubLite_POP_delta                          0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_empty                           0x0388

    #define     BA_SemaHubLite_empty_ST_0i                     0x0388
    #define     B16SemaHubLite_empty_ST_0i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_0i                        0
    #define   LSb16SemaHubLite_empty_ST_0i                        0
    #define       bSemaHubLite_empty_ST_0i                     1
    #define   MSK32SemaHubLite_empty_ST_0i                        0x00000001

    #define     BA_SemaHubLite_empty_ST_1i                     0x0388
    #define     B16SemaHubLite_empty_ST_1i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_1i                        1
    #define   LSb16SemaHubLite_empty_ST_1i                        1
    #define       bSemaHubLite_empty_ST_1i                     1
    #define   MSK32SemaHubLite_empty_ST_1i                        0x00000002

    #define     BA_SemaHubLite_empty_ST_2i                     0x0388
    #define     B16SemaHubLite_empty_ST_2i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_2i                        2
    #define   LSb16SemaHubLite_empty_ST_2i                        2
    #define       bSemaHubLite_empty_ST_2i                     1
    #define   MSK32SemaHubLite_empty_ST_2i                        0x00000004

    #define     BA_SemaHubLite_empty_ST_3i                     0x0388
    #define     B16SemaHubLite_empty_ST_3i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_3i                        3
    #define   LSb16SemaHubLite_empty_ST_3i                        3
    #define       bSemaHubLite_empty_ST_3i                     1
    #define   MSK32SemaHubLite_empty_ST_3i                        0x00000008

    #define     BA_SemaHubLite_empty_ST_4i                     0x0388
    #define     B16SemaHubLite_empty_ST_4i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_4i                        4
    #define   LSb16SemaHubLite_empty_ST_4i                        4
    #define       bSemaHubLite_empty_ST_4i                     1
    #define   MSK32SemaHubLite_empty_ST_4i                        0x00000010

    #define     BA_SemaHubLite_empty_ST_5i                     0x0388
    #define     B16SemaHubLite_empty_ST_5i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_5i                        5
    #define   LSb16SemaHubLite_empty_ST_5i                        5
    #define       bSemaHubLite_empty_ST_5i                     1
    #define   MSK32SemaHubLite_empty_ST_5i                        0x00000020

    #define     BA_SemaHubLite_empty_ST_6i                     0x0388
    #define     B16SemaHubLite_empty_ST_6i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_6i                        6
    #define   LSb16SemaHubLite_empty_ST_6i                        6
    #define       bSemaHubLite_empty_ST_6i                     1
    #define   MSK32SemaHubLite_empty_ST_6i                        0x00000040

    #define     BA_SemaHubLite_empty_ST_7i                     0x0388
    #define     B16SemaHubLite_empty_ST_7i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_7i                        7
    #define   LSb16SemaHubLite_empty_ST_7i                        7
    #define       bSemaHubLite_empty_ST_7i                     1
    #define   MSK32SemaHubLite_empty_ST_7i                        0x00000080

    #define     BA_SemaHubLite_empty_ST_8i                     0x0389
    #define     B16SemaHubLite_empty_ST_8i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_8i                        8
    #define   LSb16SemaHubLite_empty_ST_8i                        8
    #define       bSemaHubLite_empty_ST_8i                     1
    #define   MSK32SemaHubLite_empty_ST_8i                        0x00000100

    #define     BA_SemaHubLite_empty_ST_9i                     0x0389
    #define     B16SemaHubLite_empty_ST_9i                     0x0388
    #define   LSb32SemaHubLite_empty_ST_9i                        9
    #define   LSb16SemaHubLite_empty_ST_9i                        9
    #define       bSemaHubLite_empty_ST_9i                     1
    #define   MSK32SemaHubLite_empty_ST_9i                        0x00000200

    #define     BA_SemaHubLite_empty_ST_10i                    0x0389
    #define     B16SemaHubLite_empty_ST_10i                    0x0388
    #define   LSb32SemaHubLite_empty_ST_10i                       10
    #define   LSb16SemaHubLite_empty_ST_10i                       10
    #define       bSemaHubLite_empty_ST_10i                    1
    #define   MSK32SemaHubLite_empty_ST_10i                       0x00000400

    #define     BA_SemaHubLite_empty_ST_11i                    0x0389
    #define     B16SemaHubLite_empty_ST_11i                    0x0388
    #define   LSb32SemaHubLite_empty_ST_11i                       11
    #define   LSb16SemaHubLite_empty_ST_11i                       11
    #define       bSemaHubLite_empty_ST_11i                    1
    #define   MSK32SemaHubLite_empty_ST_11i                       0x00000800

    #define     BA_SemaHubLite_empty_ST_12i                    0x0389
    #define     B16SemaHubLite_empty_ST_12i                    0x0388
    #define   LSb32SemaHubLite_empty_ST_12i                       12
    #define   LSb16SemaHubLite_empty_ST_12i                       12
    #define       bSemaHubLite_empty_ST_12i                    1
    #define   MSK32SemaHubLite_empty_ST_12i                       0x00001000

    #define     BA_SemaHubLite_empty_ST_13i                    0x0389
    #define     B16SemaHubLite_empty_ST_13i                    0x0388
    #define   LSb32SemaHubLite_empty_ST_13i                       13
    #define   LSb16SemaHubLite_empty_ST_13i                       13
    #define       bSemaHubLite_empty_ST_13i                    1
    #define   MSK32SemaHubLite_empty_ST_13i                       0x00002000

    #define     BA_SemaHubLite_empty_ST_14i                    0x0389
    #define     B16SemaHubLite_empty_ST_14i                    0x0388
    #define   LSb32SemaHubLite_empty_ST_14i                       14
    #define   LSb16SemaHubLite_empty_ST_14i                       14
    #define       bSemaHubLite_empty_ST_14i                    1
    #define   MSK32SemaHubLite_empty_ST_14i                       0x00004000

    #define     BA_SemaHubLite_empty_ST_15i                    0x0389
    #define     B16SemaHubLite_empty_ST_15i                    0x0388
    #define   LSb32SemaHubLite_empty_ST_15i                       15
    #define   LSb16SemaHubLite_empty_ST_15i                       15
    #define       bSemaHubLite_empty_ST_15i                    1
    #define   MSK32SemaHubLite_empty_ST_15i                       0x00008000

    #define     BA_SemaHubLite_empty_ST_16i                    0x038A
    #define     B16SemaHubLite_empty_ST_16i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_16i                       16
    #define   LSb16SemaHubLite_empty_ST_16i                       0
    #define       bSemaHubLite_empty_ST_16i                    1
    #define   MSK32SemaHubLite_empty_ST_16i                       0x00010000

    #define     BA_SemaHubLite_empty_ST_17i                    0x038A
    #define     B16SemaHubLite_empty_ST_17i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_17i                       17
    #define   LSb16SemaHubLite_empty_ST_17i                       1
    #define       bSemaHubLite_empty_ST_17i                    1
    #define   MSK32SemaHubLite_empty_ST_17i                       0x00020000

    #define     BA_SemaHubLite_empty_ST_18i                    0x038A
    #define     B16SemaHubLite_empty_ST_18i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_18i                       18
    #define   LSb16SemaHubLite_empty_ST_18i                       2
    #define       bSemaHubLite_empty_ST_18i                    1
    #define   MSK32SemaHubLite_empty_ST_18i                       0x00040000

    #define     BA_SemaHubLite_empty_ST_19i                    0x038A
    #define     B16SemaHubLite_empty_ST_19i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_19i                       19
    #define   LSb16SemaHubLite_empty_ST_19i                       3
    #define       bSemaHubLite_empty_ST_19i                    1
    #define   MSK32SemaHubLite_empty_ST_19i                       0x00080000

    #define     BA_SemaHubLite_empty_ST_20i                    0x038A
    #define     B16SemaHubLite_empty_ST_20i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_20i                       20
    #define   LSb16SemaHubLite_empty_ST_20i                       4
    #define       bSemaHubLite_empty_ST_20i                    1
    #define   MSK32SemaHubLite_empty_ST_20i                       0x00100000

    #define     BA_SemaHubLite_empty_ST_21i                    0x038A
    #define     B16SemaHubLite_empty_ST_21i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_21i                       21
    #define   LSb16SemaHubLite_empty_ST_21i                       5
    #define       bSemaHubLite_empty_ST_21i                    1
    #define   MSK32SemaHubLite_empty_ST_21i                       0x00200000

    #define     BA_SemaHubLite_empty_ST_22i                    0x038A
    #define     B16SemaHubLite_empty_ST_22i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_22i                       22
    #define   LSb16SemaHubLite_empty_ST_22i                       6
    #define       bSemaHubLite_empty_ST_22i                    1
    #define   MSK32SemaHubLite_empty_ST_22i                       0x00400000

    #define     BA_SemaHubLite_empty_ST_23i                    0x038A
    #define     B16SemaHubLite_empty_ST_23i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_23i                       23
    #define   LSb16SemaHubLite_empty_ST_23i                       7
    #define       bSemaHubLite_empty_ST_23i                    1
    #define   MSK32SemaHubLite_empty_ST_23i                       0x00800000

    #define     BA_SemaHubLite_empty_ST_24i                    0x038B
    #define     B16SemaHubLite_empty_ST_24i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_24i                       24
    #define   LSb16SemaHubLite_empty_ST_24i                       8
    #define       bSemaHubLite_empty_ST_24i                    1
    #define   MSK32SemaHubLite_empty_ST_24i                       0x01000000

    #define     BA_SemaHubLite_empty_ST_25i                    0x038B
    #define     B16SemaHubLite_empty_ST_25i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_25i                       25
    #define   LSb16SemaHubLite_empty_ST_25i                       9
    #define       bSemaHubLite_empty_ST_25i                    1
    #define   MSK32SemaHubLite_empty_ST_25i                       0x02000000

    #define     BA_SemaHubLite_empty_ST_26i                    0x038B
    #define     B16SemaHubLite_empty_ST_26i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_26i                       26
    #define   LSb16SemaHubLite_empty_ST_26i                       10
    #define       bSemaHubLite_empty_ST_26i                    1
    #define   MSK32SemaHubLite_empty_ST_26i                       0x04000000

    #define     BA_SemaHubLite_empty_ST_27i                    0x038B
    #define     B16SemaHubLite_empty_ST_27i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_27i                       27
    #define   LSb16SemaHubLite_empty_ST_27i                       11
    #define       bSemaHubLite_empty_ST_27i                    1
    #define   MSK32SemaHubLite_empty_ST_27i                       0x08000000

    #define     BA_SemaHubLite_empty_ST_28i                    0x038B
    #define     B16SemaHubLite_empty_ST_28i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_28i                       28
    #define   LSb16SemaHubLite_empty_ST_28i                       12
    #define       bSemaHubLite_empty_ST_28i                    1
    #define   MSK32SemaHubLite_empty_ST_28i                       0x10000000

    #define     BA_SemaHubLite_empty_ST_29i                    0x038B
    #define     B16SemaHubLite_empty_ST_29i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_29i                       29
    #define   LSb16SemaHubLite_empty_ST_29i                       13
    #define       bSemaHubLite_empty_ST_29i                    1
    #define   MSK32SemaHubLite_empty_ST_29i                       0x20000000

    #define     BA_SemaHubLite_empty_ST_30i                    0x038B
    #define     B16SemaHubLite_empty_ST_30i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_30i                       30
    #define   LSb16SemaHubLite_empty_ST_30i                       14
    #define       bSemaHubLite_empty_ST_30i                    1
    #define   MSK32SemaHubLite_empty_ST_30i                       0x40000000

    #define     BA_SemaHubLite_empty_ST_31i                    0x038B
    #define     B16SemaHubLite_empty_ST_31i                    0x038A
    #define   LSb32SemaHubLite_empty_ST_31i                       31
    #define   LSb16SemaHubLite_empty_ST_31i                       15
    #define       bSemaHubLite_empty_ST_31i                    1
    #define   MSK32SemaHubLite_empty_ST_31i                       0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_full                            0x038C

    #define     BA_SemaHubLite_full_ST_0i                      0x038C
    #define     B16SemaHubLite_full_ST_0i                      0x038C
    #define   LSb32SemaHubLite_full_ST_0i                         0
    #define   LSb16SemaHubLite_full_ST_0i                         0
    #define       bSemaHubLite_full_ST_0i                      1
    #define   MSK32SemaHubLite_full_ST_0i                         0x00000001

    #define     BA_SemaHubLite_full_ST_1i                      0x038C
    #define     B16SemaHubLite_full_ST_1i                      0x038C
    #define   LSb32SemaHubLite_full_ST_1i                         1
    #define   LSb16SemaHubLite_full_ST_1i                         1
    #define       bSemaHubLite_full_ST_1i                      1
    #define   MSK32SemaHubLite_full_ST_1i                         0x00000002

    #define     BA_SemaHubLite_full_ST_2i                      0x038C
    #define     B16SemaHubLite_full_ST_2i                      0x038C
    #define   LSb32SemaHubLite_full_ST_2i                         2
    #define   LSb16SemaHubLite_full_ST_2i                         2
    #define       bSemaHubLite_full_ST_2i                      1
    #define   MSK32SemaHubLite_full_ST_2i                         0x00000004

    #define     BA_SemaHubLite_full_ST_3i                      0x038C
    #define     B16SemaHubLite_full_ST_3i                      0x038C
    #define   LSb32SemaHubLite_full_ST_3i                         3
    #define   LSb16SemaHubLite_full_ST_3i                         3
    #define       bSemaHubLite_full_ST_3i                      1
    #define   MSK32SemaHubLite_full_ST_3i                         0x00000008

    #define     BA_SemaHubLite_full_ST_4i                      0x038C
    #define     B16SemaHubLite_full_ST_4i                      0x038C
    #define   LSb32SemaHubLite_full_ST_4i                         4
    #define   LSb16SemaHubLite_full_ST_4i                         4
    #define       bSemaHubLite_full_ST_4i                      1
    #define   MSK32SemaHubLite_full_ST_4i                         0x00000010

    #define     BA_SemaHubLite_full_ST_5i                      0x038C
    #define     B16SemaHubLite_full_ST_5i                      0x038C
    #define   LSb32SemaHubLite_full_ST_5i                         5
    #define   LSb16SemaHubLite_full_ST_5i                         5
    #define       bSemaHubLite_full_ST_5i                      1
    #define   MSK32SemaHubLite_full_ST_5i                         0x00000020

    #define     BA_SemaHubLite_full_ST_6i                      0x038C
    #define     B16SemaHubLite_full_ST_6i                      0x038C
    #define   LSb32SemaHubLite_full_ST_6i                         6
    #define   LSb16SemaHubLite_full_ST_6i                         6
    #define       bSemaHubLite_full_ST_6i                      1
    #define   MSK32SemaHubLite_full_ST_6i                         0x00000040

    #define     BA_SemaHubLite_full_ST_7i                      0x038C
    #define     B16SemaHubLite_full_ST_7i                      0x038C
    #define   LSb32SemaHubLite_full_ST_7i                         7
    #define   LSb16SemaHubLite_full_ST_7i                         7
    #define       bSemaHubLite_full_ST_7i                      1
    #define   MSK32SemaHubLite_full_ST_7i                         0x00000080

    #define     BA_SemaHubLite_full_ST_8i                      0x038D
    #define     B16SemaHubLite_full_ST_8i                      0x038C
    #define   LSb32SemaHubLite_full_ST_8i                         8
    #define   LSb16SemaHubLite_full_ST_8i                         8
    #define       bSemaHubLite_full_ST_8i                      1
    #define   MSK32SemaHubLite_full_ST_8i                         0x00000100

    #define     BA_SemaHubLite_full_ST_9i                      0x038D
    #define     B16SemaHubLite_full_ST_9i                      0x038C
    #define   LSb32SemaHubLite_full_ST_9i                         9
    #define   LSb16SemaHubLite_full_ST_9i                         9
    #define       bSemaHubLite_full_ST_9i                      1
    #define   MSK32SemaHubLite_full_ST_9i                         0x00000200

    #define     BA_SemaHubLite_full_ST_10i                     0x038D
    #define     B16SemaHubLite_full_ST_10i                     0x038C
    #define   LSb32SemaHubLite_full_ST_10i                        10
    #define   LSb16SemaHubLite_full_ST_10i                        10
    #define       bSemaHubLite_full_ST_10i                     1
    #define   MSK32SemaHubLite_full_ST_10i                        0x00000400

    #define     BA_SemaHubLite_full_ST_11i                     0x038D
    #define     B16SemaHubLite_full_ST_11i                     0x038C
    #define   LSb32SemaHubLite_full_ST_11i                        11
    #define   LSb16SemaHubLite_full_ST_11i                        11
    #define       bSemaHubLite_full_ST_11i                     1
    #define   MSK32SemaHubLite_full_ST_11i                        0x00000800

    #define     BA_SemaHubLite_full_ST_12i                     0x038D
    #define     B16SemaHubLite_full_ST_12i                     0x038C
    #define   LSb32SemaHubLite_full_ST_12i                        12
    #define   LSb16SemaHubLite_full_ST_12i                        12
    #define       bSemaHubLite_full_ST_12i                     1
    #define   MSK32SemaHubLite_full_ST_12i                        0x00001000

    #define     BA_SemaHubLite_full_ST_13i                     0x038D
    #define     B16SemaHubLite_full_ST_13i                     0x038C
    #define   LSb32SemaHubLite_full_ST_13i                        13
    #define   LSb16SemaHubLite_full_ST_13i                        13
    #define       bSemaHubLite_full_ST_13i                     1
    #define   MSK32SemaHubLite_full_ST_13i                        0x00002000

    #define     BA_SemaHubLite_full_ST_14i                     0x038D
    #define     B16SemaHubLite_full_ST_14i                     0x038C
    #define   LSb32SemaHubLite_full_ST_14i                        14
    #define   LSb16SemaHubLite_full_ST_14i                        14
    #define       bSemaHubLite_full_ST_14i                     1
    #define   MSK32SemaHubLite_full_ST_14i                        0x00004000

    #define     BA_SemaHubLite_full_ST_15i                     0x038D
    #define     B16SemaHubLite_full_ST_15i                     0x038C
    #define   LSb32SemaHubLite_full_ST_15i                        15
    #define   LSb16SemaHubLite_full_ST_15i                        15
    #define       bSemaHubLite_full_ST_15i                     1
    #define   MSK32SemaHubLite_full_ST_15i                        0x00008000

    #define     BA_SemaHubLite_full_ST_16i                     0x038E
    #define     B16SemaHubLite_full_ST_16i                     0x038E
    #define   LSb32SemaHubLite_full_ST_16i                        16
    #define   LSb16SemaHubLite_full_ST_16i                        0
    #define       bSemaHubLite_full_ST_16i                     1
    #define   MSK32SemaHubLite_full_ST_16i                        0x00010000

    #define     BA_SemaHubLite_full_ST_17i                     0x038E
    #define     B16SemaHubLite_full_ST_17i                     0x038E
    #define   LSb32SemaHubLite_full_ST_17i                        17
    #define   LSb16SemaHubLite_full_ST_17i                        1
    #define       bSemaHubLite_full_ST_17i                     1
    #define   MSK32SemaHubLite_full_ST_17i                        0x00020000

    #define     BA_SemaHubLite_full_ST_18i                     0x038E
    #define     B16SemaHubLite_full_ST_18i                     0x038E
    #define   LSb32SemaHubLite_full_ST_18i                        18
    #define   LSb16SemaHubLite_full_ST_18i                        2
    #define       bSemaHubLite_full_ST_18i                     1
    #define   MSK32SemaHubLite_full_ST_18i                        0x00040000

    #define     BA_SemaHubLite_full_ST_19i                     0x038E
    #define     B16SemaHubLite_full_ST_19i                     0x038E
    #define   LSb32SemaHubLite_full_ST_19i                        19
    #define   LSb16SemaHubLite_full_ST_19i                        3
    #define       bSemaHubLite_full_ST_19i                     1
    #define   MSK32SemaHubLite_full_ST_19i                        0x00080000

    #define     BA_SemaHubLite_full_ST_20i                     0x038E
    #define     B16SemaHubLite_full_ST_20i                     0x038E
    #define   LSb32SemaHubLite_full_ST_20i                        20
    #define   LSb16SemaHubLite_full_ST_20i                        4
    #define       bSemaHubLite_full_ST_20i                     1
    #define   MSK32SemaHubLite_full_ST_20i                        0x00100000

    #define     BA_SemaHubLite_full_ST_21i                     0x038E
    #define     B16SemaHubLite_full_ST_21i                     0x038E
    #define   LSb32SemaHubLite_full_ST_21i                        21
    #define   LSb16SemaHubLite_full_ST_21i                        5
    #define       bSemaHubLite_full_ST_21i                     1
    #define   MSK32SemaHubLite_full_ST_21i                        0x00200000

    #define     BA_SemaHubLite_full_ST_22i                     0x038E
    #define     B16SemaHubLite_full_ST_22i                     0x038E
    #define   LSb32SemaHubLite_full_ST_22i                        22
    #define   LSb16SemaHubLite_full_ST_22i                        6
    #define       bSemaHubLite_full_ST_22i                     1
    #define   MSK32SemaHubLite_full_ST_22i                        0x00400000

    #define     BA_SemaHubLite_full_ST_23i                     0x038E
    #define     B16SemaHubLite_full_ST_23i                     0x038E
    #define   LSb32SemaHubLite_full_ST_23i                        23
    #define   LSb16SemaHubLite_full_ST_23i                        7
    #define       bSemaHubLite_full_ST_23i                     1
    #define   MSK32SemaHubLite_full_ST_23i                        0x00800000

    #define     BA_SemaHubLite_full_ST_24i                     0x038F
    #define     B16SemaHubLite_full_ST_24i                     0x038E
    #define   LSb32SemaHubLite_full_ST_24i                        24
    #define   LSb16SemaHubLite_full_ST_24i                        8
    #define       bSemaHubLite_full_ST_24i                     1
    #define   MSK32SemaHubLite_full_ST_24i                        0x01000000

    #define     BA_SemaHubLite_full_ST_25i                     0x038F
    #define     B16SemaHubLite_full_ST_25i                     0x038E
    #define   LSb32SemaHubLite_full_ST_25i                        25
    #define   LSb16SemaHubLite_full_ST_25i                        9
    #define       bSemaHubLite_full_ST_25i                     1
    #define   MSK32SemaHubLite_full_ST_25i                        0x02000000

    #define     BA_SemaHubLite_full_ST_26i                     0x038F
    #define     B16SemaHubLite_full_ST_26i                     0x038E
    #define   LSb32SemaHubLite_full_ST_26i                        26
    #define   LSb16SemaHubLite_full_ST_26i                        10
    #define       bSemaHubLite_full_ST_26i                     1
    #define   MSK32SemaHubLite_full_ST_26i                        0x04000000

    #define     BA_SemaHubLite_full_ST_27i                     0x038F
    #define     B16SemaHubLite_full_ST_27i                     0x038E
    #define   LSb32SemaHubLite_full_ST_27i                        27
    #define   LSb16SemaHubLite_full_ST_27i                        11
    #define       bSemaHubLite_full_ST_27i                     1
    #define   MSK32SemaHubLite_full_ST_27i                        0x08000000

    #define     BA_SemaHubLite_full_ST_28i                     0x038F
    #define     B16SemaHubLite_full_ST_28i                     0x038E
    #define   LSb32SemaHubLite_full_ST_28i                        28
    #define   LSb16SemaHubLite_full_ST_28i                        12
    #define       bSemaHubLite_full_ST_28i                     1
    #define   MSK32SemaHubLite_full_ST_28i                        0x10000000

    #define     BA_SemaHubLite_full_ST_29i                     0x038F
    #define     B16SemaHubLite_full_ST_29i                     0x038E
    #define   LSb32SemaHubLite_full_ST_29i                        29
    #define   LSb16SemaHubLite_full_ST_29i                        13
    #define       bSemaHubLite_full_ST_29i                     1
    #define   MSK32SemaHubLite_full_ST_29i                        0x20000000

    #define     BA_SemaHubLite_full_ST_30i                     0x038F
    #define     B16SemaHubLite_full_ST_30i                     0x038E
    #define   LSb32SemaHubLite_full_ST_30i                        30
    #define   LSb16SemaHubLite_full_ST_30i                        14
    #define       bSemaHubLite_full_ST_30i                     1
    #define   MSK32SemaHubLite_full_ST_30i                        0x40000000

    #define     BA_SemaHubLite_full_ST_31i                     0x038F
    #define     B16SemaHubLite_full_ST_31i                     0x038E
    #define   LSb32SemaHubLite_full_ST_31i                        31
    #define   LSb16SemaHubLite_full_ST_31i                        15
    #define       bSemaHubLite_full_ST_31i                     1
    #define   MSK32SemaHubLite_full_ST_31i                        0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_almostEmpty                     0x0390

    #define     BA_SemaHubLite_almostEmpty_ST_0i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_0i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_0i                  0
    #define   LSb16SemaHubLite_almostEmpty_ST_0i                  0
    #define       bSemaHubLite_almostEmpty_ST_0i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_0i                  0x00000001

    #define     BA_SemaHubLite_almostEmpty_ST_1i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_1i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_1i                  1
    #define   LSb16SemaHubLite_almostEmpty_ST_1i                  1
    #define       bSemaHubLite_almostEmpty_ST_1i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_1i                  0x00000002

    #define     BA_SemaHubLite_almostEmpty_ST_2i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_2i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_2i                  2
    #define   LSb16SemaHubLite_almostEmpty_ST_2i                  2
    #define       bSemaHubLite_almostEmpty_ST_2i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_2i                  0x00000004

    #define     BA_SemaHubLite_almostEmpty_ST_3i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_3i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_3i                  3
    #define   LSb16SemaHubLite_almostEmpty_ST_3i                  3
    #define       bSemaHubLite_almostEmpty_ST_3i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_3i                  0x00000008

    #define     BA_SemaHubLite_almostEmpty_ST_4i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_4i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_4i                  4
    #define   LSb16SemaHubLite_almostEmpty_ST_4i                  4
    #define       bSemaHubLite_almostEmpty_ST_4i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_4i                  0x00000010

    #define     BA_SemaHubLite_almostEmpty_ST_5i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_5i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_5i                  5
    #define   LSb16SemaHubLite_almostEmpty_ST_5i                  5
    #define       bSemaHubLite_almostEmpty_ST_5i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_5i                  0x00000020

    #define     BA_SemaHubLite_almostEmpty_ST_6i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_6i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_6i                  6
    #define   LSb16SemaHubLite_almostEmpty_ST_6i                  6
    #define       bSemaHubLite_almostEmpty_ST_6i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_6i                  0x00000040

    #define     BA_SemaHubLite_almostEmpty_ST_7i               0x0390
    #define     B16SemaHubLite_almostEmpty_ST_7i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_7i                  7
    #define   LSb16SemaHubLite_almostEmpty_ST_7i                  7
    #define       bSemaHubLite_almostEmpty_ST_7i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_7i                  0x00000080

    #define     BA_SemaHubLite_almostEmpty_ST_8i               0x0391
    #define     B16SemaHubLite_almostEmpty_ST_8i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_8i                  8
    #define   LSb16SemaHubLite_almostEmpty_ST_8i                  8
    #define       bSemaHubLite_almostEmpty_ST_8i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_8i                  0x00000100

    #define     BA_SemaHubLite_almostEmpty_ST_9i               0x0391
    #define     B16SemaHubLite_almostEmpty_ST_9i               0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_9i                  9
    #define   LSb16SemaHubLite_almostEmpty_ST_9i                  9
    #define       bSemaHubLite_almostEmpty_ST_9i               1
    #define   MSK32SemaHubLite_almostEmpty_ST_9i                  0x00000200

    #define     BA_SemaHubLite_almostEmpty_ST_10i              0x0391
    #define     B16SemaHubLite_almostEmpty_ST_10i              0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_10i                 10
    #define   LSb16SemaHubLite_almostEmpty_ST_10i                 10
    #define       bSemaHubLite_almostEmpty_ST_10i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_10i                 0x00000400

    #define     BA_SemaHubLite_almostEmpty_ST_11i              0x0391
    #define     B16SemaHubLite_almostEmpty_ST_11i              0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_11i                 11
    #define   LSb16SemaHubLite_almostEmpty_ST_11i                 11
    #define       bSemaHubLite_almostEmpty_ST_11i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_11i                 0x00000800

    #define     BA_SemaHubLite_almostEmpty_ST_12i              0x0391
    #define     B16SemaHubLite_almostEmpty_ST_12i              0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_12i                 12
    #define   LSb16SemaHubLite_almostEmpty_ST_12i                 12
    #define       bSemaHubLite_almostEmpty_ST_12i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_12i                 0x00001000

    #define     BA_SemaHubLite_almostEmpty_ST_13i              0x0391
    #define     B16SemaHubLite_almostEmpty_ST_13i              0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_13i                 13
    #define   LSb16SemaHubLite_almostEmpty_ST_13i                 13
    #define       bSemaHubLite_almostEmpty_ST_13i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_13i                 0x00002000

    #define     BA_SemaHubLite_almostEmpty_ST_14i              0x0391
    #define     B16SemaHubLite_almostEmpty_ST_14i              0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_14i                 14
    #define   LSb16SemaHubLite_almostEmpty_ST_14i                 14
    #define       bSemaHubLite_almostEmpty_ST_14i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_14i                 0x00004000

    #define     BA_SemaHubLite_almostEmpty_ST_15i              0x0391
    #define     B16SemaHubLite_almostEmpty_ST_15i              0x0390
    #define   LSb32SemaHubLite_almostEmpty_ST_15i                 15
    #define   LSb16SemaHubLite_almostEmpty_ST_15i                 15
    #define       bSemaHubLite_almostEmpty_ST_15i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_15i                 0x00008000

    #define     BA_SemaHubLite_almostEmpty_ST_16i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_16i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_16i                 16
    #define   LSb16SemaHubLite_almostEmpty_ST_16i                 0
    #define       bSemaHubLite_almostEmpty_ST_16i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_16i                 0x00010000

    #define     BA_SemaHubLite_almostEmpty_ST_17i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_17i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_17i                 17
    #define   LSb16SemaHubLite_almostEmpty_ST_17i                 1
    #define       bSemaHubLite_almostEmpty_ST_17i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_17i                 0x00020000

    #define     BA_SemaHubLite_almostEmpty_ST_18i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_18i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_18i                 18
    #define   LSb16SemaHubLite_almostEmpty_ST_18i                 2
    #define       bSemaHubLite_almostEmpty_ST_18i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_18i                 0x00040000

    #define     BA_SemaHubLite_almostEmpty_ST_19i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_19i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_19i                 19
    #define   LSb16SemaHubLite_almostEmpty_ST_19i                 3
    #define       bSemaHubLite_almostEmpty_ST_19i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_19i                 0x00080000

    #define     BA_SemaHubLite_almostEmpty_ST_20i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_20i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_20i                 20
    #define   LSb16SemaHubLite_almostEmpty_ST_20i                 4
    #define       bSemaHubLite_almostEmpty_ST_20i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_20i                 0x00100000

    #define     BA_SemaHubLite_almostEmpty_ST_21i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_21i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_21i                 21
    #define   LSb16SemaHubLite_almostEmpty_ST_21i                 5
    #define       bSemaHubLite_almostEmpty_ST_21i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_21i                 0x00200000

    #define     BA_SemaHubLite_almostEmpty_ST_22i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_22i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_22i                 22
    #define   LSb16SemaHubLite_almostEmpty_ST_22i                 6
    #define       bSemaHubLite_almostEmpty_ST_22i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_22i                 0x00400000

    #define     BA_SemaHubLite_almostEmpty_ST_23i              0x0392
    #define     B16SemaHubLite_almostEmpty_ST_23i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_23i                 23
    #define   LSb16SemaHubLite_almostEmpty_ST_23i                 7
    #define       bSemaHubLite_almostEmpty_ST_23i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_23i                 0x00800000

    #define     BA_SemaHubLite_almostEmpty_ST_24i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_24i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_24i                 24
    #define   LSb16SemaHubLite_almostEmpty_ST_24i                 8
    #define       bSemaHubLite_almostEmpty_ST_24i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_24i                 0x01000000

    #define     BA_SemaHubLite_almostEmpty_ST_25i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_25i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_25i                 25
    #define   LSb16SemaHubLite_almostEmpty_ST_25i                 9
    #define       bSemaHubLite_almostEmpty_ST_25i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_25i                 0x02000000

    #define     BA_SemaHubLite_almostEmpty_ST_26i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_26i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_26i                 26
    #define   LSb16SemaHubLite_almostEmpty_ST_26i                 10
    #define       bSemaHubLite_almostEmpty_ST_26i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_26i                 0x04000000

    #define     BA_SemaHubLite_almostEmpty_ST_27i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_27i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_27i                 27
    #define   LSb16SemaHubLite_almostEmpty_ST_27i                 11
    #define       bSemaHubLite_almostEmpty_ST_27i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_27i                 0x08000000

    #define     BA_SemaHubLite_almostEmpty_ST_28i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_28i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_28i                 28
    #define   LSb16SemaHubLite_almostEmpty_ST_28i                 12
    #define       bSemaHubLite_almostEmpty_ST_28i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_28i                 0x10000000

    #define     BA_SemaHubLite_almostEmpty_ST_29i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_29i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_29i                 29
    #define   LSb16SemaHubLite_almostEmpty_ST_29i                 13
    #define       bSemaHubLite_almostEmpty_ST_29i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_29i                 0x20000000

    #define     BA_SemaHubLite_almostEmpty_ST_30i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_30i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_30i                 30
    #define   LSb16SemaHubLite_almostEmpty_ST_30i                 14
    #define       bSemaHubLite_almostEmpty_ST_30i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_30i                 0x40000000

    #define     BA_SemaHubLite_almostEmpty_ST_31i              0x0393
    #define     B16SemaHubLite_almostEmpty_ST_31i              0x0392
    #define   LSb32SemaHubLite_almostEmpty_ST_31i                 31
    #define   LSb16SemaHubLite_almostEmpty_ST_31i                 15
    #define       bSemaHubLite_almostEmpty_ST_31i              1
    #define   MSK32SemaHubLite_almostEmpty_ST_31i                 0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHubLite_almostFull                      0x0394

    #define     BA_SemaHubLite_almostFull_ST_0i                0x0394
    #define     B16SemaHubLite_almostFull_ST_0i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_0i                   0
    #define   LSb16SemaHubLite_almostFull_ST_0i                   0
    #define       bSemaHubLite_almostFull_ST_0i                1
    #define   MSK32SemaHubLite_almostFull_ST_0i                   0x00000001

    #define     BA_SemaHubLite_almostFull_ST_1i                0x0394
    #define     B16SemaHubLite_almostFull_ST_1i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_1i                   1
    #define   LSb16SemaHubLite_almostFull_ST_1i                   1
    #define       bSemaHubLite_almostFull_ST_1i                1
    #define   MSK32SemaHubLite_almostFull_ST_1i                   0x00000002

    #define     BA_SemaHubLite_almostFull_ST_2i                0x0394
    #define     B16SemaHubLite_almostFull_ST_2i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_2i                   2
    #define   LSb16SemaHubLite_almostFull_ST_2i                   2
    #define       bSemaHubLite_almostFull_ST_2i                1
    #define   MSK32SemaHubLite_almostFull_ST_2i                   0x00000004

    #define     BA_SemaHubLite_almostFull_ST_3i                0x0394
    #define     B16SemaHubLite_almostFull_ST_3i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_3i                   3
    #define   LSb16SemaHubLite_almostFull_ST_3i                   3
    #define       bSemaHubLite_almostFull_ST_3i                1
    #define   MSK32SemaHubLite_almostFull_ST_3i                   0x00000008

    #define     BA_SemaHubLite_almostFull_ST_4i                0x0394
    #define     B16SemaHubLite_almostFull_ST_4i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_4i                   4
    #define   LSb16SemaHubLite_almostFull_ST_4i                   4
    #define       bSemaHubLite_almostFull_ST_4i                1
    #define   MSK32SemaHubLite_almostFull_ST_4i                   0x00000010

    #define     BA_SemaHubLite_almostFull_ST_5i                0x0394
    #define     B16SemaHubLite_almostFull_ST_5i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_5i                   5
    #define   LSb16SemaHubLite_almostFull_ST_5i                   5
    #define       bSemaHubLite_almostFull_ST_5i                1
    #define   MSK32SemaHubLite_almostFull_ST_5i                   0x00000020

    #define     BA_SemaHubLite_almostFull_ST_6i                0x0394
    #define     B16SemaHubLite_almostFull_ST_6i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_6i                   6
    #define   LSb16SemaHubLite_almostFull_ST_6i                   6
    #define       bSemaHubLite_almostFull_ST_6i                1
    #define   MSK32SemaHubLite_almostFull_ST_6i                   0x00000040

    #define     BA_SemaHubLite_almostFull_ST_7i                0x0394
    #define     B16SemaHubLite_almostFull_ST_7i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_7i                   7
    #define   LSb16SemaHubLite_almostFull_ST_7i                   7
    #define       bSemaHubLite_almostFull_ST_7i                1
    #define   MSK32SemaHubLite_almostFull_ST_7i                   0x00000080

    #define     BA_SemaHubLite_almostFull_ST_8i                0x0395
    #define     B16SemaHubLite_almostFull_ST_8i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_8i                   8
    #define   LSb16SemaHubLite_almostFull_ST_8i                   8
    #define       bSemaHubLite_almostFull_ST_8i                1
    #define   MSK32SemaHubLite_almostFull_ST_8i                   0x00000100

    #define     BA_SemaHubLite_almostFull_ST_9i                0x0395
    #define     B16SemaHubLite_almostFull_ST_9i                0x0394
    #define   LSb32SemaHubLite_almostFull_ST_9i                   9
    #define   LSb16SemaHubLite_almostFull_ST_9i                   9
    #define       bSemaHubLite_almostFull_ST_9i                1
    #define   MSK32SemaHubLite_almostFull_ST_9i                   0x00000200

    #define     BA_SemaHubLite_almostFull_ST_10i               0x0395
    #define     B16SemaHubLite_almostFull_ST_10i               0x0394
    #define   LSb32SemaHubLite_almostFull_ST_10i                  10
    #define   LSb16SemaHubLite_almostFull_ST_10i                  10
    #define       bSemaHubLite_almostFull_ST_10i               1
    #define   MSK32SemaHubLite_almostFull_ST_10i                  0x00000400

    #define     BA_SemaHubLite_almostFull_ST_11i               0x0395
    #define     B16SemaHubLite_almostFull_ST_11i               0x0394
    #define   LSb32SemaHubLite_almostFull_ST_11i                  11
    #define   LSb16SemaHubLite_almostFull_ST_11i                  11
    #define       bSemaHubLite_almostFull_ST_11i               1
    #define   MSK32SemaHubLite_almostFull_ST_11i                  0x00000800

    #define     BA_SemaHubLite_almostFull_ST_12i               0x0395
    #define     B16SemaHubLite_almostFull_ST_12i               0x0394
    #define   LSb32SemaHubLite_almostFull_ST_12i                  12
    #define   LSb16SemaHubLite_almostFull_ST_12i                  12
    #define       bSemaHubLite_almostFull_ST_12i               1
    #define   MSK32SemaHubLite_almostFull_ST_12i                  0x00001000

    #define     BA_SemaHubLite_almostFull_ST_13i               0x0395
    #define     B16SemaHubLite_almostFull_ST_13i               0x0394
    #define   LSb32SemaHubLite_almostFull_ST_13i                  13
    #define   LSb16SemaHubLite_almostFull_ST_13i                  13
    #define       bSemaHubLite_almostFull_ST_13i               1
    #define   MSK32SemaHubLite_almostFull_ST_13i                  0x00002000

    #define     BA_SemaHubLite_almostFull_ST_14i               0x0395
    #define     B16SemaHubLite_almostFull_ST_14i               0x0394
    #define   LSb32SemaHubLite_almostFull_ST_14i                  14
    #define   LSb16SemaHubLite_almostFull_ST_14i                  14
    #define       bSemaHubLite_almostFull_ST_14i               1
    #define   MSK32SemaHubLite_almostFull_ST_14i                  0x00004000

    #define     BA_SemaHubLite_almostFull_ST_15i               0x0395
    #define     B16SemaHubLite_almostFull_ST_15i               0x0394
    #define   LSb32SemaHubLite_almostFull_ST_15i                  15
    #define   LSb16SemaHubLite_almostFull_ST_15i                  15
    #define       bSemaHubLite_almostFull_ST_15i               1
    #define   MSK32SemaHubLite_almostFull_ST_15i                  0x00008000

    #define     BA_SemaHubLite_almostFull_ST_16i               0x0396
    #define     B16SemaHubLite_almostFull_ST_16i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_16i                  16
    #define   LSb16SemaHubLite_almostFull_ST_16i                  0
    #define       bSemaHubLite_almostFull_ST_16i               1
    #define   MSK32SemaHubLite_almostFull_ST_16i                  0x00010000

    #define     BA_SemaHubLite_almostFull_ST_17i               0x0396
    #define     B16SemaHubLite_almostFull_ST_17i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_17i                  17
    #define   LSb16SemaHubLite_almostFull_ST_17i                  1
    #define       bSemaHubLite_almostFull_ST_17i               1
    #define   MSK32SemaHubLite_almostFull_ST_17i                  0x00020000

    #define     BA_SemaHubLite_almostFull_ST_18i               0x0396
    #define     B16SemaHubLite_almostFull_ST_18i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_18i                  18
    #define   LSb16SemaHubLite_almostFull_ST_18i                  2
    #define       bSemaHubLite_almostFull_ST_18i               1
    #define   MSK32SemaHubLite_almostFull_ST_18i                  0x00040000

    #define     BA_SemaHubLite_almostFull_ST_19i               0x0396
    #define     B16SemaHubLite_almostFull_ST_19i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_19i                  19
    #define   LSb16SemaHubLite_almostFull_ST_19i                  3
    #define       bSemaHubLite_almostFull_ST_19i               1
    #define   MSK32SemaHubLite_almostFull_ST_19i                  0x00080000

    #define     BA_SemaHubLite_almostFull_ST_20i               0x0396
    #define     B16SemaHubLite_almostFull_ST_20i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_20i                  20
    #define   LSb16SemaHubLite_almostFull_ST_20i                  4
    #define       bSemaHubLite_almostFull_ST_20i               1
    #define   MSK32SemaHubLite_almostFull_ST_20i                  0x00100000

    #define     BA_SemaHubLite_almostFull_ST_21i               0x0396
    #define     B16SemaHubLite_almostFull_ST_21i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_21i                  21
    #define   LSb16SemaHubLite_almostFull_ST_21i                  5
    #define       bSemaHubLite_almostFull_ST_21i               1
    #define   MSK32SemaHubLite_almostFull_ST_21i                  0x00200000

    #define     BA_SemaHubLite_almostFull_ST_22i               0x0396
    #define     B16SemaHubLite_almostFull_ST_22i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_22i                  22
    #define   LSb16SemaHubLite_almostFull_ST_22i                  6
    #define       bSemaHubLite_almostFull_ST_22i               1
    #define   MSK32SemaHubLite_almostFull_ST_22i                  0x00400000

    #define     BA_SemaHubLite_almostFull_ST_23i               0x0396
    #define     B16SemaHubLite_almostFull_ST_23i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_23i                  23
    #define   LSb16SemaHubLite_almostFull_ST_23i                  7
    #define       bSemaHubLite_almostFull_ST_23i               1
    #define   MSK32SemaHubLite_almostFull_ST_23i                  0x00800000

    #define     BA_SemaHubLite_almostFull_ST_24i               0x0397
    #define     B16SemaHubLite_almostFull_ST_24i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_24i                  24
    #define   LSb16SemaHubLite_almostFull_ST_24i                  8
    #define       bSemaHubLite_almostFull_ST_24i               1
    #define   MSK32SemaHubLite_almostFull_ST_24i                  0x01000000

    #define     BA_SemaHubLite_almostFull_ST_25i               0x0397
    #define     B16SemaHubLite_almostFull_ST_25i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_25i                  25
    #define   LSb16SemaHubLite_almostFull_ST_25i                  9
    #define       bSemaHubLite_almostFull_ST_25i               1
    #define   MSK32SemaHubLite_almostFull_ST_25i                  0x02000000

    #define     BA_SemaHubLite_almostFull_ST_26i               0x0397
    #define     B16SemaHubLite_almostFull_ST_26i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_26i                  26
    #define   LSb16SemaHubLite_almostFull_ST_26i                  10
    #define       bSemaHubLite_almostFull_ST_26i               1
    #define   MSK32SemaHubLite_almostFull_ST_26i                  0x04000000

    #define     BA_SemaHubLite_almostFull_ST_27i               0x0397
    #define     B16SemaHubLite_almostFull_ST_27i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_27i                  27
    #define   LSb16SemaHubLite_almostFull_ST_27i                  11
    #define       bSemaHubLite_almostFull_ST_27i               1
    #define   MSK32SemaHubLite_almostFull_ST_27i                  0x08000000

    #define     BA_SemaHubLite_almostFull_ST_28i               0x0397
    #define     B16SemaHubLite_almostFull_ST_28i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_28i                  28
    #define   LSb16SemaHubLite_almostFull_ST_28i                  12
    #define       bSemaHubLite_almostFull_ST_28i               1
    #define   MSK32SemaHubLite_almostFull_ST_28i                  0x10000000

    #define     BA_SemaHubLite_almostFull_ST_29i               0x0397
    #define     B16SemaHubLite_almostFull_ST_29i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_29i                  29
    #define   LSb16SemaHubLite_almostFull_ST_29i                  13
    #define       bSemaHubLite_almostFull_ST_29i               1
    #define   MSK32SemaHubLite_almostFull_ST_29i                  0x20000000

    #define     BA_SemaHubLite_almostFull_ST_30i               0x0397
    #define     B16SemaHubLite_almostFull_ST_30i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_30i                  30
    #define   LSb16SemaHubLite_almostFull_ST_30i                  14
    #define       bSemaHubLite_almostFull_ST_30i               1
    #define   MSK32SemaHubLite_almostFull_ST_30i                  0x40000000

    #define     BA_SemaHubLite_almostFull_ST_31i               0x0397
    #define     B16SemaHubLite_almostFull_ST_31i               0x0396
    #define   LSb32SemaHubLite_almostFull_ST_31i                  31
    #define   LSb16SemaHubLite_almostFull_ST_31i                  15
    #define       bSemaHubLite_almostFull_ST_31i               1
    #define   MSK32SemaHubLite_almostFull_ST_31i                  0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaHubLite {
    ///////////////////////////////////////////////////////////
              SIE_SemaQueryLite                                ie_counter[64];
    ///////////////////////////////////////////////////////////
              SIE_SemaphoreLite                                ie_cell[32];
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHubLite_PUSH_ID(r32)                    _BFGET_(r32, 7, 0)
    #define   SET32SemaHubLite_PUSH_ID(r32,v)                  _BFSET_(r32, 7, 0,v)
    #define   GET16SemaHubLite_PUSH_ID(r16)                    _BFGET_(r16, 7, 0)
    #define   SET16SemaHubLite_PUSH_ID(r16,v)                  _BFSET_(r16, 7, 0,v)

    #define   GET32SemaHubLite_PUSH_delta(r32)                 _BFGET_(r32,15, 8)
    #define   SET32SemaHubLite_PUSH_delta(r32,v)               _BFSET_(r32,15, 8,v)
    #define   GET16SemaHubLite_PUSH_delta(r16)                 _BFGET_(r16,15, 8)
    #define   SET16SemaHubLite_PUSH_delta(r16,v)               _BFSET_(r16,15, 8,v)

    #define     w32SemaHubLite_PUSH                            {\
            UNSG32 uPUSH_ID                                    :  8;\
            UNSG32 uPUSH_delta                                 :  8;\
            UNSG32 RSVDx380_b16                                : 16;\
          }
    union { UNSG32 u32SemaHubLite_PUSH;
            struct w32SemaHubLite_PUSH;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHubLite_POP_ID(r32)                     _BFGET_(r32, 7, 0)
    #define   SET32SemaHubLite_POP_ID(r32,v)                   _BFSET_(r32, 7, 0,v)
    #define   GET16SemaHubLite_POP_ID(r16)                     _BFGET_(r16, 7, 0)
    #define   SET16SemaHubLite_POP_ID(r16,v)                   _BFSET_(r16, 7, 0,v)

    #define   GET32SemaHubLite_POP_delta(r32)                  _BFGET_(r32,15, 8)
    #define   SET32SemaHubLite_POP_delta(r32,v)                _BFSET_(r32,15, 8,v)
    #define   GET16SemaHubLite_POP_delta(r16)                  _BFGET_(r16,15, 8)
    #define   SET16SemaHubLite_POP_delta(r16,v)                _BFSET_(r16,15, 8,v)

    #define     w32SemaHubLite_POP                             {\
            UNSG32 uPOP_ID                                     :  8;\
            UNSG32 uPOP_delta                                  :  8;\
            UNSG32 RSVDx384_b16                                : 16;\
          }
    union { UNSG32 u32SemaHubLite_POP;
            struct w32SemaHubLite_POP;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHubLite_empty_ST_0i(r32)                _BFGET_(r32, 0, 0)
    #define   SET32SemaHubLite_empty_ST_0i(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHubLite_empty_ST_0i(r16)                _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_empty_ST_0i(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_empty_ST_1i(r32)                _BFGET_(r32, 1, 1)
    #define   SET32SemaHubLite_empty_ST_1i(r32,v)              _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHubLite_empty_ST_1i(r16)                _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_empty_ST_1i(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_empty_ST_2i(r32)                _BFGET_(r32, 2, 2)
    #define   SET32SemaHubLite_empty_ST_2i(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHubLite_empty_ST_2i(r16)                _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_empty_ST_2i(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_empty_ST_3i(r32)                _BFGET_(r32, 3, 3)
    #define   SET32SemaHubLite_empty_ST_3i(r32,v)              _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHubLite_empty_ST_3i(r16)                _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_empty_ST_3i(r16,v)              _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_empty_ST_4i(r32)                _BFGET_(r32, 4, 4)
    #define   SET32SemaHubLite_empty_ST_4i(r32,v)              _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHubLite_empty_ST_4i(r16)                _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_empty_ST_4i(r16,v)              _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_empty_ST_5i(r32)                _BFGET_(r32, 5, 5)
    #define   SET32SemaHubLite_empty_ST_5i(r32,v)              _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHubLite_empty_ST_5i(r16)                _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_empty_ST_5i(r16,v)              _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_empty_ST_6i(r32)                _BFGET_(r32, 6, 6)
    #define   SET32SemaHubLite_empty_ST_6i(r32,v)              _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHubLite_empty_ST_6i(r16)                _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_empty_ST_6i(r16,v)              _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_empty_ST_7i(r32)                _BFGET_(r32, 7, 7)
    #define   SET32SemaHubLite_empty_ST_7i(r32,v)              _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHubLite_empty_ST_7i(r16)                _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_empty_ST_7i(r16,v)              _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_empty_ST_8i(r32)                _BFGET_(r32, 8, 8)
    #define   SET32SemaHubLite_empty_ST_8i(r32,v)              _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHubLite_empty_ST_8i(r16)                _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_empty_ST_8i(r16,v)              _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_empty_ST_9i(r32)                _BFGET_(r32, 9, 9)
    #define   SET32SemaHubLite_empty_ST_9i(r32,v)              _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHubLite_empty_ST_9i(r16)                _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_empty_ST_9i(r16,v)              _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_empty_ST_10i(r32)               _BFGET_(r32,10,10)
    #define   SET32SemaHubLite_empty_ST_10i(r32,v)             _BFSET_(r32,10,10,v)
    #define   GET16SemaHubLite_empty_ST_10i(r16)               _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_empty_ST_10i(r16,v)             _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_empty_ST_11i(r32)               _BFGET_(r32,11,11)
    #define   SET32SemaHubLite_empty_ST_11i(r32,v)             _BFSET_(r32,11,11,v)
    #define   GET16SemaHubLite_empty_ST_11i(r16)               _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_empty_ST_11i(r16,v)             _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_empty_ST_12i(r32)               _BFGET_(r32,12,12)
    #define   SET32SemaHubLite_empty_ST_12i(r32,v)             _BFSET_(r32,12,12,v)
    #define   GET16SemaHubLite_empty_ST_12i(r16)               _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_empty_ST_12i(r16,v)             _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_empty_ST_13i(r32)               _BFGET_(r32,13,13)
    #define   SET32SemaHubLite_empty_ST_13i(r32,v)             _BFSET_(r32,13,13,v)
    #define   GET16SemaHubLite_empty_ST_13i(r16)               _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_empty_ST_13i(r16,v)             _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_empty_ST_14i(r32)               _BFGET_(r32,14,14)
    #define   SET32SemaHubLite_empty_ST_14i(r32,v)             _BFSET_(r32,14,14,v)
    #define   GET16SemaHubLite_empty_ST_14i(r16)               _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_empty_ST_14i(r16,v)             _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_empty_ST_15i(r32)               _BFGET_(r32,15,15)
    #define   SET32SemaHubLite_empty_ST_15i(r32,v)             _BFSET_(r32,15,15,v)
    #define   GET16SemaHubLite_empty_ST_15i(r16)               _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_empty_ST_15i(r16,v)             _BFSET_(r16,15,15,v)

    #define   GET32SemaHubLite_empty_ST_16i(r32)               _BFGET_(r32,16,16)
    #define   SET32SemaHubLite_empty_ST_16i(r32,v)             _BFSET_(r32,16,16,v)
    #define   GET16SemaHubLite_empty_ST_16i(r16)               _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_empty_ST_16i(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_empty_ST_17i(r32)               _BFGET_(r32,17,17)
    #define   SET32SemaHubLite_empty_ST_17i(r32,v)             _BFSET_(r32,17,17,v)
    #define   GET16SemaHubLite_empty_ST_17i(r16)               _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_empty_ST_17i(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_empty_ST_18i(r32)               _BFGET_(r32,18,18)
    #define   SET32SemaHubLite_empty_ST_18i(r32,v)             _BFSET_(r32,18,18,v)
    #define   GET16SemaHubLite_empty_ST_18i(r16)               _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_empty_ST_18i(r16,v)             _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_empty_ST_19i(r32)               _BFGET_(r32,19,19)
    #define   SET32SemaHubLite_empty_ST_19i(r32,v)             _BFSET_(r32,19,19,v)
    #define   GET16SemaHubLite_empty_ST_19i(r16)               _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_empty_ST_19i(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_empty_ST_20i(r32)               _BFGET_(r32,20,20)
    #define   SET32SemaHubLite_empty_ST_20i(r32,v)             _BFSET_(r32,20,20,v)
    #define   GET16SemaHubLite_empty_ST_20i(r16)               _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_empty_ST_20i(r16,v)             _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_empty_ST_21i(r32)               _BFGET_(r32,21,21)
    #define   SET32SemaHubLite_empty_ST_21i(r32,v)             _BFSET_(r32,21,21,v)
    #define   GET16SemaHubLite_empty_ST_21i(r16)               _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_empty_ST_21i(r16,v)             _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_empty_ST_22i(r32)               _BFGET_(r32,22,22)
    #define   SET32SemaHubLite_empty_ST_22i(r32,v)             _BFSET_(r32,22,22,v)
    #define   GET16SemaHubLite_empty_ST_22i(r16)               _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_empty_ST_22i(r16,v)             _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_empty_ST_23i(r32)               _BFGET_(r32,23,23)
    #define   SET32SemaHubLite_empty_ST_23i(r32,v)             _BFSET_(r32,23,23,v)
    #define   GET16SemaHubLite_empty_ST_23i(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_empty_ST_23i(r16,v)             _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_empty_ST_24i(r32)               _BFGET_(r32,24,24)
    #define   SET32SemaHubLite_empty_ST_24i(r32,v)             _BFSET_(r32,24,24,v)
    #define   GET16SemaHubLite_empty_ST_24i(r16)               _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_empty_ST_24i(r16,v)             _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_empty_ST_25i(r32)               _BFGET_(r32,25,25)
    #define   SET32SemaHubLite_empty_ST_25i(r32,v)             _BFSET_(r32,25,25,v)
    #define   GET16SemaHubLite_empty_ST_25i(r16)               _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_empty_ST_25i(r16,v)             _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_empty_ST_26i(r32)               _BFGET_(r32,26,26)
    #define   SET32SemaHubLite_empty_ST_26i(r32,v)             _BFSET_(r32,26,26,v)
    #define   GET16SemaHubLite_empty_ST_26i(r16)               _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_empty_ST_26i(r16,v)             _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_empty_ST_27i(r32)               _BFGET_(r32,27,27)
    #define   SET32SemaHubLite_empty_ST_27i(r32,v)             _BFSET_(r32,27,27,v)
    #define   GET16SemaHubLite_empty_ST_27i(r16)               _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_empty_ST_27i(r16,v)             _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_empty_ST_28i(r32)               _BFGET_(r32,28,28)
    #define   SET32SemaHubLite_empty_ST_28i(r32,v)             _BFSET_(r32,28,28,v)
    #define   GET16SemaHubLite_empty_ST_28i(r16)               _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_empty_ST_28i(r16,v)             _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_empty_ST_29i(r32)               _BFGET_(r32,29,29)
    #define   SET32SemaHubLite_empty_ST_29i(r32,v)             _BFSET_(r32,29,29,v)
    #define   GET16SemaHubLite_empty_ST_29i(r16)               _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_empty_ST_29i(r16,v)             _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_empty_ST_30i(r32)               _BFGET_(r32,30,30)
    #define   SET32SemaHubLite_empty_ST_30i(r32,v)             _BFSET_(r32,30,30,v)
    #define   GET16SemaHubLite_empty_ST_30i(r16)               _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_empty_ST_30i(r16,v)             _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_empty_ST_31i(r32)               _BFGET_(r32,31,31)
    #define   SET32SemaHubLite_empty_ST_31i(r32,v)             _BFSET_(r32,31,31,v)
    #define   GET16SemaHubLite_empty_ST_31i(r16)               _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_empty_ST_31i(r16,v)             _BFSET_(r16,15,15,v)

    #define     w32SemaHubLite_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 u32SemaHubLite_empty;
            struct w32SemaHubLite_empty;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHubLite_full_ST_0i(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32SemaHubLite_full_ST_0i(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHubLite_full_ST_0i(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_full_ST_0i(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_full_ST_1i(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32SemaHubLite_full_ST_1i(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHubLite_full_ST_1i(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_full_ST_1i(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_full_ST_2i(r32)                 _BFGET_(r32, 2, 2)
    #define   SET32SemaHubLite_full_ST_2i(r32,v)               _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHubLite_full_ST_2i(r16)                 _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_full_ST_2i(r16,v)               _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_full_ST_3i(r32)                 _BFGET_(r32, 3, 3)
    #define   SET32SemaHubLite_full_ST_3i(r32,v)               _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHubLite_full_ST_3i(r16)                 _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_full_ST_3i(r16,v)               _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_full_ST_4i(r32)                 _BFGET_(r32, 4, 4)
    #define   SET32SemaHubLite_full_ST_4i(r32,v)               _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHubLite_full_ST_4i(r16)                 _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_full_ST_4i(r16,v)               _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_full_ST_5i(r32)                 _BFGET_(r32, 5, 5)
    #define   SET32SemaHubLite_full_ST_5i(r32,v)               _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHubLite_full_ST_5i(r16)                 _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_full_ST_5i(r16,v)               _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_full_ST_6i(r32)                 _BFGET_(r32, 6, 6)
    #define   SET32SemaHubLite_full_ST_6i(r32,v)               _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHubLite_full_ST_6i(r16)                 _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_full_ST_6i(r16,v)               _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_full_ST_7i(r32)                 _BFGET_(r32, 7, 7)
    #define   SET32SemaHubLite_full_ST_7i(r32,v)               _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHubLite_full_ST_7i(r16)                 _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_full_ST_7i(r16,v)               _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_full_ST_8i(r32)                 _BFGET_(r32, 8, 8)
    #define   SET32SemaHubLite_full_ST_8i(r32,v)               _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHubLite_full_ST_8i(r16)                 _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_full_ST_8i(r16,v)               _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_full_ST_9i(r32)                 _BFGET_(r32, 9, 9)
    #define   SET32SemaHubLite_full_ST_9i(r32,v)               _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHubLite_full_ST_9i(r16)                 _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_full_ST_9i(r16,v)               _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_full_ST_10i(r32)                _BFGET_(r32,10,10)
    #define   SET32SemaHubLite_full_ST_10i(r32,v)              _BFSET_(r32,10,10,v)
    #define   GET16SemaHubLite_full_ST_10i(r16)                _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_full_ST_10i(r16,v)              _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_full_ST_11i(r32)                _BFGET_(r32,11,11)
    #define   SET32SemaHubLite_full_ST_11i(r32,v)              _BFSET_(r32,11,11,v)
    #define   GET16SemaHubLite_full_ST_11i(r16)                _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_full_ST_11i(r16,v)              _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_full_ST_12i(r32)                _BFGET_(r32,12,12)
    #define   SET32SemaHubLite_full_ST_12i(r32,v)              _BFSET_(r32,12,12,v)
    #define   GET16SemaHubLite_full_ST_12i(r16)                _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_full_ST_12i(r16,v)              _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_full_ST_13i(r32)                _BFGET_(r32,13,13)
    #define   SET32SemaHubLite_full_ST_13i(r32,v)              _BFSET_(r32,13,13,v)
    #define   GET16SemaHubLite_full_ST_13i(r16)                _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_full_ST_13i(r16,v)              _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_full_ST_14i(r32)                _BFGET_(r32,14,14)
    #define   SET32SemaHubLite_full_ST_14i(r32,v)              _BFSET_(r32,14,14,v)
    #define   GET16SemaHubLite_full_ST_14i(r16)                _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_full_ST_14i(r16,v)              _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_full_ST_15i(r32)                _BFGET_(r32,15,15)
    #define   SET32SemaHubLite_full_ST_15i(r32,v)              _BFSET_(r32,15,15,v)
    #define   GET16SemaHubLite_full_ST_15i(r16)                _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_full_ST_15i(r16,v)              _BFSET_(r16,15,15,v)

    #define   GET32SemaHubLite_full_ST_16i(r32)                _BFGET_(r32,16,16)
    #define   SET32SemaHubLite_full_ST_16i(r32,v)              _BFSET_(r32,16,16,v)
    #define   GET16SemaHubLite_full_ST_16i(r16)                _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_full_ST_16i(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_full_ST_17i(r32)                _BFGET_(r32,17,17)
    #define   SET32SemaHubLite_full_ST_17i(r32,v)              _BFSET_(r32,17,17,v)
    #define   GET16SemaHubLite_full_ST_17i(r16)                _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_full_ST_17i(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_full_ST_18i(r32)                _BFGET_(r32,18,18)
    #define   SET32SemaHubLite_full_ST_18i(r32,v)              _BFSET_(r32,18,18,v)
    #define   GET16SemaHubLite_full_ST_18i(r16)                _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_full_ST_18i(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_full_ST_19i(r32)                _BFGET_(r32,19,19)
    #define   SET32SemaHubLite_full_ST_19i(r32,v)              _BFSET_(r32,19,19,v)
    #define   GET16SemaHubLite_full_ST_19i(r16)                _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_full_ST_19i(r16,v)              _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_full_ST_20i(r32)                _BFGET_(r32,20,20)
    #define   SET32SemaHubLite_full_ST_20i(r32,v)              _BFSET_(r32,20,20,v)
    #define   GET16SemaHubLite_full_ST_20i(r16)                _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_full_ST_20i(r16,v)              _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_full_ST_21i(r32)                _BFGET_(r32,21,21)
    #define   SET32SemaHubLite_full_ST_21i(r32,v)              _BFSET_(r32,21,21,v)
    #define   GET16SemaHubLite_full_ST_21i(r16)                _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_full_ST_21i(r16,v)              _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_full_ST_22i(r32)                _BFGET_(r32,22,22)
    #define   SET32SemaHubLite_full_ST_22i(r32,v)              _BFSET_(r32,22,22,v)
    #define   GET16SemaHubLite_full_ST_22i(r16)                _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_full_ST_22i(r16,v)              _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_full_ST_23i(r32)                _BFGET_(r32,23,23)
    #define   SET32SemaHubLite_full_ST_23i(r32,v)              _BFSET_(r32,23,23,v)
    #define   GET16SemaHubLite_full_ST_23i(r16)                _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_full_ST_23i(r16,v)              _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_full_ST_24i(r32)                _BFGET_(r32,24,24)
    #define   SET32SemaHubLite_full_ST_24i(r32,v)              _BFSET_(r32,24,24,v)
    #define   GET16SemaHubLite_full_ST_24i(r16)                _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_full_ST_24i(r16,v)              _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_full_ST_25i(r32)                _BFGET_(r32,25,25)
    #define   SET32SemaHubLite_full_ST_25i(r32,v)              _BFSET_(r32,25,25,v)
    #define   GET16SemaHubLite_full_ST_25i(r16)                _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_full_ST_25i(r16,v)              _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_full_ST_26i(r32)                _BFGET_(r32,26,26)
    #define   SET32SemaHubLite_full_ST_26i(r32,v)              _BFSET_(r32,26,26,v)
    #define   GET16SemaHubLite_full_ST_26i(r16)                _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_full_ST_26i(r16,v)              _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_full_ST_27i(r32)                _BFGET_(r32,27,27)
    #define   SET32SemaHubLite_full_ST_27i(r32,v)              _BFSET_(r32,27,27,v)
    #define   GET16SemaHubLite_full_ST_27i(r16)                _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_full_ST_27i(r16,v)              _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_full_ST_28i(r32)                _BFGET_(r32,28,28)
    #define   SET32SemaHubLite_full_ST_28i(r32,v)              _BFSET_(r32,28,28,v)
    #define   GET16SemaHubLite_full_ST_28i(r16)                _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_full_ST_28i(r16,v)              _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_full_ST_29i(r32)                _BFGET_(r32,29,29)
    #define   SET32SemaHubLite_full_ST_29i(r32,v)              _BFSET_(r32,29,29,v)
    #define   GET16SemaHubLite_full_ST_29i(r16)                _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_full_ST_29i(r16,v)              _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_full_ST_30i(r32)                _BFGET_(r32,30,30)
    #define   SET32SemaHubLite_full_ST_30i(r32,v)              _BFSET_(r32,30,30,v)
    #define   GET16SemaHubLite_full_ST_30i(r16)                _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_full_ST_30i(r16,v)              _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_full_ST_31i(r32)                _BFGET_(r32,31,31)
    #define   SET32SemaHubLite_full_ST_31i(r32,v)              _BFSET_(r32,31,31,v)
    #define   GET16SemaHubLite_full_ST_31i(r16)                _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_full_ST_31i(r16,v)              _BFSET_(r16,15,15,v)

    #define     w32SemaHubLite_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 u32SemaHubLite_full;
            struct w32SemaHubLite_full;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHubLite_almostEmpty_ST_0i(r32)          _BFGET_(r32, 0, 0)
    #define   SET32SemaHubLite_almostEmpty_ST_0i(r32,v)        _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHubLite_almostEmpty_ST_0i(r16)          _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_almostEmpty_ST_0i(r16,v)        _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_almostEmpty_ST_1i(r32)          _BFGET_(r32, 1, 1)
    #define   SET32SemaHubLite_almostEmpty_ST_1i(r32,v)        _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHubLite_almostEmpty_ST_1i(r16)          _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_almostEmpty_ST_1i(r16,v)        _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_almostEmpty_ST_2i(r32)          _BFGET_(r32, 2, 2)
    #define   SET32SemaHubLite_almostEmpty_ST_2i(r32,v)        _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHubLite_almostEmpty_ST_2i(r16)          _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_almostEmpty_ST_2i(r16,v)        _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_almostEmpty_ST_3i(r32)          _BFGET_(r32, 3, 3)
    #define   SET32SemaHubLite_almostEmpty_ST_3i(r32,v)        _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHubLite_almostEmpty_ST_3i(r16)          _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_almostEmpty_ST_3i(r16,v)        _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_almostEmpty_ST_4i(r32)          _BFGET_(r32, 4, 4)
    #define   SET32SemaHubLite_almostEmpty_ST_4i(r32,v)        _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHubLite_almostEmpty_ST_4i(r16)          _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_almostEmpty_ST_4i(r16,v)        _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_almostEmpty_ST_5i(r32)          _BFGET_(r32, 5, 5)
    #define   SET32SemaHubLite_almostEmpty_ST_5i(r32,v)        _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHubLite_almostEmpty_ST_5i(r16)          _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_almostEmpty_ST_5i(r16,v)        _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_almostEmpty_ST_6i(r32)          _BFGET_(r32, 6, 6)
    #define   SET32SemaHubLite_almostEmpty_ST_6i(r32,v)        _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHubLite_almostEmpty_ST_6i(r16)          _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_almostEmpty_ST_6i(r16,v)        _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_almostEmpty_ST_7i(r32)          _BFGET_(r32, 7, 7)
    #define   SET32SemaHubLite_almostEmpty_ST_7i(r32,v)        _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHubLite_almostEmpty_ST_7i(r16)          _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_almostEmpty_ST_7i(r16,v)        _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_almostEmpty_ST_8i(r32)          _BFGET_(r32, 8, 8)
    #define   SET32SemaHubLite_almostEmpty_ST_8i(r32,v)        _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHubLite_almostEmpty_ST_8i(r16)          _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_almostEmpty_ST_8i(r16,v)        _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_almostEmpty_ST_9i(r32)          _BFGET_(r32, 9, 9)
    #define   SET32SemaHubLite_almostEmpty_ST_9i(r32,v)        _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHubLite_almostEmpty_ST_9i(r16)          _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_almostEmpty_ST_9i(r16,v)        _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_almostEmpty_ST_10i(r32)         _BFGET_(r32,10,10)
    #define   SET32SemaHubLite_almostEmpty_ST_10i(r32,v)       _BFSET_(r32,10,10,v)
    #define   GET16SemaHubLite_almostEmpty_ST_10i(r16)         _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_almostEmpty_ST_10i(r16,v)       _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_almostEmpty_ST_11i(r32)         _BFGET_(r32,11,11)
    #define   SET32SemaHubLite_almostEmpty_ST_11i(r32,v)       _BFSET_(r32,11,11,v)
    #define   GET16SemaHubLite_almostEmpty_ST_11i(r16)         _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_almostEmpty_ST_11i(r16,v)       _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_almostEmpty_ST_12i(r32)         _BFGET_(r32,12,12)
    #define   SET32SemaHubLite_almostEmpty_ST_12i(r32,v)       _BFSET_(r32,12,12,v)
    #define   GET16SemaHubLite_almostEmpty_ST_12i(r16)         _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_almostEmpty_ST_12i(r16,v)       _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_almostEmpty_ST_13i(r32)         _BFGET_(r32,13,13)
    #define   SET32SemaHubLite_almostEmpty_ST_13i(r32,v)       _BFSET_(r32,13,13,v)
    #define   GET16SemaHubLite_almostEmpty_ST_13i(r16)         _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_almostEmpty_ST_13i(r16,v)       _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_almostEmpty_ST_14i(r32)         _BFGET_(r32,14,14)
    #define   SET32SemaHubLite_almostEmpty_ST_14i(r32,v)       _BFSET_(r32,14,14,v)
    #define   GET16SemaHubLite_almostEmpty_ST_14i(r16)         _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_almostEmpty_ST_14i(r16,v)       _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_almostEmpty_ST_15i(r32)         _BFGET_(r32,15,15)
    #define   SET32SemaHubLite_almostEmpty_ST_15i(r32,v)       _BFSET_(r32,15,15,v)
    #define   GET16SemaHubLite_almostEmpty_ST_15i(r16)         _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_almostEmpty_ST_15i(r16,v)       _BFSET_(r16,15,15,v)

    #define   GET32SemaHubLite_almostEmpty_ST_16i(r32)         _BFGET_(r32,16,16)
    #define   SET32SemaHubLite_almostEmpty_ST_16i(r32,v)       _BFSET_(r32,16,16,v)
    #define   GET16SemaHubLite_almostEmpty_ST_16i(r16)         _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_almostEmpty_ST_16i(r16,v)       _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_almostEmpty_ST_17i(r32)         _BFGET_(r32,17,17)
    #define   SET32SemaHubLite_almostEmpty_ST_17i(r32,v)       _BFSET_(r32,17,17,v)
    #define   GET16SemaHubLite_almostEmpty_ST_17i(r16)         _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_almostEmpty_ST_17i(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_almostEmpty_ST_18i(r32)         _BFGET_(r32,18,18)
    #define   SET32SemaHubLite_almostEmpty_ST_18i(r32,v)       _BFSET_(r32,18,18,v)
    #define   GET16SemaHubLite_almostEmpty_ST_18i(r16)         _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_almostEmpty_ST_18i(r16,v)       _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_almostEmpty_ST_19i(r32)         _BFGET_(r32,19,19)
    #define   SET32SemaHubLite_almostEmpty_ST_19i(r32,v)       _BFSET_(r32,19,19,v)
    #define   GET16SemaHubLite_almostEmpty_ST_19i(r16)         _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_almostEmpty_ST_19i(r16,v)       _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_almostEmpty_ST_20i(r32)         _BFGET_(r32,20,20)
    #define   SET32SemaHubLite_almostEmpty_ST_20i(r32,v)       _BFSET_(r32,20,20,v)
    #define   GET16SemaHubLite_almostEmpty_ST_20i(r16)         _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_almostEmpty_ST_20i(r16,v)       _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_almostEmpty_ST_21i(r32)         _BFGET_(r32,21,21)
    #define   SET32SemaHubLite_almostEmpty_ST_21i(r32,v)       _BFSET_(r32,21,21,v)
    #define   GET16SemaHubLite_almostEmpty_ST_21i(r16)         _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_almostEmpty_ST_21i(r16,v)       _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_almostEmpty_ST_22i(r32)         _BFGET_(r32,22,22)
    #define   SET32SemaHubLite_almostEmpty_ST_22i(r32,v)       _BFSET_(r32,22,22,v)
    #define   GET16SemaHubLite_almostEmpty_ST_22i(r16)         _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_almostEmpty_ST_22i(r16,v)       _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_almostEmpty_ST_23i(r32)         _BFGET_(r32,23,23)
    #define   SET32SemaHubLite_almostEmpty_ST_23i(r32,v)       _BFSET_(r32,23,23,v)
    #define   GET16SemaHubLite_almostEmpty_ST_23i(r16)         _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_almostEmpty_ST_23i(r16,v)       _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_almostEmpty_ST_24i(r32)         _BFGET_(r32,24,24)
    #define   SET32SemaHubLite_almostEmpty_ST_24i(r32,v)       _BFSET_(r32,24,24,v)
    #define   GET16SemaHubLite_almostEmpty_ST_24i(r16)         _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_almostEmpty_ST_24i(r16,v)       _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_almostEmpty_ST_25i(r32)         _BFGET_(r32,25,25)
    #define   SET32SemaHubLite_almostEmpty_ST_25i(r32,v)       _BFSET_(r32,25,25,v)
    #define   GET16SemaHubLite_almostEmpty_ST_25i(r16)         _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_almostEmpty_ST_25i(r16,v)       _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_almostEmpty_ST_26i(r32)         _BFGET_(r32,26,26)
    #define   SET32SemaHubLite_almostEmpty_ST_26i(r32,v)       _BFSET_(r32,26,26,v)
    #define   GET16SemaHubLite_almostEmpty_ST_26i(r16)         _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_almostEmpty_ST_26i(r16,v)       _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_almostEmpty_ST_27i(r32)         _BFGET_(r32,27,27)
    #define   SET32SemaHubLite_almostEmpty_ST_27i(r32,v)       _BFSET_(r32,27,27,v)
    #define   GET16SemaHubLite_almostEmpty_ST_27i(r16)         _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_almostEmpty_ST_27i(r16,v)       _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_almostEmpty_ST_28i(r32)         _BFGET_(r32,28,28)
    #define   SET32SemaHubLite_almostEmpty_ST_28i(r32,v)       _BFSET_(r32,28,28,v)
    #define   GET16SemaHubLite_almostEmpty_ST_28i(r16)         _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_almostEmpty_ST_28i(r16,v)       _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_almostEmpty_ST_29i(r32)         _BFGET_(r32,29,29)
    #define   SET32SemaHubLite_almostEmpty_ST_29i(r32,v)       _BFSET_(r32,29,29,v)
    #define   GET16SemaHubLite_almostEmpty_ST_29i(r16)         _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_almostEmpty_ST_29i(r16,v)       _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_almostEmpty_ST_30i(r32)         _BFGET_(r32,30,30)
    #define   SET32SemaHubLite_almostEmpty_ST_30i(r32,v)       _BFSET_(r32,30,30,v)
    #define   GET16SemaHubLite_almostEmpty_ST_30i(r16)         _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_almostEmpty_ST_30i(r16,v)       _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_almostEmpty_ST_31i(r32)         _BFGET_(r32,31,31)
    #define   SET32SemaHubLite_almostEmpty_ST_31i(r32,v)       _BFSET_(r32,31,31,v)
    #define   GET16SemaHubLite_almostEmpty_ST_31i(r16)         _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_almostEmpty_ST_31i(r16,v)       _BFSET_(r16,15,15,v)

    #define     w32SemaHubLite_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 u32SemaHubLite_almostEmpty;
            struct w32SemaHubLite_almostEmpty;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHubLite_almostFull_ST_0i(r32)           _BFGET_(r32, 0, 0)
    #define   SET32SemaHubLite_almostFull_ST_0i(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHubLite_almostFull_ST_0i(r16)           _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_almostFull_ST_0i(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_almostFull_ST_1i(r32)           _BFGET_(r32, 1, 1)
    #define   SET32SemaHubLite_almostFull_ST_1i(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHubLite_almostFull_ST_1i(r16)           _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_almostFull_ST_1i(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_almostFull_ST_2i(r32)           _BFGET_(r32, 2, 2)
    #define   SET32SemaHubLite_almostFull_ST_2i(r32,v)         _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHubLite_almostFull_ST_2i(r16)           _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_almostFull_ST_2i(r16,v)         _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_almostFull_ST_3i(r32)           _BFGET_(r32, 3, 3)
    #define   SET32SemaHubLite_almostFull_ST_3i(r32,v)         _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHubLite_almostFull_ST_3i(r16)           _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_almostFull_ST_3i(r16,v)         _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_almostFull_ST_4i(r32)           _BFGET_(r32, 4, 4)
    #define   SET32SemaHubLite_almostFull_ST_4i(r32,v)         _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHubLite_almostFull_ST_4i(r16)           _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_almostFull_ST_4i(r16,v)         _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_almostFull_ST_5i(r32)           _BFGET_(r32, 5, 5)
    #define   SET32SemaHubLite_almostFull_ST_5i(r32,v)         _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHubLite_almostFull_ST_5i(r16)           _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_almostFull_ST_5i(r16,v)         _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_almostFull_ST_6i(r32)           _BFGET_(r32, 6, 6)
    #define   SET32SemaHubLite_almostFull_ST_6i(r32,v)         _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHubLite_almostFull_ST_6i(r16)           _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_almostFull_ST_6i(r16,v)         _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_almostFull_ST_7i(r32)           _BFGET_(r32, 7, 7)
    #define   SET32SemaHubLite_almostFull_ST_7i(r32,v)         _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHubLite_almostFull_ST_7i(r16)           _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_almostFull_ST_7i(r16,v)         _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_almostFull_ST_8i(r32)           _BFGET_(r32, 8, 8)
    #define   SET32SemaHubLite_almostFull_ST_8i(r32,v)         _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHubLite_almostFull_ST_8i(r16)           _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_almostFull_ST_8i(r16,v)         _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_almostFull_ST_9i(r32)           _BFGET_(r32, 9, 9)
    #define   SET32SemaHubLite_almostFull_ST_9i(r32,v)         _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHubLite_almostFull_ST_9i(r16)           _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_almostFull_ST_9i(r16,v)         _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_almostFull_ST_10i(r32)          _BFGET_(r32,10,10)
    #define   SET32SemaHubLite_almostFull_ST_10i(r32,v)        _BFSET_(r32,10,10,v)
    #define   GET16SemaHubLite_almostFull_ST_10i(r16)          _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_almostFull_ST_10i(r16,v)        _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_almostFull_ST_11i(r32)          _BFGET_(r32,11,11)
    #define   SET32SemaHubLite_almostFull_ST_11i(r32,v)        _BFSET_(r32,11,11,v)
    #define   GET16SemaHubLite_almostFull_ST_11i(r16)          _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_almostFull_ST_11i(r16,v)        _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_almostFull_ST_12i(r32)          _BFGET_(r32,12,12)
    #define   SET32SemaHubLite_almostFull_ST_12i(r32,v)        _BFSET_(r32,12,12,v)
    #define   GET16SemaHubLite_almostFull_ST_12i(r16)          _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_almostFull_ST_12i(r16,v)        _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_almostFull_ST_13i(r32)          _BFGET_(r32,13,13)
    #define   SET32SemaHubLite_almostFull_ST_13i(r32,v)        _BFSET_(r32,13,13,v)
    #define   GET16SemaHubLite_almostFull_ST_13i(r16)          _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_almostFull_ST_13i(r16,v)        _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_almostFull_ST_14i(r32)          _BFGET_(r32,14,14)
    #define   SET32SemaHubLite_almostFull_ST_14i(r32,v)        _BFSET_(r32,14,14,v)
    #define   GET16SemaHubLite_almostFull_ST_14i(r16)          _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_almostFull_ST_14i(r16,v)        _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_almostFull_ST_15i(r32)          _BFGET_(r32,15,15)
    #define   SET32SemaHubLite_almostFull_ST_15i(r32,v)        _BFSET_(r32,15,15,v)
    #define   GET16SemaHubLite_almostFull_ST_15i(r16)          _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_almostFull_ST_15i(r16,v)        _BFSET_(r16,15,15,v)

    #define   GET32SemaHubLite_almostFull_ST_16i(r32)          _BFGET_(r32,16,16)
    #define   SET32SemaHubLite_almostFull_ST_16i(r32,v)        _BFSET_(r32,16,16,v)
    #define   GET16SemaHubLite_almostFull_ST_16i(r16)          _BFGET_(r16, 0, 0)
    #define   SET16SemaHubLite_almostFull_ST_16i(r16,v)        _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHubLite_almostFull_ST_17i(r32)          _BFGET_(r32,17,17)
    #define   SET32SemaHubLite_almostFull_ST_17i(r32,v)        _BFSET_(r32,17,17,v)
    #define   GET16SemaHubLite_almostFull_ST_17i(r16)          _BFGET_(r16, 1, 1)
    #define   SET16SemaHubLite_almostFull_ST_17i(r16,v)        _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHubLite_almostFull_ST_18i(r32)          _BFGET_(r32,18,18)
    #define   SET32SemaHubLite_almostFull_ST_18i(r32,v)        _BFSET_(r32,18,18,v)
    #define   GET16SemaHubLite_almostFull_ST_18i(r16)          _BFGET_(r16, 2, 2)
    #define   SET16SemaHubLite_almostFull_ST_18i(r16,v)        _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHubLite_almostFull_ST_19i(r32)          _BFGET_(r32,19,19)
    #define   SET32SemaHubLite_almostFull_ST_19i(r32,v)        _BFSET_(r32,19,19,v)
    #define   GET16SemaHubLite_almostFull_ST_19i(r16)          _BFGET_(r16, 3, 3)
    #define   SET16SemaHubLite_almostFull_ST_19i(r16,v)        _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHubLite_almostFull_ST_20i(r32)          _BFGET_(r32,20,20)
    #define   SET32SemaHubLite_almostFull_ST_20i(r32,v)        _BFSET_(r32,20,20,v)
    #define   GET16SemaHubLite_almostFull_ST_20i(r16)          _BFGET_(r16, 4, 4)
    #define   SET16SemaHubLite_almostFull_ST_20i(r16,v)        _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHubLite_almostFull_ST_21i(r32)          _BFGET_(r32,21,21)
    #define   SET32SemaHubLite_almostFull_ST_21i(r32,v)        _BFSET_(r32,21,21,v)
    #define   GET16SemaHubLite_almostFull_ST_21i(r16)          _BFGET_(r16, 5, 5)
    #define   SET16SemaHubLite_almostFull_ST_21i(r16,v)        _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHubLite_almostFull_ST_22i(r32)          _BFGET_(r32,22,22)
    #define   SET32SemaHubLite_almostFull_ST_22i(r32,v)        _BFSET_(r32,22,22,v)
    #define   GET16SemaHubLite_almostFull_ST_22i(r16)          _BFGET_(r16, 6, 6)
    #define   SET16SemaHubLite_almostFull_ST_22i(r16,v)        _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHubLite_almostFull_ST_23i(r32)          _BFGET_(r32,23,23)
    #define   SET32SemaHubLite_almostFull_ST_23i(r32,v)        _BFSET_(r32,23,23,v)
    #define   GET16SemaHubLite_almostFull_ST_23i(r16)          _BFGET_(r16, 7, 7)
    #define   SET16SemaHubLite_almostFull_ST_23i(r16,v)        _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHubLite_almostFull_ST_24i(r32)          _BFGET_(r32,24,24)
    #define   SET32SemaHubLite_almostFull_ST_24i(r32,v)        _BFSET_(r32,24,24,v)
    #define   GET16SemaHubLite_almostFull_ST_24i(r16)          _BFGET_(r16, 8, 8)
    #define   SET16SemaHubLite_almostFull_ST_24i(r16,v)        _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHubLite_almostFull_ST_25i(r32)          _BFGET_(r32,25,25)
    #define   SET32SemaHubLite_almostFull_ST_25i(r32,v)        _BFSET_(r32,25,25,v)
    #define   GET16SemaHubLite_almostFull_ST_25i(r16)          _BFGET_(r16, 9, 9)
    #define   SET16SemaHubLite_almostFull_ST_25i(r16,v)        _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHubLite_almostFull_ST_26i(r32)          _BFGET_(r32,26,26)
    #define   SET32SemaHubLite_almostFull_ST_26i(r32,v)        _BFSET_(r32,26,26,v)
    #define   GET16SemaHubLite_almostFull_ST_26i(r16)          _BFGET_(r16,10,10)
    #define   SET16SemaHubLite_almostFull_ST_26i(r16,v)        _BFSET_(r16,10,10,v)

    #define   GET32SemaHubLite_almostFull_ST_27i(r32)          _BFGET_(r32,27,27)
    #define   SET32SemaHubLite_almostFull_ST_27i(r32,v)        _BFSET_(r32,27,27,v)
    #define   GET16SemaHubLite_almostFull_ST_27i(r16)          _BFGET_(r16,11,11)
    #define   SET16SemaHubLite_almostFull_ST_27i(r16,v)        _BFSET_(r16,11,11,v)

    #define   GET32SemaHubLite_almostFull_ST_28i(r32)          _BFGET_(r32,28,28)
    #define   SET32SemaHubLite_almostFull_ST_28i(r32,v)        _BFSET_(r32,28,28,v)
    #define   GET16SemaHubLite_almostFull_ST_28i(r16)          _BFGET_(r16,12,12)
    #define   SET16SemaHubLite_almostFull_ST_28i(r16,v)        _BFSET_(r16,12,12,v)

    #define   GET32SemaHubLite_almostFull_ST_29i(r32)          _BFGET_(r32,29,29)
    #define   SET32SemaHubLite_almostFull_ST_29i(r32,v)        _BFSET_(r32,29,29,v)
    #define   GET16SemaHubLite_almostFull_ST_29i(r16)          _BFGET_(r16,13,13)
    #define   SET16SemaHubLite_almostFull_ST_29i(r16,v)        _BFSET_(r16,13,13,v)

    #define   GET32SemaHubLite_almostFull_ST_30i(r32)          _BFGET_(r32,30,30)
    #define   SET32SemaHubLite_almostFull_ST_30i(r32,v)        _BFSET_(r32,30,30,v)
    #define   GET16SemaHubLite_almostFull_ST_30i(r16)          _BFGET_(r16,14,14)
    #define   SET16SemaHubLite_almostFull_ST_30i(r16,v)        _BFSET_(r16,14,14,v)

    #define   GET32SemaHubLite_almostFull_ST_31i(r32)          _BFGET_(r32,31,31)
    #define   SET32SemaHubLite_almostFull_ST_31i(r32,v)        _BFSET_(r32,31,31,v)
    #define   GET16SemaHubLite_almostFull_ST_31i(r16)          _BFGET_(r16,15,15)
    #define   SET16SemaHubLite_almostFull_ST_31i(r16,v)        _BFSET_(r16,15,15,v)

    #define     w32SemaHubLite_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 u32SemaHubLite_almostFull;
            struct w32SemaHubLite_almostFull;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx398                                    [104];
    ///////////////////////////////////////////////////////////
    } SIE_SemaHubLite;

    typedef union  T32SemaHubLite_PUSH
          { UNSG32 u32;
            struct w32SemaHubLite_PUSH;
                 } T32SemaHubLite_PUSH;
    typedef union  T32SemaHubLite_POP
          { UNSG32 u32;
            struct w32SemaHubLite_POP;
                 } T32SemaHubLite_POP;
    typedef union  T32SemaHubLite_empty
          { UNSG32 u32;
            struct w32SemaHubLite_empty;
                 } T32SemaHubLite_empty;
    typedef union  T32SemaHubLite_full
          { UNSG32 u32;
            struct w32SemaHubLite_full;
                 } T32SemaHubLite_full;
    typedef union  T32SemaHubLite_almostEmpty
          { UNSG32 u32;
            struct w32SemaHubLite_almostEmpty;
                 } T32SemaHubLite_almostEmpty;
    typedef union  T32SemaHubLite_almostFull
          { UNSG32 u32;
            struct w32SemaHubLite_almostFull;
                 } T32SemaHubLite_almostFull;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaHubLite_PUSH
          { UNSG32 u32[1];
            struct {
            struct w32SemaHubLite_PUSH;
                   };
                 } TSemaHubLite_PUSH;
    typedef union  TSemaHubLite_POP
          { UNSG32 u32[1];
            struct {
            struct w32SemaHubLite_POP;
                   };
                 } TSemaHubLite_POP;
    typedef union  TSemaHubLite_empty
          { UNSG32 u32[1];
            struct {
            struct w32SemaHubLite_empty;
                   };
                 } TSemaHubLite_empty;
    typedef union  TSemaHubLite_full
          { UNSG32 u32[1];
            struct {
            struct w32SemaHubLite_full;
                   };
                 } TSemaHubLite_full;
    typedef union  TSemaHubLite_almostEmpty
          { UNSG32 u32[1];
            struct {
            struct w32SemaHubLite_almostEmpty;
                   };
                 } TSemaHubLite_almostEmpty;
    typedef union  TSemaHubLite_almostFull
          { UNSG32 u32[1];
            struct {
            struct w32SemaHubLite_almostFull;
                   };
                 } TSemaHubLite_almostFull;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaHubLite_drvrd(SIE_SemaHubLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaHubLite_drvwr(SIE_SemaHubLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaHubLite_reset(SIE_SemaHubLite *p);
     SIGN32 SemaHubLite_cmp  (SIE_SemaHubLite *p, SIE_SemaHubLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaHubLite_check(p,pie,pfx,hLOG) SemaHubLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaHubLite_print(p,    pfx,hLOG) SemaHubLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaHubLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FiFoLite                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_FiFoLite
#define h_FiFoLite (){}

    #define     RA_FiFoLite_CFG                                0x0000

    #define     BA_FiFoLite_CFG_BASE                           0x0000
    #define     B16FiFoLite_CFG_BASE                           0x0000
    #define   LSb32FiFoLite_CFG_BASE                              0
    #define   LSb16FiFoLite_CFG_BASE                              0
    #define       bFiFoLite_CFG_BASE                           20
    #define   MSK32FiFoLite_CFG_BASE                              0x000FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FiFoLite_START                              0x0004

    #define     BA_FiFoLite_START_EN                           0x0004
    #define     B16FiFoLite_START_EN                           0x0004
    #define   LSb32FiFoLite_START_EN                              0
    #define   LSb16FiFoLite_START_EN                              0
    #define       bFiFoLite_START_EN                           1
    #define   MSK32FiFoLite_START_EN                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FiFoLite_CLEAR                              0x0008

    #define     BA_FiFoLite_CLEAR_EN                           0x0008
    #define     B16FiFoLite_CLEAR_EN                           0x0008
    #define   LSb32FiFoLite_CLEAR_EN                              0
    #define   LSb16FiFoLite_CLEAR_EN                              0
    #define       bFiFoLite_CLEAR_EN                           1
    #define   MSK32FiFoLite_CLEAR_EN                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FiFoLite_FLUSH                              0x000C

    #define     BA_FiFoLite_FLUSH_EN                           0x000C
    #define     B16FiFoLite_FLUSH_EN                           0x000C
    #define   LSb32FiFoLite_FLUSH_EN                              0
    #define   LSb16FiFoLite_FLUSH_EN                              0
    #define       bFiFoLite_FLUSH_EN                           1
    #define   MSK32FiFoLite_FLUSH_EN                              0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FiFoLite {
    ///////////////////////////////////////////////////////////
    #define   GET32FiFoLite_CFG_BASE(r32)                      _BFGET_(r32,19, 0)
    #define   SET32FiFoLite_CFG_BASE(r32,v)                    _BFSET_(r32,19, 0,v)

    #define     w32FiFoLite_CFG                                {\
            UNSG32 uCFG_BASE                                   : 20;\
            UNSG32 RSVDx0_b20                                  : 12;\
          }
    union { UNSG32 u32FiFoLite_CFG;
            struct w32FiFoLite_CFG;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFoLite_START_EN(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32FiFoLite_START_EN(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16FiFoLite_START_EN(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16FiFoLite_START_EN(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32FiFoLite_START                              {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32FiFoLite_START;
            struct w32FiFoLite_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFoLite_CLEAR_EN(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32FiFoLite_CLEAR_EN(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16FiFoLite_CLEAR_EN(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16FiFoLite_CLEAR_EN(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32FiFoLite_CLEAR                              {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32FiFoLite_CLEAR;
            struct w32FiFoLite_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFoLite_FLUSH_EN(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32FiFoLite_FLUSH_EN(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16FiFoLite_FLUSH_EN(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16FiFoLite_FLUSH_EN(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32FiFoLite_FLUSH                              {\
            UNSG32 uFLUSH_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32FiFoLite_FLUSH;
            struct w32FiFoLite_FLUSH;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FiFoLite;

    typedef union  T32FiFoLite_CFG
          { UNSG32 u32;
            struct w32FiFoLite_CFG;
                 } T32FiFoLite_CFG;
    typedef union  T32FiFoLite_START
          { UNSG32 u32;
            struct w32FiFoLite_START;
                 } T32FiFoLite_START;
    typedef union  T32FiFoLite_CLEAR
          { UNSG32 u32;
            struct w32FiFoLite_CLEAR;
                 } T32FiFoLite_CLEAR;
    typedef union  T32FiFoLite_FLUSH
          { UNSG32 u32;
            struct w32FiFoLite_FLUSH;
                 } T32FiFoLite_FLUSH;
    ///////////////////////////////////////////////////////////

    typedef union  TFiFoLite_CFG
          { UNSG32 u32[1];
            struct {
            struct w32FiFoLite_CFG;
                   };
                 } TFiFoLite_CFG;
    typedef union  TFiFoLite_START
          { UNSG32 u32[1];
            struct {
            struct w32FiFoLite_START;
                   };
                 } TFiFoLite_START;
    typedef union  TFiFoLite_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32FiFoLite_CLEAR;
                   };
                 } TFiFoLite_CLEAR;
    typedef union  TFiFoLite_FLUSH
          { UNSG32 u32[1];
            struct {
            struct w32FiFoLite_FLUSH;
                   };
                 } TFiFoLite_FLUSH;

    ///////////////////////////////////////////////////////////
     SIGN32 FiFoLite_drvrd(SIE_FiFoLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FiFoLite_drvwr(SIE_FiFoLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FiFoLite_reset(SIE_FiFoLite *p);
     SIGN32 FiFoLite_cmp  (SIE_FiFoLite *p, SIE_FiFoLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FiFoLite_check(p,pie,pfx,hLOG) FiFoLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FiFoLite_print(p,    pfx,hLOG) FiFoLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FiFoLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HBOLite                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 FiFoCtl              
///               $SemaHubLite         FiFoCtl           REG          
///     @ 0x00400 ARR                  (P)
///     # 0x00400 FiFo                 
///               $FiFoLite            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_HBOLite
#define h_HBOLite (){}

    #define     RA_HBOLite_FiFoCtl                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HBOLite_ARR                                 0x0400
    #define     RA_HBOLite_FiFo                                0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_HBOLite_BUSY                                0x0600

    #define     BA_HBOLite_BUSY_ST                             0x0600
    #define     B16HBOLite_BUSY_ST                             0x0600
    #define   LSb32HBOLite_BUSY_ST                                0
    #define   LSb16HBOLite_BUSY_ST                                0
    #define       bHBOLite_BUSY_ST                             32
    #define   MSK32HBOLite_BUSY_ST                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HBOLite {
    ///////////////////////////////////////////////////////////
              SIE_SemaHubLite                                  ie_FiFoCtl;
    ///////////////////////////////////////////////////////////
              SIE_FiFoLite                                     ie_FiFo[32];
    ///////////////////////////////////////////////////////////
    #define   GET32HBOLite_BUSY_ST(r32)                        _BFGET_(r32,31, 0)
    #define   SET32HBOLite_BUSY_ST(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32HBOLite_BUSY                                {\
            UNSG32 uBUSY_ST                                    : 32;\
          }
    union { UNSG32 u32HBOLite_BUSY;
            struct w32HBOLite_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx604                                    [252];
    ///////////////////////////////////////////////////////////
    } SIE_HBOLite;

    typedef union  T32HBOLite_BUSY
          { UNSG32 u32;
            struct w32HBOLite_BUSY;
                 } T32HBOLite_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  THBOLite_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32HBOLite_BUSY;
                   };
                 } THBOLite_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 HBOLite_drvrd(SIE_HBOLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HBOLite_drvwr(SIE_HBOLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HBOLite_reset(SIE_HBOLite *p);
     SIGN32 HBOLite_cmp  (SIE_HBOLite *p, SIE_HBOLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HBOLite_check(p,pie,pfx,hLOG) HBOLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HBOLite_print(p,    pfx,hLOG) HBOLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HBOLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LLDesFmtLite            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_LLDesFmtLite
#define h_LLDesFmtLite (){}

    #define     RA_LLDesFmtLite_mem                            0x0000

    #define     BA_LLDesFmtLite_mem_size                       0x0000
    #define     B16LLDesFmtLite_mem_size                       0x0000
    #define   LSb32LLDesFmtLite_mem_size                          0
    #define   LSb16LLDesFmtLite_mem_size                          0
    #define       bLLDesFmtLite_mem_size                       16
    #define   MSK32LLDesFmtLite_mem_size                          0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LLDesFmtLite {
    ///////////////////////////////////////////////////////////
    #define   GET32LLDesFmtLite_mem_size(r32)                  _BFGET_(r32,15, 0)
    #define   SET32LLDesFmtLite_mem_size(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16LLDesFmtLite_mem_size(r16)                  _BFGET_(r16,15, 0)
    #define   SET16LLDesFmtLite_mem_size(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32LLDesFmtLite_mem                            {\
            UNSG32 umem_size                                   : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32LLDesFmtLite_mem;
            struct w32LLDesFmtLite_mem;
          };
    ///////////////////////////////////////////////////////////
    } SIE_LLDesFmtLite;

    typedef union  T32LLDesFmtLite_mem
          { UNSG32 u32;
            struct w32LLDesFmtLite_mem;
                 } T32LLDesFmtLite_mem;
    ///////////////////////////////////////////////////////////

    typedef union  TLLDesFmtLite_mem
          { UNSG32 u32[1];
            struct {
            struct w32LLDesFmtLite_mem;
                   };
                 } TLLDesFmtLite_mem;

    ///////////////////////////////////////////////////////////
     SIGN32 LLDesFmtLite_drvrd(SIE_LLDesFmtLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LLDesFmtLite_drvwr(SIE_LLDesFmtLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LLDesFmtLite_reset(SIE_LLDesFmtLite *p);
     SIGN32 LLDesFmtLite_cmp  (SIE_LLDesFmtLite *p, SIE_LLDesFmtLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LLDesFmtLite_check(p,pie,pfx,hLOG) LLDesFmtLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LLDesFmtLite_print(p,    pfx,hLOG) LLDesFmtLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LLDesFmtLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmdHDRLite                           (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
///                                    ###
///               %unsigned 1  dis_chk                   
///                                    ###
///                                    * 0: chkSemId operates as normal, AxUser[4:0] = 0
///                                    * 1: Disables chkSemId, sends the 5 bit field in chkSemID out on AxUser[4:0]
///                                    ###
///               %unsigned 1  dis_upd                   
///                                    ###
///                                    * 0: updSemId operates as normal, AxUser[9:5] = 0
///                                    * 1: Disables updSemId, sends the 5 bit field in updSemID out on AxUser[9:5]
///                                    * end dHubCmdHDR
///                                    ###
///               %%        1          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      31b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmdHDRLite
#define h_dHubCmdHDRLite (){}

    #define     RA_dHubCmdHDRLite_DESC                         0x0000

    #define     BA_dHubCmdHDRLite_DESC_size                    0x0000
    #define     B16dHubCmdHDRLite_DESC_size                    0x0000
    #define   LSb32dHubCmdHDRLite_DESC_size                       0
    #define   LSb16dHubCmdHDRLite_DESC_size                       0
    #define       bdHubCmdHDRLite_DESC_size                    16
    #define   MSK32dHubCmdHDRLite_DESC_size                       0x0000FFFF

    #define     BA_dHubCmdHDRLite_DESC_sizeMTU                 0x0002
    #define     B16dHubCmdHDRLite_DESC_sizeMTU                 0x0002
    #define   LSb32dHubCmdHDRLite_DESC_sizeMTU                    16
    #define   LSb16dHubCmdHDRLite_DESC_sizeMTU                    0
    #define       bdHubCmdHDRLite_DESC_sizeMTU                 1
    #define   MSK32dHubCmdHDRLite_DESC_sizeMTU                    0x00010000

    #define     BA_dHubCmdHDRLite_DESC_semOpMTU                0x0002
    #define     B16dHubCmdHDRLite_DESC_semOpMTU                0x0002
    #define   LSb32dHubCmdHDRLite_DESC_semOpMTU                   17
    #define   LSb16dHubCmdHDRLite_DESC_semOpMTU                   1
    #define       bdHubCmdHDRLite_DESC_semOpMTU                1
    #define   MSK32dHubCmdHDRLite_DESC_semOpMTU                   0x00020000

    #define     BA_dHubCmdHDRLite_DESC_chkSemId                0x0002
    #define     B16dHubCmdHDRLite_DESC_chkSemId                0x0002
    #define   LSb32dHubCmdHDRLite_DESC_chkSemId                   18
    #define   LSb16dHubCmdHDRLite_DESC_chkSemId                   2
    #define       bdHubCmdHDRLite_DESC_chkSemId                5
    #define   MSK32dHubCmdHDRLite_DESC_chkSemId                   0x007C0000

    #define     BA_dHubCmdHDRLite_DESC_updSemId                0x0002
    #define     B16dHubCmdHDRLite_DESC_updSemId                0x0002
    #define   LSb32dHubCmdHDRLite_DESC_updSemId                   23
    #define   LSb16dHubCmdHDRLite_DESC_updSemId                   7
    #define       bdHubCmdHDRLite_DESC_updSemId                5
    #define   MSK32dHubCmdHDRLite_DESC_updSemId                   0x0F800000

    #define     BA_dHubCmdHDRLite_DESC_interrupt               0x0003
    #define     B16dHubCmdHDRLite_DESC_interrupt               0x0002
    #define   LSb32dHubCmdHDRLite_DESC_interrupt                  28
    #define   LSb16dHubCmdHDRLite_DESC_interrupt                  12
    #define       bdHubCmdHDRLite_DESC_interrupt               1
    #define   MSK32dHubCmdHDRLite_DESC_interrupt                  0x10000000

    #define     BA_dHubCmdHDRLite_DESC_dis_chk                 0x0003
    #define     B16dHubCmdHDRLite_DESC_dis_chk                 0x0002
    #define   LSb32dHubCmdHDRLite_DESC_dis_chk                    29
    #define   LSb16dHubCmdHDRLite_DESC_dis_chk                    13
    #define       bdHubCmdHDRLite_DESC_dis_chk                 1
    #define   MSK32dHubCmdHDRLite_DESC_dis_chk                    0x20000000

    #define     BA_dHubCmdHDRLite_DESC_dis_upd                 0x0003
    #define     B16dHubCmdHDRLite_DESC_dis_upd                 0x0002
    #define   LSb32dHubCmdHDRLite_DESC_dis_upd                    30
    #define   LSb16dHubCmdHDRLite_DESC_dis_upd                    14
    #define       bdHubCmdHDRLite_DESC_dis_upd                 1
    #define   MSK32dHubCmdHDRLite_DESC_dis_upd                    0x40000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmdHDRLite {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmdHDRLite_DESC_size(r32)               _BFGET_(r32,15, 0)
    #define   SET32dHubCmdHDRLite_DESC_size(r32,v)             _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmdHDRLite_DESC_size(r16)               _BFGET_(r16,15, 0)
    #define   SET16dHubCmdHDRLite_DESC_size(r16,v)             _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmdHDRLite_DESC_sizeMTU(r32)            _BFGET_(r32,16,16)
    #define   SET32dHubCmdHDRLite_DESC_sizeMTU(r32,v)          _BFSET_(r32,16,16,v)
    #define   GET16dHubCmdHDRLite_DESC_sizeMTU(r16)            _BFGET_(r16, 0, 0)
    #define   SET16dHubCmdHDRLite_DESC_sizeMTU(r16,v)          _BFSET_(r16, 0, 0,v)

    #define   GET32dHubCmdHDRLite_DESC_semOpMTU(r32)           _BFGET_(r32,17,17)
    #define   SET32dHubCmdHDRLite_DESC_semOpMTU(r32,v)         _BFSET_(r32,17,17,v)
    #define   GET16dHubCmdHDRLite_DESC_semOpMTU(r16)           _BFGET_(r16, 1, 1)
    #define   SET16dHubCmdHDRLite_DESC_semOpMTU(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32dHubCmdHDRLite_DESC_chkSemId(r32)           _BFGET_(r32,22,18)
    #define   SET32dHubCmdHDRLite_DESC_chkSemId(r32,v)         _BFSET_(r32,22,18,v)
    #define   GET16dHubCmdHDRLite_DESC_chkSemId(r16)           _BFGET_(r16, 6, 2)
    #define   SET16dHubCmdHDRLite_DESC_chkSemId(r16,v)         _BFSET_(r16, 6, 2,v)

    #define   GET32dHubCmdHDRLite_DESC_updSemId(r32)           _BFGET_(r32,27,23)
    #define   SET32dHubCmdHDRLite_DESC_updSemId(r32,v)         _BFSET_(r32,27,23,v)
    #define   GET16dHubCmdHDRLite_DESC_updSemId(r16)           _BFGET_(r16,11, 7)
    #define   SET16dHubCmdHDRLite_DESC_updSemId(r16,v)         _BFSET_(r16,11, 7,v)

    #define   GET32dHubCmdHDRLite_DESC_interrupt(r32)          _BFGET_(r32,28,28)
    #define   SET32dHubCmdHDRLite_DESC_interrupt(r32,v)        _BFSET_(r32,28,28,v)
    #define   GET16dHubCmdHDRLite_DESC_interrupt(r16)          _BFGET_(r16,12,12)
    #define   SET16dHubCmdHDRLite_DESC_interrupt(r16,v)        _BFSET_(r16,12,12,v)

    #define   GET32dHubCmdHDRLite_DESC_dis_chk(r32)            _BFGET_(r32,29,29)
    #define   SET32dHubCmdHDRLite_DESC_dis_chk(r32,v)          _BFSET_(r32,29,29,v)
    #define   GET16dHubCmdHDRLite_DESC_dis_chk(r16)            _BFGET_(r16,13,13)
    #define   SET16dHubCmdHDRLite_DESC_dis_chk(r16,v)          _BFSET_(r16,13,13,v)

    #define   GET32dHubCmdHDRLite_DESC_dis_upd(r32)            _BFGET_(r32,30,30)
    #define   SET32dHubCmdHDRLite_DESC_dis_upd(r32,v)          _BFSET_(r32,30,30,v)
    #define   GET16dHubCmdHDRLite_DESC_dis_upd(r16)            _BFGET_(r16,14,14)
    #define   SET16dHubCmdHDRLite_DESC_dis_upd(r16,v)          _BFSET_(r16,14,14,v)

    #define     w32dHubCmdHDRLite_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 uDESC_dis_chk                               :  1;\
            UNSG32 uDESC_dis_upd                               :  1;\
            UNSG32 RSVDx0_b31                                  :  1;\
          }
    union { UNSG32 u32dHubCmdHDRLite_DESC;
            struct w32dHubCmdHDRLite_DESC;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmdHDRLite;

    typedef union  T32dHubCmdHDRLite_DESC
          { UNSG32 u32;
            struct w32dHubCmdHDRLite_DESC;
                 } T32dHubCmdHDRLite_DESC;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmdHDRLite_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmdHDRLite_DESC;
                   };
                 } TdHubCmdHDRLite_DESC;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmdHDRLite_drvrd(SIE_dHubCmdHDRLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmdHDRLite_drvwr(SIE_dHubCmdHDRLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmdHDRLite_reset(SIE_dHubCmdHDRLite *p);
     SIGN32 dHubCmdHDRLite_cmp  (SIE_dHubCmdHDRLite *p, SIE_dHubCmdHDRLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmdHDRLite_check(p,pie,pfx,hLOG) dHubCmdHDRLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmdHDRLite_print(p,    pfx,hLOG) dHubCmdHDRLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmdHDRLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmdLite             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                  
///               $dHubCmdHDRLite      HDR               REG          
///                                    ###
///                                    * end dHubCmd
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      63b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmdLite
#define h_dHubCmdLite (){}

    #define     RA_dHubCmdLite_MEM                             0x0000

    #define     BA_dHubCmdLite_MEM_addr                        0x0000
    #define     B16dHubCmdLite_MEM_addr                        0x0000
    #define   LSb32dHubCmdLite_MEM_addr                           0
    #define   LSb16dHubCmdLite_MEM_addr                           0
    #define       bdHubCmdLite_MEM_addr                        32
    #define   MSK32dHubCmdLite_MEM_addr                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmdLite_HDR                             0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmdLite {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmdLite_MEM_addr(r32)                   _BFGET_(r32,31, 0)
    #define   SET32dHubCmdLite_MEM_addr(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32dHubCmdLite_MEM                             {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmdLite_MEM;
            struct w32dHubCmdLite_MEM;
          };
    ///////////////////////////////////////////////////////////
              SIE_dHubCmdHDRLite                               ie_HDR;
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmdLite;

    typedef union  T32dHubCmdLite_MEM
          { UNSG32 u32;
            struct w32dHubCmdLite_MEM;
                 } T32dHubCmdLite_MEM;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmdLite_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmdLite_MEM;
                   };
                 } TdHubCmdLite_MEM;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmdLite_drvrd(SIE_dHubCmdLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmdLite_drvwr(SIE_dHubCmdLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmdLite_reset(SIE_dHubCmdLite *p);
     SIGN32 dHubCmdLite_cmp  (SIE_dHubCmdLite *p, SIE_dHubCmdLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmdLite_check(p,pie,pfx,hLOG) dHubCmdLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmdLite_print(p,    pfx,hLOG) dHubCmdLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmdLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubChannelLite         biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 2  MTU                       
///                                    : 8byte                     0x0
///                                    : 32byte                    0x1
///                                    : 128byte                   0x2
///                                    : 4096byte                  0x3
///                                                 ###
///                                                 * Minimum transfer unit of the channel
///                                                 ###
///               %unsigned 1  QoS                       
///                                    ###
///                                    * Write 1 to turn on QoS detection
///                                    * When QoS detection is on, AxQOS values is dynamically chosen from AxQOS.HI and AxQOS.LO
///                                    ###
///               %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.
///                                                 * Note: This parameter cannot be set to 1 if MTU = 2 (4KB). The cost of using a 4KB buffer in current architecture is too much.
///                                                 ###
///               %%        25         # Stuffing bits...
///     @ 0x00004 AWQOS                (W-)
///               %unsigned 4  LO                        0x0
///                                    ###
///                                    * AWQOS value when low priority
///                                    ###
///               %unsigned 4  HI                        0xF
///                                    ###
///                                    * AWQOS value when high priority
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00008 ARQOS                (W-)
///               %unsigned 4  LO                        0x0
///                                    ###
///                                    * ARQOS value when low priority
///                                    ###
///               %unsigned 4  HI                        0xF
///                                    ###
///                                    * ARQOS value when high priority
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x0000C AXPROT_QOS           (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * 0: AxPROT[0] = 1'b0
///                                    * 1: AxPROT[0] = QoS managed, 1 indicates high priority transaction [Legacy mode]
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00010 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1d to enable the channel; 0 to pause the channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00014 CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the channel controller state
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00018 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:      28B, bits:      27b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubChannelLite
#define h_dHubChannelLite (){}

    #define     RA_dHubChannelLite_CFG                         0x0000

    #define     BA_dHubChannelLite_CFG_MTU                     0x0000
    #define     B16dHubChannelLite_CFG_MTU                     0x0000
    #define   LSb32dHubChannelLite_CFG_MTU                        0
    #define   LSb16dHubChannelLite_CFG_MTU                        0
    #define       bdHubChannelLite_CFG_MTU                     2
    #define   MSK32dHubChannelLite_CFG_MTU                        0x00000003
    #define        dHubChannelLite_CFG_MTU_8byte                            0x0
    #define        dHubChannelLite_CFG_MTU_32byte                           0x1
    #define        dHubChannelLite_CFG_MTU_128byte                          0x2
    #define        dHubChannelLite_CFG_MTU_4096byte                         0x3

    #define     BA_dHubChannelLite_CFG_QoS                     0x0000
    #define     B16dHubChannelLite_CFG_QoS                     0x0000
    #define   LSb32dHubChannelLite_CFG_QoS                        2
    #define   LSb16dHubChannelLite_CFG_QoS                        2
    #define       bdHubChannelLite_CFG_QoS                     1
    #define   MSK32dHubChannelLite_CFG_QoS                        0x00000004

    #define     BA_dHubChannelLite_CFG_selfLoop                0x0000
    #define     B16dHubChannelLite_CFG_selfLoop                0x0000
    #define   LSb32dHubChannelLite_CFG_selfLoop                   3
    #define   LSb16dHubChannelLite_CFG_selfLoop                   3
    #define       bdHubChannelLite_CFG_selfLoop                1
    #define   MSK32dHubChannelLite_CFG_selfLoop                   0x00000008

    #define     BA_dHubChannelLite_CFG_intrCtl                 0x0000
    #define     B16dHubChannelLite_CFG_intrCtl                 0x0000
    #define   LSb32dHubChannelLite_CFG_intrCtl                    4
    #define   LSb16dHubChannelLite_CFG_intrCtl                    4
    #define       bdHubChannelLite_CFG_intrCtl                 1
    #define   MSK32dHubChannelLite_CFG_intrCtl                    0x00000010
    #define        dHubChannelLite_CFG_intrCtl_cmdDone                      0x0
    #define        dHubChannelLite_CFG_intrCtl_chIdle                       0x1

    #define     BA_dHubChannelLite_CFG_hScan                   0x0000
    #define     B16dHubChannelLite_CFG_hScan                   0x0000
    #define   LSb32dHubChannelLite_CFG_hScan                      5
    #define   LSb16dHubChannelLite_CFG_hScan                      5
    #define       bdHubChannelLite_CFG_hScan                   1
    #define   MSK32dHubChannelLite_CFG_hScan                      0x00000020
    #define        dHubChannelLite_CFG_hScan_rastScan                       0x0
    #define        dHubChannelLite_CFG_hScan_invScan                        0x1

    #define     BA_dHubChannelLite_CFG_vScan                   0x0000
    #define     B16dHubChannelLite_CFG_vScan                   0x0000
    #define   LSb32dHubChannelLite_CFG_vScan                      6
    #define   LSb16dHubChannelLite_CFG_vScan                      6
    #define       bdHubChannelLite_CFG_vScan                   1
    #define   MSK32dHubChannelLite_CFG_vScan                      0x00000040
    #define        dHubChannelLite_CFG_vScan_rastScan                       0x0
    #define        dHubChannelLite_CFG_vScan_invScan                        0x1
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannelLite_AWQOS                       0x0004

    #define     BA_dHubChannelLite_AWQOS_LO                    0x0004
    #define     B16dHubChannelLite_AWQOS_LO                    0x0004
    #define   LSb32dHubChannelLite_AWQOS_LO                       0
    #define   LSb16dHubChannelLite_AWQOS_LO                       0
    #define       bdHubChannelLite_AWQOS_LO                    4
    #define   MSK32dHubChannelLite_AWQOS_LO                       0x0000000F

    #define     BA_dHubChannelLite_AWQOS_HI                    0x0004
    #define     B16dHubChannelLite_AWQOS_HI                    0x0004
    #define   LSb32dHubChannelLite_AWQOS_HI                       4
    #define   LSb16dHubChannelLite_AWQOS_HI                       4
    #define       bdHubChannelLite_AWQOS_HI                    4
    #define   MSK32dHubChannelLite_AWQOS_HI                       0x000000F0
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannelLite_ARQOS                       0x0008

    #define     BA_dHubChannelLite_ARQOS_LO                    0x0008
    #define     B16dHubChannelLite_ARQOS_LO                    0x0008
    #define   LSb32dHubChannelLite_ARQOS_LO                       0
    #define   LSb16dHubChannelLite_ARQOS_LO                       0
    #define       bdHubChannelLite_ARQOS_LO                    4
    #define   MSK32dHubChannelLite_ARQOS_LO                       0x0000000F

    #define     BA_dHubChannelLite_ARQOS_HI                    0x0008
    #define     B16dHubChannelLite_ARQOS_HI                    0x0008
    #define   LSb32dHubChannelLite_ARQOS_HI                       4
    #define   LSb16dHubChannelLite_ARQOS_HI                       4
    #define       bdHubChannelLite_ARQOS_HI                    4
    #define   MSK32dHubChannelLite_ARQOS_HI                       0x000000F0
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannelLite_AXPROT_QOS                  0x000C

    #define     BA_dHubChannelLite_AXPROT_QOS_EN               0x000C
    #define     B16dHubChannelLite_AXPROT_QOS_EN               0x000C
    #define   LSb32dHubChannelLite_AXPROT_QOS_EN                  0
    #define   LSb16dHubChannelLite_AXPROT_QOS_EN                  0
    #define       bdHubChannelLite_AXPROT_QOS_EN               1
    #define   MSK32dHubChannelLite_AXPROT_QOS_EN                  0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannelLite_START                       0x0010

    #define     BA_dHubChannelLite_START_EN                    0x0010
    #define     B16dHubChannelLite_START_EN                    0x0010
    #define   LSb32dHubChannelLite_START_EN                       0
    #define   LSb16dHubChannelLite_START_EN                       0
    #define       bdHubChannelLite_START_EN                    1
    #define   MSK32dHubChannelLite_START_EN                       0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannelLite_CLEAR                       0x0014

    #define     BA_dHubChannelLite_CLEAR_EN                    0x0014
    #define     B16dHubChannelLite_CLEAR_EN                    0x0014
    #define   LSb32dHubChannelLite_CLEAR_EN                       0
    #define   LSb16dHubChannelLite_CLEAR_EN                       0
    #define       bdHubChannelLite_CLEAR_EN                    1
    #define   MSK32dHubChannelLite_CLEAR_EN                       0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannelLite_FLUSH                       0x0018

    #define     BA_dHubChannelLite_FLUSH_EN                    0x0018
    #define     B16dHubChannelLite_FLUSH_EN                    0x0018
    #define   LSb32dHubChannelLite_FLUSH_EN                       0
    #define   LSb16dHubChannelLite_FLUSH_EN                       0
    #define       bdHubChannelLite_FLUSH_EN                    1
    #define   MSK32dHubChannelLite_FLUSH_EN                       0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubChannelLite {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_CFG_MTU(r32)                _BFGET_(r32, 1, 0)
    #define   SET32dHubChannelLite_CFG_MTU(r32,v)              _BFSET_(r32, 1, 0,v)
    #define   GET16dHubChannelLite_CFG_MTU(r16)                _BFGET_(r16, 1, 0)
    #define   SET16dHubChannelLite_CFG_MTU(r16,v)              _BFSET_(r16, 1, 0,v)

    #define   GET32dHubChannelLite_CFG_QoS(r32)                _BFGET_(r32, 2, 2)
    #define   SET32dHubChannelLite_CFG_QoS(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16dHubChannelLite_CFG_QoS(r16)                _BFGET_(r16, 2, 2)
    #define   SET16dHubChannelLite_CFG_QoS(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32dHubChannelLite_CFG_selfLoop(r32)           _BFGET_(r32, 3, 3)
    #define   SET32dHubChannelLite_CFG_selfLoop(r32,v)         _BFSET_(r32, 3, 3,v)
    #define   GET16dHubChannelLite_CFG_selfLoop(r16)           _BFGET_(r16, 3, 3)
    #define   SET16dHubChannelLite_CFG_selfLoop(r16,v)         _BFSET_(r16, 3, 3,v)

    #define   GET32dHubChannelLite_CFG_intrCtl(r32)            _BFGET_(r32, 4, 4)
    #define   SET32dHubChannelLite_CFG_intrCtl(r32,v)          _BFSET_(r32, 4, 4,v)
    #define   GET16dHubChannelLite_CFG_intrCtl(r16)            _BFGET_(r16, 4, 4)
    #define   SET16dHubChannelLite_CFG_intrCtl(r16,v)          _BFSET_(r16, 4, 4,v)

    #define   GET32dHubChannelLite_CFG_hScan(r32)              _BFGET_(r32, 5, 5)
    #define   SET32dHubChannelLite_CFG_hScan(r32,v)            _BFSET_(r32, 5, 5,v)
    #define   GET16dHubChannelLite_CFG_hScan(r16)              _BFGET_(r16, 5, 5)
    #define   SET16dHubChannelLite_CFG_hScan(r16,v)            _BFSET_(r16, 5, 5,v)

    #define   GET32dHubChannelLite_CFG_vScan(r32)              _BFGET_(r32, 6, 6)
    #define   SET32dHubChannelLite_CFG_vScan(r32,v)            _BFSET_(r32, 6, 6,v)
    #define   GET16dHubChannelLite_CFG_vScan(r16)              _BFGET_(r16, 6, 6)
    #define   SET16dHubChannelLite_CFG_vScan(r16,v)            _BFSET_(r16, 6, 6,v)

    #define     w32dHubChannelLite_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 u32dHubChannelLite_CFG;
            struct w32dHubChannelLite_CFG;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_AWQOS_LO(r32)               _BFGET_(r32, 3, 0)
    #define   SET32dHubChannelLite_AWQOS_LO(r32,v)             _BFSET_(r32, 3, 0,v)
    #define   GET16dHubChannelLite_AWQOS_LO(r16)               _BFGET_(r16, 3, 0)
    #define   SET16dHubChannelLite_AWQOS_LO(r16,v)             _BFSET_(r16, 3, 0,v)

    #define   GET32dHubChannelLite_AWQOS_HI(r32)               _BFGET_(r32, 7, 4)
    #define   SET32dHubChannelLite_AWQOS_HI(r32,v)             _BFSET_(r32, 7, 4,v)
    #define   GET16dHubChannelLite_AWQOS_HI(r16)               _BFGET_(r16, 7, 4)
    #define   SET16dHubChannelLite_AWQOS_HI(r16,v)             _BFSET_(r16, 7, 4,v)

    #define     w32dHubChannelLite_AWQOS                       {\
            UNSG32 uAWQOS_LO                                   :  4;\
            UNSG32 uAWQOS_HI                                   :  4;\
            UNSG32 RSVDx4_b8                                   : 24;\
          }
    union { UNSG32 u32dHubChannelLite_AWQOS;
            struct w32dHubChannelLite_AWQOS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_ARQOS_LO(r32)               _BFGET_(r32, 3, 0)
    #define   SET32dHubChannelLite_ARQOS_LO(r32,v)             _BFSET_(r32, 3, 0,v)
    #define   GET16dHubChannelLite_ARQOS_LO(r16)               _BFGET_(r16, 3, 0)
    #define   SET16dHubChannelLite_ARQOS_LO(r16,v)             _BFSET_(r16, 3, 0,v)

    #define   GET32dHubChannelLite_ARQOS_HI(r32)               _BFGET_(r32, 7, 4)
    #define   SET32dHubChannelLite_ARQOS_HI(r32,v)             _BFSET_(r32, 7, 4,v)
    #define   GET16dHubChannelLite_ARQOS_HI(r16)               _BFGET_(r16, 7, 4)
    #define   SET16dHubChannelLite_ARQOS_HI(r16,v)             _BFSET_(r16, 7, 4,v)

    #define     w32dHubChannelLite_ARQOS                       {\
            UNSG32 uARQOS_LO                                   :  4;\
            UNSG32 uARQOS_HI                                   :  4;\
            UNSG32 RSVDx8_b8                                   : 24;\
          }
    union { UNSG32 u32dHubChannelLite_ARQOS;
            struct w32dHubChannelLite_ARQOS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_AXPROT_QOS_EN(r32)          _BFGET_(r32, 0, 0)
    #define   SET32dHubChannelLite_AXPROT_QOS_EN(r32,v)        _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannelLite_AXPROT_QOS_EN(r16)          _BFGET_(r16, 0, 0)
    #define   SET16dHubChannelLite_AXPROT_QOS_EN(r16,v)        _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannelLite_AXPROT_QOS                  {\
            UNSG32 uAXPROT_QOS_EN                              :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannelLite_AXPROT_QOS;
            struct w32dHubChannelLite_AXPROT_QOS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_START_EN(r32)               _BFGET_(r32, 0, 0)
    #define   SET32dHubChannelLite_START_EN(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannelLite_START_EN(r16)               _BFGET_(r16, 0, 0)
    #define   SET16dHubChannelLite_START_EN(r16,v)             _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannelLite_START                       {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx10_b1                                  : 31;\
          }
    union { UNSG32 u32dHubChannelLite_START;
            struct w32dHubChannelLite_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_CLEAR_EN(r32)               _BFGET_(r32, 0, 0)
    #define   SET32dHubChannelLite_CLEAR_EN(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannelLite_CLEAR_EN(r16)               _BFGET_(r16, 0, 0)
    #define   SET16dHubChannelLite_CLEAR_EN(r16,v)             _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannelLite_CLEAR                       {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32dHubChannelLite_CLEAR;
            struct w32dHubChannelLite_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannelLite_FLUSH_EN(r32)               _BFGET_(r32, 0, 0)
    #define   SET32dHubChannelLite_FLUSH_EN(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannelLite_FLUSH_EN(r16)               _BFGET_(r16, 0, 0)
    #define   SET16dHubChannelLite_FLUSH_EN(r16,v)             _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannelLite_FLUSH                       {\
            UNSG32 uFLUSH_EN                                   :  1;\
            UNSG32 RSVDx18_b1                                  : 31;\
          }
    union { UNSG32 u32dHubChannelLite_FLUSH;
            struct w32dHubChannelLite_FLUSH;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubChannelLite;

    typedef union  T32dHubChannelLite_CFG
          { UNSG32 u32;
            struct w32dHubChannelLite_CFG;
                 } T32dHubChannelLite_CFG;
    typedef union  T32dHubChannelLite_AWQOS
          { UNSG32 u32;
            struct w32dHubChannelLite_AWQOS;
                 } T32dHubChannelLite_AWQOS;
    typedef union  T32dHubChannelLite_ARQOS
          { UNSG32 u32;
            struct w32dHubChannelLite_ARQOS;
                 } T32dHubChannelLite_ARQOS;
    typedef union  T32dHubChannelLite_AXPROT_QOS
          { UNSG32 u32;
            struct w32dHubChannelLite_AXPROT_QOS;
                 } T32dHubChannelLite_AXPROT_QOS;
    typedef union  T32dHubChannelLite_START
          { UNSG32 u32;
            struct w32dHubChannelLite_START;
                 } T32dHubChannelLite_START;
    typedef union  T32dHubChannelLite_CLEAR
          { UNSG32 u32;
            struct w32dHubChannelLite_CLEAR;
                 } T32dHubChannelLite_CLEAR;
    typedef union  T32dHubChannelLite_FLUSH
          { UNSG32 u32;
            struct w32dHubChannelLite_FLUSH;
                 } T32dHubChannelLite_FLUSH;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubChannelLite_CFG
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_CFG;
                   };
                 } TdHubChannelLite_CFG;
    typedef union  TdHubChannelLite_AWQOS
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_AWQOS;
                   };
                 } TdHubChannelLite_AWQOS;
    typedef union  TdHubChannelLite_ARQOS
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_ARQOS;
                   };
                 } TdHubChannelLite_ARQOS;
    typedef union  TdHubChannelLite_AXPROT_QOS
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_AXPROT_QOS;
                   };
                 } TdHubChannelLite_AXPROT_QOS;
    typedef union  TdHubChannelLite_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_START;
                   };
                 } TdHubChannelLite_START;
    typedef union  TdHubChannelLite_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_CLEAR;
                   };
                 } TdHubChannelLite_CLEAR;
    typedef union  TdHubChannelLite_FLUSH
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannelLite_FLUSH;
                   };
                 } TdHubChannelLite_FLUSH;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubChannelLite_drvrd(SIE_dHubChannelLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubChannelLite_drvwr(SIE_dHubChannelLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubChannelLite_reset(SIE_dHubChannelLite *p);
     SIGN32 dHubChannelLite_cmp  (SIE_dHubChannelLite *p, SIE_dHubChannelLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubChannelLite_check(p,pie,pfx,hLOG) dHubChannelLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubChannelLite_print(p,    pfx,hLOG) dHubChannelLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubChannelLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubRegLite             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 SemaHub              
///               $SemaHubLite         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                  
///               $HBOLite             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           
///               $dHubChannelLite     channelCtl        REG      [16]
///                                    ###
///                                    * Up-to 16 channels
///                                    ###
///     @ 0x00CC0 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...
///     @ 0x00CC4 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...
///     @ 0x00CC8 busRstEn             (RW-)
///               %unsigned 1  reg                       0x0
///                                    ###
///                                    * Write one to this register will trigger gate-keeper to take over the AXI bus.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00CCC 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...
///     @ 0x00CD0 flowCtl              (P)
///               %unsigned 8  rAlpha                    0x0
///               %unsigned 8  wAlpha                    0x0
///                                    ###
///                                    * Flow control parameter for read and write axi master.
///                                    * clkCnt=(alpha*bstLen)>>8.
///                                    * 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...
///     @ 0x00CD4 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
///                                    ###
///     @ 0x00CD8                      (W-)
///     #         # Stuffing bytes...
///               %% 320
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    3328B, bits:    3586b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubRegLite
#define h_dHubRegLite (){}

    #define     RA_dHubRegLite_SemaHub                         0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_HBO                             0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_ARR                             0x0B00
    #define     RA_dHubRegLite_channelCtl                      0x0B00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_BUSY                            0x0CC0

    #define     BA_dHubRegLite_BUSY_ST                         0x0CC0
    #define     B16dHubRegLite_BUSY_ST                         0x0CC0
    #define   LSb32dHubRegLite_BUSY_ST                            0
    #define   LSb16dHubRegLite_BUSY_ST                            0
    #define       bdHubRegLite_BUSY_ST                         16
    #define   MSK32dHubRegLite_BUSY_ST                            0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_PENDING                         0x0CC4

    #define     BA_dHubRegLite_PENDING_ST                      0x0CC4
    #define     B16dHubRegLite_PENDING_ST                      0x0CC4
    #define   LSb32dHubRegLite_PENDING_ST                         0
    #define   LSb16dHubRegLite_PENDING_ST                         0
    #define       bdHubRegLite_PENDING_ST                      16
    #define   MSK32dHubRegLite_PENDING_ST                         0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_busRstEn                        0x0CC8

    #define     BA_dHubRegLite_busRstEn_reg                    0x0CC8
    #define     B16dHubRegLite_busRstEn_reg                    0x0CC8
    #define   LSb32dHubRegLite_busRstEn_reg                       0
    #define   LSb16dHubRegLite_busRstEn_reg                       0
    #define       bdHubRegLite_busRstEn_reg                    1
    #define   MSK32dHubRegLite_busRstEn_reg                       0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_busRstDone                      0x0CCC

    #define     BA_dHubRegLite_busRstDone_reg                  0x0CCC
    #define     B16dHubRegLite_busRstDone_reg                  0x0CCC
    #define   LSb32dHubRegLite_busRstDone_reg                     0
    #define   LSb16dHubRegLite_busRstDone_reg                     0
    #define       bdHubRegLite_busRstDone_reg                  1
    #define   MSK32dHubRegLite_busRstDone_reg                     0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_flowCtl                         0x0CD0

    #define     BA_dHubRegLite_flowCtl_rAlpha                  0x0CD0
    #define     B16dHubRegLite_flowCtl_rAlpha                  0x0CD0
    #define   LSb32dHubRegLite_flowCtl_rAlpha                     0
    #define   LSb16dHubRegLite_flowCtl_rAlpha                     0
    #define       bdHubRegLite_flowCtl_rAlpha                  8
    #define   MSK32dHubRegLite_flowCtl_rAlpha                     0x000000FF

    #define     BA_dHubRegLite_flowCtl_wAlpha                  0x0CD1
    #define     B16dHubRegLite_flowCtl_wAlpha                  0x0CD0
    #define   LSb32dHubRegLite_flowCtl_wAlpha                     8
    #define   LSb16dHubRegLite_flowCtl_wAlpha                     8
    #define       bdHubRegLite_flowCtl_wAlpha                  8
    #define   MSK32dHubRegLite_flowCtl_wAlpha                     0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubRegLite_axiCmdCol                       0x0CD4

    #define     BA_dHubRegLite_axiCmdCol_rCnt                  0x0CD4
    #define     B16dHubRegLite_axiCmdCol_rCnt                  0x0CD4
    #define   LSb32dHubRegLite_axiCmdCol_rCnt                     0
    #define   LSb16dHubRegLite_axiCmdCol_rCnt                     0
    #define       bdHubRegLite_axiCmdCol_rCnt                  16
    #define   MSK32dHubRegLite_axiCmdCol_rCnt                     0x0000FFFF

    #define     BA_dHubRegLite_axiCmdCol_wCnt                  0x0CD6
    #define     B16dHubRegLite_axiCmdCol_wCnt                  0x0CD6
    #define   LSb32dHubRegLite_axiCmdCol_wCnt                     16
    #define   LSb16dHubRegLite_axiCmdCol_wCnt                     0
    #define       bdHubRegLite_axiCmdCol_wCnt                  16
    #define   MSK32dHubRegLite_axiCmdCol_wCnt                     0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubRegLite {
    ///////////////////////////////////////////////////////////
              SIE_SemaHubLite                                  ie_SemaHub;
    ///////////////////////////////////////////////////////////
              SIE_HBOLite                                      ie_HBO;
    ///////////////////////////////////////////////////////////
              SIE_dHubChannelLite                              ie_channelCtl[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubRegLite_BUSY_ST(r32)                    _BFGET_(r32,15, 0)
    #define   SET32dHubRegLite_BUSY_ST(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16dHubRegLite_BUSY_ST(r16)                    _BFGET_(r16,15, 0)
    #define   SET16dHubRegLite_BUSY_ST(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32dHubRegLite_BUSY                            {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDxCC0_b16                                : 16;\
          }
    union { UNSG32 u32dHubRegLite_BUSY;
            struct w32dHubRegLite_BUSY;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubRegLite_PENDING_ST(r32)                 _BFGET_(r32,15, 0)
    #define   SET32dHubRegLite_PENDING_ST(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16dHubRegLite_PENDING_ST(r16)                 _BFGET_(r16,15, 0)
    #define   SET16dHubRegLite_PENDING_ST(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32dHubRegLite_PENDING                         {\
            UNSG32 uPENDING_ST                                 : 16;\
            UNSG32 RSVDxCC4_b16                                : 16;\
          }
    union { UNSG32 u32dHubRegLite_PENDING;
            struct w32dHubRegLite_PENDING;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubRegLite_busRstEn_reg(r32)               _BFGET_(r32, 0, 0)
    #define   SET32dHubRegLite_busRstEn_reg(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16dHubRegLite_busRstEn_reg(r16)               _BFGET_(r16, 0, 0)
    #define   SET16dHubRegLite_busRstEn_reg(r16,v)             _BFSET_(r16, 0, 0,v)

    #define     w32dHubRegLite_busRstEn                        {\
            UNSG32 ubusRstEn_reg                               :  1;\
            UNSG32 RSVDxCC8_b1                                 : 31;\
          }
    union { UNSG32 u32dHubRegLite_busRstEn;
            struct w32dHubRegLite_busRstEn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubRegLite_busRstDone_reg(r32)             _BFGET_(r32, 0, 0)
    #define   SET32dHubRegLite_busRstDone_reg(r32,v)           _BFSET_(r32, 0, 0,v)
    #define   GET16dHubRegLite_busRstDone_reg(r16)             _BFGET_(r16, 0, 0)
    #define   SET16dHubRegLite_busRstDone_reg(r16,v)           _BFSET_(r16, 0, 0,v)

    #define     w32dHubRegLite_busRstDone                      {\
            UNSG32 ubusRstDone_reg                             :  1;\
            UNSG32 RSVDxCCC_b1                                 : 31;\
          }
    union { UNSG32 u32dHubRegLite_busRstDone;
            struct w32dHubRegLite_busRstDone;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubRegLite_flowCtl_rAlpha(r32)             _BFGET_(r32, 7, 0)
    #define   SET32dHubRegLite_flowCtl_rAlpha(r32,v)           _BFSET_(r32, 7, 0,v)
    #define   GET16dHubRegLite_flowCtl_rAlpha(r16)             _BFGET_(r16, 7, 0)
    #define   SET16dHubRegLite_flowCtl_rAlpha(r16,v)           _BFSET_(r16, 7, 0,v)

    #define   GET32dHubRegLite_flowCtl_wAlpha(r32)             _BFGET_(r32,15, 8)
    #define   SET32dHubRegLite_flowCtl_wAlpha(r32,v)           _BFSET_(r32,15, 8,v)
    #define   GET16dHubRegLite_flowCtl_wAlpha(r16)             _BFGET_(r16,15, 8)
    #define   SET16dHubRegLite_flowCtl_wAlpha(r16,v)           _BFSET_(r16,15, 8,v)

    #define     w32dHubRegLite_flowCtl                         {\
            UNSG32 uflowCtl_rAlpha                             :  8;\
            UNSG32 uflowCtl_wAlpha                             :  8;\
            UNSG32 RSVDxCD0_b16                                : 16;\
          }
    union { UNSG32 u32dHubRegLite_flowCtl;
            struct w32dHubRegLite_flowCtl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubRegLite_axiCmdCol_rCnt(r32)             _BFGET_(r32,15, 0)
    #define   SET32dHubRegLite_axiCmdCol_rCnt(r32,v)           _BFSET_(r32,15, 0,v)
    #define   GET16dHubRegLite_axiCmdCol_rCnt(r16)             _BFGET_(r16,15, 0)
    #define   SET16dHubRegLite_axiCmdCol_rCnt(r16,v)           _BFSET_(r16,15, 0,v)

    #define   GET32dHubRegLite_axiCmdCol_wCnt(r32)             _BFGET_(r32,31,16)
    #define   SET32dHubRegLite_axiCmdCol_wCnt(r32,v)           _BFSET_(r32,31,16,v)
    #define   GET16dHubRegLite_axiCmdCol_wCnt(r16)             _BFGET_(r16,15, 0)
    #define   SET16dHubRegLite_axiCmdCol_wCnt(r16,v)           _BFSET_(r16,15, 0,v)

    #define     w32dHubRegLite_axiCmdCol                       {\
            UNSG32 uaxiCmdCol_rCnt                             : 16;\
            UNSG32 uaxiCmdCol_wCnt                             : 16;\
          }
    union { UNSG32 u32dHubRegLite_axiCmdCol;
            struct w32dHubRegLite_axiCmdCol;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxCD8                                    [40];
    ///////////////////////////////////////////////////////////
    } SIE_dHubRegLite;

    typedef union  T32dHubRegLite_BUSY
          { UNSG32 u32;
            struct w32dHubRegLite_BUSY;
                 } T32dHubRegLite_BUSY;
    typedef union  T32dHubRegLite_PENDING
          { UNSG32 u32;
            struct w32dHubRegLite_PENDING;
                 } T32dHubRegLite_PENDING;
    typedef union  T32dHubRegLite_busRstEn
          { UNSG32 u32;
            struct w32dHubRegLite_busRstEn;
                 } T32dHubRegLite_busRstEn;
    typedef union  T32dHubRegLite_busRstDone
          { UNSG32 u32;
            struct w32dHubRegLite_busRstDone;
                 } T32dHubRegLite_busRstDone;
    typedef union  T32dHubRegLite_flowCtl
          { UNSG32 u32;
            struct w32dHubRegLite_flowCtl;
                 } T32dHubRegLite_flowCtl;
    typedef union  T32dHubRegLite_axiCmdCol
          { UNSG32 u32;
            struct w32dHubRegLite_axiCmdCol;
                 } T32dHubRegLite_axiCmdCol;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubRegLite_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubRegLite_BUSY;
                   };
                 } TdHubRegLite_BUSY;
    typedef union  TdHubRegLite_PENDING
          { UNSG32 u32[1];
            struct {
            struct w32dHubRegLite_PENDING;
                   };
                 } TdHubRegLite_PENDING;
    typedef union  TdHubRegLite_busRstEn
          { UNSG32 u32[1];
            struct {
            struct w32dHubRegLite_busRstEn;
                   };
                 } TdHubRegLite_busRstEn;
    typedef union  TdHubRegLite_busRstDone
          { UNSG32 u32[1];
            struct {
            struct w32dHubRegLite_busRstDone;
                   };
                 } TdHubRegLite_busRstDone;
    typedef union  TdHubRegLite_flowCtl
          { UNSG32 u32[1];
            struct {
            struct w32dHubRegLite_flowCtl;
                   };
                 } TdHubRegLite_flowCtl;
    typedef union  TdHubRegLite_axiCmdCol
          { UNSG32 u32[1];
            struct {
            struct w32dHubRegLite_axiCmdCol;
                   };
                 } TdHubRegLite_axiCmdCol;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubRegLite_drvrd(SIE_dHubRegLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubRegLite_drvwr(SIE_dHubRegLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubRegLite_reset(SIE_dHubRegLite *p);
     SIGN32 dHubRegLite_cmp  (SIE_dHubRegLite *p, SIE_dHubRegLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubRegLite_check(p,pie,pfx,hLOG) dHubRegLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubRegLite_print(p,    pfx,hLOG) dHubRegLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubRegLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmd2DLite           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                  
///               $dHubCmdHDRLite      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:     190b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmd2DLite
#define h_dHubCmd2DLite (){}

    #define     RA_dHubCmd2DLite_MEM                           0x0000

    #define     BA_dHubCmd2DLite_MEM_addr                      0x0000
    #define     B16dHubCmd2DLite_MEM_addr                      0x0000
    #define   LSb32dHubCmd2DLite_MEM_addr                         0
    #define   LSb16dHubCmd2DLite_MEM_addr                         0
    #define       bdHubCmd2DLite_MEM_addr                      32
    #define   MSK32dHubCmd2DLite_MEM_addr                         0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2DLite_DESC                          0x0004

    #define     BA_dHubCmd2DLite_DESC_stride                   0x0004
    #define     B16dHubCmd2DLite_DESC_stride                   0x0004
    #define   LSb32dHubCmd2DLite_DESC_stride                      0
    #define   LSb16dHubCmd2DLite_DESC_stride                      0
    #define       bdHubCmd2DLite_DESC_stride                   16
    #define   MSK32dHubCmd2DLite_DESC_stride                      0x0000FFFF

    #define     BA_dHubCmd2DLite_DESC_numLine                  0x0006
    #define     B16dHubCmd2DLite_DESC_numLine                  0x0006
    #define   LSb32dHubCmd2DLite_DESC_numLine                     16
    #define   LSb16dHubCmd2DLite_DESC_numLine                     0
    #define       bdHubCmd2DLite_DESC_numLine                  13
    #define   MSK32dHubCmd2DLite_DESC_numLine                     0x1FFF0000

    #define     BA_dHubCmd2DLite_DESC_hdrLoop                  0x0007
    #define     B16dHubCmd2DLite_DESC_hdrLoop                  0x0006
    #define   LSb32dHubCmd2DLite_DESC_hdrLoop                     29
    #define   LSb16dHubCmd2DLite_DESC_hdrLoop                     13
    #define       bdHubCmd2DLite_DESC_hdrLoop                  2
    #define   MSK32dHubCmd2DLite_DESC_hdrLoop                     0x60000000

    #define     BA_dHubCmd2DLite_DESC_interrupt                0x0007
    #define     B16dHubCmd2DLite_DESC_interrupt                0x0006
    #define   LSb32dHubCmd2DLite_DESC_interrupt                   31
    #define   LSb16dHubCmd2DLite_DESC_interrupt                   15
    #define       bdHubCmd2DLite_DESC_interrupt                1
    #define   MSK32dHubCmd2DLite_DESC_interrupt                   0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2DLite_START                         0x0008

    #define     BA_dHubCmd2DLite_START_EN                      0x0008
    #define     B16dHubCmd2DLite_START_EN                      0x0008
    #define   LSb32dHubCmd2DLite_START_EN                         0
    #define   LSb16dHubCmd2DLite_START_EN                         0
    #define       bdHubCmd2DLite_START_EN                      1
    #define   MSK32dHubCmd2DLite_START_EN                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2DLite_CLEAR                         0x000C

    #define     BA_dHubCmd2DLite_CLEAR_EN                      0x000C
    #define     B16dHubCmd2DLite_CLEAR_EN                      0x000C
    #define   LSb32dHubCmd2DLite_CLEAR_EN                         0
    #define   LSb16dHubCmd2DLite_CLEAR_EN                         0
    #define       bdHubCmd2DLite_CLEAR_EN                      1
    #define   MSK32dHubCmd2DLite_CLEAR_EN                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2DLite_HDR                           0x0010
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmd2DLite {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2DLite_MEM_addr(r32)                 _BFGET_(r32,31, 0)
    #define   SET32dHubCmd2DLite_MEM_addr(r32,v)               _BFSET_(r32,31, 0,v)

    #define     w32dHubCmd2DLite_MEM                           {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmd2DLite_MEM;
            struct w32dHubCmd2DLite_MEM;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2DLite_DESC_stride(r32)              _BFGET_(r32,15, 0)
    #define   SET32dHubCmd2DLite_DESC_stride(r32,v)            _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmd2DLite_DESC_stride(r16)              _BFGET_(r16,15, 0)
    #define   SET16dHubCmd2DLite_DESC_stride(r16,v)            _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmd2DLite_DESC_numLine(r32)             _BFGET_(r32,28,16)
    #define   SET32dHubCmd2DLite_DESC_numLine(r32,v)           _BFSET_(r32,28,16,v)
    #define   GET16dHubCmd2DLite_DESC_numLine(r16)             _BFGET_(r16,12, 0)
    #define   SET16dHubCmd2DLite_DESC_numLine(r16,v)           _BFSET_(r16,12, 0,v)

    #define   GET32dHubCmd2DLite_DESC_hdrLoop(r32)             _BFGET_(r32,30,29)
    #define   SET32dHubCmd2DLite_DESC_hdrLoop(r32,v)           _BFSET_(r32,30,29,v)
    #define   GET16dHubCmd2DLite_DESC_hdrLoop(r16)             _BFGET_(r16,14,13)
    #define   SET16dHubCmd2DLite_DESC_hdrLoop(r16,v)           _BFSET_(r16,14,13,v)

    #define   GET32dHubCmd2DLite_DESC_interrupt(r32)           _BFGET_(r32,31,31)
    #define   SET32dHubCmd2DLite_DESC_interrupt(r32,v)         _BFSET_(r32,31,31,v)
    #define   GET16dHubCmd2DLite_DESC_interrupt(r16)           _BFGET_(r16,15,15)
    #define   SET16dHubCmd2DLite_DESC_interrupt(r16,v)         _BFSET_(r16,15,15,v)

    #define     w32dHubCmd2DLite_DESC                          {\
            UNSG32 uDESC_stride                                : 16;\
            UNSG32 uDESC_numLine                               : 13;\
            UNSG32 uDESC_hdrLoop                               :  2;\
            UNSG32 uDESC_interrupt                             :  1;\
          }
    union { UNSG32 u32dHubCmd2DLite_DESC;
            struct w32dHubCmd2DLite_DESC;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2DLite_START_EN(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2DLite_START_EN(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2DLite_START_EN(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2DLite_START_EN(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2DLite_START                         {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32dHubCmd2DLite_START;
            struct w32dHubCmd2DLite_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2DLite_CLEAR_EN(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2DLite_CLEAR_EN(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2DLite_CLEAR_EN(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2DLite_CLEAR_EN(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2DLite_CLEAR                         {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32dHubCmd2DLite_CLEAR;
            struct w32dHubCmd2DLite_CLEAR;
          };
    ///////////////////////////////////////////////////////////
              SIE_dHubCmdHDRLite                               ie_HDR[4];
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmd2DLite;

    typedef union  T32dHubCmd2DLite_MEM
          { UNSG32 u32;
            struct w32dHubCmd2DLite_MEM;
                 } T32dHubCmd2DLite_MEM;
    typedef union  T32dHubCmd2DLite_DESC
          { UNSG32 u32;
            struct w32dHubCmd2DLite_DESC;
                 } T32dHubCmd2DLite_DESC;
    typedef union  T32dHubCmd2DLite_START
          { UNSG32 u32;
            struct w32dHubCmd2DLite_START;
                 } T32dHubCmd2DLite_START;
    typedef union  T32dHubCmd2DLite_CLEAR
          { UNSG32 u32;
            struct w32dHubCmd2DLite_CLEAR;
                 } T32dHubCmd2DLite_CLEAR;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmd2DLite_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2DLite_MEM;
                   };
                 } TdHubCmd2DLite_MEM;
    typedef union  TdHubCmd2DLite_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2DLite_DESC;
                   };
                 } TdHubCmd2DLite_DESC;
    typedef union  TdHubCmd2DLite_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2DLite_START;
                   };
                 } TdHubCmd2DLite_START;
    typedef union  TdHubCmd2DLite_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2DLite_CLEAR;
                   };
                 } TdHubCmd2DLite_CLEAR;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd2DLite_drvrd(SIE_dHubCmd2DLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd2DLite_drvwr(SIE_dHubCmd2DLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd2DLite_reset(SIE_dHubCmd2DLite *p);
     SIGN32 dHubCmd2DLite_cmp  (SIE_dHubCmd2DLite *p, SIE_dHubCmd2DLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd2DLite_check(p,pie,pfx,hLOG) dHubCmd2DLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd2DLite_print(p,    pfx,hLOG) dHubCmd2DLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd2DLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmd2NDLite          biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 MEM                  (W-)
///               %unsigned 32 addr                      0x0
///                                    ###
///                                    * DRAM data address of the 2D buffer, in bytes.
///                                    ###
///     @ 0x00004 DESC                 (W-)
///               %unsigned 16 burst                     0x1
///                                    ###
///                                    * Number of bytes to transfer per step.
///                                    * Value of 0 is invalid and treated as 1
///                                    * Equivalent to dHubCmdHDR.size
///                                    ###
///               %unsigned 5  chkSemId                  0x0
///                                    ###
///                                    * 0: Semaphore check is disabled
///                                    * ID: ID of semaphore to check for the first command sent out by 2ND engine
///                                    ###
///               %unsigned 5  updSemId                  0x0
///                                    ###
///                                    * 0: Semaphore update is disabled
///                                    * ID: ID of semaphore to update for the last command sent out by 2ND engine
///                                    ###
///               %unsigned 1  interrupt                 0x0
///                                    ###
///                                    * 1: raise interrupt upon whole 2D command finish.
///                                    * 0 : no interrupt
///                                    * Equivalent to setting dHubCmdHDR.interrupt on the last 2D command.
///                                    ###
///               %unsigned 1  dis_chk                   0x0
///                                    ###
///                                    * 0: chkSemId operates as normal, AxUser[4:0] = 0
///                                    * 1: Disables chkSemId, sends the 5 bit field in chkSemID out on AxUser[4:0]
///                                    ###
///               %unsigned 1  dis_upd                   0x0
///                                    ###
///                                    * 0: updSemId operates as normal, AxUser[9:5] = 0
///                                    * 1: Disables updSemId, sends the 5 bit field in updSemID out on AxUser[9:5]
///                                    ###
///               %%        3          # Stuffing bits...
///     @ 0x00008 DESC_1D_ST           (W-)
///               %unsigned 24 step                      0x1
///                                    ###
///                                    * Number of bytes to step per address.
///                                    * Signed 24-bit 2's complement number
///                                    * -8M to +8M
///                                    * Value of 0 is invalid and treated as 1
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x0000C DESC_1D_SZ           (W-)
///               %unsigned 24 size                      0x1
///                                    ###
///                                    * Number of steps per dimension
///                                    * Value of 0 is invalid and treated as 1
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x00010 DESC_2D_ST           (W-)
///               %unsigned 24 step                      0x1
///                                    ###
///                                    * Number of bytes to step per address.
///                                    * Signed 24-bit 2's complement number
///                                    * -8M to +8M
///                                    * Value of 0 is invalid and treated as 1
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x00014 DESC_2D_SZ           (W-)
///               %unsigned 24 size                      0x1
///                                    ###
///                                    * Number of steps per dimension
///                                    * Value of 0 is invalid and treated as 1
///                                    ###
///               %%        8          # Stuffing bits...
///     @ 0x00018 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to enable the channel. Will step through full 2D buffer till done (!busy)
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0001C CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the 2D engine.
///                                    * end dHubCmd2ND
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     159b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmd2NDLite
#define h_dHubCmd2NDLite (){}

    #define     RA_dHubCmd2NDLite_MEM                          0x0000

    #define     BA_dHubCmd2NDLite_MEM_addr                     0x0000
    #define     B16dHubCmd2NDLite_MEM_addr                     0x0000
    #define   LSb32dHubCmd2NDLite_MEM_addr                        0
    #define   LSb16dHubCmd2NDLite_MEM_addr                        0
    #define       bdHubCmd2NDLite_MEM_addr                     32
    #define   MSK32dHubCmd2NDLite_MEM_addr                        0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_DESC                         0x0004

    #define     BA_dHubCmd2NDLite_DESC_burst                   0x0004
    #define     B16dHubCmd2NDLite_DESC_burst                   0x0004
    #define   LSb32dHubCmd2NDLite_DESC_burst                      0
    #define   LSb16dHubCmd2NDLite_DESC_burst                      0
    #define       bdHubCmd2NDLite_DESC_burst                   16
    #define   MSK32dHubCmd2NDLite_DESC_burst                      0x0000FFFF

    #define     BA_dHubCmd2NDLite_DESC_chkSemId                0x0006
    #define     B16dHubCmd2NDLite_DESC_chkSemId                0x0006
    #define   LSb32dHubCmd2NDLite_DESC_chkSemId                   16
    #define   LSb16dHubCmd2NDLite_DESC_chkSemId                   0
    #define       bdHubCmd2NDLite_DESC_chkSemId                5
    #define   MSK32dHubCmd2NDLite_DESC_chkSemId                   0x001F0000

    #define     BA_dHubCmd2NDLite_DESC_updSemId                0x0006
    #define     B16dHubCmd2NDLite_DESC_updSemId                0x0006
    #define   LSb32dHubCmd2NDLite_DESC_updSemId                   21
    #define   LSb16dHubCmd2NDLite_DESC_updSemId                   5
    #define       bdHubCmd2NDLite_DESC_updSemId                5
    #define   MSK32dHubCmd2NDLite_DESC_updSemId                   0x03E00000

    #define     BA_dHubCmd2NDLite_DESC_interrupt               0x0007
    #define     B16dHubCmd2NDLite_DESC_interrupt               0x0006
    #define   LSb32dHubCmd2NDLite_DESC_interrupt                  26
    #define   LSb16dHubCmd2NDLite_DESC_interrupt                  10
    #define       bdHubCmd2NDLite_DESC_interrupt               1
    #define   MSK32dHubCmd2NDLite_DESC_interrupt                  0x04000000

    #define     BA_dHubCmd2NDLite_DESC_dis_chk                 0x0007
    #define     B16dHubCmd2NDLite_DESC_dis_chk                 0x0006
    #define   LSb32dHubCmd2NDLite_DESC_dis_chk                    27
    #define   LSb16dHubCmd2NDLite_DESC_dis_chk                    11
    #define       bdHubCmd2NDLite_DESC_dis_chk                 1
    #define   MSK32dHubCmd2NDLite_DESC_dis_chk                    0x08000000

    #define     BA_dHubCmd2NDLite_DESC_dis_upd                 0x0007
    #define     B16dHubCmd2NDLite_DESC_dis_upd                 0x0006
    #define   LSb32dHubCmd2NDLite_DESC_dis_upd                    28
    #define   LSb16dHubCmd2NDLite_DESC_dis_upd                    12
    #define       bdHubCmd2NDLite_DESC_dis_upd                 1
    #define   MSK32dHubCmd2NDLite_DESC_dis_upd                    0x10000000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_DESC_1D_ST                   0x0008

    #define     BA_dHubCmd2NDLite_DESC_1D_ST_step              0x0008
    #define     B16dHubCmd2NDLite_DESC_1D_ST_step              0x0008
    #define   LSb32dHubCmd2NDLite_DESC_1D_ST_step                 0
    #define   LSb16dHubCmd2NDLite_DESC_1D_ST_step                 0
    #define       bdHubCmd2NDLite_DESC_1D_ST_step              24
    #define   MSK32dHubCmd2NDLite_DESC_1D_ST_step                 0x00FFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_DESC_1D_SZ                   0x000C

    #define     BA_dHubCmd2NDLite_DESC_1D_SZ_size              0x000C
    #define     B16dHubCmd2NDLite_DESC_1D_SZ_size              0x000C
    #define   LSb32dHubCmd2NDLite_DESC_1D_SZ_size                 0
    #define   LSb16dHubCmd2NDLite_DESC_1D_SZ_size                 0
    #define       bdHubCmd2NDLite_DESC_1D_SZ_size              24
    #define   MSK32dHubCmd2NDLite_DESC_1D_SZ_size                 0x00FFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_DESC_2D_ST                   0x0010

    #define     BA_dHubCmd2NDLite_DESC_2D_ST_step              0x0010
    #define     B16dHubCmd2NDLite_DESC_2D_ST_step              0x0010
    #define   LSb32dHubCmd2NDLite_DESC_2D_ST_step                 0
    #define   LSb16dHubCmd2NDLite_DESC_2D_ST_step                 0
    #define       bdHubCmd2NDLite_DESC_2D_ST_step              24
    #define   MSK32dHubCmd2NDLite_DESC_2D_ST_step                 0x00FFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_DESC_2D_SZ                   0x0014

    #define     BA_dHubCmd2NDLite_DESC_2D_SZ_size              0x0014
    #define     B16dHubCmd2NDLite_DESC_2D_SZ_size              0x0014
    #define   LSb32dHubCmd2NDLite_DESC_2D_SZ_size                 0
    #define   LSb16dHubCmd2NDLite_DESC_2D_SZ_size                 0
    #define       bdHubCmd2NDLite_DESC_2D_SZ_size              24
    #define   MSK32dHubCmd2NDLite_DESC_2D_SZ_size                 0x00FFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_START                        0x0018

    #define     BA_dHubCmd2NDLite_START_EN                     0x0018
    #define     B16dHubCmd2NDLite_START_EN                     0x0018
    #define   LSb32dHubCmd2NDLite_START_EN                        0
    #define   LSb16dHubCmd2NDLite_START_EN                        0
    #define       bdHubCmd2NDLite_START_EN                     1
    #define   MSK32dHubCmd2NDLite_START_EN                        0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2NDLite_CLEAR                        0x001C

    #define     BA_dHubCmd2NDLite_CLEAR_EN                     0x001C
    #define     B16dHubCmd2NDLite_CLEAR_EN                     0x001C
    #define   LSb32dHubCmd2NDLite_CLEAR_EN                        0
    #define   LSb16dHubCmd2NDLite_CLEAR_EN                        0
    #define       bdHubCmd2NDLite_CLEAR_EN                     1
    #define   MSK32dHubCmd2NDLite_CLEAR_EN                        0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmd2NDLite {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_MEM_addr(r32)                _BFGET_(r32,31, 0)
    #define   SET32dHubCmd2NDLite_MEM_addr(r32,v)              _BFSET_(r32,31, 0,v)

    #define     w32dHubCmd2NDLite_MEM                          {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmd2NDLite_MEM;
            struct w32dHubCmd2NDLite_MEM;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_DESC_burst(r32)              _BFGET_(r32,15, 0)
    #define   SET32dHubCmd2NDLite_DESC_burst(r32,v)            _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmd2NDLite_DESC_burst(r16)              _BFGET_(r16,15, 0)
    #define   SET16dHubCmd2NDLite_DESC_burst(r16,v)            _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmd2NDLite_DESC_chkSemId(r32)           _BFGET_(r32,20,16)
    #define   SET32dHubCmd2NDLite_DESC_chkSemId(r32,v)         _BFSET_(r32,20,16,v)
    #define   GET16dHubCmd2NDLite_DESC_chkSemId(r16)           _BFGET_(r16, 4, 0)
    #define   SET16dHubCmd2NDLite_DESC_chkSemId(r16,v)         _BFSET_(r16, 4, 0,v)

    #define   GET32dHubCmd2NDLite_DESC_updSemId(r32)           _BFGET_(r32,25,21)
    #define   SET32dHubCmd2NDLite_DESC_updSemId(r32,v)         _BFSET_(r32,25,21,v)
    #define   GET16dHubCmd2NDLite_DESC_updSemId(r16)           _BFGET_(r16, 9, 5)
    #define   SET16dHubCmd2NDLite_DESC_updSemId(r16,v)         _BFSET_(r16, 9, 5,v)

    #define   GET32dHubCmd2NDLite_DESC_interrupt(r32)          _BFGET_(r32,26,26)
    #define   SET32dHubCmd2NDLite_DESC_interrupt(r32,v)        _BFSET_(r32,26,26,v)
    #define   GET16dHubCmd2NDLite_DESC_interrupt(r16)          _BFGET_(r16,10,10)
    #define   SET16dHubCmd2NDLite_DESC_interrupt(r16,v)        _BFSET_(r16,10,10,v)

    #define   GET32dHubCmd2NDLite_DESC_dis_chk(r32)            _BFGET_(r32,27,27)
    #define   SET32dHubCmd2NDLite_DESC_dis_chk(r32,v)          _BFSET_(r32,27,27,v)
    #define   GET16dHubCmd2NDLite_DESC_dis_chk(r16)            _BFGET_(r16,11,11)
    #define   SET16dHubCmd2NDLite_DESC_dis_chk(r16,v)          _BFSET_(r16,11,11,v)

    #define   GET32dHubCmd2NDLite_DESC_dis_upd(r32)            _BFGET_(r32,28,28)
    #define   SET32dHubCmd2NDLite_DESC_dis_upd(r32,v)          _BFSET_(r32,28,28,v)
    #define   GET16dHubCmd2NDLite_DESC_dis_upd(r16)            _BFGET_(r16,12,12)
    #define   SET16dHubCmd2NDLite_DESC_dis_upd(r16,v)          _BFSET_(r16,12,12,v)

    #define     w32dHubCmd2NDLite_DESC                         {\
            UNSG32 uDESC_burst                                 : 16;\
            UNSG32 uDESC_chkSemId                              :  5;\
            UNSG32 uDESC_updSemId                              :  5;\
            UNSG32 uDESC_interrupt                             :  1;\
            UNSG32 uDESC_dis_chk                               :  1;\
            UNSG32 uDESC_dis_upd                               :  1;\
            UNSG32 RSVDx4_b29                                  :  3;\
          }
    union { UNSG32 u32dHubCmd2NDLite_DESC;
            struct w32dHubCmd2NDLite_DESC;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_DESC_1D_ST_step(r32)         _BFGET_(r32,23, 0)
    #define   SET32dHubCmd2NDLite_DESC_1D_ST_step(r32,v)       _BFSET_(r32,23, 0,v)

    #define     w32dHubCmd2NDLite_DESC_1D_ST                   {\
            UNSG32 uDESC_1D_ST_step                            : 24;\
            UNSG32 RSVDx8_b24                                  :  8;\
          }
    union { UNSG32 u32dHubCmd2NDLite_DESC_1D_ST;
            struct w32dHubCmd2NDLite_DESC_1D_ST;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_DESC_1D_SZ_size(r32)         _BFGET_(r32,23, 0)
    #define   SET32dHubCmd2NDLite_DESC_1D_SZ_size(r32,v)       _BFSET_(r32,23, 0,v)

    #define     w32dHubCmd2NDLite_DESC_1D_SZ                   {\
            UNSG32 uDESC_1D_SZ_size                            : 24;\
            UNSG32 RSVDxC_b24                                  :  8;\
          }
    union { UNSG32 u32dHubCmd2NDLite_DESC_1D_SZ;
            struct w32dHubCmd2NDLite_DESC_1D_SZ;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_DESC_2D_ST_step(r32)         _BFGET_(r32,23, 0)
    #define   SET32dHubCmd2NDLite_DESC_2D_ST_step(r32,v)       _BFSET_(r32,23, 0,v)

    #define     w32dHubCmd2NDLite_DESC_2D_ST                   {\
            UNSG32 uDESC_2D_ST_step                            : 24;\
            UNSG32 RSVDx10_b24                                 :  8;\
          }
    union { UNSG32 u32dHubCmd2NDLite_DESC_2D_ST;
            struct w32dHubCmd2NDLite_DESC_2D_ST;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_DESC_2D_SZ_size(r32)         _BFGET_(r32,23, 0)
    #define   SET32dHubCmd2NDLite_DESC_2D_SZ_size(r32,v)       _BFSET_(r32,23, 0,v)

    #define     w32dHubCmd2NDLite_DESC_2D_SZ                   {\
            UNSG32 uDESC_2D_SZ_size                            : 24;\
            UNSG32 RSVDx14_b24                                 :  8;\
          }
    union { UNSG32 u32dHubCmd2NDLite_DESC_2D_SZ;
            struct w32dHubCmd2NDLite_DESC_2D_SZ;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_START_EN(r32)                _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2NDLite_START_EN(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2NDLite_START_EN(r16)                _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2NDLite_START_EN(r16,v)              _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2NDLite_START                        {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx18_b1                                  : 31;\
          }
    union { UNSG32 u32dHubCmd2NDLite_START;
            struct w32dHubCmd2NDLite_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2NDLite_CLEAR_EN(r32)                _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2NDLite_CLEAR_EN(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2NDLite_CLEAR_EN(r16)                _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2NDLite_CLEAR_EN(r16,v)              _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2NDLite_CLEAR                        {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx1C_b1                                  : 31;\
          }
    union { UNSG32 u32dHubCmd2NDLite_CLEAR;
            struct w32dHubCmd2NDLite_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmd2NDLite;

    typedef union  T32dHubCmd2NDLite_MEM
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_MEM;
                 } T32dHubCmd2NDLite_MEM;
    typedef union  T32dHubCmd2NDLite_DESC
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_DESC;
                 } T32dHubCmd2NDLite_DESC;
    typedef union  T32dHubCmd2NDLite_DESC_1D_ST
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_DESC_1D_ST;
                 } T32dHubCmd2NDLite_DESC_1D_ST;
    typedef union  T32dHubCmd2NDLite_DESC_1D_SZ
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_DESC_1D_SZ;
                 } T32dHubCmd2NDLite_DESC_1D_SZ;
    typedef union  T32dHubCmd2NDLite_DESC_2D_ST
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_DESC_2D_ST;
                 } T32dHubCmd2NDLite_DESC_2D_ST;
    typedef union  T32dHubCmd2NDLite_DESC_2D_SZ
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_DESC_2D_SZ;
                 } T32dHubCmd2NDLite_DESC_2D_SZ;
    typedef union  T32dHubCmd2NDLite_START
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_START;
                 } T32dHubCmd2NDLite_START;
    typedef union  T32dHubCmd2NDLite_CLEAR
          { UNSG32 u32;
            struct w32dHubCmd2NDLite_CLEAR;
                 } T32dHubCmd2NDLite_CLEAR;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmd2NDLite_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_MEM;
                   };
                 } TdHubCmd2NDLite_MEM;
    typedef union  TdHubCmd2NDLite_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_DESC;
                   };
                 } TdHubCmd2NDLite_DESC;
    typedef union  TdHubCmd2NDLite_DESC_1D_ST
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_DESC_1D_ST;
                   };
                 } TdHubCmd2NDLite_DESC_1D_ST;
    typedef union  TdHubCmd2NDLite_DESC_1D_SZ
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_DESC_1D_SZ;
                   };
                 } TdHubCmd2NDLite_DESC_1D_SZ;
    typedef union  TdHubCmd2NDLite_DESC_2D_ST
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_DESC_2D_ST;
                   };
                 } TdHubCmd2NDLite_DESC_2D_ST;
    typedef union  TdHubCmd2NDLite_DESC_2D_SZ
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_DESC_2D_SZ;
                   };
                 } TdHubCmd2NDLite_DESC_2D_SZ;
    typedef union  TdHubCmd2NDLite_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_START;
                   };
                 } TdHubCmd2NDLite_START;
    typedef union  TdHubCmd2NDLite_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2NDLite_CLEAR;
                   };
                 } TdHubCmd2NDLite_CLEAR;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd2NDLite_drvrd(SIE_dHubCmd2NDLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd2NDLite_drvwr(SIE_dHubCmd2NDLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd2NDLite_reset(SIE_dHubCmd2NDLite *p);
     SIGN32 dHubCmd2NDLite_cmp  (SIE_dHubCmd2NDLite *p, SIE_dHubCmd2NDLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd2NDLite_check(p,pie,pfx,hLOG) dHubCmd2NDLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd2NDLite_print(p,    pfx,hLOG) dHubCmd2NDLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd2NDLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubQueryLite                            (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_dHubQueryLite
#define h_dHubQueryLite (){}

    #define     RA_dHubQueryLite_RESP                          0x0000

    #define     BA_dHubQueryLite_RESP_ST                       0x0000
    #define     B16dHubQueryLite_RESP_ST                       0x0000
    #define   LSb32dHubQueryLite_RESP_ST                          0
    #define   LSb16dHubQueryLite_RESP_ST                          0
    #define       bdHubQueryLite_RESP_ST                       16
    #define   MSK32dHubQueryLite_RESP_ST                          0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubQueryLite {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubQueryLite_RESP_ST(r32)                  _BFGET_(r32,15, 0)
    #define   SET32dHubQueryLite_RESP_ST(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16dHubQueryLite_RESP_ST(r16)                  _BFGET_(r16,15, 0)
    #define   SET16dHubQueryLite_RESP_ST(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32dHubQueryLite_RESP                          {\
            UNSG32 uRESP_ST                                    : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32dHubQueryLite_RESP;
            struct w32dHubQueryLite_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubQueryLite;

    typedef union  T32dHubQueryLite_RESP
          { UNSG32 u32;
            struct w32dHubQueryLite_RESP;
                 } T32dHubQueryLite_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubQueryLite_RESP
          { UNSG32 u32[1];
            struct {
            struct w32dHubQueryLite_RESP;
                   };
                 } TdHubQueryLite_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubQueryLite_drvrd(SIE_dHubQueryLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubQueryLite_drvwr(SIE_dHubQueryLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubQueryLite_reset(SIE_dHubQueryLite *p);
     SIGN32 dHubQueryLite_cmp  (SIE_dHubQueryLite *p, SIE_dHubQueryLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubQueryLite_check(p,pie,pfx,hLOG) dHubQueryLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubQueryLite_print(p,    pfx,hLOG) dHubQueryLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubQueryLite
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubReg2DLite           biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 dHub                 
///               $dHubRegLite         dHub              REG          
///     @ 0x00D00 ARR                  (P)
///     # 0x00D00 Cmd2D                
///               $dHubCmd2DLite       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 ARR_2ND              (P)
///     # 0x00F00 Cmd2ND               
///               $dHubCmd2NDLite      Cmd2ND            REG      [16]
///                                    ###
///                                    * Up-to 16 2ND channels.
///                                    * 2ND Channel[N] is connected to dHub.Channel[N] command queue, that is, dHub.HBO.Channel[2N]
///                                    * Note: 2ND engines are instantiated in the same way as the old 2D engine. It is allowed to have multiple 1D, 2D and 2ND channels in a dHub. Restriction is each channel can only have one type.
///                                    ###
///     @ 0x01100 BUSY                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: no ongoing command is being processed
///                                    * 1: channel controller is busy
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x01104                      (W-)
///     #         # Stuffing bytes...
///               %% 480
///     @ 0x01140                      (P)
///     # 0x01140 CH_ST                
///               $dHubQueryLite       CH_ST             MEM      [16]
///                                    ###
///                                    * end dHubReg2D
///                                    ###
///     @ 0x01180                      (W-)
///     #         # Stuffing bytes...
///               %% 1024
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4608B, bits:    9218b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubReg2DLite
#define h_dHubReg2DLite (){}

    #define     RA_dHubReg2DLite_dHub                          0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2DLite_ARR                           0x0D00
    #define     RA_dHubReg2DLite_Cmd2D                         0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2DLite_ARR_2ND                       0x0F00
    #define     RA_dHubReg2DLite_Cmd2ND                        0x0F00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2DLite_BUSY                          0x1100

    #define     BA_dHubReg2DLite_BUSY_ST                       0x1100
    #define     B16dHubReg2DLite_BUSY_ST                       0x1100
    #define   LSb32dHubReg2DLite_BUSY_ST                          0
    #define   LSb16dHubReg2DLite_BUSY_ST                          0
    #define       bdHubReg2DLite_BUSY_ST                       16
    #define   MSK32dHubReg2DLite_BUSY_ST                          0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2DLite_CH_ST                         0x1140
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubReg2DLite {
    ///////////////////////////////////////////////////////////
              SIE_dHubRegLite                                  ie_dHub;
    ///////////////////////////////////////////////////////////
              SIE_dHubCmd2DLite                                ie_Cmd2D[16];
    ///////////////////////////////////////////////////////////
              SIE_dHubCmd2NDLite                               ie_Cmd2ND[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg2DLite_BUSY_ST(r32)                  _BFGET_(r32,15, 0)
    #define   SET32dHubReg2DLite_BUSY_ST(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg2DLite_BUSY_ST(r16)                  _BFGET_(r16,15, 0)
    #define   SET16dHubReg2DLite_BUSY_ST(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32dHubReg2DLite_BUSY                          {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDx1100_b16                               : 16;\
          }
    union { UNSG32 u32dHubReg2DLite_BUSY;
            struct w32dHubReg2DLite_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1104                                   [60];
    ///////////////////////////////////////////////////////////
              SIE_dHubQueryLite                                ie_CH_ST[16];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1180                                   [128];
    ///////////////////////////////////////////////////////////
    } SIE_dHubReg2DLite;

    typedef union  T32dHubReg2DLite_BUSY
          { UNSG32 u32;
            struct w32dHubReg2DLite_BUSY;
                 } T32dHubReg2DLite_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubReg2DLite_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg2DLite_BUSY;
                   };
                 } TdHubReg2DLite_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubReg2DLite_drvrd(SIE_dHubReg2DLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubReg2DLite_drvwr(SIE_dHubReg2DLite *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubReg2DLite_reset(SIE_dHubReg2DLite *p);
     SIGN32 dHubReg2DLite_cmp  (SIE_dHubReg2DLite *p, SIE_dHubReg2DLite *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubReg2DLite_check(p,pie,pfx,hLOG) dHubReg2DLite_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubReg2DLite_print(p,    pfx,hLOG) dHubReg2DLite_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubReg2DLite
////////////////////////////////////////////////////////////

//////
/// 
/// $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
///                                                 ###
///               %unsigned 1  itcm32BitMode             0x0
///                                    ###
///                                    * 0:16K word, each word only lower [23:0] bits is usable,[31:24] fix 0.
///                                    * 1:12K word, all bits are usable.
///                                    ###
///               %%        14         # 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:     524b, 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     BA_FigoReg_figoCtrl_itcm32BitMode              0x0002
    #define     B16FigoReg_figoCtrl_itcm32BitMode              0x0002
    #define   LSb32FigoReg_figoCtrl_itcm32BitMode                 17
    #define   LSb16FigoReg_figoCtrl_itcm32BitMode                 1
    #define       bFigoReg_figoCtrl_itcm32BitMode              1
    #define   MSK32FigoReg_figoCtrl_itcm32BitMode                 0x00020000
    ///////////////////////////////////////////////////////////
    #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   GET32FigoReg_figoCtrl_itcm32BitMode(r32)         _BFGET_(r32,17,17)
    #define   SET32FigoReg_figoCtrl_itcm32BitMode(r32,v)       _BFSET_(r32,17,17,v)
    #define   GET16FigoReg_figoCtrl_itcm32BitMode(r16)         _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoCtrl_itcm32BitMode(r16,v)       _BFSET_(r16, 1, 1,v)

    #define     w32FigoReg_figoCtrl                            {\
            UNSG32 ufigoCtrl_pcStartLoc                        : 16;\
            UNSG32 ufigoCtrl_tBufMode                          :  1;\
            UNSG32 ufigoCtrl_itcm32BitMode                     :  1;\
            UNSG32 RSVDx0_b18                                  : 14;\
          }
    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                 
///               $HBOLite             hbo0              REG          
///                                    ###
///                                    * **DONT_EXPAND_BELOW** HBO IP
///                                    ###
///     @ 0x00700 HBO1                 (P)
///     # 0x00700 hbo1                 
///               $HBOLite             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:    5020b, 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_HBOLite                                      ie_hbo0;
    ///////////////////////////////////////////////////////////
              SIE_HBOLite                                      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                 
///               $HBOLite             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:    2576b, 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_HBOLite                                      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 FigoDtcmExt          
///               $FigoData            FigoDtcmExt       MEM    [1024]
///     @ 0x0A000                      (P)
///     # 0x0A000 FigoReg              
///               $FigoSysBasic        FigoReg           REG          
///     @ 0x0D000                      (P)
///     # 0x0D000 PidTbl               
///               $TspPidTbl           PidTbl            MEM     [256]
///     @ 0x0D800                      (P)
///     # 0x0D800 Tsi0Reg              
///               $TspTsiReg           Tsi0Reg           REG          
///     @ 0x0D834                      (P)
///     # 0x0D834 Tsi1Reg              
///               $TspTsiReg           Tsi1Reg           REG          
///     @ 0x0D868                      (P)
///     # 0x0D868 Tsi2Reg              
///               $TspTsiReg           Tsi2Reg           REG          
///     @ 0x0D89C                      (P)
///     # 0x0D89C Tsi3Reg              
///               $TspTsiReg           Tsi3Reg           REG          
///     @ 0x0D8D0                      (P)
///     # 0x0D8D0 Tsi4Reg              
///               $TspTsiReg           Tsi4Reg           REG          
///     @ 0x0D904                      (P)
///     # 0x0D904 Tsi5Reg              
///               $TspTsiReg           Tsi5Reg           REG          
///     @ 0x0D938                      (P)
///     # 0x0D938 Tsi6Reg              
///               $TspTsiReg           Tsi6Reg           REG          
///     @ 0x0D96C                      (P)
///     # 0x0D96C Tsi7Reg              
///               $TspTsiReg           Tsi7Reg           REG          
///     @ 0x0D9A0                      (P)
///     # 0x0D9A0 Tsi8Reg              
///               $TspTsiReg           Tsi8Reg           REG          
///     @ 0x0D9D4                      (P)
///     # 0x0D9D4 Tsi9Reg              
///               $TspTsiReg           Tsi9Reg           REG          
///     @ 0x0DA08                      (P)
///     # 0x0DA08 Tsi10Reg             
///               $TspTsiReg           Tsi10Reg          REG          
///     @ 0x0DA3C                      (P)
///     # 0x0DA3C Tsi11Reg             
///               $TspTsiReg           Tsi11Reg          REG          
///     @ 0x0DA70                      (P)
///     # 0x0DA70 Tsi12Reg             
///               $TspTsiReg           Tsi12Reg          REG          
///     @ 0x0DAA4                      (P)
///     # 0x0DAA4 Tso0Reg              
///               $TspTsoReg           Tso0Reg           REG          
///     @ 0x0DABC                      (P)
///     # 0x0DABC Tso1Reg              
///               $TspTsoReg           Tso1Reg           REG          
///     @ 0x0DAD4                      (P)
///     # 0x0DAD4 SecReg               
///               $TspSecReg           SecReg            REG          
///     @ 0x0DB0C                      (P)
///     # 0x0DB0C CryReg               
///               $TspCryReg           CryReg            REG          
///     @ 0x0DB40                      (P)
///     # 0x0DB40 SwdReg               
///               $TspSwdReg           SwdReg            REG          
///     @ 0x0DB44                      (P)
///     # 0x0DB44 IntReg               
///               $TspIntReg           IntReg            REG          
///     @ 0x0DB78                      (W-)
///     #         # Stuffing bytes...
///               %% 9280
///     @ 0x0E000                      (P)
///     # 0x0E000 SecTbl               
///               $TspSecTbl           SecTbl            MEM    [2048]
///     @ 0x10000                      (P)
///     # 0x10000 FigoItcm             
///               $FigoInst            FigoItcm          MEM   [16384]
///     @ 0x20000                      (P)
///     # 0x20000 Figo1Dtcm            
///               $FigoData            Figo1Dtcm         MEM    [4096]
///     @ 0x28000                      (P)
///     # 0x28000 Figo1DtcmExt         
///               $FigoData            Figo1DtcmExt      MEM    [1024]
///     @ 0x2A000                      (P)
///     # 0x2A000 Figo1Reg             
///               $FigoSysBasic        Figo1Reg          REG          
///                                    ###
///                                    * 0x2d000 ~ 0x2ffff
///                                    * Alias of 0xd000 ~ 0xffff
///                                    ###
///     @ 0x2D000                      (W-)
///     #         # Stuffing bytes...
///               %% 98304
///     @ 0x30000                      (P)
///     # 0x30000 Figo1Itcm            
///               $FigoInst            Figo1Itcm         MEM   [16384]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:  262144B, bits:    9576b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TspReg
#define h_TspReg (){}

    #define     RA_TspReg_FigoDtcm                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_FigoDtcmExt                          0x8000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_FigoReg                              0xA000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_PidTbl                               0xD000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi0Reg                              0xD800
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi1Reg                              0xD834
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi2Reg                              0xD868
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi3Reg                              0xD89C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi4Reg                              0xD8D0
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi5Reg                              0xD904
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi6Reg                              0xD938
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi7Reg                              0xD96C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi8Reg                              0xD9A0
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi9Reg                              0xD9D4
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi10Reg                             0xDA08
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi11Reg                             0xDA3C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tsi12Reg                             0xDA70
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tso0Reg                              0xDAA4
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Tso1Reg                              0xDABC
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_SecReg                               0xDAD4
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_CryReg                               0xDB0C
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_SwdReg                               0xDB40
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_IntReg                               0xDB44
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_SecTbl                               0xE000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_FigoItcm                             0x10000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1Dtcm                            0x20000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1DtcmExt                         0x28000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1Reg                             0x2A000
    ///////////////////////////////////////////////////////////
    #define     RA_TspReg_Figo1Itcm                            0x30000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TspReg {
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_FigoDtcm[4096];
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_FigoDtcmExt[1024];
    ///////////////////////////////////////////////////////////
              SIE_FigoSysBasic                                 ie_FigoReg;
    ///////////////////////////////////////////////////////////
              SIE_TspPidTbl                                    ie_PidTbl[256];
    ///////////////////////////////////////////////////////////
              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 RSVDxDB78                                   [1160];
    ///////////////////////////////////////////////////////////
              SIE_TspSecTbl                                    ie_SecTbl[2048];
    ///////////////////////////////////////////////////////////
              SIE_FigoInst                                     ie_FigoItcm[16384];
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_Figo1Dtcm[4096];
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_Figo1DtcmExt[1024];
    ///////////////////////////////////////////////////////////
              SIE_FigoSysBasic                                 ie_Figo1Reg;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2D000                                  [12288];
    ///////////////////////////////////////////////////////////
              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
////////////////////////////////////////////////////////////

