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

//////
/// don't edit! auto-generated by docc: vpro_spec.h
////////////////////////////////////////////////////////////
#ifndef vpro_spec_h
#define vpro_spec_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 SemaINTR                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 mask                 (W-)
///               %unsigned 1  empty                     0x0
///                                    ###
///                                    * Enable interrupt on 'empty' condition
///                                    ###
///               %unsigned 1  full                      0x0
///                                    ###
///                                    * Enable interrupt on 'full' condition
///                                    ###
///               %unsigned 1  almostEmpty               0x0
///                                    ###
///                                    * Enable interrupt on 'almostEmpty' condition
///                                    ###
///               %unsigned 1  almostFull                0x0
///                                    ###
///                                    * Enable interrupt on 'almostFull' condition
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       4b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaINTR
#define h_SemaINTR (){}

    #define     RA_SemaINTR_mask                               0x0000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #define     RA_Semaphore_CFG                               0x0000

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

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

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

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

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

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

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

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

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

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

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

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

    #define     RA_SemaQuery_RESP                              0x0000

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

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

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

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

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

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

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

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

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

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

    #define     RA_SemaQueryMap_ADDR                           0x0000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #define     RA_FiFo_CFG                                    0x0000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #define     RA_LLDesFmt_mem                                0x0000

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

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

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

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

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

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

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

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

    #define     RA_dHubCmdHDR_DESC                             0x0000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #define     RA_dHubCmd_MEM                                 0x0000

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

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

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

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

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

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

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

//////
/// 
/// $INTERFACE dHubChannel             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 2  MTU                       
///                                    : 8byte                     0x0
///                                    : 32byte                    0x1
///                                    : 128byte                   0x2
///                                    : 1024byte                  0x3
///                                                 ###
///                                                 * Minimum transfer unit of the channel
///                                                 ###
///               %unsigned 1  QoS                       
///                                    ###
///                                    * Write 1 to turn on QoS detection
///                                    ###
///               %unsigned 1  selfLoop                  
///                                    ###
///                                    * Write 1 to enable cmd looping support; 0 to turn off
///                                    ###
///               %unsigned 1  intrCtl                   0x0
///                                    : cmdDone                   0x0
///                                    : chIdle                    0x1
///                                                 ###
///                                                 * 0 : default vlaue, the interrupt is triggered by the finish of the dHub command if the interrupt bit is defined in the dHub command.
///                                                 * 1 : The interrupt is triggered if the dHub channel is idle ( no busy and no pending and the corresponding dHub command Q is empty).
///                                                 ###
///               %%        27         # Stuffing bits...
///     @ 0x00004 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to enable the channel; 0 to pause the channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the channel controller state
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C FLUSH                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to start the data flushing process. Invalid for read (M2H) channels
///                                    * end dHubChannel
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubChannel
#define h_dHubChannel (){}

    #define     RA_dHubChannel_CFG                             0x0000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #define     RA_dHubCmd2D_MEM                               0x0000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd2D_drvrd(SIE_dHubCmd2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd2D_drvwr(SIE_dHubCmd2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd2D_reset(SIE_dHubCmd2D *p);
     SIGN32 dHubCmd2D_cmp  (SIE_dHubCmd2D *p, SIE_dHubCmd2D *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd2D_check(p,pie,pfx,hLOG) dHubCmd2D_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd2D_print(p,    pfx,hLOG) dHubCmd2D_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd2D
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubQuery                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 RESP                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Dhub channel state machine status.
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubQuery
#define h_dHubQuery (){}

    #define     RA_dHubQuery_RESP                              0x0000

    #define     BA_dHubQuery_RESP_ST                           0x0000
    #define     B16dHubQuery_RESP_ST                           0x0000
    #define   LSb32dHubQuery_RESP_ST                              0
    #define   LSb16dHubQuery_RESP_ST                              0
    #define       bdHubQuery_RESP_ST                           16
    #define   MSK32dHubQuery_RESP_ST                              0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubQuery {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubQuery_RESP_ST(r32)                      _BFGET_(r32,15, 0)
    #define   SET32dHubQuery_RESP_ST(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16dHubQuery_RESP_ST(r16)                      _BFGET_(r16,15, 0)
    #define   SET16dHubQuery_RESP_ST(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32dHubQuery_RESP                              {\
            UNSG32 uRESP_ST                                    : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32dHubQuery_RESP;
            struct w32dHubQuery_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubQuery;

    typedef union  T32dHubQuery_RESP
          { UNSG32 u32;
            struct w32dHubQuery_RESP;
                 } T32dHubQuery_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubQuery_RESP
          { UNSG32 u32[1];
            struct {
            struct w32dHubQuery_RESP;
                   };
                 } TdHubQuery_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubQuery_drvrd(SIE_dHubQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubQuery_drvwr(SIE_dHubQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubQuery_reset(SIE_dHubQuery *p);
     SIGN32 dHubQuery_cmp  (SIE_dHubQuery *p, SIE_dHubQuery *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubQuery_check(p,pie,pfx,hLOG) dHubQuery_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubQuery_print(p,    pfx,hLOG) dHubQuery_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubQuery
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubReg2D               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 dHub                 
///               $dHubReg             dHub              REG          
///     @ 0x00D00 ARR                  (P)
///     # 0x00D00 Cmd2D                
///               $dHubCmd2D           Cmd2D             REG      [16]
///                                    ###
///                                    * Up-to 16 2D channels.
///                                    * 2D Channel[N] is connected to dHub.Channel[N] command queue, that is, dHub.HBO.Channel[2N]
///                                    * Note: Number of 2D channels could be less than dHub channels (rest of are 1D only)
///                                    ###
///     @ 0x00F00 BUSY                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: no ongoing command is being processed
///                                    * 1: channel controller is busy
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00F04                      (W-)
///     #         # Stuffing bytes...
///               %% 480
///     @ 0x00F40                      (P)
///     # 0x00F40 CH_ST                
///               $dHubQuery           CH_ST             MEM      [16]
///                                    ###
///                                    * end dHubReg2D
///                                    ###
///     @ 0x00F80                      (W-)
///     #         # Stuffing bytes...
///               %% 1024
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:    6242b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubReg2D
#define h_dHubReg2D (){}

    #define     RA_dHubReg2D_dHub                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_ARR                               0x0D00
    #define     RA_dHubReg2D_Cmd2D                             0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_BUSY                              0x0F00

    #define     BA_dHubReg2D_BUSY_ST                           0x0F00
    #define     B16dHubReg2D_BUSY_ST                           0x0F00
    #define   LSb32dHubReg2D_BUSY_ST                              0
    #define   LSb16dHubReg2D_BUSY_ST                              0
    #define       bdHubReg2D_BUSY_ST                           16
    #define   MSK32dHubReg2D_BUSY_ST                              0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_CH_ST                             0x0F40
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubReg2D {
    ///////////////////////////////////////////////////////////
              SIE_dHubReg                                      ie_dHub;
    ///////////////////////////////////////////////////////////
              SIE_dHubCmd2D                                    ie_Cmd2D[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg2D_BUSY_ST(r32)                      _BFGET_(r32,15, 0)
    #define   SET32dHubReg2D_BUSY_ST(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg2D_BUSY_ST(r16)                      _BFGET_(r16,15, 0)
    #define   SET16dHubReg2D_BUSY_ST(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32dHubReg2D_BUSY                              {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDxF00_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg2D_BUSY;
            struct w32dHubReg2D_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF04                                    [60];
    ///////////////////////////////////////////////////////////
              SIE_dHubQuery                                    ie_CH_ST[16];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF80                                    [128];
    ///////////////////////////////////////////////////////////
    } SIE_dHubReg2D;

    typedef union  T32dHubReg2D_BUSY
          { UNSG32 u32;
            struct w32dHubReg2D_BUSY;
                 } T32dHubReg2D_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubReg2D_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg2D_BUSY;
                   };
                 } TdHubReg2D_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubReg2D_drvrd(SIE_dHubReg2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubReg2D_drvwr(SIE_dHubReg2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubReg2D_reset(SIE_dHubReg2D *p);
     SIGN32 dHubReg2D_cmp  (SIE_dHubReg2D *p, SIE_dHubReg2D *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubReg2D_check(p,pie,pfx,hLOG) dHubReg2D_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubReg2D_print(p,    pfx,hLOG) dHubReg2D_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubReg2D
////////////////////////////////////////////////////////////

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

    #define     BA_crcTblEntry_word                            0x0000
    #define     B16crcTblEntry_word                            0x0000
    #define   LSb32crcTblEntry_word                               0
    #define   LSb16crcTblEntry_word                               0
    #define       bcrcTblEntry_word                            32
    #define   MSK32crcTblEntry_word                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcTblEntry {
    ///////////////////////////////////////////////////////////
    #define   GET32crcTblEntry_word(r32)                       _BFGET_(r32,31, 0)
    #define   SET32crcTblEntry_word(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_word                                      : 32;
    ///////////////////////////////////////////////////////////
    } SIE_crcTblEntry;

    ///////////////////////////////////////////////////////////
     SIGN32 crcTblEntry_drvrd(SIE_crcTblEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcTblEntry_drvwr(SIE_crcTblEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcTblEntry_reset(SIE_crcTblEntry *p);
     SIGN32 crcTblEntry_cmp  (SIE_crcTblEntry *p, SIE_crcTblEntry *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcTblEntry_check(p,pie,pfx,hLOG) crcTblEntry_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcTblEntry_print(p,    pfx,hLOG) crcTblEntry_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcTblEntry
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcCell                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 Auto                 (P)
///               %unsigned 1  clr_sum                   0x1
///               %unsigned 1  clr_cnt                   0x1
///               %unsigned 1  latch                     0x1
///                                    ###
///                                    * “1” to enable the auto operation
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00004 Manual               (RW-)
///               %unsigned 1  clr_sum                   
///               %unsigned 1  clr_cnt                   
///               %unsigned 1  latch                     
///                                    ###
///                                    * Write 1 the bit field for corresponding manual operation.
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00008 Latch                (P)
///               %unsigned 32 cnt                       0x64
///                                    ###
///                                    * When auto latch is enabled, the latch operation will be triggered when the number of data transaction is reached.
///                                    ###
///     @ 0x0000C cnt                  (R-)
///               %unsigned 32 val                       
///                                    ###
///                                    * The data transaction counter.
///                                    ###
///     @ 0x00010                      (W-)
///     #         # Stuffing bytes...
///               %% 128
///     @ 0x00020 CRCTBL               (R-)
///     # 0x00020 sum                  
///               $crcTblEntry         sum               MEM       [8]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     102b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcCell
#define h_crcCell (){}

    #define     RA_crcCell_Auto                                0x0000

    #define     BA_crcCell_Auto_clr_sum                        0x0000
    #define     B16crcCell_Auto_clr_sum                        0x0000
    #define   LSb32crcCell_Auto_clr_sum                           0
    #define   LSb16crcCell_Auto_clr_sum                           0
    #define       bcrcCell_Auto_clr_sum                        1
    #define   MSK32crcCell_Auto_clr_sum                           0x00000001

    #define     BA_crcCell_Auto_clr_cnt                        0x0000
    #define     B16crcCell_Auto_clr_cnt                        0x0000
    #define   LSb32crcCell_Auto_clr_cnt                           1
    #define   LSb16crcCell_Auto_clr_cnt                           1
    #define       bcrcCell_Auto_clr_cnt                        1
    #define   MSK32crcCell_Auto_clr_cnt                           0x00000002

    #define     BA_crcCell_Auto_latch                          0x0000
    #define     B16crcCell_Auto_latch                          0x0000
    #define   LSb32crcCell_Auto_latch                             2
    #define   LSb16crcCell_Auto_latch                             2
    #define       bcrcCell_Auto_latch                          1
    #define   MSK32crcCell_Auto_latch                             0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_Manual                              0x0004

    #define     BA_crcCell_Manual_clr_sum                      0x0004
    #define     B16crcCell_Manual_clr_sum                      0x0004
    #define   LSb32crcCell_Manual_clr_sum                         0
    #define   LSb16crcCell_Manual_clr_sum                         0
    #define       bcrcCell_Manual_clr_sum                      1
    #define   MSK32crcCell_Manual_clr_sum                         0x00000001

    #define     BA_crcCell_Manual_clr_cnt                      0x0004
    #define     B16crcCell_Manual_clr_cnt                      0x0004
    #define   LSb32crcCell_Manual_clr_cnt                         1
    #define   LSb16crcCell_Manual_clr_cnt                         1
    #define       bcrcCell_Manual_clr_cnt                      1
    #define   MSK32crcCell_Manual_clr_cnt                         0x00000002

    #define     BA_crcCell_Manual_latch                        0x0004
    #define     B16crcCell_Manual_latch                        0x0004
    #define   LSb32crcCell_Manual_latch                           2
    #define   LSb16crcCell_Manual_latch                           2
    #define       bcrcCell_Manual_latch                        1
    #define   MSK32crcCell_Manual_latch                           0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_Latch                               0x0008

    #define     BA_crcCell_Latch_cnt                           0x0008
    #define     B16crcCell_Latch_cnt                           0x0008
    #define   LSb32crcCell_Latch_cnt                              0
    #define   LSb16crcCell_Latch_cnt                              0
    #define       bcrcCell_Latch_cnt                           32
    #define   MSK32crcCell_Latch_cnt                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_cnt                                 0x000C

    #define     BA_crcCell_cnt_val                             0x000C
    #define     B16crcCell_cnt_val                             0x000C
    #define   LSb32crcCell_cnt_val                                0
    #define   LSb16crcCell_cnt_val                                0
    #define       bcrcCell_cnt_val                             32
    #define   MSK32crcCell_cnt_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_CRCTBL                              0x0020
    #define     RA_crcCell_sum                                 0x0020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcCell {
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_Auto_clr_sum(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32crcCell_Auto_clr_sum(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16crcCell_Auto_clr_sum(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16crcCell_Auto_clr_sum(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32crcCell_Auto_clr_cnt(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32crcCell_Auto_clr_cnt(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16crcCell_Auto_clr_cnt(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16crcCell_Auto_clr_cnt(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32crcCell_Auto_latch(r32)                     _BFGET_(r32, 2, 2)
    #define   SET32crcCell_Auto_latch(r32,v)                   _BFSET_(r32, 2, 2,v)
    #define   GET16crcCell_Auto_latch(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16crcCell_Auto_latch(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define     w32crcCell_Auto                                {\
            UNSG32 uAuto_clr_sum                               :  1;\
            UNSG32 uAuto_clr_cnt                               :  1;\
            UNSG32 uAuto_latch                                 :  1;\
            UNSG32 RSVDx0_b3                                   : 29;\
          }
    union { UNSG32 u32crcCell_Auto;
            struct w32crcCell_Auto;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_Manual_clr_sum(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32crcCell_Manual_clr_sum(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16crcCell_Manual_clr_sum(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16crcCell_Manual_clr_sum(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32crcCell_Manual_clr_cnt(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32crcCell_Manual_clr_cnt(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16crcCell_Manual_clr_cnt(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16crcCell_Manual_clr_cnt(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32crcCell_Manual_latch(r32)                   _BFGET_(r32, 2, 2)
    #define   SET32crcCell_Manual_latch(r32,v)                 _BFSET_(r32, 2, 2,v)
    #define   GET16crcCell_Manual_latch(r16)                   _BFGET_(r16, 2, 2)
    #define   SET16crcCell_Manual_latch(r16,v)                 _BFSET_(r16, 2, 2,v)

    #define     w32crcCell_Manual                              {\
            UNSG32 uManual_clr_sum                             :  1;\
            UNSG32 uManual_clr_cnt                             :  1;\
            UNSG32 uManual_latch                               :  1;\
            UNSG32 RSVDx4_b3                                   : 29;\
          }
    union { UNSG32 u32crcCell_Manual;
            struct w32crcCell_Manual;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_Latch_cnt(r32)                      _BFGET_(r32,31, 0)
    #define   SET32crcCell_Latch_cnt(r32,v)                    _BFSET_(r32,31, 0,v)

    #define     w32crcCell_Latch                               {\
            UNSG32 uLatch_cnt                                  : 32;\
          }
    union { UNSG32 u32crcCell_Latch;
            struct w32crcCell_Latch;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_cnt_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32crcCell_cnt_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32crcCell_cnt                                 {\
            UNSG32 ucnt_val                                    : 32;\
          }
    union { UNSG32 u32crcCell_cnt;
            struct w32crcCell_cnt;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx10                                     [16];
    ///////////////////////////////////////////////////////////
              SIE_crcTblEntry                                  ie_sum[8];
    ///////////////////////////////////////////////////////////
    } SIE_crcCell;

    typedef union  T32crcCell_Auto
          { UNSG32 u32;
            struct w32crcCell_Auto;
                 } T32crcCell_Auto;
    typedef union  T32crcCell_Manual
          { UNSG32 u32;
            struct w32crcCell_Manual;
                 } T32crcCell_Manual;
    typedef union  T32crcCell_Latch
          { UNSG32 u32;
            struct w32crcCell_Latch;
                 } T32crcCell_Latch;
    typedef union  T32crcCell_cnt
          { UNSG32 u32;
            struct w32crcCell_cnt;
                 } T32crcCell_cnt;
    ///////////////////////////////////////////////////////////

    typedef union  TcrcCell_Auto
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_Auto;
                   };
                 } TcrcCell_Auto;
    typedef union  TcrcCell_Manual
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_Manual;
                   };
                 } TcrcCell_Manual;
    typedef union  TcrcCell_Latch
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_Latch;
                   };
                 } TcrcCell_Latch;
    typedef union  TcrcCell_cnt
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_cnt;
                   };
                 } TcrcCell_cnt;

    ///////////////////////////////////////////////////////////
     SIGN32 crcCell_drvrd(SIE_crcCell *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcCell_drvwr(SIE_crcCell *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcCell_reset(SIE_crcCell *p);
     SIGN32 crcCell_cmp  (SIE_crcCell *p, SIE_crcCell *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcCell_check(p,pie,pfx,hLOG) crcCell_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcCell_print(p,    pfx,hLOG) crcCell_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcCell
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcArr                  biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CRCARR               (P)
///     # 0x00000 crcArr               
///               $crcCell             crcArr            REG       [8]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:     816b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcArr
#define h_crcArr (){}

    #define     RA_crcArr_CRCARR                               0x0000
    #define     RA_crcArr_crcArr                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcArr {
    ///////////////////////////////////////////////////////////
              SIE_crcCell                                      ie_crcArr[8];
    ///////////////////////////////////////////////////////////
    } SIE_crcArr;

    ///////////////////////////////////////////////////////////
     SIGN32 crcArr_drvrd(SIE_crcArr *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcArr_drvwr(SIE_crcArr *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcArr_reset(SIE_crcArr *p);
     SIGN32 crcArr_cmp  (SIE_crcArr *p, SIE_crcArr *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcArr_check(p,pie,pfx,hLOG) crcArr_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcArr_print(p,    pfx,hLOG) crcArr_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcArr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcHub                  biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CRCARR               (P)
///     # 0x00000 crcArr0              
///               $crcArr              crcArr0           REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:     816b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcHub
#define h_crcHub (){}

    #define     RA_crcHub_CRCARR                               0x0000
    #define     RA_crcHub_crcArr0                              0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcHub {
    ///////////////////////////////////////////////////////////
              SIE_crcArr                                       ie_crcArr0;
    ///////////////////////////////////////////////////////////
    } SIE_crcHub;

    ///////////////////////////////////////////////////////////
     SIGN32 crcHub_drvrd(SIE_crcHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcHub_drvwr(SIE_crcHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcHub_reset(SIE_crcHub *p);
     SIGN32 crcHub_cmp  (SIE_crcHub *p, SIE_crcHub *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcHub_check(p,pie,pfx,hLOG) crcHub_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcHub_print(p,    pfx,hLOG) crcHub_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcHub
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vProVFC                 biu              (4,4)
///     ###
///     * vPro input data format converter. Convert raster scan data to tile format.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 FLOW                 (P-)
///               %unsigned 1  enable                    0x0
///               %%        31         # Stuffing bits...
///     @ 0x00004 CTRL                 (P)
///               %unsigned 2  mode                      0x0
///                                    : UYVY                      0x0
///                                    : PLANAR                    0x1
///                                    : SEMIPLANAR                0x2
///               %%        30         # Stuffing bits...
///     @ 0x00008 STATUS               (R-)
///               %unsigned 1  done                      0x0
///                                    ###
///                                    * Write 0 to CTRL.enable to clear done status.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C BASE_Y               (P)
///               %unsigned 32 addr                      0x0
///                                    ###
///                                    * Also be used as base address of UYVY mode.
///                                    ###
///     @ 0x00010 BASE_CB              (P)
///               %unsigned 32 addr                      0x0
///     @ 0x00014 BASE_CR              (P)
///               %unsigned 32 addr                      0x0
///     @ 0x00018 SIZE                 (P)
///               %unsigned 16 width                     0x0
///               %unsigned 16 height                    0x0
///                                    ###
///                                    * UYVY mode: size of whole frame buffer.
///                                    * PLANAR mode: size of Y plane.
///                                    ###
///     @ 0x0001C STRIDE               (P)
///               %unsigned 16 luma                      0x0
///               %unsigned 16 chroma                    0x0
///                                    ###
///                                    * Stride side (pixel). UYVY mode re-use luma bitfield.
///                                    * Should be configured to 32-byte aligned.
///                                    ###
///     @ 0x00020 BURST                (P)
///               %unsigned 2  size                      0x0
///                                    : B32                       0x0
///                                    : B64                       0x1
///                                    : B128                      0x2
///                                    : B256                      0x3
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      36B, bits:     166b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vProVFC
#define h_vProVFC (){}

    #define     RA_vProVFC_FLOW                                0x0000

    #define     BA_vProVFC_FLOW_enable                         0x0000
    #define     B16vProVFC_FLOW_enable                         0x0000
    #define   LSb32vProVFC_FLOW_enable                            0
    #define   LSb16vProVFC_FLOW_enable                            0
    #define       bvProVFC_FLOW_enable                         1
    #define   MSK32vProVFC_FLOW_enable                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_CTRL                                0x0004

    #define     BA_vProVFC_CTRL_mode                           0x0004
    #define     B16vProVFC_CTRL_mode                           0x0004
    #define   LSb32vProVFC_CTRL_mode                              0
    #define   LSb16vProVFC_CTRL_mode                              0
    #define       bvProVFC_CTRL_mode                           2
    #define   MSK32vProVFC_CTRL_mode                              0x00000003
    #define        vProVFC_CTRL_mode_UYVY                                   0x0
    #define        vProVFC_CTRL_mode_PLANAR                                 0x1
    #define        vProVFC_CTRL_mode_SEMIPLANAR                             0x2
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_STATUS                              0x0008

    #define     BA_vProVFC_STATUS_done                         0x0008
    #define     B16vProVFC_STATUS_done                         0x0008
    #define   LSb32vProVFC_STATUS_done                            0
    #define   LSb16vProVFC_STATUS_done                            0
    #define       bvProVFC_STATUS_done                         1
    #define   MSK32vProVFC_STATUS_done                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_BASE_Y                              0x000C

    #define     BA_vProVFC_BASE_Y_addr                         0x000C
    #define     B16vProVFC_BASE_Y_addr                         0x000C
    #define   LSb32vProVFC_BASE_Y_addr                            0
    #define   LSb16vProVFC_BASE_Y_addr                            0
    #define       bvProVFC_BASE_Y_addr                         32
    #define   MSK32vProVFC_BASE_Y_addr                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_BASE_CB                             0x0010

    #define     BA_vProVFC_BASE_CB_addr                        0x0010
    #define     B16vProVFC_BASE_CB_addr                        0x0010
    #define   LSb32vProVFC_BASE_CB_addr                           0
    #define   LSb16vProVFC_BASE_CB_addr                           0
    #define       bvProVFC_BASE_CB_addr                        32
    #define   MSK32vProVFC_BASE_CB_addr                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_BASE_CR                             0x0014

    #define     BA_vProVFC_BASE_CR_addr                        0x0014
    #define     B16vProVFC_BASE_CR_addr                        0x0014
    #define   LSb32vProVFC_BASE_CR_addr                           0
    #define   LSb16vProVFC_BASE_CR_addr                           0
    #define       bvProVFC_BASE_CR_addr                        32
    #define   MSK32vProVFC_BASE_CR_addr                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_SIZE                                0x0018

    #define     BA_vProVFC_SIZE_width                          0x0018
    #define     B16vProVFC_SIZE_width                          0x0018
    #define   LSb32vProVFC_SIZE_width                             0
    #define   LSb16vProVFC_SIZE_width                             0
    #define       bvProVFC_SIZE_width                          16
    #define   MSK32vProVFC_SIZE_width                             0x0000FFFF

    #define     BA_vProVFC_SIZE_height                         0x001A
    #define     B16vProVFC_SIZE_height                         0x001A
    #define   LSb32vProVFC_SIZE_height                            16
    #define   LSb16vProVFC_SIZE_height                            0
    #define       bvProVFC_SIZE_height                         16
    #define   MSK32vProVFC_SIZE_height                            0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_STRIDE                              0x001C

    #define     BA_vProVFC_STRIDE_luma                         0x001C
    #define     B16vProVFC_STRIDE_luma                         0x001C
    #define   LSb32vProVFC_STRIDE_luma                            0
    #define   LSb16vProVFC_STRIDE_luma                            0
    #define       bvProVFC_STRIDE_luma                         16
    #define   MSK32vProVFC_STRIDE_luma                            0x0000FFFF

    #define     BA_vProVFC_STRIDE_chroma                       0x001E
    #define     B16vProVFC_STRIDE_chroma                       0x001E
    #define   LSb32vProVFC_STRIDE_chroma                          16
    #define   LSb16vProVFC_STRIDE_chroma                          0
    #define       bvProVFC_STRIDE_chroma                       16
    #define   MSK32vProVFC_STRIDE_chroma                          0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_vProVFC_BURST                               0x0020

    #define     BA_vProVFC_BURST_size                          0x0020
    #define     B16vProVFC_BURST_size                          0x0020
    #define   LSb32vProVFC_BURST_size                             0
    #define   LSb16vProVFC_BURST_size                             0
    #define       bvProVFC_BURST_size                          2
    #define   MSK32vProVFC_BURST_size                             0x00000003
    #define        vProVFC_BURST_size_B32                                   0x0
    #define        vProVFC_BURST_size_B64                                   0x1
    #define        vProVFC_BURST_size_B128                                  0x2
    #define        vProVFC_BURST_size_B256                                  0x3
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vProVFC {
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_FLOW_enable(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32vProVFC_FLOW_enable(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16vProVFC_FLOW_enable(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16vProVFC_FLOW_enable(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32vProVFC_FLOW                                {\
            UNSG32 uFLOW_enable                                :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32vProVFC_FLOW;
            struct w32vProVFC_FLOW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_CTRL_mode(r32)                      _BFGET_(r32, 1, 0)
    #define   SET32vProVFC_CTRL_mode(r32,v)                    _BFSET_(r32, 1, 0,v)
    #define   GET16vProVFC_CTRL_mode(r16)                      _BFGET_(r16, 1, 0)
    #define   SET16vProVFC_CTRL_mode(r16,v)                    _BFSET_(r16, 1, 0,v)

    #define     w32vProVFC_CTRL                                {\
            UNSG32 uCTRL_mode                                  :  2;\
            UNSG32 RSVDx4_b2                                   : 30;\
          }
    union { UNSG32 u32vProVFC_CTRL;
            struct w32vProVFC_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_STATUS_done(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32vProVFC_STATUS_done(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16vProVFC_STATUS_done(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16vProVFC_STATUS_done(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32vProVFC_STATUS                              {\
            UNSG32 uSTATUS_done                                :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32vProVFC_STATUS;
            struct w32vProVFC_STATUS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_BASE_Y_addr(r32)                    _BFGET_(r32,31, 0)
    #define   SET32vProVFC_BASE_Y_addr(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32vProVFC_BASE_Y                              {\
            UNSG32 uBASE_Y_addr                                : 32;\
          }
    union { UNSG32 u32vProVFC_BASE_Y;
            struct w32vProVFC_BASE_Y;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_BASE_CB_addr(r32)                   _BFGET_(r32,31, 0)
    #define   SET32vProVFC_BASE_CB_addr(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32vProVFC_BASE_CB                             {\
            UNSG32 uBASE_CB_addr                               : 32;\
          }
    union { UNSG32 u32vProVFC_BASE_CB;
            struct w32vProVFC_BASE_CB;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_BASE_CR_addr(r32)                   _BFGET_(r32,31, 0)
    #define   SET32vProVFC_BASE_CR_addr(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32vProVFC_BASE_CR                             {\
            UNSG32 uBASE_CR_addr                               : 32;\
          }
    union { UNSG32 u32vProVFC_BASE_CR;
            struct w32vProVFC_BASE_CR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_SIZE_width(r32)                     _BFGET_(r32,15, 0)
    #define   SET32vProVFC_SIZE_width(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16vProVFC_SIZE_width(r16)                     _BFGET_(r16,15, 0)
    #define   SET16vProVFC_SIZE_width(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32vProVFC_SIZE_height(r32)                    _BFGET_(r32,31,16)
    #define   SET32vProVFC_SIZE_height(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16vProVFC_SIZE_height(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vProVFC_SIZE_height(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32vProVFC_SIZE                                {\
            UNSG32 uSIZE_width                                 : 16;\
            UNSG32 uSIZE_height                                : 16;\
          }
    union { UNSG32 u32vProVFC_SIZE;
            struct w32vProVFC_SIZE;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_STRIDE_luma(r32)                    _BFGET_(r32,15, 0)
    #define   SET32vProVFC_STRIDE_luma(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16vProVFC_STRIDE_luma(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vProVFC_STRIDE_luma(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32vProVFC_STRIDE_chroma(r32)                  _BFGET_(r32,31,16)
    #define   SET32vProVFC_STRIDE_chroma(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16vProVFC_STRIDE_chroma(r16)                  _BFGET_(r16,15, 0)
    #define   SET16vProVFC_STRIDE_chroma(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32vProVFC_STRIDE                              {\
            UNSG32 uSTRIDE_luma                                : 16;\
            UNSG32 uSTRIDE_chroma                              : 16;\
          }
    union { UNSG32 u32vProVFC_STRIDE;
            struct w32vProVFC_STRIDE;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProVFC_BURST_size(r32)                     _BFGET_(r32, 1, 0)
    #define   SET32vProVFC_BURST_size(r32,v)                   _BFSET_(r32, 1, 0,v)
    #define   GET16vProVFC_BURST_size(r16)                     _BFGET_(r16, 1, 0)
    #define   SET16vProVFC_BURST_size(r16,v)                   _BFSET_(r16, 1, 0,v)

    #define     w32vProVFC_BURST                               {\
            UNSG32 uBURST_size                                 :  2;\
            UNSG32 RSVDx20_b2                                  : 30;\
          }
    union { UNSG32 u32vProVFC_BURST;
            struct w32vProVFC_BURST;
          };
    ///////////////////////////////////////////////////////////
    } SIE_vProVFC;

    typedef union  T32vProVFC_FLOW
          { UNSG32 u32;
            struct w32vProVFC_FLOW;
                 } T32vProVFC_FLOW;
    typedef union  T32vProVFC_CTRL
          { UNSG32 u32;
            struct w32vProVFC_CTRL;
                 } T32vProVFC_CTRL;
    typedef union  T32vProVFC_STATUS
          { UNSG32 u32;
            struct w32vProVFC_STATUS;
                 } T32vProVFC_STATUS;
    typedef union  T32vProVFC_BASE_Y
          { UNSG32 u32;
            struct w32vProVFC_BASE_Y;
                 } T32vProVFC_BASE_Y;
    typedef union  T32vProVFC_BASE_CB
          { UNSG32 u32;
            struct w32vProVFC_BASE_CB;
                 } T32vProVFC_BASE_CB;
    typedef union  T32vProVFC_BASE_CR
          { UNSG32 u32;
            struct w32vProVFC_BASE_CR;
                 } T32vProVFC_BASE_CR;
    typedef union  T32vProVFC_SIZE
          { UNSG32 u32;
            struct w32vProVFC_SIZE;
                 } T32vProVFC_SIZE;
    typedef union  T32vProVFC_STRIDE
          { UNSG32 u32;
            struct w32vProVFC_STRIDE;
                 } T32vProVFC_STRIDE;
    typedef union  T32vProVFC_BURST
          { UNSG32 u32;
            struct w32vProVFC_BURST;
                 } T32vProVFC_BURST;
    ///////////////////////////////////////////////////////////

    typedef union  TvProVFC_FLOW
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_FLOW;
                   };
                 } TvProVFC_FLOW;
    typedef union  TvProVFC_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_CTRL;
                   };
                 } TvProVFC_CTRL;
    typedef union  TvProVFC_STATUS
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_STATUS;
                   };
                 } TvProVFC_STATUS;
    typedef union  TvProVFC_BASE_Y
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_BASE_Y;
                   };
                 } TvProVFC_BASE_Y;
    typedef union  TvProVFC_BASE_CB
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_BASE_CB;
                   };
                 } TvProVFC_BASE_CB;
    typedef union  TvProVFC_BASE_CR
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_BASE_CR;
                   };
                 } TvProVFC_BASE_CR;
    typedef union  TvProVFC_SIZE
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_SIZE;
                   };
                 } TvProVFC_SIZE;
    typedef union  TvProVFC_STRIDE
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_STRIDE;
                   };
                 } TvProVFC_STRIDE;
    typedef union  TvProVFC_BURST
          { UNSG32 u32[1];
            struct {
            struct w32vProVFC_BURST;
                   };
                 } TvProVFC_BURST;

    ///////////////////////////////////////////////////////////
     SIGN32 vProVFC_drvrd(SIE_vProVFC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vProVFC_drvwr(SIE_vProVFC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vProVFC_reset(SIE_vProVFC *p);
     SIGN32 vProVFC_cmp  (SIE_vProVFC *p, SIE_vProVFC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vProVFC_check(p,pie,pfx,hLOG) vProVFC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vProVFC_print(p,    pfx,hLOG) vProVFC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vProVFC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dirMvScale              biu              (4,4)
///     ###
///     * Scaling factors for temporal direct MV calculation
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   12 factor                    
///                                    ###
///                                    * = clip(-1024, 1023, (tb*tx+32)>>6)
///                                    ###
///               %unsigned 20 RSVD20                    
///                                    ###
///                                    * pad to 32 bits
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 RSVD32                    
///                                    ###
///                                    * pad to 64 bits
///                                    * End dirMvScale
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dirMvScale
#define h_dirMvScale (){}

    #define     BA_dirMvScale_factor                           0x0000
    #define     B16dirMvScale_factor                           0x0000
    #define   LSb32dirMvScale_factor                              0
    #define   LSb16dirMvScale_factor                              0
    #define       bdirMvScale_factor                           12
    #define   MSK32dirMvScale_factor                              0x00000FFF

    #define     BA_dirMvScale_RSVD20                           0x0001
    #define     B16dirMvScale_RSVD20                           0x0000
    #define   LSb32dirMvScale_RSVD20                              12
    #define   LSb16dirMvScale_RSVD20                              12
    #define       bdirMvScale_RSVD20                           20
    #define   MSK32dirMvScale_RSVD20                              0xFFFFF000
    ///////////////////////////////////////////////////////////

    #define     BA_dirMvScale_RSVD32                           0x0004
    #define     B16dirMvScale_RSVD32                           0x0004
    #define   LSb32dirMvScale_RSVD32                              0
    #define   LSb16dirMvScale_RSVD32                              0
    #define       bdirMvScale_RSVD32                           32
    #define   MSK32dirMvScale_RSVD32                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dirMvScale {
    ///////////////////////////////////////////////////////////
    #define   GET32dirMvScale_factor(r32)                      _BFGET_(r32,11, 0)
    #define   SET32dirMvScale_factor(r32,v)                    _BFSET_(r32,11, 0,v)
    #define   GET16dirMvScale_factor(r16)                      _BFGET_(r16,11, 0)
    #define   SET16dirMvScale_factor(r16,v)                    _BFSET_(r16,11, 0,v)

    #define   GET32dirMvScale_RSVD20(r32)                      _BFGET_(r32,31,12)
    #define   SET32dirMvScale_RSVD20(r32,v)                    _BFSET_(r32,31,12,v)

            UNSG32 s_factor                                    : 12;
            UNSG32 u_RSVD20                                    : 20;
    ///////////////////////////////////////////////////////////
    #define   GET32dirMvScale_RSVD32(r32)                      _BFGET_(r32,31, 0)
    #define   SET32dirMvScale_RSVD32(r32,v)                    _BFSET_(r32,31, 0,v)

            UNSG32 u_RSVD32                                    : 32;
    ///////////////////////////////////////////////////////////
    } SIE_dirMvScale;

    ///////////////////////////////////////////////////////////
     SIGN32 dirMvScale_drvrd(SIE_dirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dirMvScale_drvwr(SIE_dirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dirMvScale_reset(SIE_dirMvScale *p);
     SIGN32 dirMvScale_cmp  (SIE_dirMvScale *p, SIE_dirMvScale *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dirMvScale_check(p,pie,pfx,hLOG) dirMvScale_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dirMvScale_print(p,    pfx,hLOG) dirMvScale_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dirMvScale
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE avsDirMvScale           biu              (4,4)
///     ###
///     * Scaling factors for temporal direct MV calculation for AVS
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 BlockDistanceFw           
///                                    ###
///                                    * Block Distance between current block and forward reference block.
///                                    ###
///               %unsigned 16 BlockDistanceBw           
///                                    ###
///                                    * Block Distance between backward reference block and current block.
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 16 invBlockDistanceRef       
///                                    ###
///                                    * 16384/BlockDistanceRef, where BlockDistanceRef is the block distance between backward reference block and reference block of the co-located block.
///                                    ###
///               %unsigned 16 RSVD16                    
///                                    ###
///                                    * pad to 64 bits
///                                    * End avsDirMvScale
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avsDirMvScale
#define h_avsDirMvScale (){}

    #define     BA_avsDirMvScale_BlockDistanceFw               0x0000
    #define     B16avsDirMvScale_BlockDistanceFw               0x0000
    #define   LSb32avsDirMvScale_BlockDistanceFw                  0
    #define   LSb16avsDirMvScale_BlockDistanceFw                  0
    #define       bavsDirMvScale_BlockDistanceFw               16
    #define   MSK32avsDirMvScale_BlockDistanceFw                  0x0000FFFF

    #define     BA_avsDirMvScale_BlockDistanceBw               0x0002
    #define     B16avsDirMvScale_BlockDistanceBw               0x0002
    #define   LSb32avsDirMvScale_BlockDistanceBw                  16
    #define   LSb16avsDirMvScale_BlockDistanceBw                  0
    #define       bavsDirMvScale_BlockDistanceBw               16
    #define   MSK32avsDirMvScale_BlockDistanceBw                  0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_avsDirMvScale_invBlockDistanceRef           0x0004
    #define     B16avsDirMvScale_invBlockDistanceRef           0x0004
    #define   LSb32avsDirMvScale_invBlockDistanceRef              0
    #define   LSb16avsDirMvScale_invBlockDistanceRef              0
    #define       bavsDirMvScale_invBlockDistanceRef           16
    #define   MSK32avsDirMvScale_invBlockDistanceRef              0x0000FFFF

    #define     BA_avsDirMvScale_RSVD16                        0x0006
    #define     B16avsDirMvScale_RSVD16                        0x0006
    #define   LSb32avsDirMvScale_RSVD16                           16
    #define   LSb16avsDirMvScale_RSVD16                           0
    #define       bavsDirMvScale_RSVD16                        16
    #define   MSK32avsDirMvScale_RSVD16                           0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avsDirMvScale {
    ///////////////////////////////////////////////////////////
    #define   GET32avsDirMvScale_BlockDistanceFw(r32)          _BFGET_(r32,15, 0)
    #define   SET32avsDirMvScale_BlockDistanceFw(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16avsDirMvScale_BlockDistanceFw(r16)          _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_BlockDistanceFw(r16,v)        _BFSET_(r16,15, 0,v)

    #define   GET32avsDirMvScale_BlockDistanceBw(r32)          _BFGET_(r32,31,16)
    #define   SET32avsDirMvScale_BlockDistanceBw(r32,v)        _BFSET_(r32,31,16,v)
    #define   GET16avsDirMvScale_BlockDistanceBw(r16)          _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_BlockDistanceBw(r16,v)        _BFSET_(r16,15, 0,v)

            UNSG32 u_BlockDistanceFw                           : 16;
            UNSG32 u_BlockDistanceBw                           : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32avsDirMvScale_invBlockDistanceRef(r32)      _BFGET_(r32,15, 0)
    #define   SET32avsDirMvScale_invBlockDistanceRef(r32,v)    _BFSET_(r32,15, 0,v)
    #define   GET16avsDirMvScale_invBlockDistanceRef(r16)      _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_invBlockDistanceRef(r16,v)    _BFSET_(r16,15, 0,v)

    #define   GET32avsDirMvScale_RSVD16(r32)                   _BFGET_(r32,31,16)
    #define   SET32avsDirMvScale_RSVD16(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16avsDirMvScale_RSVD16(r16)                   _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_RSVD16(r16,v)                 _BFSET_(r16,15, 0,v)

            UNSG32 u_invBlockDistanceRef                       : 16;
            UNSG32 u_RSVD16                                    : 16;
    ///////////////////////////////////////////////////////////
    } SIE_avsDirMvScale;

    ///////////////////////////////////////////////////////////
     SIGN32 avsDirMvScale_drvrd(SIE_avsDirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avsDirMvScale_drvwr(SIE_avsDirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avsDirMvScale_reset(SIE_avsDirMvScale *p);
     SIGN32 avsDirMvScale_cmp  (SIE_avsDirMvScale *p, SIE_avsDirMvScale *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avsDirMvScale_check(p,pie,pfx,hLOG) avsDirMvScale_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avsDirMvScale_print(p,    pfx,hLOG) avsDirMvScale_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avsDirMvScale
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BitOpX4                 biu              (4,4)
///     ###
///     * Operator format for BitOp extension
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  idx                       
///                                    ###
///                                    * rS[idx] or xT[idx] is used as source bit
///                                    * In case src==rS, idx[5:4] specifies the operation mode:
///                                    * idx[5:4]==2'b0x: output is from rS
///                                    * idx[5:4]==2'b10: output bit is forced to 0
///                                    * idx[5:4]==2'b11: output bit is forced to 1
///                                    ###
///               %unsigned 1  src                       
///                                    : xT                        0x0
///                                    : rS                        0x1
///                                                 ###
///                                                 * If src=rS, the source is from 16-bit input
///                                                 * If src=xT, the source is from 64-bit input
///                                                 ###
///               %unsigned 1  mode                      
///                                    : copy                      0x0
///                                    : inv                       0x1
///                                                 ###
///                                                 * copy: target bit copied from source bit
///                                                 * inv: target bit copied from source bit then inverted
///                                                 * Not used when src==rS & idx[5]==1'b1
///                                                 ###
///               %unsigned 6  idx1                      
///               %unsigned 1  src1                      
///               %unsigned 1  mode1                     
///               %unsigned 6  idx2                      
///               %unsigned 1  src2                      
///               %unsigned 1  mode2                     
///               %unsigned 6  idx3                      
///               %unsigned 1  src3                      
///               %unsigned 1  mode3                     
///                                    ###
///                                    * End BitOpX4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BitOpX4
#define h_BitOpX4 (){}

    #define     BA_BitOpX4_idx                                 0x0000
    #define     B16BitOpX4_idx                                 0x0000
    #define   LSb32BitOpX4_idx                                    0
    #define   LSb16BitOpX4_idx                                    0
    #define       bBitOpX4_idx                                 6
    #define   MSK32BitOpX4_idx                                    0x0000003F

    #define     BA_BitOpX4_src                                 0x0000
    #define     B16BitOpX4_src                                 0x0000
    #define   LSb32BitOpX4_src                                    6
    #define   LSb16BitOpX4_src                                    6
    #define       bBitOpX4_src                                 1
    #define   MSK32BitOpX4_src                                    0x00000040
    #define        BitOpX4_src_xT                                           0x0
    #define        BitOpX4_src_rS                                           0x1

    #define     BA_BitOpX4_mode                                0x0000
    #define     B16BitOpX4_mode                                0x0000
    #define   LSb32BitOpX4_mode                                   7
    #define   LSb16BitOpX4_mode                                   7
    #define       bBitOpX4_mode                                1
    #define   MSK32BitOpX4_mode                                   0x00000080
    #define        BitOpX4_mode_copy                                        0x0
    #define        BitOpX4_mode_inv                                         0x1

    #define     BA_BitOpX4_idx1                                0x0001
    #define     B16BitOpX4_idx1                                0x0000
    #define   LSb32BitOpX4_idx1                                   8
    #define   LSb16BitOpX4_idx1                                   8
    #define       bBitOpX4_idx1                                6
    #define   MSK32BitOpX4_idx1                                   0x00003F00

    #define     BA_BitOpX4_src1                                0x0001
    #define     B16BitOpX4_src1                                0x0000
    #define   LSb32BitOpX4_src1                                   14
    #define   LSb16BitOpX4_src1                                   14
    #define       bBitOpX4_src1                                1
    #define   MSK32BitOpX4_src1                                   0x00004000

    #define     BA_BitOpX4_mode1                               0x0001
    #define     B16BitOpX4_mode1                               0x0000
    #define   LSb32BitOpX4_mode1                                  15
    #define   LSb16BitOpX4_mode1                                  15
    #define       bBitOpX4_mode1                               1
    #define   MSK32BitOpX4_mode1                                  0x00008000

    #define     BA_BitOpX4_idx2                                0x0002
    #define     B16BitOpX4_idx2                                0x0002
    #define   LSb32BitOpX4_idx2                                   16
    #define   LSb16BitOpX4_idx2                                   0
    #define       bBitOpX4_idx2                                6
    #define   MSK32BitOpX4_idx2                                   0x003F0000

    #define     BA_BitOpX4_src2                                0x0002
    #define     B16BitOpX4_src2                                0x0002
    #define   LSb32BitOpX4_src2                                   22
    #define   LSb16BitOpX4_src2                                   6
    #define       bBitOpX4_src2                                1
    #define   MSK32BitOpX4_src2                                   0x00400000

    #define     BA_BitOpX4_mode2                               0x0002
    #define     B16BitOpX4_mode2                               0x0002
    #define   LSb32BitOpX4_mode2                                  23
    #define   LSb16BitOpX4_mode2                                  7
    #define       bBitOpX4_mode2                               1
    #define   MSK32BitOpX4_mode2                                  0x00800000

    #define     BA_BitOpX4_idx3                                0x0003
    #define     B16BitOpX4_idx3                                0x0002
    #define   LSb32BitOpX4_idx3                                   24
    #define   LSb16BitOpX4_idx3                                   8
    #define       bBitOpX4_idx3                                6
    #define   MSK32BitOpX4_idx3                                   0x3F000000

    #define     BA_BitOpX4_src3                                0x0003
    #define     B16BitOpX4_src3                                0x0002
    #define   LSb32BitOpX4_src3                                   30
    #define   LSb16BitOpX4_src3                                   14
    #define       bBitOpX4_src3                                1
    #define   MSK32BitOpX4_src3                                   0x40000000

    #define     BA_BitOpX4_mode3                               0x0003
    #define     B16BitOpX4_mode3                               0x0002
    #define   LSb32BitOpX4_mode3                                  31
    #define   LSb16BitOpX4_mode3                                  15
    #define       bBitOpX4_mode3                               1
    #define   MSK32BitOpX4_mode3                                  0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BitOpX4 {
    ///////////////////////////////////////////////////////////
    #define   GET32BitOpX4_idx(r32)                            _BFGET_(r32, 5, 0)
    #define   SET32BitOpX4_idx(r32,v)                          _BFSET_(r32, 5, 0,v)
    #define   GET16BitOpX4_idx(r16)                            _BFGET_(r16, 5, 0)
    #define   SET16BitOpX4_idx(r16,v)                          _BFSET_(r16, 5, 0,v)

    #define   GET32BitOpX4_src(r32)                            _BFGET_(r32, 6, 6)
    #define   SET32BitOpX4_src(r32,v)                          _BFSET_(r32, 6, 6,v)
    #define   GET16BitOpX4_src(r16)                            _BFGET_(r16, 6, 6)
    #define   SET16BitOpX4_src(r16,v)                          _BFSET_(r16, 6, 6,v)

    #define   GET32BitOpX4_mode(r32)                           _BFGET_(r32, 7, 7)
    #define   SET32BitOpX4_mode(r32,v)                         _BFSET_(r32, 7, 7,v)
    #define   GET16BitOpX4_mode(r16)                           _BFGET_(r16, 7, 7)
    #define   SET16BitOpX4_mode(r16,v)                         _BFSET_(r16, 7, 7,v)

    #define   GET32BitOpX4_idx1(r32)                           _BFGET_(r32,13, 8)
    #define   SET32BitOpX4_idx1(r32,v)                         _BFSET_(r32,13, 8,v)
    #define   GET16BitOpX4_idx1(r16)                           _BFGET_(r16,13, 8)
    #define   SET16BitOpX4_idx1(r16,v)                         _BFSET_(r16,13, 8,v)

    #define   GET32BitOpX4_src1(r32)                           _BFGET_(r32,14,14)
    #define   SET32BitOpX4_src1(r32,v)                         _BFSET_(r32,14,14,v)
    #define   GET16BitOpX4_src1(r16)                           _BFGET_(r16,14,14)
    #define   SET16BitOpX4_src1(r16,v)                         _BFSET_(r16,14,14,v)

    #define   GET32BitOpX4_mode1(r32)                          _BFGET_(r32,15,15)
    #define   SET32BitOpX4_mode1(r32,v)                        _BFSET_(r32,15,15,v)
    #define   GET16BitOpX4_mode1(r16)                          _BFGET_(r16,15,15)
    #define   SET16BitOpX4_mode1(r16,v)                        _BFSET_(r16,15,15,v)

    #define   GET32BitOpX4_idx2(r32)                           _BFGET_(r32,21,16)
    #define   SET32BitOpX4_idx2(r32,v)                         _BFSET_(r32,21,16,v)
    #define   GET16BitOpX4_idx2(r16)                           _BFGET_(r16, 5, 0)
    #define   SET16BitOpX4_idx2(r16,v)                         _BFSET_(r16, 5, 0,v)

    #define   GET32BitOpX4_src2(r32)                           _BFGET_(r32,22,22)
    #define   SET32BitOpX4_src2(r32,v)                         _BFSET_(r32,22,22,v)
    #define   GET16BitOpX4_src2(r16)                           _BFGET_(r16, 6, 6)
    #define   SET16BitOpX4_src2(r16,v)                         _BFSET_(r16, 6, 6,v)

    #define   GET32BitOpX4_mode2(r32)                          _BFGET_(r32,23,23)
    #define   SET32BitOpX4_mode2(r32,v)                        _BFSET_(r32,23,23,v)
    #define   GET16BitOpX4_mode2(r16)                          _BFGET_(r16, 7, 7)
    #define   SET16BitOpX4_mode2(r16,v)                        _BFSET_(r16, 7, 7,v)

    #define   GET32BitOpX4_idx3(r32)                           _BFGET_(r32,29,24)
    #define   SET32BitOpX4_idx3(r32,v)                         _BFSET_(r32,29,24,v)
    #define   GET16BitOpX4_idx3(r16)                           _BFGET_(r16,13, 8)
    #define   SET16BitOpX4_idx3(r16,v)                         _BFSET_(r16,13, 8,v)

    #define   GET32BitOpX4_src3(r32)                           _BFGET_(r32,30,30)
    #define   SET32BitOpX4_src3(r32,v)                         _BFSET_(r32,30,30,v)
    #define   GET16BitOpX4_src3(r16)                           _BFGET_(r16,14,14)
    #define   SET16BitOpX4_src3(r16,v)                         _BFSET_(r16,14,14,v)

    #define   GET32BitOpX4_mode3(r32)                          _BFGET_(r32,31,31)
    #define   SET32BitOpX4_mode3(r32,v)                        _BFSET_(r32,31,31,v)
    #define   GET16BitOpX4_mode3(r16)                          _BFGET_(r16,15,15)
    #define   SET16BitOpX4_mode3(r16,v)                        _BFSET_(r16,15,15,v)

            UNSG32 u_idx                                       :  6;
            UNSG32 u_src                                       :  1;
            UNSG32 u_mode                                      :  1;
            UNSG32 u_idx1                                      :  6;
            UNSG32 u_src1                                      :  1;
            UNSG32 u_mode1                                     :  1;
            UNSG32 u_idx2                                      :  6;
            UNSG32 u_src2                                      :  1;
            UNSG32 u_mode2                                     :  1;
            UNSG32 u_idx3                                      :  6;
            UNSG32 u_src3                                      :  1;
            UNSG32 u_mode3                                     :  1;
    ///////////////////////////////////////////////////////////
    } SIE_BitOpX4;

    ///////////////////////////////////////////////////////////
     SIGN32 BitOpX4_drvrd(SIE_BitOpX4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BitOpX4_drvwr(SIE_BitOpX4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BitOpX4_reset(SIE_BitOpX4 *p);
     SIGN32 BitOpX4_cmp  (SIE_BitOpX4 *p, SIE_BitOpX4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BitOpX4_check(p,pie,pfx,hLOG) BitOpX4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BitOpX4_print(p,    pfx,hLOG) BitOpX4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BitOpX4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BITOPRF64               biu              (4,4)
///     ###
///     * Operator format for BitOp extension
///     ###
///     # # ----------------------------------------------------------
///               : BitOp0             0x20
///               : BitOp1             0x21
///               : BitOp2             0x22
///               : BitOp3             0x23
///                            ###
///                            * extension ID definition; must be consistent with vScope_F0A64_BitOp0~3
///                            ###
///     @ 0x00000                      (P)
///     # 0x00000 cmd0                 
///               $BitOpX4             cmd0              REG       [4]
///     @ 0x00010                      (P)
///     # 0x00010 cmd1                 
///               $BitOpX4             cmd1              REG       [4]
///     @ 0x00020                      (P)
///     # 0x00020 cmd2                 
///               $BitOpX4             cmd2              REG       [4]
///     @ 0x00030                      (P)
///     # 0x00030 cmd3                 
///               $BitOpX4             cmd3              REG       [4]
///                                    ###
///                                    * Four BitOp commands, selected by extension ID
///                                    * End BitOpCtx
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BITOPRF64
#define h_BITOPRF64 (){}

    #define        BITOPRF64_BitOp0                            0x20
    #define        BITOPRF64_BitOp1                            0x21
    #define        BITOPRF64_BitOp2                            0x22
    #define        BITOPRF64_BitOp3                            0x23
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd0                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd1                              0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd2                              0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd3                              0x0030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BITOPRF64 {
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd0[4];
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd1[4];
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd2[4];
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd3[4];
    ///////////////////////////////////////////////////////////
    } SIE_BITOPRF64;

    ///////////////////////////////////////////////////////////
     SIGN32 BITOPRF64_drvrd(SIE_BITOPRF64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BITOPRF64_drvwr(SIE_BITOPRF64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BITOPRF64_reset(SIE_BITOPRF64 *p);
     SIGN32 BITOPRF64_cmp  (SIE_BITOPRF64 *p, SIE_BITOPRF64 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BITOPRF64_check(p,pie,pfx,hLOG) BITOPRF64_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BITOPRF64_print(p,    pfx,hLOG) BITOPRF64_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BITOPRF64
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LUT8b                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  data                      
///                                    ###
///                                    * Any 8b data
///                                    ###
///               %unsigned 8  data1                     
///               %unsigned 8  data2                     
///               %unsigned 8  data3                     
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_LUT8b
#define h_LUT8b (){}

    #define     BA_LUT8b_data                                  0x0000
    #define     B16LUT8b_data                                  0x0000
    #define   LSb32LUT8b_data                                     0
    #define   LSb16LUT8b_data                                     0
    #define       bLUT8b_data                                  8
    #define   MSK32LUT8b_data                                     0x000000FF

    #define     BA_LUT8b_data1                                 0x0001
    #define     B16LUT8b_data1                                 0x0000
    #define   LSb32LUT8b_data1                                    8
    #define   LSb16LUT8b_data1                                    8
    #define       bLUT8b_data1                                 8
    #define   MSK32LUT8b_data1                                    0x0000FF00

    #define     BA_LUT8b_data2                                 0x0002
    #define     B16LUT8b_data2                                 0x0002
    #define   LSb32LUT8b_data2                                    16
    #define   LSb16LUT8b_data2                                    0
    #define       bLUT8b_data2                                 8
    #define   MSK32LUT8b_data2                                    0x00FF0000

    #define     BA_LUT8b_data3                                 0x0003
    #define     B16LUT8b_data3                                 0x0002
    #define   LSb32LUT8b_data3                                    24
    #define   LSb16LUT8b_data3                                    8
    #define       bLUT8b_data3                                 8
    #define   MSK32LUT8b_data3                                    0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LUT8b {
    ///////////////////////////////////////////////////////////
    #define   GET32LUT8b_data(r32)                             _BFGET_(r32, 7, 0)
    #define   SET32LUT8b_data(r32,v)                           _BFSET_(r32, 7, 0,v)
    #define   GET16LUT8b_data(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16LUT8b_data(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32LUT8b_data1(r32)                            _BFGET_(r32,15, 8)
    #define   SET32LUT8b_data1(r32,v)                          _BFSET_(r32,15, 8,v)
    #define   GET16LUT8b_data1(r16)                            _BFGET_(r16,15, 8)
    #define   SET16LUT8b_data1(r16,v)                          _BFSET_(r16,15, 8,v)

    #define   GET32LUT8b_data2(r32)                            _BFGET_(r32,23,16)
    #define   SET32LUT8b_data2(r32,v)                          _BFSET_(r32,23,16,v)
    #define   GET16LUT8b_data2(r16)                            _BFGET_(r16, 7, 0)
    #define   SET16LUT8b_data2(r16,v)                          _BFSET_(r16, 7, 0,v)

    #define   GET32LUT8b_data3(r32)                            _BFGET_(r32,31,24)
    #define   SET32LUT8b_data3(r32,v)                          _BFSET_(r32,31,24,v)
    #define   GET16LUT8b_data3(r16)                            _BFGET_(r16,15, 8)
    #define   SET16LUT8b_data3(r16,v)                          _BFSET_(r16,15, 8,v)

            UNSG32 u_data                                      :  8;
            UNSG32 u_data1                                     :  8;
            UNSG32 u_data2                                     :  8;
            UNSG32 u_data3                                     :  8;
    ///////////////////////////////////////////////////////////
    } SIE_LUT8b;

    ///////////////////////////////////////////////////////////
     SIGN32 LUT8b_drvrd(SIE_LUT8b *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LUT8b_drvwr(SIE_LUT8b *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LUT8b_reset(SIE_LUT8b *p);
     SIGN32 LUT8b_cmp  (SIE_LUT8b *p, SIE_LUT8b *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LUT8b_check(p,pie,pfx,hLOG) LUT8b_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LUT8b_print(p,    pfx,hLOG) LUT8b_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LUT8b
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LUT64b                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 data_0i                   
///               %unsigned 32 data_1i                   
///                                    ###
///                                    * Any 64b data
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_LUT64b
#define h_LUT64b (){}

    #define     BA_LUT64b_data_0i                              0x0000
    #define     B16LUT64b_data_0i                              0x0000
    #define   LSb32LUT64b_data_0i                                 0
    #define   LSb16LUT64b_data_0i                                 0
    #define       bLUT64b_data_0i                              32
    #define   MSK32LUT64b_data_0i                                 0xFFFFFFFF

    #define     BA_LUT64b_data_1i                              0x0004
    #define     B16LUT64b_data_1i                              0x0004
    #define   LSb32LUT64b_data_1i                                 0
    #define   LSb16LUT64b_data_1i                                 0
    #define       bLUT64b_data_1i                              32
    #define   MSK32LUT64b_data_1i                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LUT64b {
    ///////////////////////////////////////////////////////////
    #define   GET32LUT64b_data_0i(r32)                         _BFGET_(r32,31, 0)
    #define   SET32LUT64b_data_0i(r32,v)                       _BFSET_(r32,31, 0,v)

            UNSG32 u_data_0i                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32LUT64b_data_1i(r32)                         _BFGET_(r32,31, 0)
    #define   SET32LUT64b_data_1i(r32,v)                       _BFSET_(r32,31, 0,v)

            UNSG32 u_data_1i                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_LUT64b;

    ///////////////////////////////////////////////////////////
     SIGN32 LUT64b_drvrd(SIE_LUT64b *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LUT64b_drvwr(SIE_LUT64b *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LUT64b_reset(SIE_LUT64b *p);
     SIGN32 LUT64b_cmp  (SIE_LUT64b *p, SIE_LUT64b *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LUT64b_check(p,pie,pfx,hLOG) LUT64b_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LUT64b_print(p,    pfx,hLOG) LUT64b_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LUT64b
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NLoc                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  BLK                       
///                                    ###
///                                    * Block index
///                                    ###
///               %unsigned 4  category                  
///                                    : 16x16                     0x8
///                                    : 8x16                      0x9
///                                    : 16x8                      0xA
///                                    : 4mv                       0xB
///                                    : 8x8                       0xC
///                                    : 4x8                       0xD
///                                    : 8x4                       0xE
///                                    : 4x4                       0xF
///                                                 ###
///                                                 * Consistent with vcMsg{RSVD,level,partition}
///                                                 * Valid cases for Neighbor:
///                                                 * 16x16=16x8
///                                                 * 8x16=4mv=8x8=8x4
///                                                 * 4x8=4x4=ACY
///                                                 * Valid cases for PMV:
///                                                 * 16x16=16x8
///                                                 * 8x16
///                                                 * 4mv=8x8=8x4
///                                                 * 4x8=4x4=ACY
///                                                 ###
///                                    : ACY                       0x0
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0~15 (every 4x4 indexed by coding order)
///                                                 ###
///                                    : ACU                       0x2
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0~3 (3rd 4x4 in every 8x8)
///                                                 ###
///                                    : ACV                       0x3
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0~3 (4th 4x4 in every 8x8)
///                                                 ###
///                                    : I16AC                     0x4
///                                                 ###
///                                                 * Only used as category, should be converted to ACY for neighbor look-up
///                                                 ###
///                                    : DCI                       0x4
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (3rd 4x4 in 4th 8x8 only)
///                                                 ###
///                                    : DCY                       0x5
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (4th 4x4 in 4th 8x8 only)
///                                                 ###
///                                    : SDPMV                     0x5
///                                                 ###
///                                                 * Reuse DCY in PMV extension, for Spatial Direct mode rIDX recovery.
///                                                 ###
///                                    : DCU                       0x6
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (3rd 4x4 in 3rd 8x8 only)
///                                                 ###
///                                    : DCV                       0x7
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (4th 4x4 in 3rd 8x8 only)
///                                                 ###
///               %unsigned 1  parity                    
///                                    ###
///                                    * 0/1 as even/odd, only for loop-filter
///                                    ###
///               %unsigned 1  direct                    
///                                    ###
///                                    * FW use only: if direct mode
///                                    * AVS: use for sym mode in hardware.
///                                    ###
///               %unsigned 2  motion                    
///                                    ###
///                                    * FW use only: motion type
///                                    ###
///               %unsigned 1  A                         
///                                    ###
///                                    * Left macroblock/block availability
///                                    ###
///               %unsigned 1  B                         
///                                    ###
///                                    * Upper macroblock/block availability
///                                    ###
///               %unsigned 1  C                         
///                                    ###
///                                    * Upper-right macroblock/block availability
///                                    ###
///               %unsigned 1  D                         
///                                    ###
///                                    * Upper-left macroblock/block availability
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NLoc
#define h_NLoc (){}

    #define     BA_NLoc_BLK                                    0x0000
    #define     B16NLoc_BLK                                    0x0000
    #define   LSb32NLoc_BLK                                       0
    #define   LSb16NLoc_BLK                                       0
    #define       bNLoc_BLK                                    4
    #define   MSK32NLoc_BLK                                       0x0000000F

    #define     BA_NLoc_category                               0x0000
    #define     B16NLoc_category                               0x0000
    #define   LSb32NLoc_category                                  4
    #define   LSb16NLoc_category                                  4
    #define       bNLoc_category                               4
    #define   MSK32NLoc_category                                  0x000000F0
    #define        NLoc_category_16x16                                      0x8
    #define        NLoc_category_8x16                                       0x9
    #define        NLoc_category_16x8                                       0xA
    #define        NLoc_category_4mv                                        0xB
    #define        NLoc_category_8x8                                        0xC
    #define        NLoc_category_4x8                                        0xD
    #define        NLoc_category_8x4                                        0xE
    #define        NLoc_category_4x4                                        0xF
    #define        NLoc_category_ACY                                        0x0
    #define        NLoc_category_ACU                                        0x2
    #define        NLoc_category_ACV                                        0x3
    #define        NLoc_category_I16AC                                      0x4
    #define        NLoc_category_DCI                                        0x4
    #define        NLoc_category_DCY                                        0x5
    #define        NLoc_category_SDPMV                                      0x5
    #define        NLoc_category_DCU                                        0x6
    #define        NLoc_category_DCV                                        0x7

    #define     BA_NLoc_parity                                 0x0001
    #define     B16NLoc_parity                                 0x0000
    #define   LSb32NLoc_parity                                    8
    #define   LSb16NLoc_parity                                    8
    #define       bNLoc_parity                                 1
    #define   MSK32NLoc_parity                                    0x00000100

    #define     BA_NLoc_direct                                 0x0001
    #define     B16NLoc_direct                                 0x0000
    #define   LSb32NLoc_direct                                    9
    #define   LSb16NLoc_direct                                    9
    #define       bNLoc_direct                                 1
    #define   MSK32NLoc_direct                                    0x00000200

    #define     BA_NLoc_motion                                 0x0001
    #define     B16NLoc_motion                                 0x0000
    #define   LSb32NLoc_motion                                    10
    #define   LSb16NLoc_motion                                    10
    #define       bNLoc_motion                                 2
    #define   MSK32NLoc_motion                                    0x00000C00

    #define     BA_NLoc_A                                      0x0001
    #define     B16NLoc_A                                      0x0000
    #define   LSb32NLoc_A                                         12
    #define   LSb16NLoc_A                                         12
    #define       bNLoc_A                                      1
    #define   MSK32NLoc_A                                         0x00001000

    #define     BA_NLoc_B                                      0x0001
    #define     B16NLoc_B                                      0x0000
    #define   LSb32NLoc_B                                         13
    #define   LSb16NLoc_B                                         13
    #define       bNLoc_B                                      1
    #define   MSK32NLoc_B                                         0x00002000

    #define     BA_NLoc_C                                      0x0001
    #define     B16NLoc_C                                      0x0000
    #define   LSb32NLoc_C                                         14
    #define   LSb16NLoc_C                                         14
    #define       bNLoc_C                                      1
    #define   MSK32NLoc_C                                         0x00004000

    #define     BA_NLoc_D                                      0x0001
    #define     B16NLoc_D                                      0x0000
    #define   LSb32NLoc_D                                         15
    #define   LSb16NLoc_D                                         15
    #define       bNLoc_D                                      1
    #define   MSK32NLoc_D                                         0x00008000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NLoc {
    ///////////////////////////////////////////////////////////
    #define   GET32NLoc_BLK(r32)                               _BFGET_(r32, 3, 0)
    #define   SET32NLoc_BLK(r32,v)                             _BFSET_(r32, 3, 0,v)
    #define   GET16NLoc_BLK(r16)                               _BFGET_(r16, 3, 0)
    #define   SET16NLoc_BLK(r16,v)                             _BFSET_(r16, 3, 0,v)

    #define   GET32NLoc_category(r32)                          _BFGET_(r32, 7, 4)
    #define   SET32NLoc_category(r32,v)                        _BFSET_(r32, 7, 4,v)
    #define   GET16NLoc_category(r16)                          _BFGET_(r16, 7, 4)
    #define   SET16NLoc_category(r16,v)                        _BFSET_(r16, 7, 4,v)

    #define   GET32NLoc_parity(r32)                            _BFGET_(r32, 8, 8)
    #define   SET32NLoc_parity(r32,v)                          _BFSET_(r32, 8, 8,v)
    #define   GET16NLoc_parity(r16)                            _BFGET_(r16, 8, 8)
    #define   SET16NLoc_parity(r16,v)                          _BFSET_(r16, 8, 8,v)

    #define   GET32NLoc_direct(r32)                            _BFGET_(r32, 9, 9)
    #define   SET32NLoc_direct(r32,v)                          _BFSET_(r32, 9, 9,v)
    #define   GET16NLoc_direct(r16)                            _BFGET_(r16, 9, 9)
    #define   SET16NLoc_direct(r16,v)                          _BFSET_(r16, 9, 9,v)

    #define   GET32NLoc_motion(r32)                            _BFGET_(r32,11,10)
    #define   SET32NLoc_motion(r32,v)                          _BFSET_(r32,11,10,v)
    #define   GET16NLoc_motion(r16)                            _BFGET_(r16,11,10)
    #define   SET16NLoc_motion(r16,v)                          _BFSET_(r16,11,10,v)

    #define   GET32NLoc_A(r32)                                 _BFGET_(r32,12,12)
    #define   SET32NLoc_A(r32,v)                               _BFSET_(r32,12,12,v)
    #define   GET16NLoc_A(r16)                                 _BFGET_(r16,12,12)
    #define   SET16NLoc_A(r16,v)                               _BFSET_(r16,12,12,v)

    #define   GET32NLoc_B(r32)                                 _BFGET_(r32,13,13)
    #define   SET32NLoc_B(r32,v)                               _BFSET_(r32,13,13,v)
    #define   GET16NLoc_B(r16)                                 _BFGET_(r16,13,13)
    #define   SET16NLoc_B(r16,v)                               _BFSET_(r16,13,13,v)

    #define   GET32NLoc_C(r32)                                 _BFGET_(r32,14,14)
    #define   SET32NLoc_C(r32,v)                               _BFSET_(r32,14,14,v)
    #define   GET16NLoc_C(r16)                                 _BFGET_(r16,14,14)
    #define   SET16NLoc_C(r16,v)                               _BFSET_(r16,14,14,v)

    #define   GET32NLoc_D(r32)                                 _BFGET_(r32,15,15)
    #define   SET32NLoc_D(r32,v)                               _BFSET_(r32,15,15,v)
    #define   GET16NLoc_D(r16)                                 _BFGET_(r16,15,15)
    #define   SET16NLoc_D(r16,v)                               _BFSET_(r16,15,15,v)

            UNSG32 u_BLK                                       :  4;
            UNSG32 u_category                                  :  4;
            UNSG32 u_parity                                    :  1;
            UNSG32 u_direct                                    :  1;
            UNSG32 u_motion                                    :  2;
            UNSG32 u_A                                         :  1;
            UNSG32 u_B                                         :  1;
            UNSG32 u_C                                         :  1;
            UNSG32 u_D                                         :  1;
    ///////////////////////////////////////////////////////////
    } SIE_NLoc;

    ///////////////////////////////////////////////////////////
     SIGN32 NLoc_drvrd(SIE_NLoc *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NLoc_drvwr(SIE_NLoc *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NLoc_reset(SIE_NLoc *p);
     SIGN32 NLoc_cmp  (SIE_NLoc *p, SIE_NLoc *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NLoc_check(p,pie,pfx,hLOG) NLoc_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NLoc_print(p,    pfx,hLOG) NLoc_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NLoc
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BLK                                      (4,4)
///     # # ----------------------------------------------------------
///               : skip               0x0
///               : direct16x16        0x1
///               : 4BLK               0x2
///               : inter              0x3
///               : IPCM               0x4
///               : intra16x16         0x5
///               : intraNxN           0x6
///                            ###
///                            * Sub-set of mb_type
///                            * MPEG2: only skip, inter, intra (intra16x16)
///                            * MPEG4/VC-1: only 1 intra type (intra16x16)
///                            * AVS: skip, direct16x16, 4BLK, inter, intra16x16 (only 1 intra type)
///                            ###
///     @ 0x00000                      (P)
///               %unsigned 2  motion                    
///                                    : Intra                     0x0
///                                    : Forward                   0x1
///                                    : Backward                  0x2
///                                    : Bi                        0x3
///                                                 ###
///                                                 * Derived 8x8 block motion type
///                                                 * NOTE: direct mode uses 'Bi'
///                                                 ###
///               %unsigned 2  partition                 
///                                    : 1mv                       0x0
///                                    : 2mvLR                     0x1
///                                    : 2mvTB                     0x2
///                                                 ###
///                                                 * MPEG2: 2mvTB used for field prediction
///                                                 * VC-1: 2-field-mv
///                                                 ###
///                                    : 4mv                       0x3
///                                                 ###
///                                                 * Block/macroblock level partitioning
///                                                 * MPEG4: 1mv & 4mv
///                                                 ###
///                                    : 4mvFLD                    0x1
///                                                 ###
///                                                 * VC-1: 4-field-mv
///                                                 ###
///               %unsigned 1  direct                    
///                                    ###
///                                    * Direct mode flag
///                                    * MPEG2: dual-prime prediction
///                                    ###
///               %unsigned 3  mvs                       
///                                    ###
///                                    * Number of motion vectors: 0/1/2/4
///                                    ###
///               %unsigned 2  motion1                   
///               %unsigned 2  partition1                
///               %unsigned 1  direct1                   
///               %unsigned 3  mvs1                      
///               %unsigned 2  motion2                   
///               %unsigned 2  partition2                
///               %unsigned 1  direct2                   
///               %unsigned 3  mvs2                      
///               %unsigned 2  motion3                   
///               %unsigned 2  partition3                
///               %unsigned 1  direct3                   
///               %unsigned 3  mvs3                      
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BLK
#define h_BLK (){}

    #define        BLK_skip                                    0x0
    #define        BLK_direct16x16                             0x1
    #define        BLK_4BLK                                    0x2
    #define        BLK_inter                                   0x3
    #define        BLK_IPCM                                    0x4
    #define        BLK_intra16x16                              0x5
    #define        BLK_intraNxN                                0x6
    ///////////////////////////////////////////////////////////

    #define     BA_BLK_motion                                  0x0000
    #define     B16BLK_motion                                  0x0000
    #define   LSb32BLK_motion                                     0
    #define   LSb16BLK_motion                                     0
    #define       bBLK_motion                                  2
    #define   MSK32BLK_motion                                     0x00000003
    #define        BLK_motion_Intra                                         0x0
    #define        BLK_motion_Forward                                       0x1
    #define        BLK_motion_Backward                                      0x2
    #define        BLK_motion_Bi                                            0x3

    #define     BA_BLK_partition                               0x0000
    #define     B16BLK_partition                               0x0000
    #define   LSb32BLK_partition                                  2
    #define   LSb16BLK_partition                                  2
    #define       bBLK_partition                               2
    #define   MSK32BLK_partition                                  0x0000000C
    #define        BLK_partition_1mv                                        0x0
    #define        BLK_partition_2mvLR                                      0x1
    #define        BLK_partition_2mvTB                                      0x2
    #define        BLK_partition_4mv                                        0x3
    #define        BLK_partition_4mvFLD                                     0x1

    #define     BA_BLK_direct                                  0x0000
    #define     B16BLK_direct                                  0x0000
    #define   LSb32BLK_direct                                     4
    #define   LSb16BLK_direct                                     4
    #define       bBLK_direct                                  1
    #define   MSK32BLK_direct                                     0x00000010

    #define     BA_BLK_mvs                                     0x0000
    #define     B16BLK_mvs                                     0x0000
    #define   LSb32BLK_mvs                                        5
    #define   LSb16BLK_mvs                                        5
    #define       bBLK_mvs                                     3
    #define   MSK32BLK_mvs                                        0x000000E0

    #define     BA_BLK_motion1                                 0x0001
    #define     B16BLK_motion1                                 0x0000
    #define   LSb32BLK_motion1                                    8
    #define   LSb16BLK_motion1                                    8
    #define       bBLK_motion1                                 2
    #define   MSK32BLK_motion1                                    0x00000300

    #define     BA_BLK_partition1                              0x0001
    #define     B16BLK_partition1                              0x0000
    #define   LSb32BLK_partition1                                 10
    #define   LSb16BLK_partition1                                 10
    #define       bBLK_partition1                              2
    #define   MSK32BLK_partition1                                 0x00000C00

    #define     BA_BLK_direct1                                 0x0001
    #define     B16BLK_direct1                                 0x0000
    #define   LSb32BLK_direct1                                    12
    #define   LSb16BLK_direct1                                    12
    #define       bBLK_direct1                                 1
    #define   MSK32BLK_direct1                                    0x00001000

    #define     BA_BLK_mvs1                                    0x0001
    #define     B16BLK_mvs1                                    0x0000
    #define   LSb32BLK_mvs1                                       13
    #define   LSb16BLK_mvs1                                       13
    #define       bBLK_mvs1                                    3
    #define   MSK32BLK_mvs1                                       0x0000E000

    #define     BA_BLK_motion2                                 0x0002
    #define     B16BLK_motion2                                 0x0002
    #define   LSb32BLK_motion2                                    16
    #define   LSb16BLK_motion2                                    0
    #define       bBLK_motion2                                 2
    #define   MSK32BLK_motion2                                    0x00030000

    #define     BA_BLK_partition2                              0x0002
    #define     B16BLK_partition2                              0x0002
    #define   LSb32BLK_partition2                                 18
    #define   LSb16BLK_partition2                                 2
    #define       bBLK_partition2                              2
    #define   MSK32BLK_partition2                                 0x000C0000

    #define     BA_BLK_direct2                                 0x0002
    #define     B16BLK_direct2                                 0x0002
    #define   LSb32BLK_direct2                                    20
    #define   LSb16BLK_direct2                                    4
    #define       bBLK_direct2                                 1
    #define   MSK32BLK_direct2                                    0x00100000

    #define     BA_BLK_mvs2                                    0x0002
    #define     B16BLK_mvs2                                    0x0002
    #define   LSb32BLK_mvs2                                       21
    #define   LSb16BLK_mvs2                                       5
    #define       bBLK_mvs2                                    3
    #define   MSK32BLK_mvs2                                       0x00E00000

    #define     BA_BLK_motion3                                 0x0003
    #define     B16BLK_motion3                                 0x0002
    #define   LSb32BLK_motion3                                    24
    #define   LSb16BLK_motion3                                    8
    #define       bBLK_motion3                                 2
    #define   MSK32BLK_motion3                                    0x03000000

    #define     BA_BLK_partition3                              0x0003
    #define     B16BLK_partition3                              0x0002
    #define   LSb32BLK_partition3                                 26
    #define   LSb16BLK_partition3                                 10
    #define       bBLK_partition3                              2
    #define   MSK32BLK_partition3                                 0x0C000000

    #define     BA_BLK_direct3                                 0x0003
    #define     B16BLK_direct3                                 0x0002
    #define   LSb32BLK_direct3                                    28
    #define   LSb16BLK_direct3                                    12
    #define       bBLK_direct3                                 1
    #define   MSK32BLK_direct3                                    0x10000000

    #define     BA_BLK_mvs3                                    0x0003
    #define     B16BLK_mvs3                                    0x0002
    #define   LSb32BLK_mvs3                                       29
    #define   LSb16BLK_mvs3                                       13
    #define       bBLK_mvs3                                    3
    #define   MSK32BLK_mvs3                                       0xE0000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BLK {
    ///////////////////////////////////////////////////////////
    #define   GET32BLK_motion(r32)                             _BFGET_(r32, 1, 0)
    #define   SET32BLK_motion(r32,v)                           _BFSET_(r32, 1, 0,v)
    #define   GET16BLK_motion(r16)                             _BFGET_(r16, 1, 0)
    #define   SET16BLK_motion(r16,v)                           _BFSET_(r16, 1, 0,v)

    #define   GET32BLK_partition(r32)                          _BFGET_(r32, 3, 2)
    #define   SET32BLK_partition(r32,v)                        _BFSET_(r32, 3, 2,v)
    #define   GET16BLK_partition(r16)                          _BFGET_(r16, 3, 2)
    #define   SET16BLK_partition(r16,v)                        _BFSET_(r16, 3, 2,v)

    #define   GET32BLK_direct(r32)                             _BFGET_(r32, 4, 4)
    #define   SET32BLK_direct(r32,v)                           _BFSET_(r32, 4, 4,v)
    #define   GET16BLK_direct(r16)                             _BFGET_(r16, 4, 4)
    #define   SET16BLK_direct(r16,v)                           _BFSET_(r16, 4, 4,v)

    #define   GET32BLK_mvs(r32)                                _BFGET_(r32, 7, 5)
    #define   SET32BLK_mvs(r32,v)                              _BFSET_(r32, 7, 5,v)
    #define   GET16BLK_mvs(r16)                                _BFGET_(r16, 7, 5)
    #define   SET16BLK_mvs(r16,v)                              _BFSET_(r16, 7, 5,v)

    #define   GET32BLK_motion1(r32)                            _BFGET_(r32, 9, 8)
    #define   SET32BLK_motion1(r32,v)                          _BFSET_(r32, 9, 8,v)
    #define   GET16BLK_motion1(r16)                            _BFGET_(r16, 9, 8)
    #define   SET16BLK_motion1(r16,v)                          _BFSET_(r16, 9, 8,v)

    #define   GET32BLK_partition1(r32)                         _BFGET_(r32,11,10)
    #define   SET32BLK_partition1(r32,v)                       _BFSET_(r32,11,10,v)
    #define   GET16BLK_partition1(r16)                         _BFGET_(r16,11,10)
    #define   SET16BLK_partition1(r16,v)                       _BFSET_(r16,11,10,v)

    #define   GET32BLK_direct1(r32)                            _BFGET_(r32,12,12)
    #define   SET32BLK_direct1(r32,v)                          _BFSET_(r32,12,12,v)
    #define   GET16BLK_direct1(r16)                            _BFGET_(r16,12,12)
    #define   SET16BLK_direct1(r16,v)                          _BFSET_(r16,12,12,v)

    #define   GET32BLK_mvs1(r32)                               _BFGET_(r32,15,13)
    #define   SET32BLK_mvs1(r32,v)                             _BFSET_(r32,15,13,v)
    #define   GET16BLK_mvs1(r16)                               _BFGET_(r16,15,13)
    #define   SET16BLK_mvs1(r16,v)                             _BFSET_(r16,15,13,v)

    #define   GET32BLK_motion2(r32)                            _BFGET_(r32,17,16)
    #define   SET32BLK_motion2(r32,v)                          _BFSET_(r32,17,16,v)
    #define   GET16BLK_motion2(r16)                            _BFGET_(r16, 1, 0)
    #define   SET16BLK_motion2(r16,v)                          _BFSET_(r16, 1, 0,v)

    #define   GET32BLK_partition2(r32)                         _BFGET_(r32,19,18)
    #define   SET32BLK_partition2(r32,v)                       _BFSET_(r32,19,18,v)
    #define   GET16BLK_partition2(r16)                         _BFGET_(r16, 3, 2)
    #define   SET16BLK_partition2(r16,v)                       _BFSET_(r16, 3, 2,v)

    #define   GET32BLK_direct2(r32)                            _BFGET_(r32,20,20)
    #define   SET32BLK_direct2(r32,v)                          _BFSET_(r32,20,20,v)
    #define   GET16BLK_direct2(r16)                            _BFGET_(r16, 4, 4)
    #define   SET16BLK_direct2(r16,v)                          _BFSET_(r16, 4, 4,v)

    #define   GET32BLK_mvs2(r32)                               _BFGET_(r32,23,21)
    #define   SET32BLK_mvs2(r32,v)                             _BFSET_(r32,23,21,v)
    #define   GET16BLK_mvs2(r16)                               _BFGET_(r16, 7, 5)
    #define   SET16BLK_mvs2(r16,v)                             _BFSET_(r16, 7, 5,v)

    #define   GET32BLK_motion3(r32)                            _BFGET_(r32,25,24)
    #define   SET32BLK_motion3(r32,v)                          _BFSET_(r32,25,24,v)
    #define   GET16BLK_motion3(r16)                            _BFGET_(r16, 9, 8)
    #define   SET16BLK_motion3(r16,v)                          _BFSET_(r16, 9, 8,v)

    #define   GET32BLK_partition3(r32)                         _BFGET_(r32,27,26)
    #define   SET32BLK_partition3(r32,v)                       _BFSET_(r32,27,26,v)
    #define   GET16BLK_partition3(r16)                         _BFGET_(r16,11,10)
    #define   SET16BLK_partition3(r16,v)                       _BFSET_(r16,11,10,v)

    #define   GET32BLK_direct3(r32)                            _BFGET_(r32,28,28)
    #define   SET32BLK_direct3(r32,v)                          _BFSET_(r32,28,28,v)
    #define   GET16BLK_direct3(r16)                            _BFGET_(r16,12,12)
    #define   SET16BLK_direct3(r16,v)                          _BFSET_(r16,12,12,v)

    #define   GET32BLK_mvs3(r32)                               _BFGET_(r32,31,29)
    #define   SET32BLK_mvs3(r32,v)                             _BFSET_(r32,31,29,v)
    #define   GET16BLK_mvs3(r16)                               _BFGET_(r16,15,13)
    #define   SET16BLK_mvs3(r16,v)                             _BFSET_(r16,15,13,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_direct                                    :  1;
            UNSG32 u_mvs                                       :  3;
            UNSG32 u_motion1                                   :  2;
            UNSG32 u_partition1                                :  2;
            UNSG32 u_direct1                                   :  1;
            UNSG32 u_mvs1                                      :  3;
            UNSG32 u_motion2                                   :  2;
            UNSG32 u_partition2                                :  2;
            UNSG32 u_direct2                                   :  1;
            UNSG32 u_mvs2                                      :  3;
            UNSG32 u_motion3                                   :  2;
            UNSG32 u_partition3                                :  2;
            UNSG32 u_direct3                                   :  1;
            UNSG32 u_mvs3                                      :  3;
    ///////////////////////////////////////////////////////////
    } SIE_BLK;

    ///////////////////////////////////////////////////////////
     SIGN32 BLK_drvrd(SIE_BLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BLK_drvwr(SIE_BLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BLK_reset(SIE_BLK *p);
     SIGN32 BLK_cmp  (SIE_BLK *p, SIE_BLK *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BLK_check(p,pie,pfx,hLOG) BLK_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BLK_print(p,    pfx,hLOG) BLK_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BLK
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MV                                       (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 2  motion                    
///                                    ###
///                                    * Derived 8x8 block motion type (direct mode uses 'Bi'), see BLK.motion above
///                                    ###
///               %signed   14 X                         
///                                    ###
///                                    * Horizontal motion vector,
///                                    * Or MVD between parser & syntax processor
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type above
///                                    ###
///               %signed   13 Y                         
///                                    ###
///                                    * Vertical motion vector,
///                                    * Or MVD between parser & syntax processor
///                                    * End of MV
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MV
#define h_MV (){}

    #define     BA_MV_motion                                   0x0000
    #define     B16MV_motion                                   0x0000
    #define   LSb32MV_motion                                      0
    #define   LSb16MV_motion                                      0
    #define       bMV_motion                                   2
    #define   MSK32MV_motion                                      0x00000003

    #define     BA_MV_X                                        0x0000
    #define     B16MV_X                                        0x0000
    #define   LSb32MV_X                                           2
    #define   LSb16MV_X                                           2
    #define       bMV_X                                        14
    #define   MSK32MV_X                                           0x0000FFFC

    #define     BA_MV_type                                     0x0002
    #define     B16MV_type                                     0x0002
    #define   LSb32MV_type                                        16
    #define   LSb16MV_type                                        0
    #define       bMV_type                                     3
    #define   MSK32MV_type                                        0x00070000

    #define     BA_MV_Y                                        0x0002
    #define     B16MV_Y                                        0x0002
    #define   LSb32MV_Y                                           19
    #define   LSb16MV_Y                                           3
    #define       bMV_Y                                        13
    #define   MSK32MV_Y                                           0xFFF80000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MV {
    ///////////////////////////////////////////////////////////
    #define   GET32MV_motion(r32)                              _BFGET_(r32, 1, 0)
    #define   SET32MV_motion(r32,v)                            _BFSET_(r32, 1, 0,v)
    #define   GET16MV_motion(r16)                              _BFGET_(r16, 1, 0)
    #define   SET16MV_motion(r16,v)                            _BFSET_(r16, 1, 0,v)

    #define   GET32MV_X(r32)                                   _BFGET_(r32,15, 2)
    #define   SET32MV_X(r32,v)                                 _BFSET_(r32,15, 2,v)
    #define   GET16MV_X(r16)                                   _BFGET_(r16,15, 2)
    #define   SET16MV_X(r16,v)                                 _BFSET_(r16,15, 2,v)

    #define   GET32MV_type(r32)                                _BFGET_(r32,18,16)
    #define   SET32MV_type(r32,v)                              _BFSET_(r32,18,16,v)
    #define   GET16MV_type(r16)                                _BFGET_(r16, 2, 0)
    #define   SET16MV_type(r16,v)                              _BFSET_(r16, 2, 0,v)

    #define   GET32MV_Y(r32)                                   _BFGET_(r32,31,19)
    #define   SET32MV_Y(r32,v)                                 _BFSET_(r32,31,19,v)
    #define   GET16MV_Y(r16)                                   _BFGET_(r16,15, 3)
    #define   SET16MV_Y(r16,v)                                 _BFSET_(r16,15, 3,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 s_X                                         : 14;
            UNSG32 u_type                                      :  3;
            UNSG32 s_Y                                         : 13;
    ///////////////////////////////////////////////////////////
    } SIE_MV;

    ///////////////////////////////////////////////////////////
     SIGN32 MV_drvrd(SIE_MV *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MV_drvwr(SIE_MV *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MV_reset(SIE_MV *p);
     SIGN32 MV_cmp  (SIE_MV *p, SIE_MV *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MV_check(p,pie,pfx,hLOG) MV_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MV_print(p,    pfx,hLOG) MV_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MV
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTX                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as direct mode between parser & syntax processor):
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 5  rIDX                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as P/B-skip & direct mode between parser & syntax processor):
///                                    * Syntax 'RefListIdx' directly decoded from bit stream (field information embedded)
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * Flatten 4x4s in each 8x8:
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || fore-pred)
///                                    * NOTE: = 0 for direct mode
///                                    * VC-1:
///                                    * PMV output: for hybridPred
///                                    * PMV input: predictor_flag (0: use dominant PMV)
///                                    ###
///               %unsigned 1  transform                 
///                                    ###
///                                    * MB property (flatten in all 4x4s):
///                                    * H.264: if 8x8 transform
///                                    * Others: if field transform
///                                    ###
///               %unsigned 1  NCBPY                     
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Luma using block category ACV (4th 4x4),
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !(IPCM || cbp_luma)
///                                    ###
///               %unsigned 1  MixFLG                    
///                                    ###
///                                    * CABAC use only:
///                                    * CBP chroma using block category DCU/DCV,
///                                    * (Only at 3rd & 4th 4x4s in 3rd 8x8):
///                                    * bin[0]: IPCM || !(skipped || (cbp_chroma == 0))
///                                    * bin[1]: IPCM || !(skipped || (cbp_chroma != 2))
///                                    * Or:
///                                    * mb_type using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * I_SLICE: = !I_NXN
///                                    * P_SLICE: = 0
///                                    * B_SLICE: = !skipped && !direct_16x16
///                                    * Or:
///                                    * intra-chroma_pred using block category DCI,
///                                    * (Only at 3rd 4x4 in 4th 8x8):
///                                    * = Intra && !IPCM && (intra_chroma_pred != 0)
///                                    * Or:
///                                    * Temporal context buffers for direct mode use
///                                    ###
///                                    : 8x8                       0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 1st 8x8:
///                                                 * = if MB contains no sub-8x8 partition
///                                                 ###
///                                    : 16x16                     0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 2nd 8x8:
///                                                 * = if MB contains only 1 partition (16x16)
///                                                 ###
///               %unsigned 1  CBFY                      
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Using block category ACY (every 4x4s):
///                                    * = IPCM || cbf_luma_ac
///                                    ###
///               %unsigned 1  CBFUV                     
///                                    ###
///                                    * CABAC use only:
///                                    * Using block category ACU/ACV,
///                                    * (Only at 3rd & 4th 4x4 in each 8x8s):
///                                    * = IPCM || cbf_chroma_ac
///                                    ###
///               %unsigned 1  CBFDC                     
///                                    ###
///                                    * CABAC use only:
///                                    * LumaDC using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * = IPCM || (I_16x16 && cbf_luma_dc)
///                                    * ChromaDC using block category DCU/DCV,
///                                    * (Only at 3rd 4x4 in 3rd & 4th 8x8):
///                                    * = IPCM || cbf_chroma_dc
///                                    ###
///               %unsigned 6  ABSMVDX                   
///                                    ###
///                                    * CABAC use only:
///                                    * MIN( ABS(MVD.x), 63 )
///                                    ###
///               %unsigned 7  ABSMVDY                   
///                                    ###
///                                    * CABAC use only:
///                                    * MIN( ABS(MVD.y), 127 )
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTX
#define h_FCTX (){}

    #define     BA_FCTX_rBID                                   0x0000
    #define     B16FCTX_rBID                                   0x0000
    #define   LSb32FCTX_rBID                                      0
    #define   LSb16FCTX_rBID                                      0
    #define       bFCTX_rBID                                   6
    #define   MSK32FCTX_rBID                                      0x0000003F

    #define     BA_FCTX_rIDX                                   0x0000
    #define     B16FCTX_rIDX                                   0x0000
    #define   LSb32FCTX_rIDX                                      6
    #define   LSb16FCTX_rIDX                                      6
    #define       bFCTX_rIDX                                   5
    #define   MSK32FCTX_rIDX                                      0x000007C0

    #define     BA_FCTX_FLD                                    0x0001
    #define     B16FCTX_FLD                                    0x0000
    #define   LSb32FCTX_FLD                                       11
    #define   LSb16FCTX_FLD                                       11
    #define       bFCTX_FLD                                    1
    #define   MSK32FCTX_FLD                                       0x00000800

    #define     BA_FCTX_equalpred                              0x0001
    #define     B16FCTX_equalpred                              0x0000
    #define   LSb32FCTX_equalpred                                 12
    #define   LSb16FCTX_equalpred                                 12
    #define       bFCTX_equalpred                              1
    #define   MSK32FCTX_equalpred                                 0x00001000

    #define     BA_FCTX_transform                              0x0001
    #define     B16FCTX_transform                              0x0000
    #define   LSb32FCTX_transform                                 13
    #define   LSb16FCTX_transform                                 13
    #define       bFCTX_transform                              1
    #define   MSK32FCTX_transform                                 0x00002000

    #define     BA_FCTX_NCBPY                                  0x0001
    #define     B16FCTX_NCBPY                                  0x0000
    #define   LSb32FCTX_NCBPY                                     14
    #define   LSb16FCTX_NCBPY                                     14
    #define       bFCTX_NCBPY                                  1
    #define   MSK32FCTX_NCBPY                                     0x00004000

    #define     BA_FCTX_MixFLG                                 0x0001
    #define     B16FCTX_MixFLG                                 0x0000
    #define   LSb32FCTX_MixFLG                                    15
    #define   LSb16FCTX_MixFLG                                    15
    #define       bFCTX_MixFLG                                 1
    #define   MSK32FCTX_MixFLG                                    0x00008000
    #define        FCTX_MixFLG_8x8                                          0x1
    #define        FCTX_MixFLG_16x16                                        0x1

    #define     BA_FCTX_CBFY                                   0x0002
    #define     B16FCTX_CBFY                                   0x0002
    #define   LSb32FCTX_CBFY                                      16
    #define   LSb16FCTX_CBFY                                      0
    #define       bFCTX_CBFY                                   1
    #define   MSK32FCTX_CBFY                                      0x00010000

    #define     BA_FCTX_CBFUV                                  0x0002
    #define     B16FCTX_CBFUV                                  0x0002
    #define   LSb32FCTX_CBFUV                                     17
    #define   LSb16FCTX_CBFUV                                     1
    #define       bFCTX_CBFUV                                  1
    #define   MSK32FCTX_CBFUV                                     0x00020000

    #define     BA_FCTX_CBFDC                                  0x0002
    #define     B16FCTX_CBFDC                                  0x0002
    #define   LSb32FCTX_CBFDC                                     18
    #define   LSb16FCTX_CBFDC                                     2
    #define       bFCTX_CBFDC                                  1
    #define   MSK32FCTX_CBFDC                                     0x00040000

    #define     BA_FCTX_ABSMVDX                                0x0002
    #define     B16FCTX_ABSMVDX                                0x0002
    #define   LSb32FCTX_ABSMVDX                                   19
    #define   LSb16FCTX_ABSMVDX                                   3
    #define       bFCTX_ABSMVDX                                6
    #define   MSK32FCTX_ABSMVDX                                   0x01F80000

    #define     BA_FCTX_ABSMVDY                                0x0003
    #define     B16FCTX_ABSMVDY                                0x0002
    #define   LSb32FCTX_ABSMVDY                                   25
    #define   LSb16FCTX_ABSMVDY                                   9
    #define       bFCTX_ABSMVDY                                7
    #define   MSK32FCTX_ABSMVDY                                   0xFE000000
    ///////////////////////////////////////////////////////////
    #define     RA_FCTX_mv                                     0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTX {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTX_rBID(r32)                              _BFGET_(r32, 5, 0)
    #define   SET32FCTX_rBID(r32,v)                            _BFSET_(r32, 5, 0,v)
    #define   GET16FCTX_rBID(r16)                              _BFGET_(r16, 5, 0)
    #define   SET16FCTX_rBID(r16,v)                            _BFSET_(r16, 5, 0,v)

    #define   GET32FCTX_rIDX(r32)                              _BFGET_(r32,10, 6)
    #define   SET32FCTX_rIDX(r32,v)                            _BFSET_(r32,10, 6,v)
    #define   GET16FCTX_rIDX(r16)                              _BFGET_(r16,10, 6)
    #define   SET16FCTX_rIDX(r16,v)                            _BFSET_(r16,10, 6,v)

    #define   GET32FCTX_FLD(r32)                               _BFGET_(r32,11,11)
    #define   SET32FCTX_FLD(r32,v)                             _BFSET_(r32,11,11,v)
    #define   GET16FCTX_FLD(r16)                               _BFGET_(r16,11,11)
    #define   SET16FCTX_FLD(r16,v)                             _BFSET_(r16,11,11,v)

    #define   GET32FCTX_equalpred(r32)                         _BFGET_(r32,12,12)
    #define   SET32FCTX_equalpred(r32,v)                       _BFSET_(r32,12,12,v)
    #define   GET16FCTX_equalpred(r16)                         _BFGET_(r16,12,12)
    #define   SET16FCTX_equalpred(r16,v)                       _BFSET_(r16,12,12,v)

    #define   GET32FCTX_transform(r32)                         _BFGET_(r32,13,13)
    #define   SET32FCTX_transform(r32,v)                       _BFSET_(r32,13,13,v)
    #define   GET16FCTX_transform(r16)                         _BFGET_(r16,13,13)
    #define   SET16FCTX_transform(r16,v)                       _BFSET_(r16,13,13,v)

    #define   GET32FCTX_NCBPY(r32)                             _BFGET_(r32,14,14)
    #define   SET32FCTX_NCBPY(r32,v)                           _BFSET_(r32,14,14,v)
    #define   GET16FCTX_NCBPY(r16)                             _BFGET_(r16,14,14)
    #define   SET16FCTX_NCBPY(r16,v)                           _BFSET_(r16,14,14,v)

    #define   GET32FCTX_MixFLG(r32)                            _BFGET_(r32,15,15)
    #define   SET32FCTX_MixFLG(r32,v)                          _BFSET_(r32,15,15,v)
    #define   GET16FCTX_MixFLG(r16)                            _BFGET_(r16,15,15)
    #define   SET16FCTX_MixFLG(r16,v)                          _BFSET_(r16,15,15,v)

    #define   GET32FCTX_CBFY(r32)                              _BFGET_(r32,16,16)
    #define   SET32FCTX_CBFY(r32,v)                            _BFSET_(r32,16,16,v)
    #define   GET16FCTX_CBFY(r16)                              _BFGET_(r16, 0, 0)
    #define   SET16FCTX_CBFY(r16,v)                            _BFSET_(r16, 0, 0,v)

    #define   GET32FCTX_CBFUV(r32)                             _BFGET_(r32,17,17)
    #define   SET32FCTX_CBFUV(r32,v)                           _BFSET_(r32,17,17,v)
    #define   GET16FCTX_CBFUV(r16)                             _BFGET_(r16, 1, 1)
    #define   SET16FCTX_CBFUV(r16,v)                           _BFSET_(r16, 1, 1,v)

    #define   GET32FCTX_CBFDC(r32)                             _BFGET_(r32,18,18)
    #define   SET32FCTX_CBFDC(r32,v)                           _BFSET_(r32,18,18,v)
    #define   GET16FCTX_CBFDC(r16)                             _BFGET_(r16, 2, 2)
    #define   SET16FCTX_CBFDC(r16,v)                           _BFSET_(r16, 2, 2,v)

    #define   GET32FCTX_ABSMVDX(r32)                           _BFGET_(r32,24,19)
    #define   SET32FCTX_ABSMVDX(r32,v)                         _BFSET_(r32,24,19,v)
    #define   GET16FCTX_ABSMVDX(r16)                           _BFGET_(r16, 8, 3)
    #define   SET16FCTX_ABSMVDX(r16,v)                         _BFSET_(r16, 8, 3,v)

    #define   GET32FCTX_ABSMVDY(r32)                           _BFGET_(r32,31,25)
    #define   SET32FCTX_ABSMVDY(r32,v)                         _BFSET_(r32,31,25,v)
    #define   GET16FCTX_ABSMVDY(r16)                           _BFGET_(r16,15, 9)
    #define   SET16FCTX_ABSMVDY(r16,v)                         _BFSET_(r16,15, 9,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_transform                                 :  1;
            UNSG32 u_NCBPY                                     :  1;
            UNSG32 u_MixFLG                                    :  1;
            UNSG32 u_CBFY                                      :  1;
            UNSG32 u_CBFUV                                     :  1;
            UNSG32 u_CBFDC                                     :  1;
            UNSG32 u_ABSMVDX                                   :  6;
            UNSG32 u_ABSMVDY                                   :  7;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_FCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTX_drvrd(SIE_FCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTX_drvwr(SIE_FCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTX_reset(SIE_FCTX *p);
     SIGN32 FCTX_cmp  (SIE_FCTX *p, SIE_FCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTX_check(p,pie,pfx,hLOG) FCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTX_print(p,    pfx,hLOG) FCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTX_VC1                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as direct mode between parser & syntax processor):
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 5  rIDX                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as P/B-skip & direct mode between parser & syntax processor):
///                                    * Syntax 'RefListIdx' directly decoded from bit stream (field information embedded)
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * Flatten 4x4s in each 8x8:
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || fore-pred)
///                                    * NOTE: = 0 for direct mode
///                                    * VC-1:
///                                    * PMV output: for hybridPred
///                                    * PMV input: predictor_flag (0: use dominant PMV)
///                                    ###
///               %unsigned 1  transform                 
///                                    ###
///                                    * MB property (flatten in all 4x4s):
///                                    * H.264: if 8x8 transform
///                                    * Others: if field transform
///                                    ###
///               %unsigned 1  NCBPY                     
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Luma using block category ACV (4th 4x4),
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !(IPCM || cbp_luma)
///                                    ###
///               %unsigned 1  MixFLG                    
///                                    ###
///                                    * CABAC use only:
///                                    * CBP chroma using block category DCU/DCV,
///                                    * (Only at 3rd & 4th 4x4s in 3rd 8x8):
///                                    * bin[0]: IPCM || !(skipped || (cbp_chroma == 0))
///                                    * bin[1]: IPCM || !(skipped || (cbp_chroma != 2))
///                                    * Or:
///                                    * mb_type using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * I_SLICE: = !I_NXN
///                                    * P_SLICE: = 0
///                                    * B_SLICE: = !skipped && !direct_16x16
///                                    * Or:
///                                    * intra-chroma_pred using block category DCI,
///                                    * (Only at 3rd 4x4 in 4th 8x8):
///                                    * = Intra && !IPCM && (intra_chroma_pred != 0)
///                                    * Or:
///                                    * Temporal context buffers for direct mode use
///                                    ###
///                                    : 8x8                       0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 1st 8x8:
///                                                 * = if MB contains no sub-8x8 partition
///                                                 ###
///                                    : 16x16                     0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 2nd 8x8:
///                                                 * = if MB contains only 1 partition (16x16)
///                                                 ###
///               %unsigned 2  dctSelY                   
///                                    : 4x4                       0x0
///                                    : 8x8                       0x1
///                                    : 4x8                       0x2
///                                    : 8x4                       0x3
///                                                 ###
///                                                 * DCT transform type for Y, used for VC-1 Fop
///                                                 * flattened to all 4x4 blocks within transform block
///                                                 ###
///               %unsigned 1  CBFY                      
///                                    ###
///                                    * coded block (4x4) flag for Y, used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFY8x8                   
///                                    ###
///                                    * coded block (8x8) flag for Y, used for VC-1 MP Fop
///                                    ###
///               %unsigned 12 RSVD12                    
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTX_VC1
#define h_FCTX_VC1 (){}

    #define     BA_FCTX_VC1_rBID                               0x0000
    #define     B16FCTX_VC1_rBID                               0x0000
    #define   LSb32FCTX_VC1_rBID                                  0
    #define   LSb16FCTX_VC1_rBID                                  0
    #define       bFCTX_VC1_rBID                               6
    #define   MSK32FCTX_VC1_rBID                                  0x0000003F

    #define     BA_FCTX_VC1_rIDX                               0x0000
    #define     B16FCTX_VC1_rIDX                               0x0000
    #define   LSb32FCTX_VC1_rIDX                                  6
    #define   LSb16FCTX_VC1_rIDX                                  6
    #define       bFCTX_VC1_rIDX                               5
    #define   MSK32FCTX_VC1_rIDX                                  0x000007C0

    #define     BA_FCTX_VC1_FLD                                0x0001
    #define     B16FCTX_VC1_FLD                                0x0000
    #define   LSb32FCTX_VC1_FLD                                   11
    #define   LSb16FCTX_VC1_FLD                                   11
    #define       bFCTX_VC1_FLD                                1
    #define   MSK32FCTX_VC1_FLD                                   0x00000800

    #define     BA_FCTX_VC1_equalpred                          0x0001
    #define     B16FCTX_VC1_equalpred                          0x0000
    #define   LSb32FCTX_VC1_equalpred                             12
    #define   LSb16FCTX_VC1_equalpred                             12
    #define       bFCTX_VC1_equalpred                          1
    #define   MSK32FCTX_VC1_equalpred                             0x00001000

    #define     BA_FCTX_VC1_transform                          0x0001
    #define     B16FCTX_VC1_transform                          0x0000
    #define   LSb32FCTX_VC1_transform                             13
    #define   LSb16FCTX_VC1_transform                             13
    #define       bFCTX_VC1_transform                          1
    #define   MSK32FCTX_VC1_transform                             0x00002000

    #define     BA_FCTX_VC1_NCBPY                              0x0001
    #define     B16FCTX_VC1_NCBPY                              0x0000
    #define   LSb32FCTX_VC1_NCBPY                                 14
    #define   LSb16FCTX_VC1_NCBPY                                 14
    #define       bFCTX_VC1_NCBPY                              1
    #define   MSK32FCTX_VC1_NCBPY                                 0x00004000

    #define     BA_FCTX_VC1_MixFLG                             0x0001
    #define     B16FCTX_VC1_MixFLG                             0x0000
    #define   LSb32FCTX_VC1_MixFLG                                15
    #define   LSb16FCTX_VC1_MixFLG                                15
    #define       bFCTX_VC1_MixFLG                             1
    #define   MSK32FCTX_VC1_MixFLG                                0x00008000
    #define        FCTX_VC1_MixFLG_8x8                                      0x1
    #define        FCTX_VC1_MixFLG_16x16                                    0x1

    #define     BA_FCTX_VC1_dctSelY                            0x0002
    #define     B16FCTX_VC1_dctSelY                            0x0002
    #define   LSb32FCTX_VC1_dctSelY                               16
    #define   LSb16FCTX_VC1_dctSelY                               0
    #define       bFCTX_VC1_dctSelY                            2
    #define   MSK32FCTX_VC1_dctSelY                               0x00030000
    #define        FCTX_VC1_dctSelY_4x4                                     0x0
    #define        FCTX_VC1_dctSelY_8x8                                     0x1
    #define        FCTX_VC1_dctSelY_4x8                                     0x2
    #define        FCTX_VC1_dctSelY_8x4                                     0x3

    #define     BA_FCTX_VC1_CBFY                               0x0002
    #define     B16FCTX_VC1_CBFY                               0x0002
    #define   LSb32FCTX_VC1_CBFY                                  18
    #define   LSb16FCTX_VC1_CBFY                                  2
    #define       bFCTX_VC1_CBFY                               1
    #define   MSK32FCTX_VC1_CBFY                                  0x00040000

    #define     BA_FCTX_VC1_CBFY8x8                            0x0002
    #define     B16FCTX_VC1_CBFY8x8                            0x0002
    #define   LSb32FCTX_VC1_CBFY8x8                               19
    #define   LSb16FCTX_VC1_CBFY8x8                               3
    #define       bFCTX_VC1_CBFY8x8                            1
    #define   MSK32FCTX_VC1_CBFY8x8                               0x00080000

    #define     BA_FCTX_VC1_RSVD12                             0x0002
    #define     B16FCTX_VC1_RSVD12                             0x0002
    #define   LSb32FCTX_VC1_RSVD12                                20
    #define   LSb16FCTX_VC1_RSVD12                                4
    #define       bFCTX_VC1_RSVD12                             12
    #define   MSK32FCTX_VC1_RSVD12                                0xFFF00000
    ///////////////////////////////////////////////////////////
    #define     RA_FCTX_VC1_mv                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTX_VC1 {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTX_VC1_rBID(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32FCTX_VC1_rBID(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16FCTX_VC1_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16FCTX_VC1_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32FCTX_VC1_rIDX(r32)                          _BFGET_(r32,10, 6)
    #define   SET32FCTX_VC1_rIDX(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16FCTX_VC1_rIDX(r16)                          _BFGET_(r16,10, 6)
    #define   SET16FCTX_VC1_rIDX(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32FCTX_VC1_FLD(r32)                           _BFGET_(r32,11,11)
    #define   SET32FCTX_VC1_FLD(r32,v)                         _BFSET_(r32,11,11,v)
    #define   GET16FCTX_VC1_FLD(r16)                           _BFGET_(r16,11,11)
    #define   SET16FCTX_VC1_FLD(r16,v)                         _BFSET_(r16,11,11,v)

    #define   GET32FCTX_VC1_equalpred(r32)                     _BFGET_(r32,12,12)
    #define   SET32FCTX_VC1_equalpred(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16FCTX_VC1_equalpred(r16)                     _BFGET_(r16,12,12)
    #define   SET16FCTX_VC1_equalpred(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32FCTX_VC1_transform(r32)                     _BFGET_(r32,13,13)
    #define   SET32FCTX_VC1_transform(r32,v)                   _BFSET_(r32,13,13,v)
    #define   GET16FCTX_VC1_transform(r16)                     _BFGET_(r16,13,13)
    #define   SET16FCTX_VC1_transform(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32FCTX_VC1_NCBPY(r32)                         _BFGET_(r32,14,14)
    #define   SET32FCTX_VC1_NCBPY(r32,v)                       _BFSET_(r32,14,14,v)
    #define   GET16FCTX_VC1_NCBPY(r16)                         _BFGET_(r16,14,14)
    #define   SET16FCTX_VC1_NCBPY(r16,v)                       _BFSET_(r16,14,14,v)

    #define   GET32FCTX_VC1_MixFLG(r32)                        _BFGET_(r32,15,15)
    #define   SET32FCTX_VC1_MixFLG(r32,v)                      _BFSET_(r32,15,15,v)
    #define   GET16FCTX_VC1_MixFLG(r16)                        _BFGET_(r16,15,15)
    #define   SET16FCTX_VC1_MixFLG(r16,v)                      _BFSET_(r16,15,15,v)

    #define   GET32FCTX_VC1_dctSelY(r32)                       _BFGET_(r32,17,16)
    #define   SET32FCTX_VC1_dctSelY(r32,v)                     _BFSET_(r32,17,16,v)
    #define   GET16FCTX_VC1_dctSelY(r16)                       _BFGET_(r16, 1, 0)
    #define   SET16FCTX_VC1_dctSelY(r16,v)                     _BFSET_(r16, 1, 0,v)

    #define   GET32FCTX_VC1_CBFY(r32)                          _BFGET_(r32,18,18)
    #define   SET32FCTX_VC1_CBFY(r32,v)                        _BFSET_(r32,18,18,v)
    #define   GET16FCTX_VC1_CBFY(r16)                          _BFGET_(r16, 2, 2)
    #define   SET16FCTX_VC1_CBFY(r16,v)                        _BFSET_(r16, 2, 2,v)

    #define   GET32FCTX_VC1_CBFY8x8(r32)                       _BFGET_(r32,19,19)
    #define   SET32FCTX_VC1_CBFY8x8(r32,v)                     _BFSET_(r32,19,19,v)
    #define   GET16FCTX_VC1_CBFY8x8(r16)                       _BFGET_(r16, 3, 3)
    #define   SET16FCTX_VC1_CBFY8x8(r16,v)                     _BFSET_(r16, 3, 3,v)

    #define   GET32FCTX_VC1_RSVD12(r32)                        _BFGET_(r32,31,20)
    #define   SET32FCTX_VC1_RSVD12(r32,v)                      _BFSET_(r32,31,20,v)
    #define   GET16FCTX_VC1_RSVD12(r16)                        _BFGET_(r16,15, 4)
    #define   SET16FCTX_VC1_RSVD12(r16,v)                      _BFSET_(r16,15, 4,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_transform                                 :  1;
            UNSG32 u_NCBPY                                     :  1;
            UNSG32 u_MixFLG                                    :  1;
            UNSG32 u_dctSelY                                   :  2;
            UNSG32 u_CBFY                                      :  1;
            UNSG32 u_CBFY8x8                                   :  1;
            UNSG32 u_RSVD12                                    : 12;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_FCTX_VC1;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTX_VC1_drvrd(SIE_FCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTX_VC1_drvwr(SIE_FCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTX_VC1_reset(SIE_FCTX_VC1 *p);
     SIGN32 FCTX_VC1_cmp  (SIE_FCTX_VC1 *p, SIE_FCTX_VC1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTX_VC1_check(p,pie,pfx,hLOG) FCTX_VC1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTX_VC1_print(p,    pfx,hLOG) FCTX_VC1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTX_VC1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTX_RV9                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as direct mode between parser & syntax processor):
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 5  rIDX                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as P/B-skip & direct mode between parser & syntax processor):
///                                    * Syntax 'RefListIdx' directly decoded from bit stream (field information embedded)
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * Flatten 4x4s in each 8x8:
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || fore-pred)
///                                    * NOTE: = 0 for direct mode
///                                    * VC-1:
///                                    * PMV output: for hybridPred
///                                    * PMV input: predictor_flag (0: use dominant PMV)
///                                    ###
///               %unsigned 1  transform                 
///                                    ###
///                                    * MB property (flatten in all 4x4s):
///                                    * H.264: if 8x8 transform
///                                    * Others: if field transform
///                                    ###
///               %unsigned 1  NCBPY                     
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Luma using block category ACV (4th 4x4),
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !(IPCM || cbp_luma)
///                                    ###
///               %unsigned 1  MixFLG                    
///                                    ###
///                                    * CABAC use only:
///                                    * CBP chroma using block category DCU/DCV,
///                                    * (Only at 3rd & 4th 4x4s in 3rd 8x8):
///                                    * bin[0]: IPCM || !(skipped || (cbp_chroma == 0))
///                                    * bin[1]: IPCM || !(skipped || (cbp_chroma != 2))
///                                    * Or:
///                                    * mb_type using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * I_SLICE: = !I_NXN
///                                    * P_SLICE: = 0
///                                    * B_SLICE: = !skipped && !direct_16x16
///                                    * Or:
///                                    * intra-chroma_pred using block category DCI,
///                                    * (Only at 3rd 4x4 in 4th 8x8):
///                                    * = Intra && !IPCM && (intra_chroma_pred != 0)
///                                    * Or:
///                                    * Temporal context buffers for direct mode use
///                                    ###
///                                    : 8x8                       0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 1st 8x8:
///                                                 * = if MB contains no sub-8x8 partition
///                                                 ###
///                                    : 16x16                     0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 2nd 8x8:
///                                                 * = if MB contains only 1 partition (16x16)
///                                                 ###
///               %unsigned 1  CBPY                      
///                                    ###
///                                    * CBP for Y
///                                    ###
///               %unsigned 1  CBPU                      
///                                    ###
///                                    * CBP for U
///                                    ###
///               %unsigned 1  CBPV                      
///                                    ###
///                                    * CBP for Y
///                                    ###
///               %unsigned 2  BsY                       
///                                    ###
///                                    * Block strength for Y
///                                    ###
///               %unsigned 2  BsU                       
///                                    ###
///                                    * Block strength for U
///                                    ###
///               %unsigned 2  BsV                       
///                                    ###
///                                    * Block strength for V
///                                    ###
///               %unsigned 7  Rsvd                      
///                                    ###
///                                    * Reserved
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTX_RV9
#define h_FCTX_RV9 (){}

    #define     BA_FCTX_RV9_rBID                               0x0000
    #define     B16FCTX_RV9_rBID                               0x0000
    #define   LSb32FCTX_RV9_rBID                                  0
    #define   LSb16FCTX_RV9_rBID                                  0
    #define       bFCTX_RV9_rBID                               6
    #define   MSK32FCTX_RV9_rBID                                  0x0000003F

    #define     BA_FCTX_RV9_rIDX                               0x0000
    #define     B16FCTX_RV9_rIDX                               0x0000
    #define   LSb32FCTX_RV9_rIDX                                  6
    #define   LSb16FCTX_RV9_rIDX                                  6
    #define       bFCTX_RV9_rIDX                               5
    #define   MSK32FCTX_RV9_rIDX                                  0x000007C0

    #define     BA_FCTX_RV9_FLD                                0x0001
    #define     B16FCTX_RV9_FLD                                0x0000
    #define   LSb32FCTX_RV9_FLD                                   11
    #define   LSb16FCTX_RV9_FLD                                   11
    #define       bFCTX_RV9_FLD                                1
    #define   MSK32FCTX_RV9_FLD                                   0x00000800

    #define     BA_FCTX_RV9_equalpred                          0x0001
    #define     B16FCTX_RV9_equalpred                          0x0000
    #define   LSb32FCTX_RV9_equalpred                             12
    #define   LSb16FCTX_RV9_equalpred                             12
    #define       bFCTX_RV9_equalpred                          1
    #define   MSK32FCTX_RV9_equalpred                             0x00001000

    #define     BA_FCTX_RV9_transform                          0x0001
    #define     B16FCTX_RV9_transform                          0x0000
    #define   LSb32FCTX_RV9_transform                             13
    #define   LSb16FCTX_RV9_transform                             13
    #define       bFCTX_RV9_transform                          1
    #define   MSK32FCTX_RV9_transform                             0x00002000

    #define     BA_FCTX_RV9_NCBPY                              0x0001
    #define     B16FCTX_RV9_NCBPY                              0x0000
    #define   LSb32FCTX_RV9_NCBPY                                 14
    #define   LSb16FCTX_RV9_NCBPY                                 14
    #define       bFCTX_RV9_NCBPY                              1
    #define   MSK32FCTX_RV9_NCBPY                                 0x00004000

    #define     BA_FCTX_RV9_MixFLG                             0x0001
    #define     B16FCTX_RV9_MixFLG                             0x0000
    #define   LSb32FCTX_RV9_MixFLG                                15
    #define   LSb16FCTX_RV9_MixFLG                                15
    #define       bFCTX_RV9_MixFLG                             1
    #define   MSK32FCTX_RV9_MixFLG                                0x00008000
    #define        FCTX_RV9_MixFLG_8x8                                      0x1
    #define        FCTX_RV9_MixFLG_16x16                                    0x1

    #define     BA_FCTX_RV9_CBPY                               0x0002
    #define     B16FCTX_RV9_CBPY                               0x0002
    #define   LSb32FCTX_RV9_CBPY                                  16
    #define   LSb16FCTX_RV9_CBPY                                  0
    #define       bFCTX_RV9_CBPY                               1
    #define   MSK32FCTX_RV9_CBPY                                  0x00010000

    #define     BA_FCTX_RV9_CBPU                               0x0002
    #define     B16FCTX_RV9_CBPU                               0x0002
    #define   LSb32FCTX_RV9_CBPU                                  17
    #define   LSb16FCTX_RV9_CBPU                                  1
    #define       bFCTX_RV9_CBPU                               1
    #define   MSK32FCTX_RV9_CBPU                                  0x00020000

    #define     BA_FCTX_RV9_CBPV                               0x0002
    #define     B16FCTX_RV9_CBPV                               0x0002
    #define   LSb32FCTX_RV9_CBPV                                  18
    #define   LSb16FCTX_RV9_CBPV                                  2
    #define       bFCTX_RV9_CBPV                               1
    #define   MSK32FCTX_RV9_CBPV                                  0x00040000

    #define     BA_FCTX_RV9_BsY                                0x0002
    #define     B16FCTX_RV9_BsY                                0x0002
    #define   LSb32FCTX_RV9_BsY                                   19
    #define   LSb16FCTX_RV9_BsY                                   3
    #define       bFCTX_RV9_BsY                                2
    #define   MSK32FCTX_RV9_BsY                                   0x00180000

    #define     BA_FCTX_RV9_BsU                                0x0002
    #define     B16FCTX_RV9_BsU                                0x0002
    #define   LSb32FCTX_RV9_BsU                                   21
    #define   LSb16FCTX_RV9_BsU                                   5
    #define       bFCTX_RV9_BsU                                2
    #define   MSK32FCTX_RV9_BsU                                   0x00600000

    #define     BA_FCTX_RV9_BsV                                0x0002
    #define     B16FCTX_RV9_BsV                                0x0002
    #define   LSb32FCTX_RV9_BsV                                   23
    #define   LSb16FCTX_RV9_BsV                                   7
    #define       bFCTX_RV9_BsV                                2
    #define   MSK32FCTX_RV9_BsV                                   0x01800000

    #define     BA_FCTX_RV9_Rsvd                               0x0003
    #define     B16FCTX_RV9_Rsvd                               0x0002
    #define   LSb32FCTX_RV9_Rsvd                                  25
    #define   LSb16FCTX_RV9_Rsvd                                  9
    #define       bFCTX_RV9_Rsvd                               7
    #define   MSK32FCTX_RV9_Rsvd                                  0xFE000000
    ///////////////////////////////////////////////////////////
    #define     RA_FCTX_RV9_mv                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTX_RV9 {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTX_RV9_rBID(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32FCTX_RV9_rBID(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16FCTX_RV9_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16FCTX_RV9_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32FCTX_RV9_rIDX(r32)                          _BFGET_(r32,10, 6)
    #define   SET32FCTX_RV9_rIDX(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16FCTX_RV9_rIDX(r16)                          _BFGET_(r16,10, 6)
    #define   SET16FCTX_RV9_rIDX(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32FCTX_RV9_FLD(r32)                           _BFGET_(r32,11,11)
    #define   SET32FCTX_RV9_FLD(r32,v)                         _BFSET_(r32,11,11,v)
    #define   GET16FCTX_RV9_FLD(r16)                           _BFGET_(r16,11,11)
    #define   SET16FCTX_RV9_FLD(r16,v)                         _BFSET_(r16,11,11,v)

    #define   GET32FCTX_RV9_equalpred(r32)                     _BFGET_(r32,12,12)
    #define   SET32FCTX_RV9_equalpred(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16FCTX_RV9_equalpred(r16)                     _BFGET_(r16,12,12)
    #define   SET16FCTX_RV9_equalpred(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32FCTX_RV9_transform(r32)                     _BFGET_(r32,13,13)
    #define   SET32FCTX_RV9_transform(r32,v)                   _BFSET_(r32,13,13,v)
    #define   GET16FCTX_RV9_transform(r16)                     _BFGET_(r16,13,13)
    #define   SET16FCTX_RV9_transform(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32FCTX_RV9_NCBPY(r32)                         _BFGET_(r32,14,14)
    #define   SET32FCTX_RV9_NCBPY(r32,v)                       _BFSET_(r32,14,14,v)
    #define   GET16FCTX_RV9_NCBPY(r16)                         _BFGET_(r16,14,14)
    #define   SET16FCTX_RV9_NCBPY(r16,v)                       _BFSET_(r16,14,14,v)

    #define   GET32FCTX_RV9_MixFLG(r32)                        _BFGET_(r32,15,15)
    #define   SET32FCTX_RV9_MixFLG(r32,v)                      _BFSET_(r32,15,15,v)
    #define   GET16FCTX_RV9_MixFLG(r16)                        _BFGET_(r16,15,15)
    #define   SET16FCTX_RV9_MixFLG(r16,v)                      _BFSET_(r16,15,15,v)

    #define   GET32FCTX_RV9_CBPY(r32)                          _BFGET_(r32,16,16)
    #define   SET32FCTX_RV9_CBPY(r32,v)                        _BFSET_(r32,16,16,v)
    #define   GET16FCTX_RV9_CBPY(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FCTX_RV9_CBPY(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define   GET32FCTX_RV9_CBPU(r32)                          _BFGET_(r32,17,17)
    #define   SET32FCTX_RV9_CBPU(r32,v)                        _BFSET_(r32,17,17,v)
    #define   GET16FCTX_RV9_CBPU(r16)                          _BFGET_(r16, 1, 1)
    #define   SET16FCTX_RV9_CBPU(r16,v)                        _BFSET_(r16, 1, 1,v)

    #define   GET32FCTX_RV9_CBPV(r32)                          _BFGET_(r32,18,18)
    #define   SET32FCTX_RV9_CBPV(r32,v)                        _BFSET_(r32,18,18,v)
    #define   GET16FCTX_RV9_CBPV(r16)                          _BFGET_(r16, 2, 2)
    #define   SET16FCTX_RV9_CBPV(r16,v)                        _BFSET_(r16, 2, 2,v)

    #define   GET32FCTX_RV9_BsY(r32)                           _BFGET_(r32,20,19)
    #define   SET32FCTX_RV9_BsY(r32,v)                         _BFSET_(r32,20,19,v)
    #define   GET16FCTX_RV9_BsY(r16)                           _BFGET_(r16, 4, 3)
    #define   SET16FCTX_RV9_BsY(r16,v)                         _BFSET_(r16, 4, 3,v)

    #define   GET32FCTX_RV9_BsU(r32)                           _BFGET_(r32,22,21)
    #define   SET32FCTX_RV9_BsU(r32,v)                         _BFSET_(r32,22,21,v)
    #define   GET16FCTX_RV9_BsU(r16)                           _BFGET_(r16, 6, 5)
    #define   SET16FCTX_RV9_BsU(r16,v)                         _BFSET_(r16, 6, 5,v)

    #define   GET32FCTX_RV9_BsV(r32)                           _BFGET_(r32,24,23)
    #define   SET32FCTX_RV9_BsV(r32,v)                         _BFSET_(r32,24,23,v)
    #define   GET16FCTX_RV9_BsV(r16)                           _BFGET_(r16, 8, 7)
    #define   SET16FCTX_RV9_BsV(r16,v)                         _BFSET_(r16, 8, 7,v)

    #define   GET32FCTX_RV9_Rsvd(r32)                          _BFGET_(r32,31,25)
    #define   SET32FCTX_RV9_Rsvd(r32,v)                        _BFSET_(r32,31,25,v)
    #define   GET16FCTX_RV9_Rsvd(r16)                          _BFGET_(r16,15, 9)
    #define   SET16FCTX_RV9_Rsvd(r16,v)                        _BFSET_(r16,15, 9,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_transform                                 :  1;
            UNSG32 u_NCBPY                                     :  1;
            UNSG32 u_MixFLG                                    :  1;
            UNSG32 u_CBPY                                      :  1;
            UNSG32 u_CBPU                                      :  1;
            UNSG32 u_CBPV                                      :  1;
            UNSG32 u_BsY                                       :  2;
            UNSG32 u_BsU                                       :  2;
            UNSG32 u_BsV                                       :  2;
            UNSG32 u_Rsvd                                      :  7;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_FCTX_RV9;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTX_RV9_drvrd(SIE_FCTX_RV9 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTX_RV9_drvwr(SIE_FCTX_RV9 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTX_RV9_reset(SIE_FCTX_RV9 *p);
     SIGN32 FCTX_RV9_cmp  (SIE_FCTX_RV9 *p, SIE_FCTX_RV9 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTX_RV9_check(p,pie,pfx,hLOG) FCTX_RV9_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTX_RV9_print(p,    pfx,hLOG) FCTX_RV9_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTX_RV9
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BCTX                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///               %unsigned 5  rIDX                      
///               %unsigned 1  FLD                       
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (Only at 4th 4x4 in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || back-pred)
///                                    * NOTE: = 0 for direct mode
///                                    ###
///               %unsigned 3  RSVD                      
///                                    ###
///                                    * Reserved
///                                    ###
///               %unsigned 3  dctSel                    
///                                    : 8x8                       0x0
///                                    : 8x4                       0x1
///                                    : 4x8                       0x2
///                                    : 4x4                       0x3
///                                                 ###
///                                                 * VC-1 use only
///                                                 ###
///               %unsigned 6  ABSMVDX                   
///               %unsigned 7  ABSMVDY                   
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BCTX
#define h_BCTX (){}

    #define     BA_BCTX_rBID                                   0x0000
    #define     B16BCTX_rBID                                   0x0000
    #define   LSb32BCTX_rBID                                      0
    #define   LSb16BCTX_rBID                                      0
    #define       bBCTX_rBID                                   6
    #define   MSK32BCTX_rBID                                      0x0000003F

    #define     BA_BCTX_rIDX                                   0x0000
    #define     B16BCTX_rIDX                                   0x0000
    #define   LSb32BCTX_rIDX                                      6
    #define   LSb16BCTX_rIDX                                      6
    #define       bBCTX_rIDX                                   5
    #define   MSK32BCTX_rIDX                                      0x000007C0

    #define     BA_BCTX_FLD                                    0x0001
    #define     B16BCTX_FLD                                    0x0000
    #define   LSb32BCTX_FLD                                       11
    #define   LSb16BCTX_FLD                                       11
    #define       bBCTX_FLD                                    1
    #define   MSK32BCTX_FLD                                       0x00000800

    #define     BA_BCTX_equalpred                              0x0001
    #define     B16BCTX_equalpred                              0x0000
    #define   LSb32BCTX_equalpred                                 12
    #define   LSb16BCTX_equalpred                                 12
    #define       bBCTX_equalpred                              1
    #define   MSK32BCTX_equalpred                                 0x00001000

    #define     BA_BCTX_RSVD                                   0x0001
    #define     B16BCTX_RSVD                                   0x0000
    #define   LSb32BCTX_RSVD                                      13
    #define   LSb16BCTX_RSVD                                      13
    #define       bBCTX_RSVD                                   3
    #define   MSK32BCTX_RSVD                                      0x0000E000

    #define     BA_BCTX_dctSel                                 0x0002
    #define     B16BCTX_dctSel                                 0x0002
    #define   LSb32BCTX_dctSel                                    16
    #define   LSb16BCTX_dctSel                                    0
    #define       bBCTX_dctSel                                 3
    #define   MSK32BCTX_dctSel                                    0x00070000
    #define        BCTX_dctSel_8x8                                          0x0
    #define        BCTX_dctSel_8x4                                          0x1
    #define        BCTX_dctSel_4x8                                          0x2
    #define        BCTX_dctSel_4x4                                          0x3

    #define     BA_BCTX_ABSMVDX                                0x0002
    #define     B16BCTX_ABSMVDX                                0x0002
    #define   LSb32BCTX_ABSMVDX                                   19
    #define   LSb16BCTX_ABSMVDX                                   3
    #define       bBCTX_ABSMVDX                                6
    #define   MSK32BCTX_ABSMVDX                                   0x01F80000

    #define     BA_BCTX_ABSMVDY                                0x0003
    #define     B16BCTX_ABSMVDY                                0x0002
    #define   LSb32BCTX_ABSMVDY                                   25
    #define   LSb16BCTX_ABSMVDY                                   9
    #define       bBCTX_ABSMVDY                                7
    #define   MSK32BCTX_ABSMVDY                                   0xFE000000
    ///////////////////////////////////////////////////////////
    #define     RA_BCTX_mv                                     0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BCTX {
    ///////////////////////////////////////////////////////////
    #define   GET32BCTX_rBID(r32)                              _BFGET_(r32, 5, 0)
    #define   SET32BCTX_rBID(r32,v)                            _BFSET_(r32, 5, 0,v)
    #define   GET16BCTX_rBID(r16)                              _BFGET_(r16, 5, 0)
    #define   SET16BCTX_rBID(r16,v)                            _BFSET_(r16, 5, 0,v)

    #define   GET32BCTX_rIDX(r32)                              _BFGET_(r32,10, 6)
    #define   SET32BCTX_rIDX(r32,v)                            _BFSET_(r32,10, 6,v)
    #define   GET16BCTX_rIDX(r16)                              _BFGET_(r16,10, 6)
    #define   SET16BCTX_rIDX(r16,v)                            _BFSET_(r16,10, 6,v)

    #define   GET32BCTX_FLD(r32)                               _BFGET_(r32,11,11)
    #define   SET32BCTX_FLD(r32,v)                             _BFSET_(r32,11,11,v)
    #define   GET16BCTX_FLD(r16)                               _BFGET_(r16,11,11)
    #define   SET16BCTX_FLD(r16,v)                             _BFSET_(r16,11,11,v)

    #define   GET32BCTX_equalpred(r32)                         _BFGET_(r32,12,12)
    #define   SET32BCTX_equalpred(r32,v)                       _BFSET_(r32,12,12,v)
    #define   GET16BCTX_equalpred(r16)                         _BFGET_(r16,12,12)
    #define   SET16BCTX_equalpred(r16,v)                       _BFSET_(r16,12,12,v)

    #define   GET32BCTX_RSVD(r32)                              _BFGET_(r32,15,13)
    #define   SET32BCTX_RSVD(r32,v)                            _BFSET_(r32,15,13,v)
    #define   GET16BCTX_RSVD(r16)                              _BFGET_(r16,15,13)
    #define   SET16BCTX_RSVD(r16,v)                            _BFSET_(r16,15,13,v)

    #define   GET32BCTX_dctSel(r32)                            _BFGET_(r32,18,16)
    #define   SET32BCTX_dctSel(r32,v)                          _BFSET_(r32,18,16,v)
    #define   GET16BCTX_dctSel(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16BCTX_dctSel(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32BCTX_ABSMVDX(r32)                           _BFGET_(r32,24,19)
    #define   SET32BCTX_ABSMVDX(r32,v)                         _BFSET_(r32,24,19,v)
    #define   GET16BCTX_ABSMVDX(r16)                           _BFGET_(r16, 8, 3)
    #define   SET16BCTX_ABSMVDX(r16,v)                         _BFSET_(r16, 8, 3,v)

    #define   GET32BCTX_ABSMVDY(r32)                           _BFGET_(r32,31,25)
    #define   SET32BCTX_ABSMVDY(r32,v)                         _BFSET_(r32,31,25,v)
    #define   GET16BCTX_ABSMVDY(r16)                           _BFGET_(r16,15, 9)
    #define   SET16BCTX_ABSMVDY(r16,v)                         _BFSET_(r16,15, 9,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_RSVD                                      :  3;
            UNSG32 u_dctSel                                    :  3;
            UNSG32 u_ABSMVDX                                   :  6;
            UNSG32 u_ABSMVDY                                   :  7;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_BCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 BCTX_drvrd(SIE_BCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BCTX_drvwr(SIE_BCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BCTX_reset(SIE_BCTX *p);
     SIGN32 BCTX_cmp  (SIE_BCTX *p, SIE_BCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BCTX_check(p,pie,pfx,hLOG) BCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BCTX_print(p,    pfx,hLOG) BCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BCTX_VC1                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///               %unsigned 5  rIDX                      
///               %unsigned 1  FLD                       
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (Only at 4th 4x4 in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || back-pred)
///                                    * NOTE: = 0 for direct mode
///                                    ###
///               %unsigned 3  RSVD                      
///                                    ###
///                                    * Reserved
///                                    ###
///               %unsigned 2  dctSelU                   
///                                    ###
///                                    * DCT transform type for U; used for VC-1 Fop
///                                    ###
///               %unsigned 2  dctSelV                   
///                                    ###
///                                    * DCT transform type for V; used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFU                      
///                                    ###
///                                    * coded block (4x4) flag for U; used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFV                      
///                                    ###
///                                    * coded block (4x4) flag for V; used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFU8x8                   
///                                    ###
///                                    * coded block (8x8) flag for U, used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFV8x8                   
///                                    ###
///                                    * coded block (8x8) flag for V, used for VC-1 Fop
///                                    ###
///               %unsigned 8  RSVD8                     
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BCTX_VC1
#define h_BCTX_VC1 (){}

    #define     BA_BCTX_VC1_rBID                               0x0000
    #define     B16BCTX_VC1_rBID                               0x0000
    #define   LSb32BCTX_VC1_rBID                                  0
    #define   LSb16BCTX_VC1_rBID                                  0
    #define       bBCTX_VC1_rBID                               6
    #define   MSK32BCTX_VC1_rBID                                  0x0000003F

    #define     BA_BCTX_VC1_rIDX                               0x0000
    #define     B16BCTX_VC1_rIDX                               0x0000
    #define   LSb32BCTX_VC1_rIDX                                  6
    #define   LSb16BCTX_VC1_rIDX                                  6
    #define       bBCTX_VC1_rIDX                               5
    #define   MSK32BCTX_VC1_rIDX                                  0x000007C0

    #define     BA_BCTX_VC1_FLD                                0x0001
    #define     B16BCTX_VC1_FLD                                0x0000
    #define   LSb32BCTX_VC1_FLD                                   11
    #define   LSb16BCTX_VC1_FLD                                   11
    #define       bBCTX_VC1_FLD                                1
    #define   MSK32BCTX_VC1_FLD                                   0x00000800

    #define     BA_BCTX_VC1_equalpred                          0x0001
    #define     B16BCTX_VC1_equalpred                          0x0000
    #define   LSb32BCTX_VC1_equalpred                             12
    #define   LSb16BCTX_VC1_equalpred                             12
    #define       bBCTX_VC1_equalpred                          1
    #define   MSK32BCTX_VC1_equalpred                             0x00001000

    #define     BA_BCTX_VC1_RSVD                               0x0001
    #define     B16BCTX_VC1_RSVD                               0x0000
    #define   LSb32BCTX_VC1_RSVD                                  13
    #define   LSb16BCTX_VC1_RSVD                                  13
    #define       bBCTX_VC1_RSVD                               3
    #define   MSK32BCTX_VC1_RSVD                                  0x0000E000

    #define     BA_BCTX_VC1_dctSelU                            0x0002
    #define     B16BCTX_VC1_dctSelU                            0x0002
    #define   LSb32BCTX_VC1_dctSelU                               16
    #define   LSb16BCTX_VC1_dctSelU                               0
    #define       bBCTX_VC1_dctSelU                            2
    #define   MSK32BCTX_VC1_dctSelU                               0x00030000

    #define     BA_BCTX_VC1_dctSelV                            0x0002
    #define     B16BCTX_VC1_dctSelV                            0x0002
    #define   LSb32BCTX_VC1_dctSelV                               18
    #define   LSb16BCTX_VC1_dctSelV                               2
    #define       bBCTX_VC1_dctSelV                            2
    #define   MSK32BCTX_VC1_dctSelV                               0x000C0000

    #define     BA_BCTX_VC1_CBFU                               0x0002
    #define     B16BCTX_VC1_CBFU                               0x0002
    #define   LSb32BCTX_VC1_CBFU                                  20
    #define   LSb16BCTX_VC1_CBFU                                  4
    #define       bBCTX_VC1_CBFU                               1
    #define   MSK32BCTX_VC1_CBFU                                  0x00100000

    #define     BA_BCTX_VC1_CBFV                               0x0002
    #define     B16BCTX_VC1_CBFV                               0x0002
    #define   LSb32BCTX_VC1_CBFV                                  21
    #define   LSb16BCTX_VC1_CBFV                                  5
    #define       bBCTX_VC1_CBFV                               1
    #define   MSK32BCTX_VC1_CBFV                                  0x00200000

    #define     BA_BCTX_VC1_CBFU8x8                            0x0002
    #define     B16BCTX_VC1_CBFU8x8                            0x0002
    #define   LSb32BCTX_VC1_CBFU8x8                               22
    #define   LSb16BCTX_VC1_CBFU8x8                               6
    #define       bBCTX_VC1_CBFU8x8                            1
    #define   MSK32BCTX_VC1_CBFU8x8                               0x00400000

    #define     BA_BCTX_VC1_CBFV8x8                            0x0002
    #define     B16BCTX_VC1_CBFV8x8                            0x0002
    #define   LSb32BCTX_VC1_CBFV8x8                               23
    #define   LSb16BCTX_VC1_CBFV8x8                               7
    #define       bBCTX_VC1_CBFV8x8                            1
    #define   MSK32BCTX_VC1_CBFV8x8                               0x00800000

    #define     BA_BCTX_VC1_RSVD8                              0x0003
    #define     B16BCTX_VC1_RSVD8                              0x0002
    #define   LSb32BCTX_VC1_RSVD8                                 24
    #define   LSb16BCTX_VC1_RSVD8                                 8
    #define       bBCTX_VC1_RSVD8                              8
    #define   MSK32BCTX_VC1_RSVD8                                 0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_BCTX_VC1_mv                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BCTX_VC1 {
    ///////////////////////////////////////////////////////////
    #define   GET32BCTX_VC1_rBID(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32BCTX_VC1_rBID(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16BCTX_VC1_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16BCTX_VC1_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32BCTX_VC1_rIDX(r32)                          _BFGET_(r32,10, 6)
    #define   SET32BCTX_VC1_rIDX(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16BCTX_VC1_rIDX(r16)                          _BFGET_(r16,10, 6)
    #define   SET16BCTX_VC1_rIDX(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32BCTX_VC1_FLD(r32)                           _BFGET_(r32,11,11)
    #define   SET32BCTX_VC1_FLD(r32,v)                         _BFSET_(r32,11,11,v)
    #define   GET16BCTX_VC1_FLD(r16)                           _BFGET_(r16,11,11)
    #define   SET16BCTX_VC1_FLD(r16,v)                         _BFSET_(r16,11,11,v)

    #define   GET32BCTX_VC1_equalpred(r32)                     _BFGET_(r32,12,12)
    #define   SET32BCTX_VC1_equalpred(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16BCTX_VC1_equalpred(r16)                     _BFGET_(r16,12,12)
    #define   SET16BCTX_VC1_equalpred(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32BCTX_VC1_RSVD(r32)                          _BFGET_(r32,15,13)
    #define   SET32BCTX_VC1_RSVD(r32,v)                        _BFSET_(r32,15,13,v)
    #define   GET16BCTX_VC1_RSVD(r16)                          _BFGET_(r16,15,13)
    #define   SET16BCTX_VC1_RSVD(r16,v)                        _BFSET_(r16,15,13,v)

    #define   GET32BCTX_VC1_dctSelU(r32)                       _BFGET_(r32,17,16)
    #define   SET32BCTX_VC1_dctSelU(r32,v)                     _BFSET_(r32,17,16,v)
    #define   GET16BCTX_VC1_dctSelU(r16)                       _BFGET_(r16, 1, 0)
    #define   SET16BCTX_VC1_dctSelU(r16,v)                     _BFSET_(r16, 1, 0,v)

    #define   GET32BCTX_VC1_dctSelV(r32)                       _BFGET_(r32,19,18)
    #define   SET32BCTX_VC1_dctSelV(r32,v)                     _BFSET_(r32,19,18,v)
    #define   GET16BCTX_VC1_dctSelV(r16)                       _BFGET_(r16, 3, 2)
    #define   SET16BCTX_VC1_dctSelV(r16,v)                     _BFSET_(r16, 3, 2,v)

    #define   GET32BCTX_VC1_CBFU(r32)                          _BFGET_(r32,20,20)
    #define   SET32BCTX_VC1_CBFU(r32,v)                        _BFSET_(r32,20,20,v)
    #define   GET16BCTX_VC1_CBFU(r16)                          _BFGET_(r16, 4, 4)
    #define   SET16BCTX_VC1_CBFU(r16,v)                        _BFSET_(r16, 4, 4,v)

    #define   GET32BCTX_VC1_CBFV(r32)                          _BFGET_(r32,21,21)
    #define   SET32BCTX_VC1_CBFV(r32,v)                        _BFSET_(r32,21,21,v)
    #define   GET16BCTX_VC1_CBFV(r16)                          _BFGET_(r16, 5, 5)
    #define   SET16BCTX_VC1_CBFV(r16,v)                        _BFSET_(r16, 5, 5,v)

    #define   GET32BCTX_VC1_CBFU8x8(r32)                       _BFGET_(r32,22,22)
    #define   SET32BCTX_VC1_CBFU8x8(r32,v)                     _BFSET_(r32,22,22,v)
    #define   GET16BCTX_VC1_CBFU8x8(r16)                       _BFGET_(r16, 6, 6)
    #define   SET16BCTX_VC1_CBFU8x8(r16,v)                     _BFSET_(r16, 6, 6,v)

    #define   GET32BCTX_VC1_CBFV8x8(r32)                       _BFGET_(r32,23,23)
    #define   SET32BCTX_VC1_CBFV8x8(r32,v)                     _BFSET_(r32,23,23,v)
    #define   GET16BCTX_VC1_CBFV8x8(r16)                       _BFGET_(r16, 7, 7)
    #define   SET16BCTX_VC1_CBFV8x8(r16,v)                     _BFSET_(r16, 7, 7,v)

    #define   GET32BCTX_VC1_RSVD8(r32)                         _BFGET_(r32,31,24)
    #define   SET32BCTX_VC1_RSVD8(r32,v)                       _BFSET_(r32,31,24,v)
    #define   GET16BCTX_VC1_RSVD8(r16)                         _BFGET_(r16,15, 8)
    #define   SET16BCTX_VC1_RSVD8(r16,v)                       _BFSET_(r16,15, 8,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_RSVD                                      :  3;
            UNSG32 u_dctSelU                                   :  2;
            UNSG32 u_dctSelV                                   :  2;
            UNSG32 u_CBFU                                      :  1;
            UNSG32 u_CBFV                                      :  1;
            UNSG32 u_CBFU8x8                                   :  1;
            UNSG32 u_CBFV8x8                                   :  1;
            UNSG32 u_RSVD8                                     :  8;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_BCTX_VC1;

    ///////////////////////////////////////////////////////////
     SIGN32 BCTX_VC1_drvrd(SIE_BCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BCTX_VC1_drvwr(SIE_BCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BCTX_VC1_reset(SIE_BCTX_VC1 *p);
     SIGN32 BCTX_VC1_cmp  (SIE_BCTX_VC1 *p, SIE_BCTX_VC1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BCTX_VC1_check(p,pie,pfx,hLOG) BCTX_VC1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BCTX_VC1_print(p,    pfx,hLOG) BCTX_VC1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BCTX_VC1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTXI                   biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 22 RSVD                      
///               %unsigned 5  NCUV                      
///                                    ###
///                                    * CAVLC use only:
///                                    * Using block category ACU/ACV: 0~15
///                                    ###
///               %unsigned 5  NCY                       
///                                    ###
///                                    * CAVLC use only:
///                                    * Using block category ACY (every 4x4s): 0~16
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 20 RSVD20                    
///               %unsigned 4  intraChroma               
///                                    ###
///                                    * For encoder: Intra prediction mode for chormablocks, see IntraChroma.mode above. Only appears in DCI, one per MB.
///                                    ###
///               %unsigned 8  intraLuma                 
///                                    ###
///                                    * Intra 16x16/NxN prediction mode for luma blocks, see IntraLuma.mode above
///                                    * =0 between parser & syntax processor
///                                    * End of FCTXI
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTXI
#define h_FCTXI (){}

    #define     BA_FCTXI_RSVD                                  0x0000
    #define     B16FCTXI_RSVD                                  0x0000
    #define   LSb32FCTXI_RSVD                                     0
    #define   LSb16FCTXI_RSVD                                     0
    #define       bFCTXI_RSVD                                  22
    #define   MSK32FCTXI_RSVD                                     0x003FFFFF

    #define     BA_FCTXI_NCUV                                  0x0002
    #define     B16FCTXI_NCUV                                  0x0002
    #define   LSb32FCTXI_NCUV                                     22
    #define   LSb16FCTXI_NCUV                                     6
    #define       bFCTXI_NCUV                                  5
    #define   MSK32FCTXI_NCUV                                     0x07C00000

    #define     BA_FCTXI_NCY                                   0x0003
    #define     B16FCTXI_NCY                                   0x0002
    #define   LSb32FCTXI_NCY                                      27
    #define   LSb16FCTXI_NCY                                      11
    #define       bFCTXI_NCY                                   5
    #define   MSK32FCTXI_NCY                                      0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_FCTXI_RSVD20                                0x0004
    #define     B16FCTXI_RSVD20                                0x0004
    #define   LSb32FCTXI_RSVD20                                   0
    #define   LSb16FCTXI_RSVD20                                   0
    #define       bFCTXI_RSVD20                                20
    #define   MSK32FCTXI_RSVD20                                   0x000FFFFF

    #define     BA_FCTXI_intraChroma                           0x0006
    #define     B16FCTXI_intraChroma                           0x0006
    #define   LSb32FCTXI_intraChroma                              20
    #define   LSb16FCTXI_intraChroma                              4
    #define       bFCTXI_intraChroma                           4
    #define   MSK32FCTXI_intraChroma                              0x00F00000

    #define     BA_FCTXI_intraLuma                             0x0007
    #define     B16FCTXI_intraLuma                             0x0006
    #define   LSb32FCTXI_intraLuma                                24
    #define   LSb16FCTXI_intraLuma                                8
    #define       bFCTXI_intraLuma                             8
    #define   MSK32FCTXI_intraLuma                                0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTXI {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTXI_RSVD(r32)                             _BFGET_(r32,21, 0)
    #define   SET32FCTXI_RSVD(r32,v)                           _BFSET_(r32,21, 0,v)

    #define   GET32FCTXI_NCUV(r32)                             _BFGET_(r32,26,22)
    #define   SET32FCTXI_NCUV(r32,v)                           _BFSET_(r32,26,22,v)
    #define   GET16FCTXI_NCUV(r16)                             _BFGET_(r16,10, 6)
    #define   SET16FCTXI_NCUV(r16,v)                           _BFSET_(r16,10, 6,v)

    #define   GET32FCTXI_NCY(r32)                              _BFGET_(r32,31,27)
    #define   SET32FCTXI_NCY(r32,v)                            _BFSET_(r32,31,27,v)
    #define   GET16FCTXI_NCY(r16)                              _BFGET_(r16,15,11)
    #define   SET16FCTXI_NCY(r16,v)                            _BFSET_(r16,15,11,v)

            UNSG32 u_RSVD                                      : 22;
            UNSG32 u_NCUV                                      :  5;
            UNSG32 u_NCY                                       :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32FCTXI_RSVD20(r32)                           _BFGET_(r32,19, 0)
    #define   SET32FCTXI_RSVD20(r32,v)                         _BFSET_(r32,19, 0,v)

    #define   GET32FCTXI_intraChroma(r32)                      _BFGET_(r32,23,20)
    #define   SET32FCTXI_intraChroma(r32,v)                    _BFSET_(r32,23,20,v)
    #define   GET16FCTXI_intraChroma(r16)                      _BFGET_(r16, 7, 4)
    #define   SET16FCTXI_intraChroma(r16,v)                    _BFSET_(r16, 7, 4,v)

    #define   GET32FCTXI_intraLuma(r32)                        _BFGET_(r32,31,24)
    #define   SET32FCTXI_intraLuma(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16FCTXI_intraLuma(r16)                        _BFGET_(r16,15, 8)
    #define   SET16FCTXI_intraLuma(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_RSVD20                                    : 20;
            UNSG32 u_intraChroma                               :  4;
            UNSG32 u_intraLuma                                 :  8;
    ///////////////////////////////////////////////////////////
    } SIE_FCTXI;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTXI_drvrd(SIE_FCTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTXI_drvwr(SIE_FCTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTXI_reset(SIE_FCTXI *p);
     SIGN32 FCTXI_cmp  (SIE_FCTXI *p, SIE_FCTXI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTXI_check(p,pie,pfx,hLOG) FCTXI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTXI_print(p,    pfx,hLOG) FCTXI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTXI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTX4x4                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 fore                 
///               $FCTX                fore              REG          
///                                    ###
///                                    * Forward prediction
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 back                 
///               $BCTX                back              REG          
///                                    ###
///                                    * Backward prediction
///                                    * End of HCTX4x4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTX4x4
#define h_HCTX4x4 (){}

    #define     RA_HCTX4x4_fore                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HCTX4x4_back                                0x0008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTX4x4 {
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_fore;
    ///////////////////////////////////////////////////////////
              SIE_BCTX                                         ie_back;
    ///////////////////////////////////////////////////////////
    } SIE_HCTX4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTX4x4_drvrd(SIE_HCTX4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTX4x4_drvwr(SIE_HCTX4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTX4x4_reset(SIE_HCTX4x4 *p);
     SIGN32 HCTX4x4_cmp  (SIE_HCTX4x4 *p, SIE_HCTX4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTX4x4_check(p,pie,pfx,hLOG) HCTX4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTX4x4_print(p,    pfx,hLOG) HCTX4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTX4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CTXI                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 AC0                       
///                                    ###
///                                    * DC or horizontal/vertical AC coefficient
///                                    ###
///               %signed   13 AC1                       
///                                    ###
///                                    * 2nd horizontal/vertical AC coefficient
///                                    ###
///               %unsigned 1  cbpcy                     
///                                    ###
///                                    * Flatten all 4x4s in a 8x8 block, coded or not
///                                    ###
///               %unsigned 2  mquantL                   
///                                    ###
///                                    * Low 2 bits of mquant, flatten all 4x4s in a macroblock
///                                    ###
///               %unsigned 3  mquantH                   
///                                    ###
///                                    * High 3 bits of mquant, flatten all 4x4s in a macroblock
///                                    ###
///               %signed   13 AC2                       
///                                    ###
///                                    * 3rd horizontal/vertical AC coefficient
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type above
///                                    * = intra16x16
///                                    ###
///               %signed   13 AC3                       
///                                    ###
///                                    * 4th horizontal/vertical AC coefficient
///                                    * End of CTXI
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CTXI
#define h_CTXI (){}

    #define     BA_CTXI_AC0                                    0x0000
    #define     B16CTXI_AC0                                    0x0000
    #define   LSb32CTXI_AC0                                       0
    #define   LSb16CTXI_AC0                                       0
    #define       bCTXI_AC0                                    16
    #define   MSK32CTXI_AC0                                       0x0000FFFF

    #define     BA_CTXI_AC1                                    0x0002
    #define     B16CTXI_AC1                                    0x0002
    #define   LSb32CTXI_AC1                                       16
    #define   LSb16CTXI_AC1                                       0
    #define       bCTXI_AC1                                    13
    #define   MSK32CTXI_AC1                                       0x1FFF0000

    #define     BA_CTXI_cbpcy                                  0x0003
    #define     B16CTXI_cbpcy                                  0x0002
    #define   LSb32CTXI_cbpcy                                     29
    #define   LSb16CTXI_cbpcy                                     13
    #define       bCTXI_cbpcy                                  1
    #define   MSK32CTXI_cbpcy                                     0x20000000

    #define     BA_CTXI_mquantL                                0x0003
    #define     B16CTXI_mquantL                                0x0002
    #define   LSb32CTXI_mquantL                                   30
    #define   LSb16CTXI_mquantL                                   14
    #define       bCTXI_mquantL                                2
    #define   MSK32CTXI_mquantL                                   0xC0000000

    #define     BA_CTXI_mquantH                                0x0004
    #define     B16CTXI_mquantH                                0x0004
    #define   LSb32CTXI_mquantH                                   0
    #define   LSb16CTXI_mquantH                                   0
    #define       bCTXI_mquantH                                3
    #define   MSK32CTXI_mquantH                                   0x00000007

    #define     BA_CTXI_AC2                                    0x0004
    #define     B16CTXI_AC2                                    0x0004
    #define   LSb32CTXI_AC2                                       3
    #define   LSb16CTXI_AC2                                       3
    #define       bCTXI_AC2                                    13
    #define   MSK32CTXI_AC2                                       0x0000FFF8

    #define     BA_CTXI_type                                   0x0006
    #define     B16CTXI_type                                   0x0006
    #define   LSb32CTXI_type                                      16
    #define   LSb16CTXI_type                                      0
    #define       bCTXI_type                                   3
    #define   MSK32CTXI_type                                      0x00070000

    #define     BA_CTXI_AC3                                    0x0006
    #define     B16CTXI_AC3                                    0x0006
    #define   LSb32CTXI_AC3                                       19
    #define   LSb16CTXI_AC3                                       3
    #define       bCTXI_AC3                                    13
    #define   MSK32CTXI_AC3                                       0xFFF80000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CTXI {
    ///////////////////////////////////////////////////////////
    #define   GET32CTXI_AC0(r32)                               _BFGET_(r32,15, 0)
    #define   SET32CTXI_AC0(r32,v)                             _BFSET_(r32,15, 0,v)
    #define   GET16CTXI_AC0(r16)                               _BFGET_(r16,15, 0)
    #define   SET16CTXI_AC0(r16,v)                             _BFSET_(r16,15, 0,v)

    #define   GET32CTXI_AC1(r32)                               _BFGET_(r32,28,16)
    #define   SET32CTXI_AC1(r32,v)                             _BFSET_(r32,28,16,v)
    #define   GET16CTXI_AC1(r16)                               _BFGET_(r16,12, 0)
    #define   SET16CTXI_AC1(r16,v)                             _BFSET_(r16,12, 0,v)

    #define   GET32CTXI_cbpcy(r32)                             _BFGET_(r32,29,29)
    #define   SET32CTXI_cbpcy(r32,v)                           _BFSET_(r32,29,29,v)
    #define   GET16CTXI_cbpcy(r16)                             _BFGET_(r16,13,13)
    #define   SET16CTXI_cbpcy(r16,v)                           _BFSET_(r16,13,13,v)

    #define   GET32CTXI_mquantL(r32)                           _BFGET_(r32,31,30)
    #define   SET32CTXI_mquantL(r32,v)                         _BFSET_(r32,31,30,v)
    #define   GET16CTXI_mquantL(r16)                           _BFGET_(r16,15,14)
    #define   SET16CTXI_mquantL(r16,v)                         _BFSET_(r16,15,14,v)

            UNSG32 s_AC0                                       : 16;
            UNSG32 s_AC1                                       : 13;
            UNSG32 u_cbpcy                                     :  1;
            UNSG32 u_mquantL                                   :  2;
    ///////////////////////////////////////////////////////////

    #define   GET32CTXI_mquantH(r32)                           _BFGET_(r32, 2, 0)
    #define   SET32CTXI_mquantH(r32,v)                         _BFSET_(r32, 2, 0,v)
    #define   GET16CTXI_mquantH(r16)                           _BFGET_(r16, 2, 0)
    #define   SET16CTXI_mquantH(r16,v)                         _BFSET_(r16, 2, 0,v)

    #define   GET32CTXI_AC2(r32)                               _BFGET_(r32,15, 3)
    #define   SET32CTXI_AC2(r32,v)                             _BFSET_(r32,15, 3,v)
    #define   GET16CTXI_AC2(r16)                               _BFGET_(r16,15, 3)
    #define   SET16CTXI_AC2(r16,v)                             _BFSET_(r16,15, 3,v)

    #define   GET32CTXI_type(r32)                              _BFGET_(r32,18,16)
    #define   SET32CTXI_type(r32,v)                            _BFSET_(r32,18,16,v)
    #define   GET16CTXI_type(r16)                              _BFGET_(r16, 2, 0)
    #define   SET16CTXI_type(r16,v)                            _BFSET_(r16, 2, 0,v)

    #define   GET32CTXI_AC3(r32)                               _BFGET_(r32,31,19)
    #define   SET32CTXI_AC3(r32,v)                             _BFSET_(r32,31,19,v)
    #define   GET16CTXI_AC3(r16)                               _BFGET_(r16,15, 3)
    #define   SET16CTXI_AC3(r16,v)                             _BFSET_(r16,15, 3,v)

            UNSG32 u_mquantH                                   :  3;
            UNSG32 s_AC2                                       : 13;
            UNSG32 u_type                                      :  3;
            UNSG32 s_AC3                                       : 13;
    ///////////////////////////////////////////////////////////
    } SIE_CTXI;

    ///////////////////////////////////////////////////////////
     SIGN32 CTXI_drvrd(SIE_CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CTXI_drvwr(SIE_CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CTXI_reset(SIE_CTXI *p);
     SIGN32 CTXI_cmp  (SIE_CTXI *p, SIE_CTXI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CTXI_check(p,pie,pfx,hLOG) CTXI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CTXI_print(p,    pfx,hLOG) CTXI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CTXI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CTXI4x4                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 luma                 
///               $CTXI                luma              REG          
///                                    ###
///                                    * DC/AC for Y
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 chroma               
///               $CTXI                chroma            REG          
///                                    ###
///                                    * DC/AC for UV
///                                    * End of CTXI4x4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CTXI4x4
#define h_CTXI4x4 (){}

    #define     RA_CTXI4x4_luma                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_CTXI4x4_chroma                              0x0008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CTXI4x4 {
    ///////////////////////////////////////////////////////////
              SIE_CTXI                                         ie_luma;
    ///////////////////////////////////////////////////////////
              SIE_CTXI                                         ie_chroma;
    ///////////////////////////////////////////////////////////
    } SIE_CTXI4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 CTXI4x4_drvrd(SIE_CTXI4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CTXI4x4_drvwr(SIE_CTXI4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CTXI4x4_reset(SIE_CTXI4x4 *p);
     SIGN32 CTXI4x4_cmp  (SIE_CTXI4x4 *p, SIE_CTXI4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CTXI4x4_check(p,pie,pfx,hLOG) CTXI4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CTXI4x4_print(p,    pfx,hLOG) CTXI4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CTXI4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IDX2BID                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 frmIDX2BID           
///               $LUT8b               frmIDX2BID        REG      [16]
///                                    ###
///                                    * Cast to 8b rBID[32:rIDX][2:L0/L1]
///                                    * Note: field picture use this table (32 rIDX)!
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 topIDX2BID           
///               $LUT8b               topIDX2BID        REG      [16]
///                                    ###
///                                    * Cast to 8b rBID[32:rIDX][2:L0/L1]
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 btmIDX2BID           
///               $LUT8b               btmIDX2BID        REG      [16]
///                                    ###
///                                    * Cast to 8b rBID[32:rIDX][2:L0/L1]
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     192B, bits:    1536b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IDX2BID
#define h_IDX2BID (){}

    #define     RA_IDX2BID_frmIDX2BID                          0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_IDX2BID_topIDX2BID                          0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_IDX2BID_btmIDX2BID                          0x0080
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IDX2BID {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_frmIDX2BID[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_topIDX2BID[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_btmIDX2BID[16];
    ///////////////////////////////////////////////////////////
    } SIE_IDX2BID;

    ///////////////////////////////////////////////////////////
     SIGN32 IDX2BID_drvrd(SIE_IDX2BID *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IDX2BID_drvwr(SIE_IDX2BID *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IDX2BID_reset(SIE_IDX2BID *p);
     SIGN32 IDX2BID_cmp  (SIE_IDX2BID *p, SIE_IDX2BID *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IDX2BID_check(p,pie,pfx,hLOG) IDX2BID_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IDX2BID_print(p,    pfx,hLOG) IDX2BID_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IDX2BID
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BID2IDX                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 frmBID2IDX           
///               $LUT8b               frmBID2IDX        REG      [10]
///                                    ###
///                                    * Cast to 8b L0.min.rIDX[34:rBID]
///                                    * Note: field picture use this table (32 rIDX)!
///                                    ###
///     @ 0x00028                      (P)
///     # 0x00028 topBID2IDX           
///               $LUT8b               topBID2IDX        REG      [10]
///                                    ###
///                                    * Cast to 8b L0.min.rIDX[34:rBID]
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 btmBID2IDX           
///               $LUT8b               btmBID2IDX        REG      [10]
///                                    ###
///                                    * Cast to 8b L0.min.rIDX[34:rBID]
///                                    * Note: direct mode corner case
///                                    * Alternative method (not used) if not adjust rIDX:
///                                    * rBID = CoL.rBID | (CoL.Frm & Cur.Btm)
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     120B, bits:     960b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BID2IDX
#define h_BID2IDX (){}

    #define     RA_BID2IDX_frmBID2IDX                          0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BID2IDX_topBID2IDX                          0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_BID2IDX_btmBID2IDX                          0x0050
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BID2IDX {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_frmBID2IDX[10];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_topBID2IDX[10];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_btmBID2IDX[10];
    ///////////////////////////////////////////////////////////
    } SIE_BID2IDX;

    ///////////////////////////////////////////////////////////
     SIGN32 BID2IDX_drvrd(SIE_BID2IDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BID2IDX_drvwr(SIE_BID2IDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BID2IDX_reset(SIE_BID2IDX *p);
     SIGN32 BID2IDX_cmp  (SIE_BID2IDX *p, SIE_BID2IDX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BID2IDX_check(p,pie,pfx,hLOG) BID2IDX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BID2IDX_print(p,    pfx,hLOG) BID2IDX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BID2IDX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASPSET                  biu              (4,4)
///     ###
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * MB type
///                                    ###
///               %unsigned 2  chroma                    
///                                    ###
///                                    * Intra MB only: intra_chroma_pred
///                                    ###
///               %unsigned 1  t8x8                      
///                                    ###
///                                    * 8x8 transform; used by AspInit & residual.
///                                    * End of ASPSET
///                                    ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASPSET
#define h_ASPSET (){}

    #define     BA_ASPSET_type                                 0x0000
    #define     B16ASPSET_type                                 0x0000
    #define   LSb32ASPSET_type                                    0
    #define   LSb16ASPSET_type                                    0
    #define       bASPSET_type                                 3
    #define   MSK32ASPSET_type                                    0x00000007

    #define     BA_ASPSET_chroma                               0x0000
    #define     B16ASPSET_chroma                               0x0000
    #define   LSb32ASPSET_chroma                                  3
    #define   LSb16ASPSET_chroma                                  3
    #define       bASPSET_chroma                               2
    #define   MSK32ASPSET_chroma                                  0x00000018

    #define     BA_ASPSET_t8x8                                 0x0000
    #define     B16ASPSET_t8x8                                 0x0000
    #define   LSb32ASPSET_t8x8                                    5
    #define   LSb16ASPSET_t8x8                                    5
    #define       bASPSET_t8x8                                 1
    #define   MSK32ASPSET_t8x8                                    0x00000020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASPSET {
    ///////////////////////////////////////////////////////////
    #define   GET32ASPSET_type(r32)                            _BFGET_(r32, 2, 0)
    #define   SET32ASPSET_type(r32,v)                          _BFSET_(r32, 2, 0,v)
    #define   GET16ASPSET_type(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16ASPSET_type(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32ASPSET_chroma(r32)                          _BFGET_(r32, 4, 3)
    #define   SET32ASPSET_chroma(r32,v)                        _BFSET_(r32, 4, 3,v)
    #define   GET16ASPSET_chroma(r16)                          _BFGET_(r16, 4, 3)
    #define   SET16ASPSET_chroma(r16,v)                        _BFSET_(r16, 4, 3,v)

    #define   GET32ASPSET_t8x8(r32)                            _BFGET_(r32, 5, 5)
    #define   SET32ASPSET_t8x8(r32,v)                          _BFSET_(r32, 5, 5,v)
    #define   GET16ASPSET_t8x8(r16)                            _BFGET_(r16, 5, 5)
    #define   SET16ASPSET_t8x8(r16,v)                          _BFSET_(r16, 5, 5,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_chroma                                    :  2;
            UNSG32 u_t8x8                                      :  1;
            UNSG32 RSVDx0_b6                                   : 26;
    ///////////////////////////////////////////////////////////
    } SIE_ASPSET;

    ///////////////////////////////////////////////////////////
     SIGN32 ASPSET_drvrd(SIE_ASPSET *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASPSET_drvwr(SIE_ASPSET *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASPSET_reset(SIE_ASPSET *p);
     SIGN32 ASPSET_cmp  (SIE_ASPSET *p, SIE_ASPSET *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASPSET_check(p,pie,pfx,hLOG) ASPSET_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASPSET_print(p,    pfx,hLOG) ASPSET_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASPSET
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IntraPROP                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * See BLK.type above,
///                                    * LUT: IPCM or intraNxN or intra16x16
///                                    ###
///               %unsigned 1  8x8IDX0                   
///                                    ###
///                                    * LUT: 0 (P_8x8ref0)
///                                    ###
///               %unsigned 1  t8x8I                     
///                                    ###
///                                    * LUT: MB.transform8x8 & intraNxN
///                                    ###
///               %unsigned 1  t8x8PB                    
///                                    ###
///                                    * LUT: 0
///                                    ###
///               %unsigned 2  luma16x16                 
///                                    ###
///                                    * LUT: intra 16x16 prediction mode
///                                    ###
///               %unsigned 6  CBP                       
///                                    ###
///                                    * LUT: intra 16x16 coded block pattern
///                                    * MPEG4 LUT: Chroma cbp
///                                    * End of IntraPROP
///                                    ###
///               %%        18         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      14b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IntraPROP
#define h_IntraPROP (){}

    #define     BA_IntraPROP_type                              0x0000
    #define     B16IntraPROP_type                              0x0000
    #define   LSb32IntraPROP_type                                 0
    #define   LSb16IntraPROP_type                                 0
    #define       bIntraPROP_type                              3
    #define   MSK32IntraPROP_type                                 0x00000007

    #define     BA_IntraPROP_8x8IDX0                           0x0000
    #define     B16IntraPROP_8x8IDX0                           0x0000
    #define   LSb32IntraPROP_8x8IDX0                              3
    #define   LSb16IntraPROP_8x8IDX0                              3
    #define       bIntraPROP_8x8IDX0                           1
    #define   MSK32IntraPROP_8x8IDX0                              0x00000008

    #define     BA_IntraPROP_t8x8I                             0x0000
    #define     B16IntraPROP_t8x8I                             0x0000
    #define   LSb32IntraPROP_t8x8I                                4
    #define   LSb16IntraPROP_t8x8I                                4
    #define       bIntraPROP_t8x8I                             1
    #define   MSK32IntraPROP_t8x8I                                0x00000010

    #define     BA_IntraPROP_t8x8PB                            0x0000
    #define     B16IntraPROP_t8x8PB                            0x0000
    #define   LSb32IntraPROP_t8x8PB                               5
    #define   LSb16IntraPROP_t8x8PB                               5
    #define       bIntraPROP_t8x8PB                            1
    #define   MSK32IntraPROP_t8x8PB                               0x00000020

    #define     BA_IntraPROP_luma16x16                         0x0000
    #define     B16IntraPROP_luma16x16                         0x0000
    #define   LSb32IntraPROP_luma16x16                            6
    #define   LSb16IntraPROP_luma16x16                            6
    #define       bIntraPROP_luma16x16                         2
    #define   MSK32IntraPROP_luma16x16                            0x000000C0

    #define     BA_IntraPROP_CBP                               0x0001
    #define     B16IntraPROP_CBP                               0x0000
    #define   LSb32IntraPROP_CBP                                  8
    #define   LSb16IntraPROP_CBP                                  8
    #define       bIntraPROP_CBP                               6
    #define   MSK32IntraPROP_CBP                                  0x00003F00
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IntraPROP {
    ///////////////////////////////////////////////////////////
    #define   GET32IntraPROP_type(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32IntraPROP_type(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16IntraPROP_type(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16IntraPROP_type(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32IntraPROP_8x8IDX0(r32)                      _BFGET_(r32, 3, 3)
    #define   SET32IntraPROP_8x8IDX0(r32,v)                    _BFSET_(r32, 3, 3,v)
    #define   GET16IntraPROP_8x8IDX0(r16)                      _BFGET_(r16, 3, 3)
    #define   SET16IntraPROP_8x8IDX0(r16,v)                    _BFSET_(r16, 3, 3,v)

    #define   GET32IntraPROP_t8x8I(r32)                        _BFGET_(r32, 4, 4)
    #define   SET32IntraPROP_t8x8I(r32,v)                      _BFSET_(r32, 4, 4,v)
    #define   GET16IntraPROP_t8x8I(r16)                        _BFGET_(r16, 4, 4)
    #define   SET16IntraPROP_t8x8I(r16,v)                      _BFSET_(r16, 4, 4,v)

    #define   GET32IntraPROP_t8x8PB(r32)                       _BFGET_(r32, 5, 5)
    #define   SET32IntraPROP_t8x8PB(r32,v)                     _BFSET_(r32, 5, 5,v)
    #define   GET16IntraPROP_t8x8PB(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16IntraPROP_t8x8PB(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32IntraPROP_luma16x16(r32)                    _BFGET_(r32, 7, 6)
    #define   SET32IntraPROP_luma16x16(r32,v)                  _BFSET_(r32, 7, 6,v)
    #define   GET16IntraPROP_luma16x16(r16)                    _BFGET_(r16, 7, 6)
    #define   SET16IntraPROP_luma16x16(r16,v)                  _BFSET_(r16, 7, 6,v)

    #define   GET32IntraPROP_CBP(r32)                          _BFGET_(r32,13, 8)
    #define   SET32IntraPROP_CBP(r32,v)                        _BFSET_(r32,13, 8,v)
    #define   GET16IntraPROP_CBP(r16)                          _BFGET_(r16,13, 8)
    #define   SET16IntraPROP_CBP(r16,v)                        _BFSET_(r16,13, 8,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_8x8IDX0                                   :  1;
            UNSG32 u_t8x8I                                     :  1;
            UNSG32 u_t8x8PB                                    :  1;
            UNSG32 u_luma16x16                                 :  2;
            UNSG32 u_CBP                                       :  6;
            UNSG32 RSVDx0_b14                                  : 18;
    ///////////////////////////////////////////////////////////
    } SIE_IntraPROP;

    ///////////////////////////////////////////////////////////
     SIGN32 IntraPROP_drvrd(SIE_IntraPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IntraPROP_drvwr(SIE_IntraPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IntraPROP_reset(SIE_IntraPROP *p);
     SIGN32 IntraPROP_cmp  (SIE_IntraPROP *p, SIE_IntraPROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IntraPROP_check(p,pie,pfx,hLOG) IntraPROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IntraPROP_print(p,    pfx,hLOG) IntraPROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IntraPROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE InterPROP                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * See MBPROP.type above,
///                                    * LUT: inter or 8x8PB or 8x8IDX0 or direct16x16
///                                    ###
///               %unsigned 1  8x8IDX0                   
///                                    ###
///                                    * LUT: P_8x8ref0
///                                    ###
///               %unsigned 1  t8x8I                     
///                                    ###
///                                    * LUT: 0
///                                    ###
///               %unsigned 1  t8x8PB                    
///                                    ###
///                                    * LUT: MB.transform8x8 & inter &
///                                    * (MB.direct8x8 | !direct16x16)
///                                    ###
///               %unsigned 2  partition                 
///                                    ###
///                                    * See MBPROP.partition above
///                                    ###
///               %unsigned 2  motion_0i                 
///               %unsigned 2  motion_1i                 
///                                    ###
///                                    * LUT: intra/forward/backward/bi, see BLK.motion above
///                                    ###
///               %unsigned 2  mvs_0i                    
///               %unsigned 2  mvs_1i                    
///                                    ###
///                                    * Number of motion vectors for each directions
///                                    * End of InterPROP
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_InterPROP
#define h_InterPROP (){}

    #define     BA_InterPROP_type                              0x0000
    #define     B16InterPROP_type                              0x0000
    #define   LSb32InterPROP_type                                 0
    #define   LSb16InterPROP_type                                 0
    #define       bInterPROP_type                              3
    #define   MSK32InterPROP_type                                 0x00000007

    #define     BA_InterPROP_8x8IDX0                           0x0000
    #define     B16InterPROP_8x8IDX0                           0x0000
    #define   LSb32InterPROP_8x8IDX0                              3
    #define   LSb16InterPROP_8x8IDX0                              3
    #define       bInterPROP_8x8IDX0                           1
    #define   MSK32InterPROP_8x8IDX0                              0x00000008

    #define     BA_InterPROP_t8x8I                             0x0000
    #define     B16InterPROP_t8x8I                             0x0000
    #define   LSb32InterPROP_t8x8I                                4
    #define   LSb16InterPROP_t8x8I                                4
    #define       bInterPROP_t8x8I                             1
    #define   MSK32InterPROP_t8x8I                                0x00000010

    #define     BA_InterPROP_t8x8PB                            0x0000
    #define     B16InterPROP_t8x8PB                            0x0000
    #define   LSb32InterPROP_t8x8PB                               5
    #define   LSb16InterPROP_t8x8PB                               5
    #define       bInterPROP_t8x8PB                            1
    #define   MSK32InterPROP_t8x8PB                               0x00000020

    #define     BA_InterPROP_partition                         0x0000
    #define     B16InterPROP_partition                         0x0000
    #define   LSb32InterPROP_partition                            6
    #define   LSb16InterPROP_partition                            6
    #define       bInterPROP_partition                         2
    #define   MSK32InterPROP_partition                            0x000000C0

    #define     BA_InterPROP_motion_0i                         0x0001
    #define     B16InterPROP_motion_0i                         0x0000
    #define   LSb32InterPROP_motion_0i                            8
    #define   LSb16InterPROP_motion_0i                            8
    #define       bInterPROP_motion_0i                         2
    #define   MSK32InterPROP_motion_0i                            0x00000300

    #define     BA_InterPROP_motion_1i                         0x0001
    #define     B16InterPROP_motion_1i                         0x0000
    #define   LSb32InterPROP_motion_1i                            10
    #define   LSb16InterPROP_motion_1i                            10
    #define       bInterPROP_motion_1i                         2
    #define   MSK32InterPROP_motion_1i                            0x00000C00

    #define     BA_InterPROP_mvs_0i                            0x0001
    #define     B16InterPROP_mvs_0i                            0x0000
    #define   LSb32InterPROP_mvs_0i                               12
    #define   LSb16InterPROP_mvs_0i                               12
    #define       bInterPROP_mvs_0i                            2
    #define   MSK32InterPROP_mvs_0i                               0x00003000

    #define     BA_InterPROP_mvs_1i                            0x0001
    #define     B16InterPROP_mvs_1i                            0x0000
    #define   LSb32InterPROP_mvs_1i                               14
    #define   LSb16InterPROP_mvs_1i                               14
    #define       bInterPROP_mvs_1i                            2
    #define   MSK32InterPROP_mvs_1i                               0x0000C000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_InterPROP {
    ///////////////////////////////////////////////////////////
    #define   GET32InterPROP_type(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32InterPROP_type(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16InterPROP_type(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16InterPROP_type(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32InterPROP_8x8IDX0(r32)                      _BFGET_(r32, 3, 3)
    #define   SET32InterPROP_8x8IDX0(r32,v)                    _BFSET_(r32, 3, 3,v)
    #define   GET16InterPROP_8x8IDX0(r16)                      _BFGET_(r16, 3, 3)
    #define   SET16InterPROP_8x8IDX0(r16,v)                    _BFSET_(r16, 3, 3,v)

    #define   GET32InterPROP_t8x8I(r32)                        _BFGET_(r32, 4, 4)
    #define   SET32InterPROP_t8x8I(r32,v)                      _BFSET_(r32, 4, 4,v)
    #define   GET16InterPROP_t8x8I(r16)                        _BFGET_(r16, 4, 4)
    #define   SET16InterPROP_t8x8I(r16,v)                      _BFSET_(r16, 4, 4,v)

    #define   GET32InterPROP_t8x8PB(r32)                       _BFGET_(r32, 5, 5)
    #define   SET32InterPROP_t8x8PB(r32,v)                     _BFSET_(r32, 5, 5,v)
    #define   GET16InterPROP_t8x8PB(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16InterPROP_t8x8PB(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32InterPROP_partition(r32)                    _BFGET_(r32, 7, 6)
    #define   SET32InterPROP_partition(r32,v)                  _BFSET_(r32, 7, 6,v)
    #define   GET16InterPROP_partition(r16)                    _BFGET_(r16, 7, 6)
    #define   SET16InterPROP_partition(r16,v)                  _BFSET_(r16, 7, 6,v)

    #define   GET32InterPROP_motion_0i(r32)                    _BFGET_(r32, 9, 8)
    #define   SET32InterPROP_motion_0i(r32,v)                  _BFSET_(r32, 9, 8,v)
    #define   GET16InterPROP_motion_0i(r16)                    _BFGET_(r16, 9, 8)
    #define   SET16InterPROP_motion_0i(r16,v)                  _BFSET_(r16, 9, 8,v)

    #define   GET32InterPROP_motion_1i(r32)                    _BFGET_(r32,11,10)
    #define   SET32InterPROP_motion_1i(r32,v)                  _BFSET_(r32,11,10,v)
    #define   GET16InterPROP_motion_1i(r16)                    _BFGET_(r16,11,10)
    #define   SET16InterPROP_motion_1i(r16,v)                  _BFSET_(r16,11,10,v)

    #define   GET32InterPROP_mvs_0i(r32)                       _BFGET_(r32,13,12)
    #define   SET32InterPROP_mvs_0i(r32,v)                     _BFSET_(r32,13,12,v)
    #define   GET16InterPROP_mvs_0i(r16)                       _BFGET_(r16,13,12)
    #define   SET16InterPROP_mvs_0i(r16,v)                     _BFSET_(r16,13,12,v)

    #define   GET32InterPROP_mvs_1i(r32)                       _BFGET_(r32,15,14)
    #define   SET32InterPROP_mvs_1i(r32,v)                     _BFSET_(r32,15,14,v)
    #define   GET16InterPROP_mvs_1i(r16)                       _BFGET_(r16,15,14)
    #define   SET16InterPROP_mvs_1i(r16,v)                     _BFSET_(r16,15,14,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_8x8IDX0                                   :  1;
            UNSG32 u_t8x8I                                     :  1;
            UNSG32 u_t8x8PB                                    :  1;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_motion_0i                                 :  2;
            UNSG32 u_motion_1i                                 :  2;
            UNSG32 u_mvs_0i                                    :  2;
            UNSG32 u_mvs_1i                                    :  2;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_InterPROP;

    ///////////////////////////////////////////////////////////
     SIGN32 InterPROP_drvrd(SIE_InterPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 InterPROP_drvwr(SIE_InterPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void InterPROP_reset(SIE_InterPROP *p);
     SIGN32 InterPROP_cmp  (SIE_InterPROP *p, SIE_InterPROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define InterPROP_check(p,pie,pfx,hLOG) InterPROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define InterPROP_print(p,    pfx,hLOG) InterPROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: InterPROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_VC1                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  MaxNumCoeff               
///                                    ###
///                                    * Maximal number of coefficients to decode,
///                                    * The valid number is: 16, 32, 63, and 64
///                                    ###
///               %unsigned 3  eBlk                      
///                                    ###
///                                    * 8x8 Block index. 0~3 for Y, 4 for Cb, 5 for Cr
///                                    ###
///               %unsigned 1  IsIntra                   
///                                    ###
///                                    * 1: intra block
///                                    * 0: inter block
///                                    ###
///               %unsigned 2  SubBlkIdx                 
///                                    ###
///                                    * Sub-block index in 8x8 block. Unit is 4x4 regardless of transform type.
///                                    ###
///               %unsigned 2  TransTypeOrIpMode         
///                                    ###
///                                    * For inter block, this field contain transform type information.
///                                    ###
///                                    : TRANS_4x4                 0x0
///                                    : TRANS_4x8                 0x1
///                                    : TRANS_8x4                 0x2
///                                    : TRANS_8x8                 0x3
///                                                 ###
///                                                 * For intra block, this field is intra prediction mode.
///                                                 ###
///                                    : IP_NORMAL                 0x0
///                                    : IP_HORIZONTAL             0x1
///                                    : IP_VERTICAL               0x2
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_VC1
#define h_ResPROP_VC1 (){}

    #define     BA_ResPROP_VC1_MaxNumCoeff                     0x0000
    #define     B16ResPROP_VC1_MaxNumCoeff                     0x0000
    #define   LSb32ResPROP_VC1_MaxNumCoeff                        0
    #define   LSb16ResPROP_VC1_MaxNumCoeff                        0
    #define       bResPROP_VC1_MaxNumCoeff                     8
    #define   MSK32ResPROP_VC1_MaxNumCoeff                        0x000000FF

    #define     BA_ResPROP_VC1_eBlk                            0x0001
    #define     B16ResPROP_VC1_eBlk                            0x0000
    #define   LSb32ResPROP_VC1_eBlk                               8
    #define   LSb16ResPROP_VC1_eBlk                               8
    #define       bResPROP_VC1_eBlk                            3
    #define   MSK32ResPROP_VC1_eBlk                               0x00000700

    #define     BA_ResPROP_VC1_IsIntra                         0x0001
    #define     B16ResPROP_VC1_IsIntra                         0x0000
    #define   LSb32ResPROP_VC1_IsIntra                            11
    #define   LSb16ResPROP_VC1_IsIntra                            11
    #define       bResPROP_VC1_IsIntra                         1
    #define   MSK32ResPROP_VC1_IsIntra                            0x00000800

    #define     BA_ResPROP_VC1_SubBlkIdx                       0x0001
    #define     B16ResPROP_VC1_SubBlkIdx                       0x0000
    #define   LSb32ResPROP_VC1_SubBlkIdx                          12
    #define   LSb16ResPROP_VC1_SubBlkIdx                          12
    #define       bResPROP_VC1_SubBlkIdx                       2
    #define   MSK32ResPROP_VC1_SubBlkIdx                          0x00003000

    #define     BA_ResPROP_VC1_TransTypeOrIpMode               0x0001
    #define     B16ResPROP_VC1_TransTypeOrIpMode               0x0000
    #define   LSb32ResPROP_VC1_TransTypeOrIpMode                  14
    #define   LSb16ResPROP_VC1_TransTypeOrIpMode                  14
    #define       bResPROP_VC1_TransTypeOrIpMode               2
    #define   MSK32ResPROP_VC1_TransTypeOrIpMode                  0x0000C000
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_4x4                  0x0
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_4x8                  0x1
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_8x4                  0x2
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_8x8                  0x3
    #define        ResPROP_VC1_TransTypeOrIpMode_IP_NORMAL                  0x0
    #define        ResPROP_VC1_TransTypeOrIpMode_IP_HORIZONTAL              0x1
    #define        ResPROP_VC1_TransTypeOrIpMode_IP_VERTICAL                0x2
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_VC1 {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_VC1_MaxNumCoeff(r32)                _BFGET_(r32, 7, 0)
    #define   SET32ResPROP_VC1_MaxNumCoeff(r32,v)              _BFSET_(r32, 7, 0,v)
    #define   GET16ResPROP_VC1_MaxNumCoeff(r16)                _BFGET_(r16, 7, 0)
    #define   SET16ResPROP_VC1_MaxNumCoeff(r16,v)              _BFSET_(r16, 7, 0,v)

    #define   GET32ResPROP_VC1_eBlk(r32)                       _BFGET_(r32,10, 8)
    #define   SET32ResPROP_VC1_eBlk(r32,v)                     _BFSET_(r32,10, 8,v)
    #define   GET16ResPROP_VC1_eBlk(r16)                       _BFGET_(r16,10, 8)
    #define   SET16ResPROP_VC1_eBlk(r16,v)                     _BFSET_(r16,10, 8,v)

    #define   GET32ResPROP_VC1_IsIntra(r32)                    _BFGET_(r32,11,11)
    #define   SET32ResPROP_VC1_IsIntra(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16ResPROP_VC1_IsIntra(r16)                    _BFGET_(r16,11,11)
    #define   SET16ResPROP_VC1_IsIntra(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32ResPROP_VC1_SubBlkIdx(r32)                  _BFGET_(r32,13,12)
    #define   SET32ResPROP_VC1_SubBlkIdx(r32,v)                _BFSET_(r32,13,12,v)
    #define   GET16ResPROP_VC1_SubBlkIdx(r16)                  _BFGET_(r16,13,12)
    #define   SET16ResPROP_VC1_SubBlkIdx(r16,v)                _BFSET_(r16,13,12,v)

    #define   GET32ResPROP_VC1_TransTypeOrIpMode(r32)          _BFGET_(r32,15,14)
    #define   SET32ResPROP_VC1_TransTypeOrIpMode(r32,v)        _BFSET_(r32,15,14,v)
    #define   GET16ResPROP_VC1_TransTypeOrIpMode(r16)          _BFGET_(r16,15,14)
    #define   SET16ResPROP_VC1_TransTypeOrIpMode(r16,v)        _BFSET_(r16,15,14,v)

            UNSG32 u_MaxNumCoeff                               :  8;
            UNSG32 u_eBlk                                      :  3;
            UNSG32 u_IsIntra                                   :  1;
            UNSG32 u_SubBlkIdx                                 :  2;
            UNSG32 u_TransTypeOrIpMode                         :  2;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_VC1;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_VC1_drvrd(SIE_ResPROP_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_VC1_drvwr(SIE_ResPROP_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_VC1_reset(SIE_ResPROP_VC1 *p);
     SIGN32 ResPROP_VC1_cmp  (SIE_ResPROP_VC1 *p, SIE_ResPROP_VC1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_VC1_check(p,pie,pfx,hLOG) ResPROP_VC1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_VC1_print(p,    pfx,hLOG) ResPROP_VC1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_VC1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_MPEG2                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  Intra_MB                  
///                                    : inter                     0x0
///                                    : intra                     0x1
///                                                 ###
///                                                 * Indicate current MB is inter-coded or intra-coded
///                                                 ###
///               %unsigned 1  CC                        
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Color component (to select VLC table)
///                                                 ###
///               %unsigned 1  intra_vlc_format          
///                                    ###
///                                    * Whether to use intra VLC DC table or inter table
///                                    * End of ResProp_MPEG2
///                                    ###
///               %%        29         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       3b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_MPEG2
#define h_ResPROP_MPEG2 (){}

    #define     BA_ResPROP_MPEG2_Intra_MB                      0x0000
    #define     B16ResPROP_MPEG2_Intra_MB                      0x0000
    #define   LSb32ResPROP_MPEG2_Intra_MB                         0
    #define   LSb16ResPROP_MPEG2_Intra_MB                         0
    #define       bResPROP_MPEG2_Intra_MB                      1
    #define   MSK32ResPROP_MPEG2_Intra_MB                         0x00000001
    #define        ResPROP_MPEG2_Intra_MB_inter                             0x0
    #define        ResPROP_MPEG2_Intra_MB_intra                             0x1

    #define     BA_ResPROP_MPEG2_CC                            0x0000
    #define     B16ResPROP_MPEG2_CC                            0x0000
    #define   LSb32ResPROP_MPEG2_CC                               1
    #define   LSb16ResPROP_MPEG2_CC                               1
    #define       bResPROP_MPEG2_CC                            1
    #define   MSK32ResPROP_MPEG2_CC                               0x00000002
    #define        ResPROP_MPEG2_CC_luma                                    0x0
    #define        ResPROP_MPEG2_CC_chroma                                  0x1

    #define     BA_ResPROP_MPEG2_intra_vlc_format              0x0000
    #define     B16ResPROP_MPEG2_intra_vlc_format              0x0000
    #define   LSb32ResPROP_MPEG2_intra_vlc_format                 2
    #define   LSb16ResPROP_MPEG2_intra_vlc_format                 2
    #define       bResPROP_MPEG2_intra_vlc_format              1
    #define   MSK32ResPROP_MPEG2_intra_vlc_format                 0x00000004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_MPEG2 {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_MPEG2_Intra_MB(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32ResPROP_MPEG2_Intra_MB(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16ResPROP_MPEG2_Intra_MB(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16ResPROP_MPEG2_Intra_MB(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32ResPROP_MPEG2_CC(r32)                       _BFGET_(r32, 1, 1)
    #define   SET32ResPROP_MPEG2_CC(r32,v)                     _BFSET_(r32, 1, 1,v)
    #define   GET16ResPROP_MPEG2_CC(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16ResPROP_MPEG2_CC(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32ResPROP_MPEG2_intra_vlc_format(r32)         _BFGET_(r32, 2, 2)
    #define   SET32ResPROP_MPEG2_intra_vlc_format(r32,v)       _BFSET_(r32, 2, 2,v)
    #define   GET16ResPROP_MPEG2_intra_vlc_format(r16)         _BFGET_(r16, 2, 2)
    #define   SET16ResPROP_MPEG2_intra_vlc_format(r16,v)       _BFSET_(r16, 2, 2,v)

            UNSG32 u_Intra_MB                                  :  1;
            UNSG32 u_CC                                        :  1;
            UNSG32 u_intra_vlc_format                          :  1;
            UNSG32 RSVDx0_b3                                   : 29;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_MPEG2;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_MPEG2_drvrd(SIE_ResPROP_MPEG2 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_MPEG2_drvwr(SIE_ResPROP_MPEG2 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_MPEG2_reset(SIE_ResPROP_MPEG2 *p);
     SIGN32 ResPROP_MPEG2_cmp  (SIE_ResPROP_MPEG2 *p, SIE_ResPROP_MPEG2 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_MPEG2_check(p,pie,pfx,hLOG) ResPROP_MPEG2_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_MPEG2_print(p,    pfx,hLOG) ResPROP_MPEG2_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_MPEG2
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_MPEG4                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  Intra_MB                  
///                                    : inter                     0x0
///                                    : intra                     0x1
///                                                 ###
///                                                 * Indicate current MB is inter-coded or intra-coded
///                                                 ###
///               %unsigned 1  CC                        
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Color component (to select VLC table)
///                                                 ###
///               %unsigned 1  use_intra_dc_vlc          
///                                    ###
///                                    * Whether to use intra VLC DC table or inter table
///                                    ###
///               %unsigned 1  pattern_code              
///                                    ###
///                                    * Indicate whether to encode AC coefficients
///                                    ###
///               %unsigned 2  scan_order                
///                                    : normal                    0x0
///                                    : horizontal                0x1
///                                    : vertical                  0x2
///                                                 ###
///                                                 * Indicate zigzag scan order of 8x8 coefficients
///                                                 * End of ResProp_MPEG4
///                                                 ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_MPEG4
#define h_ResPROP_MPEG4 (){}

    #define     BA_ResPROP_MPEG4_Intra_MB                      0x0000
    #define     B16ResPROP_MPEG4_Intra_MB                      0x0000
    #define   LSb32ResPROP_MPEG4_Intra_MB                         0
    #define   LSb16ResPROP_MPEG4_Intra_MB                         0
    #define       bResPROP_MPEG4_Intra_MB                      1
    #define   MSK32ResPROP_MPEG4_Intra_MB                         0x00000001
    #define        ResPROP_MPEG4_Intra_MB_inter                             0x0
    #define        ResPROP_MPEG4_Intra_MB_intra                             0x1

    #define     BA_ResPROP_MPEG4_CC                            0x0000
    #define     B16ResPROP_MPEG4_CC                            0x0000
    #define   LSb32ResPROP_MPEG4_CC                               1
    #define   LSb16ResPROP_MPEG4_CC                               1
    #define       bResPROP_MPEG4_CC                            1
    #define   MSK32ResPROP_MPEG4_CC                               0x00000002
    #define        ResPROP_MPEG4_CC_luma                                    0x0
    #define        ResPROP_MPEG4_CC_chroma                                  0x1

    #define     BA_ResPROP_MPEG4_use_intra_dc_vlc              0x0000
    #define     B16ResPROP_MPEG4_use_intra_dc_vlc              0x0000
    #define   LSb32ResPROP_MPEG4_use_intra_dc_vlc                 2
    #define   LSb16ResPROP_MPEG4_use_intra_dc_vlc                 2
    #define       bResPROP_MPEG4_use_intra_dc_vlc              1
    #define   MSK32ResPROP_MPEG4_use_intra_dc_vlc                 0x00000004

    #define     BA_ResPROP_MPEG4_pattern_code                  0x0000
    #define     B16ResPROP_MPEG4_pattern_code                  0x0000
    #define   LSb32ResPROP_MPEG4_pattern_code                     3
    #define   LSb16ResPROP_MPEG4_pattern_code                     3
    #define       bResPROP_MPEG4_pattern_code                  1
    #define   MSK32ResPROP_MPEG4_pattern_code                     0x00000008

    #define     BA_ResPROP_MPEG4_scan_order                    0x0000
    #define     B16ResPROP_MPEG4_scan_order                    0x0000
    #define   LSb32ResPROP_MPEG4_scan_order                       4
    #define   LSb16ResPROP_MPEG4_scan_order                       4
    #define       bResPROP_MPEG4_scan_order                    2
    #define   MSK32ResPROP_MPEG4_scan_order                       0x00000030
    #define        ResPROP_MPEG4_scan_order_normal                          0x0
    #define        ResPROP_MPEG4_scan_order_horizontal                      0x1
    #define        ResPROP_MPEG4_scan_order_vertical                        0x2
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_MPEG4 {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_MPEG4_Intra_MB(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32ResPROP_MPEG4_Intra_MB(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16ResPROP_MPEG4_Intra_MB(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16ResPROP_MPEG4_Intra_MB(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32ResPROP_MPEG4_CC(r32)                       _BFGET_(r32, 1, 1)
    #define   SET32ResPROP_MPEG4_CC(r32,v)                     _BFSET_(r32, 1, 1,v)
    #define   GET16ResPROP_MPEG4_CC(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16ResPROP_MPEG4_CC(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32ResPROP_MPEG4_use_intra_dc_vlc(r32)         _BFGET_(r32, 2, 2)
    #define   SET32ResPROP_MPEG4_use_intra_dc_vlc(r32,v)       _BFSET_(r32, 2, 2,v)
    #define   GET16ResPROP_MPEG4_use_intra_dc_vlc(r16)         _BFGET_(r16, 2, 2)
    #define   SET16ResPROP_MPEG4_use_intra_dc_vlc(r16,v)       _BFSET_(r16, 2, 2,v)

    #define   GET32ResPROP_MPEG4_pattern_code(r32)             _BFGET_(r32, 3, 3)
    #define   SET32ResPROP_MPEG4_pattern_code(r32,v)           _BFSET_(r32, 3, 3,v)
    #define   GET16ResPROP_MPEG4_pattern_code(r16)             _BFGET_(r16, 3, 3)
    #define   SET16ResPROP_MPEG4_pattern_code(r16,v)           _BFSET_(r16, 3, 3,v)

    #define   GET32ResPROP_MPEG4_scan_order(r32)               _BFGET_(r32, 5, 4)
    #define   SET32ResPROP_MPEG4_scan_order(r32,v)             _BFSET_(r32, 5, 4,v)
    #define   GET16ResPROP_MPEG4_scan_order(r16)               _BFGET_(r16, 5, 4)
    #define   SET16ResPROP_MPEG4_scan_order(r16,v)             _BFSET_(r16, 5, 4,v)

            UNSG32 u_Intra_MB                                  :  1;
            UNSG32 u_CC                                        :  1;
            UNSG32 u_use_intra_dc_vlc                          :  1;
            UNSG32 u_pattern_code                              :  1;
            UNSG32 u_scan_order                                :  2;
            UNSG32 RSVDx0_b6                                   : 26;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_MPEG4;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_MPEG4_drvrd(SIE_ResPROP_MPEG4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_MPEG4_drvwr(SIE_ResPROP_MPEG4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_MPEG4_reset(SIE_ResPROP_MPEG4 *p);
     SIGN32 ResPROP_MPEG4_cmp  (SIE_ResPROP_MPEG4 *p, SIE_ResPROP_MPEG4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_MPEG4_check(p,pie,pfx,hLOG) ResPROP_MPEG4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_MPEG4_print(p,    pfx,hLOG) ResPROP_MPEG4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_MPEG4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_JPEG                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  DCTblId                   
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Selects Huffman table used to decode or encode DC coefficients
///                                                 ###
///               %unsigned 1  ACTblId                   
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Selects Huffman table used to decode or encode AC coefficients
///                                                 * End of ResPROP_JPEG
///                                                 ###
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       2b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_JPEG
#define h_ResPROP_JPEG (){}

    #define     BA_ResPROP_JPEG_DCTblId                        0x0000
    #define     B16ResPROP_JPEG_DCTblId                        0x0000
    #define   LSb32ResPROP_JPEG_DCTblId                           0
    #define   LSb16ResPROP_JPEG_DCTblId                           0
    #define       bResPROP_JPEG_DCTblId                        1
    #define   MSK32ResPROP_JPEG_DCTblId                           0x00000001
    #define        ResPROP_JPEG_DCTblId_luma                                0x0
    #define        ResPROP_JPEG_DCTblId_chroma                              0x1

    #define     BA_ResPROP_JPEG_ACTblId                        0x0000
    #define     B16ResPROP_JPEG_ACTblId                        0x0000
    #define   LSb32ResPROP_JPEG_ACTblId                           1
    #define   LSb16ResPROP_JPEG_ACTblId                           1
    #define       bResPROP_JPEG_ACTblId                        1
    #define   MSK32ResPROP_JPEG_ACTblId                           0x00000002
    #define        ResPROP_JPEG_ACTblId_luma                                0x0
    #define        ResPROP_JPEG_ACTblId_chroma                              0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_JPEG {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_JPEG_DCTblId(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32ResPROP_JPEG_DCTblId(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16ResPROP_JPEG_DCTblId(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16ResPROP_JPEG_DCTblId(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32ResPROP_JPEG_ACTblId(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32ResPROP_JPEG_ACTblId(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16ResPROP_JPEG_ACTblId(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16ResPROP_JPEG_ACTblId(r16,v)                 _BFSET_(r16, 1, 1,v)

            UNSG32 u_DCTblId                                   :  1;
            UNSG32 u_ACTblId                                   :  1;
            UNSG32 RSVDx0_b2                                   : 30;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_JPEG;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_JPEG_drvrd(SIE_ResPROP_JPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_JPEG_drvwr(SIE_ResPROP_JPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_JPEG_reset(SIE_ResPROP_JPEG *p);
     SIGN32 ResPROP_JPEG_cmp  (SIE_ResPROP_JPEG *p, SIE_ResPROP_JPEG *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_JPEG_check(p,pie,pfx,hLOG) ResPROP_JPEG_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_JPEG_print(p,    pfx,hLOG) ResPROP_JPEG_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_JPEG
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TotalCoeff6                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  nc_0i                     
///               %unsigned 5  nc_1i                     
///               %unsigned 5  nc_2i                     
///                                    ###
///                                    * The number of non-zero transform coefficients in a 4x4 Y or UV coefficient block. Totally 3 blocks are in order 0 ~ 2.
///                                    ###
///               %%        1          # Stuffing bits...
///               %unsigned 5  nc1_0i                    
///               %unsigned 5  nc1_1i                    
///               %unsigned 5  nc1_2i                    
///               %%        1          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      30b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TotalCoeff6
#define h_TotalCoeff6 (){}

    #define     BA_TotalCoeff6_nc_0i                           0x0000
    #define     B16TotalCoeff6_nc_0i                           0x0000
    #define   LSb32TotalCoeff6_nc_0i                              0
    #define   LSb16TotalCoeff6_nc_0i                              0
    #define       bTotalCoeff6_nc_0i                           5
    #define   MSK32TotalCoeff6_nc_0i                              0x0000001F

    #define     BA_TotalCoeff6_nc_1i                           0x0000
    #define     B16TotalCoeff6_nc_1i                           0x0000
    #define   LSb32TotalCoeff6_nc_1i                              5
    #define   LSb16TotalCoeff6_nc_1i                              5
    #define       bTotalCoeff6_nc_1i                           5
    #define   MSK32TotalCoeff6_nc_1i                              0x000003E0

    #define     BA_TotalCoeff6_nc_2i                           0x0001
    #define     B16TotalCoeff6_nc_2i                           0x0000
    #define   LSb32TotalCoeff6_nc_2i                              10
    #define   LSb16TotalCoeff6_nc_2i                              10
    #define       bTotalCoeff6_nc_2i                           5
    #define   MSK32TotalCoeff6_nc_2i                              0x00007C00

    #define     BA_TotalCoeff6_nc1_0i                          0x0002
    #define     B16TotalCoeff6_nc1_0i                          0x0002
    #define   LSb32TotalCoeff6_nc1_0i                             16
    #define   LSb16TotalCoeff6_nc1_0i                             0
    #define       bTotalCoeff6_nc1_0i                          5
    #define   MSK32TotalCoeff6_nc1_0i                             0x001F0000

    #define     BA_TotalCoeff6_nc1_1i                          0x0002
    #define     B16TotalCoeff6_nc1_1i                          0x0002
    #define   LSb32TotalCoeff6_nc1_1i                             21
    #define   LSb16TotalCoeff6_nc1_1i                             5
    #define       bTotalCoeff6_nc1_1i                          5
    #define   MSK32TotalCoeff6_nc1_1i                             0x03E00000

    #define     BA_TotalCoeff6_nc1_2i                          0x0003
    #define     B16TotalCoeff6_nc1_2i                          0x0002
    #define   LSb32TotalCoeff6_nc1_2i                             26
    #define   LSb16TotalCoeff6_nc1_2i                             10
    #define       bTotalCoeff6_nc1_2i                          5
    #define   MSK32TotalCoeff6_nc1_2i                             0x7C000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TotalCoeff6 {
    ///////////////////////////////////////////////////////////
    #define   GET32TotalCoeff6_nc_0i(r32)                      _BFGET_(r32, 4, 0)
    #define   SET32TotalCoeff6_nc_0i(r32,v)                    _BFSET_(r32, 4, 0,v)
    #define   GET16TotalCoeff6_nc_0i(r16)                      _BFGET_(r16, 4, 0)
    #define   SET16TotalCoeff6_nc_0i(r16,v)                    _BFSET_(r16, 4, 0,v)

    #define   GET32TotalCoeff6_nc_1i(r32)                      _BFGET_(r32, 9, 5)
    #define   SET32TotalCoeff6_nc_1i(r32,v)                    _BFSET_(r32, 9, 5,v)
    #define   GET16TotalCoeff6_nc_1i(r16)                      _BFGET_(r16, 9, 5)
    #define   SET16TotalCoeff6_nc_1i(r16,v)                    _BFSET_(r16, 9, 5,v)

    #define   GET32TotalCoeff6_nc_2i(r32)                      _BFGET_(r32,14,10)
    #define   SET32TotalCoeff6_nc_2i(r32,v)                    _BFSET_(r32,14,10,v)
    #define   GET16TotalCoeff6_nc_2i(r16)                      _BFGET_(r16,14,10)
    #define   SET16TotalCoeff6_nc_2i(r16,v)                    _BFSET_(r16,14,10,v)

    #define   GET32TotalCoeff6_nc1_0i(r32)                     _BFGET_(r32,20,16)
    #define   SET32TotalCoeff6_nc1_0i(r32,v)                   _BFSET_(r32,20,16,v)
    #define   GET16TotalCoeff6_nc1_0i(r16)                     _BFGET_(r16, 4, 0)
    #define   SET16TotalCoeff6_nc1_0i(r16,v)                   _BFSET_(r16, 4, 0,v)

    #define   GET32TotalCoeff6_nc1_1i(r32)                     _BFGET_(r32,25,21)
    #define   SET32TotalCoeff6_nc1_1i(r32,v)                   _BFSET_(r32,25,21,v)
    #define   GET16TotalCoeff6_nc1_1i(r16)                     _BFGET_(r16, 9, 5)
    #define   SET16TotalCoeff6_nc1_1i(r16,v)                   _BFSET_(r16, 9, 5,v)

    #define   GET32TotalCoeff6_nc1_2i(r32)                     _BFGET_(r32,30,26)
    #define   SET32TotalCoeff6_nc1_2i(r32,v)                   _BFSET_(r32,30,26,v)
    #define   GET16TotalCoeff6_nc1_2i(r16)                     _BFGET_(r16,14,10)
    #define   SET16TotalCoeff6_nc1_2i(r16,v)                   _BFSET_(r16,14,10,v)

            UNSG32 u_nc_0i                                     :  5;
            UNSG32 u_nc_1i                                     :  5;
            UNSG32 u_nc_2i                                     :  5;
            UNSG32 RSVDx0_b15                                  :  1;
            UNSG32 u_nc1_0i                                    :  5;
            UNSG32 u_nc1_1i                                    :  5;
            UNSG32 u_nc1_2i                                    :  5;
            UNSG32 RSVDx0_b31                                  :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TotalCoeff6;

    ///////////////////////////////////////////////////////////
     SIGN32 TotalCoeff6_drvrd(SIE_TotalCoeff6 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TotalCoeff6_drvwr(SIE_TotalCoeff6 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TotalCoeff6_reset(SIE_TotalCoeff6 *p);
     SIGN32 TotalCoeff6_cmp  (SIE_TotalCoeff6 *p, SIE_TotalCoeff6 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TotalCoeff6_check(p,pie,pfx,hLOG) TotalCoeff6_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TotalCoeff6_print(p,    pfx,hLOG) TotalCoeff6_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TotalCoeff6
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASEPopTotalCoeff                         (4,2)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 TotalCoeff           
///               $TotalCoeff6         TotalCoeff        REG       [2]
///                                    ###
///                                    * The number of non-zero transform coefficients in a 4x4 Y or UV coefficient block in 3 block group. Totally 12 blocks in 4 groups are in order 0 ~ 11.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      60b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASEPopTotalCoeff
#define h_ASEPopTotalCoeff (){}

    #define     RA_ASEPopTotalCoeff_TotalCoeff                 0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASEPopTotalCoeff {
    ///////////////////////////////////////////////////////////
              SIE_TotalCoeff6                                  ie_TotalCoeff[2];
    ///////////////////////////////////////////////////////////
    } SIE_ASEPopTotalCoeff;

    ///////////////////////////////////////////////////////////
     SIGN32 ASEPopTotalCoeff_drvrd(SIE_ASEPopTotalCoeff *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASEPopTotalCoeff_drvwr(SIE_ASEPopTotalCoeff *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASEPopTotalCoeff_reset(SIE_ASEPopTotalCoeff *p);
     SIGN32 ASEPopTotalCoeff_cmp  (SIE_ASEPopTotalCoeff *p, SIE_ASEPopTotalCoeff *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASEPopTotalCoeff_check(p,pie,pfx,hLOG) ASEPopTotalCoeff_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASEPopTotalCoeff_print(p,    pfx,hLOG) ASEPopTotalCoeff_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASEPopTotalCoeff
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64PIC                 biu              (4,4)
///     ###
///     * RF64 picture-level information for ALU64 extensions; padded to 64b. Used in placed of BIU register for efficiency. Parameters in this interface should only be updated at the slice boundary.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  format                    
///                                    : h264                      0x0
///                                    : wmv                       0x1
///                                                 ###
///                                                 * VC-1 Main Profile
///                                                 ###
///                                    : mpg2                      0x2
///                                    : other                     0x3
///                                    : mpg4                      0x4
///                                    : vc1ap                     0x5
///                                                 ###
///                                                 * VC-1 Advanced Profile
///                                                 ###
///                                    : h263                      0x6
///                                    : avs                       0x7
///                                                 ###
///                                                 * Format of the current video stream
///                                                 ###
///               %unsigned 1  cabac                     
///                                    ###
///                                    * Whether current slice is coded in CABAC
///                                    ###
///               %unsigned 2  picType                   
///                                    : I                         0x0
///                                    : P                         0x1
///                                    : B                         0x2
///                                                 ###
///                                                 * Used by PMV to qualify between P_skip & B_skip
///                                                 ###
///               %unsigned 5  maxL0                     
///                                    ###
///                                    * H264: num_ref_idx_l0_active_minus1
///                                    ###
///               %unsigned 5  maxL1                     
///                                    ###
///                                    * H264: num_ref_idx_l1_active_minus1
///                                    ###
///               %unsigned 1  MbaffPic                  
///                                    ###
///                                    * Whether current picture is Mbaff pic or not; for FOP
///                                    * For VC-1:
///                                    * (~Mbaffpic && ~fieldPic) -> progressive
///                                    * (Mbaffpic && ~fieldPic) -> interlace frame
///                                    ###
///               %unsigned 1  fieldPic                  
///                                    ###
///                                    * Whether current picture is field coded or not; for FOP
///                                    * For VC-1:
///                                    * (~MbaffPic && fieldPic) -> interlace field, one ref;
///                                    * (MbaffPic && fieldPic) -> interlace field, two ref
///                                    ###
///               %unsigned 1  spatialPred               
///                                    ###
///                                    * Spatial direct prediction modee; for dirMV.
///                                    ###
///               %unsigned 1  colPicMbaff               
///                                    ###
///                                    * Whether colocated pic is Mbaff pic or not; for dirMV
///                                    ###
///               %unsigned 1  colPicField               
///                                    ###
///                                    * Whether colocated picture is field pic or not; for dirMV
///                                    ###
///               %unsigned 1  colPicST                  
///                                    ###
///                                    * Co-located picture is a long-term (0) or short-term (1) reference picture; for dirMV.
///                                    ###
///               %signed   5  AC0Offset                 
///                                    ###
///                                    * = slice_alpha_c0_offset_div2<<1, -12 ~ +12, inclusive, even numbers only. For FOP only.
///                                    ###
///               %signed   5  BetaOffset                
///                                    ###
///                                    * = slice_beta_offset_div2<<1, -12 ~ +12, inclusive, even numbers only. For FOP only.
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 16 dqAcLimit                 
///                                    ###
///                                    * Saturation limit for AC dequantization
///                                    * Also apply for universal dequantization
///                                    ###
///               %unsigned 14 dqDcLimit                 
///                                    ###
///                                    * Saturation limit for DC dequantization
///                                    ###
///               %unsigned 2  mismatch                  
///                                    : none                      0x0
///                                    : mpeg1                     0x1
///                                    : mpeg2                     0x2
///                                                 ###
///                                                 * mismatch control, for AC dequant only
///                                                 ###
///     @ 0x00008                      (P)
///               %unsigned 16 picW                      
///                                    ###
///                                    * Width of current picture; up to 2047
///                                    ###
///               %unsigned 13 picH                      
///                                    ###
///                                    * Height of current picture; up to 2047. For vcMsg only
///                                    ###
///               %unsigned 1  btmFldPic                 
///                                    ###
///                                    * H.264: Current picture is bottom field; for vcMsg. Valid only when fieldPic==1.
///                                    ###
///               %unsigned 2  hint                      
///                                    ###
///                                    * Same as CacheMsg.hint; for vcMsg only
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 8  shiftLumaX                
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Luma X direction. 4 entries, 2-bit per entry, indexed by mvx[1:0] in little-endian format
///                                    ###
///               %unsigned 8  shiftLumaY                
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Luma Y direction. 4 entries, 2-bit per entry, indexed by mvy[1:0] in little-endian format
///                                    ###
///               %unsigned 8  shiftChromaX              
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Chroma X direction. 4 entries, 2-bit per entry, indexed by mvx[1:0] in little-endian format
///                                    ###
///               %unsigned 8  shiftChromaY              
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Chroma Y direction. 4 entries, 2-bit per entry, indexed by mvy[1:0] in little-endian format
///                                    ###
///     @ 0x00010                      (P)
///               %unsigned 4  fracTapDiv2Y              
///                                    ###
///                                    * (Tap size / 2) for luma fractional MV interpolation
///                                    ###
///               %unsigned 4  fracTapDiv2C              
///                                    ###
///                                    * (Tap size / 2) for chroma fractional MV interpolation
///                                    ###
///               %unsigned 6  IPCM_QPU                  
///                                    ###
///                                    * QPU for IPCM coded MBs; for H.264 FOP
///                                    ###
///               %unsigned 6  IPCM_QPV                  
///                                    ###
///                                    * QPV for IPCM coded MBs; for H.264 FOP
///                                    ###
///               %unsigned 12 RSVD12                    
///                                    ###
///                                    * padding to 32 bits
///                                    ###
///     @ 0x00014                      (P)
///               %unsigned 5  PQUANT                    
///                                    ###
///                                    * picture-level quantization factor
///                                    ###
///               %unsigned 2  FRFD                      
///                                    ###
///                                    * Forward reference picture distance, 0~3.
///                                    * Used by VC1 for interlace P field PMV, or for interlace B field forward PMV
///                                    ###
///               %unsigned 2  BRFD                      
///                                    ###
///                                    * Backward reference picture distance, 0~3.
///                                    * Used by VC1 for interlace B field backward PMV
///                                    ###
///               %unsigned 1  secondFld                 
///                                    ###
///                                    * Used by PMV for interlace field picture: whether current field is 1st field or 2nd field of display picture
///                                    ###
///               %unsigned 2  mvRange                   
///                                    ###
///                                    * 0~3; used to lookup range_x & range_y for PMV; see VC-1 spec table 75.
///                                    ###
///               %unsigned 1  hybridMvThres             
///                                    ###
///                                    * 0: threshold = 16; 1: threshold = 32
///                                    ###
///               %unsigned 1  firstMbIntra              
///                                    ###
///                                    * 0: first MB or block is inter coded; 1: intra coded; used for VC-1 Fop
///                                    ###
///               %unsigned 1  halfPixel                 
///                                    ###
///                                    * Half pixel flag, for VC-1 PMV interlace field mode.
///                                    ###
///               %unsigned 1  forwRefInterlace          
///                                    ###
///                                    * For VC-1 interlace frame picture in VCMSG extension forward reference is 0: progressive coded; 1: interlace coded
///                                    ###
///               %unsigned 1  backRefInterlace          
///                                    ###
///                                    * For VC-1 interlace frame picture in VCMSG extension backward reference is 0: progressive coded; 1: interlace coded
///                                    ###
///               %unsigned 2  FrmTransACSet             
///                                    ###
///                                    * For VC-1 frame-level transform AC coding set selection (for Cb and Cr block; and inter Y block).
///                                    * Valid values are 0, 1, and 2
///                                    ###
///               %unsigned 2  FrmTransACSet2            
///                                    ###
///                                    * For VC-1 frame-level transform AC table-2 index selection (for I-frame Y block)
///                                    * Valid values are 0, 1, and 2
///                                    ###
///               %unsigned 1  PQIndexGT8                
///                                    ###
///                                    * Indicator to represent whether Picture Quantized Index (PQIndexG8, defined in Table 36 in VC-1 spec) is greater than 8.
///                                    * 0: value of PQIndex is less than or equal to 8
///                                    * 1: value of PQIndex is greater than 8
///                                    ###
///               %unsigned 1  EscapeTBL                 
///                                    ###
///                                    * For VC-1 to select escape table in residual decoding
///                                    ###
///               %unsigned 4  format1                   
///                                    : RV9                       0x0
///                                    : RV8                       0x1
///                                    : vp8                       0x2
///                                    : jpeg                      0x3
///               %unsigned 1  noReorder                 
///                                    ###
///                                    * For ASE, disable coefficient reorder.
///                                    ###
///               %unsigned 1  iplusModeOn               
///                                    ###
///                                    * For ASE, IPLUS mode is on or not.
///                                    ###
///               %unsigned 3  RSVD3                     
///                                    ###
///                                    * padding to 32 bits
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 RSVD                 
///               $LUT64b              RSVD              REG       [5]
///                                    ###
///                                    * Reserved for alignment
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 rIDX2BID             
///               $IDX2BID             rIDX2BID          REG          
///                                    ###
///                                    * Defined in 'decHal_mbLvl.sxw.txt'
///                                    * End of RF64PIC
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     256B, bits:    2048b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64PIC
#define h_RF64PIC (){}

    #define     BA_RF64PIC_format                              0x0000
    #define     B16RF64PIC_format                              0x0000
    #define   LSb32RF64PIC_format                                 0
    #define   LSb16RF64PIC_format                                 0
    #define       bRF64PIC_format                              3
    #define   MSK32RF64PIC_format                                 0x00000007
    #define        RF64PIC_format_h264                                      0x0
    #define        RF64PIC_format_wmv                                       0x1
    #define        RF64PIC_format_mpg2                                      0x2
    #define        RF64PIC_format_other                                     0x3
    #define        RF64PIC_format_mpg4                                      0x4
    #define        RF64PIC_format_vc1ap                                     0x5
    #define        RF64PIC_format_h263                                      0x6
    #define        RF64PIC_format_avs                                       0x7

    #define     BA_RF64PIC_cabac                               0x0000
    #define     B16RF64PIC_cabac                               0x0000
    #define   LSb32RF64PIC_cabac                                  3
    #define   LSb16RF64PIC_cabac                                  3
    #define       bRF64PIC_cabac                               1
    #define   MSK32RF64PIC_cabac                                  0x00000008

    #define     BA_RF64PIC_picType                             0x0000
    #define     B16RF64PIC_picType                             0x0000
    #define   LSb32RF64PIC_picType                                4
    #define   LSb16RF64PIC_picType                                4
    #define       bRF64PIC_picType                             2
    #define   MSK32RF64PIC_picType                                0x00000030
    #define        RF64PIC_picType_I                                        0x0
    #define        RF64PIC_picType_P                                        0x1
    #define        RF64PIC_picType_B                                        0x2

    #define     BA_RF64PIC_maxL0                               0x0000
    #define     B16RF64PIC_maxL0                               0x0000
    #define   LSb32RF64PIC_maxL0                                  6
    #define   LSb16RF64PIC_maxL0                                  6
    #define       bRF64PIC_maxL0                               5
    #define   MSK32RF64PIC_maxL0                                  0x000007C0

    #define     BA_RF64PIC_maxL1                               0x0001
    #define     B16RF64PIC_maxL1                               0x0000
    #define   LSb32RF64PIC_maxL1                                  11
    #define   LSb16RF64PIC_maxL1                                  11
    #define       bRF64PIC_maxL1                               5
    #define   MSK32RF64PIC_maxL1                                  0x0000F800

    #define     BA_RF64PIC_MbaffPic                            0x0002
    #define     B16RF64PIC_MbaffPic                            0x0002
    #define   LSb32RF64PIC_MbaffPic                               16
    #define   LSb16RF64PIC_MbaffPic                               0
    #define       bRF64PIC_MbaffPic                            1
    #define   MSK32RF64PIC_MbaffPic                               0x00010000

    #define     BA_RF64PIC_fieldPic                            0x0002
    #define     B16RF64PIC_fieldPic                            0x0002
    #define   LSb32RF64PIC_fieldPic                               17
    #define   LSb16RF64PIC_fieldPic                               1
    #define       bRF64PIC_fieldPic                            1
    #define   MSK32RF64PIC_fieldPic                               0x00020000

    #define     BA_RF64PIC_spatialPred                         0x0002
    #define     B16RF64PIC_spatialPred                         0x0002
    #define   LSb32RF64PIC_spatialPred                            18
    #define   LSb16RF64PIC_spatialPred                            2
    #define       bRF64PIC_spatialPred                         1
    #define   MSK32RF64PIC_spatialPred                            0x00040000

    #define     BA_RF64PIC_colPicMbaff                         0x0002
    #define     B16RF64PIC_colPicMbaff                         0x0002
    #define   LSb32RF64PIC_colPicMbaff                            19
    #define   LSb16RF64PIC_colPicMbaff                            3
    #define       bRF64PIC_colPicMbaff                         1
    #define   MSK32RF64PIC_colPicMbaff                            0x00080000

    #define     BA_RF64PIC_colPicField                         0x0002
    #define     B16RF64PIC_colPicField                         0x0002
    #define   LSb32RF64PIC_colPicField                            20
    #define   LSb16RF64PIC_colPicField                            4
    #define       bRF64PIC_colPicField                         1
    #define   MSK32RF64PIC_colPicField                            0x00100000

    #define     BA_RF64PIC_colPicST                            0x0002
    #define     B16RF64PIC_colPicST                            0x0002
    #define   LSb32RF64PIC_colPicST                               21
    #define   LSb16RF64PIC_colPicST                               5
    #define       bRF64PIC_colPicST                            1
    #define   MSK32RF64PIC_colPicST                               0x00200000

    #define     BA_RF64PIC_AC0Offset                           0x0002
    #define     B16RF64PIC_AC0Offset                           0x0002
    #define   LSb32RF64PIC_AC0Offset                              22
    #define   LSb16RF64PIC_AC0Offset                              6
    #define       bRF64PIC_AC0Offset                           5
    #define   MSK32RF64PIC_AC0Offset                              0x07C00000

    #define     BA_RF64PIC_BetaOffset                          0x0003
    #define     B16RF64PIC_BetaOffset                          0x0002
    #define   LSb32RF64PIC_BetaOffset                             27
    #define   LSb16RF64PIC_BetaOffset                             11
    #define       bRF64PIC_BetaOffset                          5
    #define   MSK32RF64PIC_BetaOffset                             0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_dqAcLimit                           0x0004
    #define     B16RF64PIC_dqAcLimit                           0x0004
    #define   LSb32RF64PIC_dqAcLimit                              0
    #define   LSb16RF64PIC_dqAcLimit                              0
    #define       bRF64PIC_dqAcLimit                           16
    #define   MSK32RF64PIC_dqAcLimit                              0x0000FFFF

    #define     BA_RF64PIC_dqDcLimit                           0x0006
    #define     B16RF64PIC_dqDcLimit                           0x0006
    #define   LSb32RF64PIC_dqDcLimit                              16
    #define   LSb16RF64PIC_dqDcLimit                              0
    #define       bRF64PIC_dqDcLimit                           14
    #define   MSK32RF64PIC_dqDcLimit                              0x3FFF0000

    #define     BA_RF64PIC_mismatch                            0x0007
    #define     B16RF64PIC_mismatch                            0x0006
    #define   LSb32RF64PIC_mismatch                               30
    #define   LSb16RF64PIC_mismatch                               14
    #define       bRF64PIC_mismatch                            2
    #define   MSK32RF64PIC_mismatch                               0xC0000000
    #define        RF64PIC_mismatch_none                                    0x0
    #define        RF64PIC_mismatch_mpeg1                                   0x1
    #define        RF64PIC_mismatch_mpeg2                                   0x2
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_picW                                0x0008
    #define     B16RF64PIC_picW                                0x0008
    #define   LSb32RF64PIC_picW                                   0
    #define   LSb16RF64PIC_picW                                   0
    #define       bRF64PIC_picW                                16
    #define   MSK32RF64PIC_picW                                   0x0000FFFF

    #define     BA_RF64PIC_picH                                0x000A
    #define     B16RF64PIC_picH                                0x000A
    #define   LSb32RF64PIC_picH                                   16
    #define   LSb16RF64PIC_picH                                   0
    #define       bRF64PIC_picH                                13
    #define   MSK32RF64PIC_picH                                   0x1FFF0000

    #define     BA_RF64PIC_btmFldPic                           0x000B
    #define     B16RF64PIC_btmFldPic                           0x000A
    #define   LSb32RF64PIC_btmFldPic                              29
    #define   LSb16RF64PIC_btmFldPic                              13
    #define       bRF64PIC_btmFldPic                           1
    #define   MSK32RF64PIC_btmFldPic                              0x20000000

    #define     BA_RF64PIC_hint                                0x000B
    #define     B16RF64PIC_hint                                0x000A
    #define   LSb32RF64PIC_hint                                   30
    #define   LSb16RF64PIC_hint                                   14
    #define       bRF64PIC_hint                                2
    #define   MSK32RF64PIC_hint                                   0xC0000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_shiftLumaX                          0x000C
    #define     B16RF64PIC_shiftLumaX                          0x000C
    #define   LSb32RF64PIC_shiftLumaX                             0
    #define   LSb16RF64PIC_shiftLumaX                             0
    #define       bRF64PIC_shiftLumaX                          8
    #define   MSK32RF64PIC_shiftLumaX                             0x000000FF

    #define     BA_RF64PIC_shiftLumaY                          0x000D
    #define     B16RF64PIC_shiftLumaY                          0x000C
    #define   LSb32RF64PIC_shiftLumaY                             8
    #define   LSb16RF64PIC_shiftLumaY                             8
    #define       bRF64PIC_shiftLumaY                          8
    #define   MSK32RF64PIC_shiftLumaY                             0x0000FF00

    #define     BA_RF64PIC_shiftChromaX                        0x000E
    #define     B16RF64PIC_shiftChromaX                        0x000E
    #define   LSb32RF64PIC_shiftChromaX                           16
    #define   LSb16RF64PIC_shiftChromaX                           0
    #define       bRF64PIC_shiftChromaX                        8
    #define   MSK32RF64PIC_shiftChromaX                           0x00FF0000

    #define     BA_RF64PIC_shiftChromaY                        0x000F
    #define     B16RF64PIC_shiftChromaY                        0x000E
    #define   LSb32RF64PIC_shiftChromaY                           24
    #define   LSb16RF64PIC_shiftChromaY                           8
    #define       bRF64PIC_shiftChromaY                        8
    #define   MSK32RF64PIC_shiftChromaY                           0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_fracTapDiv2Y                        0x0010
    #define     B16RF64PIC_fracTapDiv2Y                        0x0010
    #define   LSb32RF64PIC_fracTapDiv2Y                           0
    #define   LSb16RF64PIC_fracTapDiv2Y                           0
    #define       bRF64PIC_fracTapDiv2Y                        4
    #define   MSK32RF64PIC_fracTapDiv2Y                           0x0000000F

    #define     BA_RF64PIC_fracTapDiv2C                        0x0010
    #define     B16RF64PIC_fracTapDiv2C                        0x0010
    #define   LSb32RF64PIC_fracTapDiv2C                           4
    #define   LSb16RF64PIC_fracTapDiv2C                           4
    #define       bRF64PIC_fracTapDiv2C                        4
    #define   MSK32RF64PIC_fracTapDiv2C                           0x000000F0

    #define     BA_RF64PIC_IPCM_QPU                            0x0011
    #define     B16RF64PIC_IPCM_QPU                            0x0010
    #define   LSb32RF64PIC_IPCM_QPU                               8
    #define   LSb16RF64PIC_IPCM_QPU                               8
    #define       bRF64PIC_IPCM_QPU                            6
    #define   MSK32RF64PIC_IPCM_QPU                               0x00003F00

    #define     BA_RF64PIC_IPCM_QPV                            0x0011
    #define     B16RF64PIC_IPCM_QPV                            0x0010
    #define   LSb32RF64PIC_IPCM_QPV                               14
    #define   LSb16RF64PIC_IPCM_QPV                               14
    #define       bRF64PIC_IPCM_QPV                            6
    #define   MSK32RF64PIC_IPCM_QPV                               0x000FC000

    #define     BA_RF64PIC_RSVD12                              0x0012
    #define     B16RF64PIC_RSVD12                              0x0012
    #define   LSb32RF64PIC_RSVD12                                 20
    #define   LSb16RF64PIC_RSVD12                                 4
    #define       bRF64PIC_RSVD12                              12
    #define   MSK32RF64PIC_RSVD12                                 0xFFF00000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_PQUANT                              0x0014
    #define     B16RF64PIC_PQUANT                              0x0014
    #define   LSb32RF64PIC_PQUANT                                 0
    #define   LSb16RF64PIC_PQUANT                                 0
    #define       bRF64PIC_PQUANT                              5
    #define   MSK32RF64PIC_PQUANT                                 0x0000001F

    #define     BA_RF64PIC_FRFD                                0x0014
    #define     B16RF64PIC_FRFD                                0x0014
    #define   LSb32RF64PIC_FRFD                                   5
    #define   LSb16RF64PIC_FRFD                                   5
    #define       bRF64PIC_FRFD                                2
    #define   MSK32RF64PIC_FRFD                                   0x00000060

    #define     BA_RF64PIC_BRFD                                0x0014
    #define     B16RF64PIC_BRFD                                0x0014
    #define   LSb32RF64PIC_BRFD                                   7
    #define   LSb16RF64PIC_BRFD                                   7
    #define       bRF64PIC_BRFD                                2
    #define   MSK32RF64PIC_BRFD                                   0x00000180

    #define     BA_RF64PIC_secondFld                           0x0015
    #define     B16RF64PIC_secondFld                           0x0014
    #define   LSb32RF64PIC_secondFld                              9
    #define   LSb16RF64PIC_secondFld                              9
    #define       bRF64PIC_secondFld                           1
    #define   MSK32RF64PIC_secondFld                              0x00000200

    #define     BA_RF64PIC_mvRange                             0x0015
    #define     B16RF64PIC_mvRange                             0x0014
    #define   LSb32RF64PIC_mvRange                                10
    #define   LSb16RF64PIC_mvRange                                10
    #define       bRF64PIC_mvRange                             2
    #define   MSK32RF64PIC_mvRange                                0x00000C00

    #define     BA_RF64PIC_hybridMvThres                       0x0015
    #define     B16RF64PIC_hybridMvThres                       0x0014
    #define   LSb32RF64PIC_hybridMvThres                          12
    #define   LSb16RF64PIC_hybridMvThres                          12
    #define       bRF64PIC_hybridMvThres                       1
    #define   MSK32RF64PIC_hybridMvThres                          0x00001000

    #define     BA_RF64PIC_firstMbIntra                        0x0015
    #define     B16RF64PIC_firstMbIntra                        0x0014
    #define   LSb32RF64PIC_firstMbIntra                           13
    #define   LSb16RF64PIC_firstMbIntra                           13
    #define       bRF64PIC_firstMbIntra                        1
    #define   MSK32RF64PIC_firstMbIntra                           0x00002000

    #define     BA_RF64PIC_halfPixel                           0x0015
    #define     B16RF64PIC_halfPixel                           0x0014
    #define   LSb32RF64PIC_halfPixel                              14
    #define   LSb16RF64PIC_halfPixel                              14
    #define       bRF64PIC_halfPixel                           1
    #define   MSK32RF64PIC_halfPixel                              0x00004000

    #define     BA_RF64PIC_forwRefInterlace                    0x0015
    #define     B16RF64PIC_forwRefInterlace                    0x0014
    #define   LSb32RF64PIC_forwRefInterlace                       15
    #define   LSb16RF64PIC_forwRefInterlace                       15
    #define       bRF64PIC_forwRefInterlace                    1
    #define   MSK32RF64PIC_forwRefInterlace                       0x00008000

    #define     BA_RF64PIC_backRefInterlace                    0x0016
    #define     B16RF64PIC_backRefInterlace                    0x0016
    #define   LSb32RF64PIC_backRefInterlace                       16
    #define   LSb16RF64PIC_backRefInterlace                       0
    #define       bRF64PIC_backRefInterlace                    1
    #define   MSK32RF64PIC_backRefInterlace                       0x00010000

    #define     BA_RF64PIC_FrmTransACSet                       0x0016
    #define     B16RF64PIC_FrmTransACSet                       0x0016
    #define   LSb32RF64PIC_FrmTransACSet                          17
    #define   LSb16RF64PIC_FrmTransACSet                          1
    #define       bRF64PIC_FrmTransACSet                       2
    #define   MSK32RF64PIC_FrmTransACSet                          0x00060000

    #define     BA_RF64PIC_FrmTransACSet2                      0x0016
    #define     B16RF64PIC_FrmTransACSet2                      0x0016
    #define   LSb32RF64PIC_FrmTransACSet2                         19
    #define   LSb16RF64PIC_FrmTransACSet2                         3
    #define       bRF64PIC_FrmTransACSet2                      2
    #define   MSK32RF64PIC_FrmTransACSet2                         0x00180000

    #define     BA_RF64PIC_PQIndexGT8                          0x0016
    #define     B16RF64PIC_PQIndexGT8                          0x0016
    #define   LSb32RF64PIC_PQIndexGT8                             21
    #define   LSb16RF64PIC_PQIndexGT8                             5
    #define       bRF64PIC_PQIndexGT8                          1
    #define   MSK32RF64PIC_PQIndexGT8                             0x00200000

    #define     BA_RF64PIC_EscapeTBL                           0x0016
    #define     B16RF64PIC_EscapeTBL                           0x0016
    #define   LSb32RF64PIC_EscapeTBL                              22
    #define   LSb16RF64PIC_EscapeTBL                              6
    #define       bRF64PIC_EscapeTBL                           1
    #define   MSK32RF64PIC_EscapeTBL                              0x00400000

    #define     BA_RF64PIC_format1                             0x0016
    #define     B16RF64PIC_format1                             0x0016
    #define   LSb32RF64PIC_format1                                23
    #define   LSb16RF64PIC_format1                                7
    #define       bRF64PIC_format1                             4
    #define   MSK32RF64PIC_format1                                0x07800000
    #define        RF64PIC_format1_RV9                                      0x0
    #define        RF64PIC_format1_RV8                                      0x1
    #define        RF64PIC_format1_vp8                                      0x2
    #define        RF64PIC_format1_jpeg                                     0x3

    #define     BA_RF64PIC_noReorder                           0x0017
    #define     B16RF64PIC_noReorder                           0x0016
    #define   LSb32RF64PIC_noReorder                              27
    #define   LSb16RF64PIC_noReorder                              11
    #define       bRF64PIC_noReorder                           1
    #define   MSK32RF64PIC_noReorder                              0x08000000

    #define     BA_RF64PIC_iplusModeOn                         0x0017
    #define     B16RF64PIC_iplusModeOn                         0x0016
    #define   LSb32RF64PIC_iplusModeOn                            28
    #define   LSb16RF64PIC_iplusModeOn                            12
    #define       bRF64PIC_iplusModeOn                         1
    #define   MSK32RF64PIC_iplusModeOn                            0x10000000

    #define     BA_RF64PIC_RSVD3                               0x0017
    #define     B16RF64PIC_RSVD3                               0x0016
    #define   LSb32RF64PIC_RSVD3                                  29
    #define   LSb16RF64PIC_RSVD3                                  13
    #define       bRF64PIC_RSVD3                               3
    #define   MSK32RF64PIC_RSVD3                                  0xE0000000
    ///////////////////////////////////////////////////////////
    #define     RA_RF64PIC_RSVD                                0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_RF64PIC_rIDX2BID                            0x0040
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64PIC {
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_format(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32RF64PIC_format(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16RF64PIC_format(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16RF64PIC_format(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32RF64PIC_cabac(r32)                          _BFGET_(r32, 3, 3)
    #define   SET32RF64PIC_cabac(r32,v)                        _BFSET_(r32, 3, 3,v)
    #define   GET16RF64PIC_cabac(r16)                          _BFGET_(r16, 3, 3)
    #define   SET16RF64PIC_cabac(r16,v)                        _BFSET_(r16, 3, 3,v)

    #define   GET32RF64PIC_picType(r32)                        _BFGET_(r32, 5, 4)
    #define   SET32RF64PIC_picType(r32,v)                      _BFSET_(r32, 5, 4,v)
    #define   GET16RF64PIC_picType(r16)                        _BFGET_(r16, 5, 4)
    #define   SET16RF64PIC_picType(r16,v)                      _BFSET_(r16, 5, 4,v)

    #define   GET32RF64PIC_maxL0(r32)                          _BFGET_(r32,10, 6)
    #define   SET32RF64PIC_maxL0(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16RF64PIC_maxL0(r16)                          _BFGET_(r16,10, 6)
    #define   SET16RF64PIC_maxL0(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32RF64PIC_maxL1(r32)                          _BFGET_(r32,15,11)
    #define   SET32RF64PIC_maxL1(r32,v)                        _BFSET_(r32,15,11,v)
    #define   GET16RF64PIC_maxL1(r16)                          _BFGET_(r16,15,11)
    #define   SET16RF64PIC_maxL1(r16,v)                        _BFSET_(r16,15,11,v)

    #define   GET32RF64PIC_MbaffPic(r32)                       _BFGET_(r32,16,16)
    #define   SET32RF64PIC_MbaffPic(r32,v)                     _BFSET_(r32,16,16,v)
    #define   GET16RF64PIC_MbaffPic(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16RF64PIC_MbaffPic(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define   GET32RF64PIC_fieldPic(r32)                       _BFGET_(r32,17,17)
    #define   SET32RF64PIC_fieldPic(r32,v)                     _BFSET_(r32,17,17,v)
    #define   GET16RF64PIC_fieldPic(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16RF64PIC_fieldPic(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32RF64PIC_spatialPred(r32)                    _BFGET_(r32,18,18)
    #define   SET32RF64PIC_spatialPred(r32,v)                  _BFSET_(r32,18,18,v)
    #define   GET16RF64PIC_spatialPred(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16RF64PIC_spatialPred(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32RF64PIC_colPicMbaff(r32)                    _BFGET_(r32,19,19)
    #define   SET32RF64PIC_colPicMbaff(r32,v)                  _BFSET_(r32,19,19,v)
    #define   GET16RF64PIC_colPicMbaff(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16RF64PIC_colPicMbaff(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32RF64PIC_colPicField(r32)                    _BFGET_(r32,20,20)
    #define   SET32RF64PIC_colPicField(r32,v)                  _BFSET_(r32,20,20,v)
    #define   GET16RF64PIC_colPicField(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16RF64PIC_colPicField(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32RF64PIC_colPicST(r32)                       _BFGET_(r32,21,21)
    #define   SET32RF64PIC_colPicST(r32,v)                     _BFSET_(r32,21,21,v)
    #define   GET16RF64PIC_colPicST(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16RF64PIC_colPicST(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32RF64PIC_AC0Offset(r32)                      _BFGET_(r32,26,22)
    #define   SET32RF64PIC_AC0Offset(r32,v)                    _BFSET_(r32,26,22,v)
    #define   GET16RF64PIC_AC0Offset(r16)                      _BFGET_(r16,10, 6)
    #define   SET16RF64PIC_AC0Offset(r16,v)                    _BFSET_(r16,10, 6,v)

    #define   GET32RF64PIC_BetaOffset(r32)                     _BFGET_(r32,31,27)
    #define   SET32RF64PIC_BetaOffset(r32,v)                   _BFSET_(r32,31,27,v)
    #define   GET16RF64PIC_BetaOffset(r16)                     _BFGET_(r16,15,11)
    #define   SET16RF64PIC_BetaOffset(r16,v)                   _BFSET_(r16,15,11,v)

            UNSG32 u_format                                    :  3;
            UNSG32 u_cabac                                     :  1;
            UNSG32 u_picType                                   :  2;
            UNSG32 u_maxL0                                     :  5;
            UNSG32 u_maxL1                                     :  5;
            UNSG32 u_MbaffPic                                  :  1;
            UNSG32 u_fieldPic                                  :  1;
            UNSG32 u_spatialPred                               :  1;
            UNSG32 u_colPicMbaff                               :  1;
            UNSG32 u_colPicField                               :  1;
            UNSG32 u_colPicST                                  :  1;
            UNSG32 s_AC0Offset                                 :  5;
            UNSG32 s_BetaOffset                                :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_dqAcLimit(r32)                      _BFGET_(r32,15, 0)
    #define   SET32RF64PIC_dqAcLimit(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16RF64PIC_dqAcLimit(r16)                      _BFGET_(r16,15, 0)
    #define   SET16RF64PIC_dqAcLimit(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32RF64PIC_dqDcLimit(r32)                      _BFGET_(r32,29,16)
    #define   SET32RF64PIC_dqDcLimit(r32,v)                    _BFSET_(r32,29,16,v)
    #define   GET16RF64PIC_dqDcLimit(r16)                      _BFGET_(r16,13, 0)
    #define   SET16RF64PIC_dqDcLimit(r16,v)                    _BFSET_(r16,13, 0,v)

    #define   GET32RF64PIC_mismatch(r32)                       _BFGET_(r32,31,30)
    #define   SET32RF64PIC_mismatch(r32,v)                     _BFSET_(r32,31,30,v)
    #define   GET16RF64PIC_mismatch(r16)                       _BFGET_(r16,15,14)
    #define   SET16RF64PIC_mismatch(r16,v)                     _BFSET_(r16,15,14,v)

            UNSG32 u_dqAcLimit                                 : 16;
            UNSG32 u_dqDcLimit                                 : 14;
            UNSG32 u_mismatch                                  :  2;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_picW(r32)                           _BFGET_(r32,15, 0)
    #define   SET32RF64PIC_picW(r32,v)                         _BFSET_(r32,15, 0,v)
    #define   GET16RF64PIC_picW(r16)                           _BFGET_(r16,15, 0)
    #define   SET16RF64PIC_picW(r16,v)                         _BFSET_(r16,15, 0,v)

    #define   GET32RF64PIC_picH(r32)                           _BFGET_(r32,28,16)
    #define   SET32RF64PIC_picH(r32,v)                         _BFSET_(r32,28,16,v)
    #define   GET16RF64PIC_picH(r16)                           _BFGET_(r16,12, 0)
    #define   SET16RF64PIC_picH(r16,v)                         _BFSET_(r16,12, 0,v)

    #define   GET32RF64PIC_btmFldPic(r32)                      _BFGET_(r32,29,29)
    #define   SET32RF64PIC_btmFldPic(r32,v)                    _BFSET_(r32,29,29,v)
    #define   GET16RF64PIC_btmFldPic(r16)                      _BFGET_(r16,13,13)
    #define   SET16RF64PIC_btmFldPic(r16,v)                    _BFSET_(r16,13,13,v)

    #define   GET32RF64PIC_hint(r32)                           _BFGET_(r32,31,30)
    #define   SET32RF64PIC_hint(r32,v)                         _BFSET_(r32,31,30,v)
    #define   GET16RF64PIC_hint(r16)                           _BFGET_(r16,15,14)
    #define   SET16RF64PIC_hint(r16,v)                         _BFSET_(r16,15,14,v)

            UNSG32 u_picW                                      : 16;
            UNSG32 u_picH                                      : 13;
            UNSG32 u_btmFldPic                                 :  1;
            UNSG32 u_hint                                      :  2;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_shiftLumaX(r32)                     _BFGET_(r32, 7, 0)
    #define   SET32RF64PIC_shiftLumaX(r32,v)                   _BFSET_(r32, 7, 0,v)
    #define   GET16RF64PIC_shiftLumaX(r16)                     _BFGET_(r16, 7, 0)
    #define   SET16RF64PIC_shiftLumaX(r16,v)                   _BFSET_(r16, 7, 0,v)

    #define   GET32RF64PIC_shiftLumaY(r32)                     _BFGET_(r32,15, 8)
    #define   SET32RF64PIC_shiftLumaY(r32,v)                   _BFSET_(r32,15, 8,v)
    #define   GET16RF64PIC_shiftLumaY(r16)                     _BFGET_(r16,15, 8)
    #define   SET16RF64PIC_shiftLumaY(r16,v)                   _BFSET_(r16,15, 8,v)

    #define   GET32RF64PIC_shiftChromaX(r32)                   _BFGET_(r32,23,16)
    #define   SET32RF64PIC_shiftChromaX(r32,v)                 _BFSET_(r32,23,16,v)
    #define   GET16RF64PIC_shiftChromaX(r16)                   _BFGET_(r16, 7, 0)
    #define   SET16RF64PIC_shiftChromaX(r16,v)                 _BFSET_(r16, 7, 0,v)

    #define   GET32RF64PIC_shiftChromaY(r32)                   _BFGET_(r32,31,24)
    #define   SET32RF64PIC_shiftChromaY(r32,v)                 _BFSET_(r32,31,24,v)
    #define   GET16RF64PIC_shiftChromaY(r16)                   _BFGET_(r16,15, 8)
    #define   SET16RF64PIC_shiftChromaY(r16,v)                 _BFSET_(r16,15, 8,v)

            UNSG32 u_shiftLumaX                                :  8;
            UNSG32 u_shiftLumaY                                :  8;
            UNSG32 u_shiftChromaX                              :  8;
            UNSG32 u_shiftChromaY                              :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_fracTapDiv2Y(r32)                   _BFGET_(r32, 3, 0)
    #define   SET32RF64PIC_fracTapDiv2Y(r32,v)                 _BFSET_(r32, 3, 0,v)
    #define   GET16RF64PIC_fracTapDiv2Y(r16)                   _BFGET_(r16, 3, 0)
    #define   SET16RF64PIC_fracTapDiv2Y(r16,v)                 _BFSET_(r16, 3, 0,v)

    #define   GET32RF64PIC_fracTapDiv2C(r32)                   _BFGET_(r32, 7, 4)
    #define   SET32RF64PIC_fracTapDiv2C(r32,v)                 _BFSET_(r32, 7, 4,v)
    #define   GET16RF64PIC_fracTapDiv2C(r16)                   _BFGET_(r16, 7, 4)
    #define   SET16RF64PIC_fracTapDiv2C(r16,v)                 _BFSET_(r16, 7, 4,v)

    #define   GET32RF64PIC_IPCM_QPU(r32)                       _BFGET_(r32,13, 8)
    #define   SET32RF64PIC_IPCM_QPU(r32,v)                     _BFSET_(r32,13, 8,v)
    #define   GET16RF64PIC_IPCM_QPU(r16)                       _BFGET_(r16,13, 8)
    #define   SET16RF64PIC_IPCM_QPU(r16,v)                     _BFSET_(r16,13, 8,v)

    #define   GET32RF64PIC_IPCM_QPV(r32)                       _BFGET_(r32,19,14)
    #define   SET32RF64PIC_IPCM_QPV(r32,v)                     _BFSET_(r32,19,14,v)

    #define   GET32RF64PIC_RSVD12(r32)                         _BFGET_(r32,31,20)
    #define   SET32RF64PIC_RSVD12(r32,v)                       _BFSET_(r32,31,20,v)
    #define   GET16RF64PIC_RSVD12(r16)                         _BFGET_(r16,15, 4)
    #define   SET16RF64PIC_RSVD12(r16,v)                       _BFSET_(r16,15, 4,v)

            UNSG32 u_fracTapDiv2Y                              :  4;
            UNSG32 u_fracTapDiv2C                              :  4;
            UNSG32 u_IPCM_QPU                                  :  6;
            UNSG32 u_IPCM_QPV                                  :  6;
            UNSG32 u_RSVD12                                    : 12;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_PQUANT(r32)                         _BFGET_(r32, 4, 0)
    #define   SET32RF64PIC_PQUANT(r32,v)                       _BFSET_(r32, 4, 0,v)
    #define   GET16RF64PIC_PQUANT(r16)                         _BFGET_(r16, 4, 0)
    #define   SET16RF64PIC_PQUANT(r16,v)                       _BFSET_(r16, 4, 0,v)

    #define   GET32RF64PIC_FRFD(r32)                           _BFGET_(r32, 6, 5)
    #define   SET32RF64PIC_FRFD(r32,v)                         _BFSET_(r32, 6, 5,v)
    #define   GET16RF64PIC_FRFD(r16)                           _BFGET_(r16, 6, 5)
    #define   SET16RF64PIC_FRFD(r16,v)                         _BFSET_(r16, 6, 5,v)

    #define   GET32RF64PIC_BRFD(r32)                           _BFGET_(r32, 8, 7)
    #define   SET32RF64PIC_BRFD(r32,v)                         _BFSET_(r32, 8, 7,v)
    #define   GET16RF64PIC_BRFD(r16)                           _BFGET_(r16, 8, 7)
    #define   SET16RF64PIC_BRFD(r16,v)                         _BFSET_(r16, 8, 7,v)

    #define   GET32RF64PIC_secondFld(r32)                      _BFGET_(r32, 9, 9)
    #define   SET32RF64PIC_secondFld(r32,v)                    _BFSET_(r32, 9, 9,v)
    #define   GET16RF64PIC_secondFld(r16)                      _BFGET_(r16, 9, 9)
    #define   SET16RF64PIC_secondFld(r16,v)                    _BFSET_(r16, 9, 9,v)

    #define   GET32RF64PIC_mvRange(r32)                        _BFGET_(r32,11,10)
    #define   SET32RF64PIC_mvRange(r32,v)                      _BFSET_(r32,11,10,v)
    #define   GET16RF64PIC_mvRange(r16)                        _BFGET_(r16,11,10)
    #define   SET16RF64PIC_mvRange(r16,v)                      _BFSET_(r16,11,10,v)

    #define   GET32RF64PIC_hybridMvThres(r32)                  _BFGET_(r32,12,12)
    #define   SET32RF64PIC_hybridMvThres(r32,v)                _BFSET_(r32,12,12,v)
    #define   GET16RF64PIC_hybridMvThres(r16)                  _BFGET_(r16,12,12)
    #define   SET16RF64PIC_hybridMvThres(r16,v)                _BFSET_(r16,12,12,v)

    #define   GET32RF64PIC_firstMbIntra(r32)                   _BFGET_(r32,13,13)
    #define   SET32RF64PIC_firstMbIntra(r32,v)                 _BFSET_(r32,13,13,v)
    #define   GET16RF64PIC_firstMbIntra(r16)                   _BFGET_(r16,13,13)
    #define   SET16RF64PIC_firstMbIntra(r16,v)                 _BFSET_(r16,13,13,v)

    #define   GET32RF64PIC_halfPixel(r32)                      _BFGET_(r32,14,14)
    #define   SET32RF64PIC_halfPixel(r32,v)                    _BFSET_(r32,14,14,v)
    #define   GET16RF64PIC_halfPixel(r16)                      _BFGET_(r16,14,14)
    #define   SET16RF64PIC_halfPixel(r16,v)                    _BFSET_(r16,14,14,v)

    #define   GET32RF64PIC_forwRefInterlace(r32)               _BFGET_(r32,15,15)
    #define   SET32RF64PIC_forwRefInterlace(r32,v)             _BFSET_(r32,15,15,v)
    #define   GET16RF64PIC_forwRefInterlace(r16)               _BFGET_(r16,15,15)
    #define   SET16RF64PIC_forwRefInterlace(r16,v)             _BFSET_(r16,15,15,v)

    #define   GET32RF64PIC_backRefInterlace(r32)               _BFGET_(r32,16,16)
    #define   SET32RF64PIC_backRefInterlace(r32,v)             _BFSET_(r32,16,16,v)
    #define   GET16RF64PIC_backRefInterlace(r16)               _BFGET_(r16, 0, 0)
    #define   SET16RF64PIC_backRefInterlace(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32RF64PIC_FrmTransACSet(r32)                  _BFGET_(r32,18,17)
    #define   SET32RF64PIC_FrmTransACSet(r32,v)                _BFSET_(r32,18,17,v)
    #define   GET16RF64PIC_FrmTransACSet(r16)                  _BFGET_(r16, 2, 1)
    #define   SET16RF64PIC_FrmTransACSet(r16,v)                _BFSET_(r16, 2, 1,v)

    #define   GET32RF64PIC_FrmTransACSet2(r32)                 _BFGET_(r32,20,19)
    #define   SET32RF64PIC_FrmTransACSet2(r32,v)               _BFSET_(r32,20,19,v)
    #define   GET16RF64PIC_FrmTransACSet2(r16)                 _BFGET_(r16, 4, 3)
    #define   SET16RF64PIC_FrmTransACSet2(r16,v)               _BFSET_(r16, 4, 3,v)

    #define   GET32RF64PIC_PQIndexGT8(r32)                     _BFGET_(r32,21,21)
    #define   SET32RF64PIC_PQIndexGT8(r32,v)                   _BFSET_(r32,21,21,v)
    #define   GET16RF64PIC_PQIndexGT8(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16RF64PIC_PQIndexGT8(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32RF64PIC_EscapeTBL(r32)                      _BFGET_(r32,22,22)
    #define   SET32RF64PIC_EscapeTBL(r32,v)                    _BFSET_(r32,22,22,v)
    #define   GET16RF64PIC_EscapeTBL(r16)                      _BFGET_(r16, 6, 6)
    #define   SET16RF64PIC_EscapeTBL(r16,v)                    _BFSET_(r16, 6, 6,v)

    #define   GET32RF64PIC_format1(r32)                        _BFGET_(r32,26,23)
    #define   SET32RF64PIC_format1(r32,v)                      _BFSET_(r32,26,23,v)
    #define   GET16RF64PIC_format1(r16)                        _BFGET_(r16,10, 7)
    #define   SET16RF64PIC_format1(r16,v)                      _BFSET_(r16,10, 7,v)

    #define   GET32RF64PIC_noReorder(r32)                      _BFGET_(r32,27,27)
    #define   SET32RF64PIC_noReorder(r32,v)                    _BFSET_(r32,27,27,v)
    #define   GET16RF64PIC_noReorder(r16)                      _BFGET_(r16,11,11)
    #define   SET16RF64PIC_noReorder(r16,v)                    _BFSET_(r16,11,11,v)

    #define   GET32RF64PIC_iplusModeOn(r32)                    _BFGET_(r32,28,28)
    #define   SET32RF64PIC_iplusModeOn(r32,v)                  _BFSET_(r32,28,28,v)
    #define   GET16RF64PIC_iplusModeOn(r16)                    _BFGET_(r16,12,12)
    #define   SET16RF64PIC_iplusModeOn(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32RF64PIC_RSVD3(r32)                          _BFGET_(r32,31,29)
    #define   SET32RF64PIC_RSVD3(r32,v)                        _BFSET_(r32,31,29,v)
    #define   GET16RF64PIC_RSVD3(r16)                          _BFGET_(r16,15,13)
    #define   SET16RF64PIC_RSVD3(r16,v)                        _BFSET_(r16,15,13,v)

            UNSG32 u_PQUANT                                    :  5;
            UNSG32 u_FRFD                                      :  2;
            UNSG32 u_BRFD                                      :  2;
            UNSG32 u_secondFld                                 :  1;
            UNSG32 u_mvRange                                   :  2;
            UNSG32 u_hybridMvThres                             :  1;
            UNSG32 u_firstMbIntra                              :  1;
            UNSG32 u_halfPixel                                 :  1;
            UNSG32 u_forwRefInterlace                          :  1;
            UNSG32 u_backRefInterlace                          :  1;
            UNSG32 u_FrmTransACSet                             :  2;
            UNSG32 u_FrmTransACSet2                            :  2;
            UNSG32 u_PQIndexGT8                                :  1;
            UNSG32 u_EscapeTBL                                 :  1;
            UNSG32 u_format1                                   :  4;
            UNSG32 u_noReorder                                 :  1;
            UNSG32 u_iplusModeOn                               :  1;
            UNSG32 u_RSVD3                                     :  3;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[5];
    ///////////////////////////////////////////////////////////
              SIE_IDX2BID                                      ie_rIDX2BID;
    ///////////////////////////////////////////////////////////
    } SIE_RF64PIC;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64PIC_drvrd(SIE_RF64PIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64PIC_drvwr(SIE_RF64PIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64PIC_reset(SIE_RF64PIC *p);
     SIGN32 RF64PIC_cmp  (SIE_RF64PIC *p, SIE_RF64PIC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64PIC_check(p,pie,pfx,hLOG) RF64PIC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64PIC_print(p,    pfx,hLOG) RF64PIC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64PIC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64MB                  biu              (4,4)
///     ###
///     * RF64 macroblock-level information for ALU64 extensions; padded to 64b
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               ###
///               * [0:15] casted from MBPROP[0:15] in decHal_mbLvl.sxw.txt
///               ###
///               %unsigned 3  BANK                      
///                                    ###
///                                    * Bank[0] indicates whether current MB is even or odd in an MB pair.
///                                    ###
///               %unsigned 1  Inter                     
///                                    ###
///                                    * Intra (0) or inter (1) macroblock, for DQmatrix selection in dQuant only
///                                    ###
///               %unsigned 1  lastMbRow                 
///                                    ###
///                                    * Current MB row is the last in slice; for VC-1 FOP
///                                    ###
///               %unsigned 1  lastMbRowPic              
///                                    ###
///                                    * Current MB row is the last in picture; for VC-1 FOP
///                                    ###
///               %unsigned 1  RSVD                      
///                                    ###
///                                    * reserved for bitfield alignment. Removed RF64MB.Mbaff.
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * - if current MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborA              
///                                    ###
///                                    * - if left MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborB              
///                                    ###
///                                    * - if upper MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborC              
///                                    ###
///                                    * - if upper-right MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborD              
///                                    ###
///                                    * - if upper-left MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  NeighborA                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if left MB is available
///                                    * From vScope to PCube:
///                                    * - if left MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborB                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper MB is available
///                                    * From vScope to PCube:
///                                    * - if upper MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborC                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-right MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-right MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborD                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-left MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-left MB is available as intra predictor
///                                    ###
///               %unsigned 8  FopAddr2                  
///                                    ###
///                                    * VC-1: base addr 2 for FOP output, 16-byte based
///                                    ###
///               %unsigned 8  FopAddr3                  
///                                    ###
///                                    * VC-1: base addr 3 for FOP output, 16-byte based
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 8  FopAddr                   
///                                    ###
///                                    * H.264: FOP output addr
///                                    * VC-1: base addr 0 for FOP output, 16-byte based
///                                    ###
///               %unsigned 8  FopAddr1                  
///                                    ###
///                                    * VC-1: base addr 1 for FOP output, 16-byte based
///                                    ###
///               %unsigned 8  MbX                       
///                                    ###
///                                    * Current MB index in X direction;
///                                    * from 0 up to ((picW+15)>>4) -1
///                                    ###
///               %unsigned 8  MbY                       
///                                    ###
///                                    * Current MB index in Y direction;
///                                    * from 0 up to ((picH+15)>>4) -1
///                                    * End of RF64MB
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64MB
#define h_RF64MB (){}

    #define     BA_RF64MB_BANK                                 0x0000
    #define     B16RF64MB_BANK                                 0x0000
    #define   LSb32RF64MB_BANK                                    0
    #define   LSb16RF64MB_BANK                                    0
    #define       bRF64MB_BANK                                 3
    #define   MSK32RF64MB_BANK                                    0x00000007

    #define     BA_RF64MB_Inter                                0x0000
    #define     B16RF64MB_Inter                                0x0000
    #define   LSb32RF64MB_Inter                                   3
    #define   LSb16RF64MB_Inter                                   3
    #define       bRF64MB_Inter                                1
    #define   MSK32RF64MB_Inter                                   0x00000008

    #define     BA_RF64MB_lastMbRow                            0x0000
    #define     B16RF64MB_lastMbRow                            0x0000
    #define   LSb32RF64MB_lastMbRow                               4
    #define   LSb16RF64MB_lastMbRow                               4
    #define       bRF64MB_lastMbRow                            1
    #define   MSK32RF64MB_lastMbRow                               0x00000010

    #define     BA_RF64MB_lastMbRowPic                         0x0000
    #define     B16RF64MB_lastMbRowPic                         0x0000
    #define   LSb32RF64MB_lastMbRowPic                            5
    #define   LSb16RF64MB_lastMbRowPic                            5
    #define       bRF64MB_lastMbRowPic                         1
    #define   MSK32RF64MB_lastMbRowPic                            0x00000020

    #define     BA_RF64MB_RSVD                                 0x0000
    #define     B16RF64MB_RSVD                                 0x0000
    #define   LSb32RF64MB_RSVD                                    6
    #define   LSb16RF64MB_RSVD                                    6
    #define       bRF64MB_RSVD                                 1
    #define   MSK32RF64MB_RSVD                                    0x00000040

    #define     BA_RF64MB_FLD                                  0x0000
    #define     B16RF64MB_FLD                                  0x0000
    #define   LSb32RF64MB_FLD                                     7
    #define   LSb16RF64MB_FLD                                     7
    #define       bRF64MB_FLD                                  1
    #define   MSK32RF64MB_FLD                                     0x00000080

    #define     BA_RF64MB_FLDNeighborA                         0x0001
    #define     B16RF64MB_FLDNeighborA                         0x0000
    #define   LSb32RF64MB_FLDNeighborA                            8
    #define   LSb16RF64MB_FLDNeighborA                            8
    #define       bRF64MB_FLDNeighborA                         1
    #define   MSK32RF64MB_FLDNeighborA                            0x00000100

    #define     BA_RF64MB_FLDNeighborB                         0x0001
    #define     B16RF64MB_FLDNeighborB                         0x0000
    #define   LSb32RF64MB_FLDNeighborB                            9
    #define   LSb16RF64MB_FLDNeighborB                            9
    #define       bRF64MB_FLDNeighborB                         1
    #define   MSK32RF64MB_FLDNeighborB                            0x00000200

    #define     BA_RF64MB_FLDNeighborC                         0x0001
    #define     B16RF64MB_FLDNeighborC                         0x0000
    #define   LSb32RF64MB_FLDNeighborC                            10
    #define   LSb16RF64MB_FLDNeighborC                            10
    #define       bRF64MB_FLDNeighborC                         1
    #define   MSK32RF64MB_FLDNeighborC                            0x00000400

    #define     BA_RF64MB_FLDNeighborD                         0x0001
    #define     B16RF64MB_FLDNeighborD                         0x0000
    #define   LSb32RF64MB_FLDNeighborD                            11
    #define   LSb16RF64MB_FLDNeighborD                            11
    #define       bRF64MB_FLDNeighborD                         1
    #define   MSK32RF64MB_FLDNeighborD                            0x00000800

    #define     BA_RF64MB_NeighborA                            0x0001
    #define     B16RF64MB_NeighborA                            0x0000
    #define   LSb32RF64MB_NeighborA                               12
    #define   LSb16RF64MB_NeighborA                               12
    #define       bRF64MB_NeighborA                            1
    #define   MSK32RF64MB_NeighborA                               0x00001000

    #define     BA_RF64MB_NeighborB                            0x0001
    #define     B16RF64MB_NeighborB                            0x0000
    #define   LSb32RF64MB_NeighborB                               13
    #define   LSb16RF64MB_NeighborB                               13
    #define       bRF64MB_NeighborB                            1
    #define   MSK32RF64MB_NeighborB                               0x00002000

    #define     BA_RF64MB_NeighborC                            0x0001
    #define     B16RF64MB_NeighborC                            0x0000
    #define   LSb32RF64MB_NeighborC                               14
    #define   LSb16RF64MB_NeighborC                               14
    #define       bRF64MB_NeighborC                            1
    #define   MSK32RF64MB_NeighborC                               0x00004000

    #define     BA_RF64MB_NeighborD                            0x0001
    #define     B16RF64MB_NeighborD                            0x0000
    #define   LSb32RF64MB_NeighborD                               15
    #define   LSb16RF64MB_NeighborD                               15
    #define       bRF64MB_NeighborD                            1
    #define   MSK32RF64MB_NeighborD                               0x00008000

    #define     BA_RF64MB_FopAddr2                             0x0002
    #define     B16RF64MB_FopAddr2                             0x0002
    #define   LSb32RF64MB_FopAddr2                                16
    #define   LSb16RF64MB_FopAddr2                                0
    #define       bRF64MB_FopAddr2                             8
    #define   MSK32RF64MB_FopAddr2                                0x00FF0000

    #define     BA_RF64MB_FopAddr3                             0x0003
    #define     B16RF64MB_FopAddr3                             0x0002
    #define   LSb32RF64MB_FopAddr3                                24
    #define   LSb16RF64MB_FopAddr3                                8
    #define       bRF64MB_FopAddr3                             8
    #define   MSK32RF64MB_FopAddr3                                0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64MB_FopAddr                              0x0004
    #define     B16RF64MB_FopAddr                              0x0004
    #define   LSb32RF64MB_FopAddr                                 0
    #define   LSb16RF64MB_FopAddr                                 0
    #define       bRF64MB_FopAddr                              8
    #define   MSK32RF64MB_FopAddr                                 0x000000FF

    #define     BA_RF64MB_FopAddr1                             0x0005
    #define     B16RF64MB_FopAddr1                             0x0004
    #define   LSb32RF64MB_FopAddr1                                8
    #define   LSb16RF64MB_FopAddr1                                8
    #define       bRF64MB_FopAddr1                             8
    #define   MSK32RF64MB_FopAddr1                                0x0000FF00

    #define     BA_RF64MB_MbX                                  0x0006
    #define     B16RF64MB_MbX                                  0x0006
    #define   LSb32RF64MB_MbX                                     16
    #define   LSb16RF64MB_MbX                                     0
    #define       bRF64MB_MbX                                  8
    #define   MSK32RF64MB_MbX                                     0x00FF0000

    #define     BA_RF64MB_MbY                                  0x0007
    #define     B16RF64MB_MbY                                  0x0006
    #define   LSb32RF64MB_MbY                                     24
    #define   LSb16RF64MB_MbY                                     8
    #define       bRF64MB_MbY                                  8
    #define   MSK32RF64MB_MbY                                     0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64MB {
    ///////////////////////////////////////////////////////////
    #define   GET32RF64MB_BANK(r32)                            _BFGET_(r32, 2, 0)
    #define   SET32RF64MB_BANK(r32,v)                          _BFSET_(r32, 2, 0,v)
    #define   GET16RF64MB_BANK(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16RF64MB_BANK(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32RF64MB_Inter(r32)                           _BFGET_(r32, 3, 3)
    #define   SET32RF64MB_Inter(r32,v)                         _BFSET_(r32, 3, 3,v)
    #define   GET16RF64MB_Inter(r16)                           _BFGET_(r16, 3, 3)
    #define   SET16RF64MB_Inter(r16,v)                         _BFSET_(r16, 3, 3,v)

    #define   GET32RF64MB_lastMbRow(r32)                       _BFGET_(r32, 4, 4)
    #define   SET32RF64MB_lastMbRow(r32,v)                     _BFSET_(r32, 4, 4,v)
    #define   GET16RF64MB_lastMbRow(r16)                       _BFGET_(r16, 4, 4)
    #define   SET16RF64MB_lastMbRow(r16,v)                     _BFSET_(r16, 4, 4,v)

    #define   GET32RF64MB_lastMbRowPic(r32)                    _BFGET_(r32, 5, 5)
    #define   SET32RF64MB_lastMbRowPic(r32,v)                  _BFSET_(r32, 5, 5,v)
    #define   GET16RF64MB_lastMbRowPic(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16RF64MB_lastMbRowPic(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32RF64MB_RSVD(r32)                            _BFGET_(r32, 6, 6)
    #define   SET32RF64MB_RSVD(r32,v)                          _BFSET_(r32, 6, 6,v)
    #define   GET16RF64MB_RSVD(r16)                            _BFGET_(r16, 6, 6)
    #define   SET16RF64MB_RSVD(r16,v)                          _BFSET_(r16, 6, 6,v)

    #define   GET32RF64MB_FLD(r32)                             _BFGET_(r32, 7, 7)
    #define   SET32RF64MB_FLD(r32,v)                           _BFSET_(r32, 7, 7,v)
    #define   GET16RF64MB_FLD(r16)                             _BFGET_(r16, 7, 7)
    #define   SET16RF64MB_FLD(r16,v)                           _BFSET_(r16, 7, 7,v)

    #define   GET32RF64MB_FLDNeighborA(r32)                    _BFGET_(r32, 8, 8)
    #define   SET32RF64MB_FLDNeighborA(r32,v)                  _BFSET_(r32, 8, 8,v)
    #define   GET16RF64MB_FLDNeighborA(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16RF64MB_FLDNeighborA(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32RF64MB_FLDNeighborB(r32)                    _BFGET_(r32, 9, 9)
    #define   SET32RF64MB_FLDNeighborB(r32,v)                  _BFSET_(r32, 9, 9,v)
    #define   GET16RF64MB_FLDNeighborB(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16RF64MB_FLDNeighborB(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32RF64MB_FLDNeighborC(r32)                    _BFGET_(r32,10,10)
    #define   SET32RF64MB_FLDNeighborC(r32,v)                  _BFSET_(r32,10,10,v)
    #define   GET16RF64MB_FLDNeighborC(r16)                    _BFGET_(r16,10,10)
    #define   SET16RF64MB_FLDNeighborC(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32RF64MB_FLDNeighborD(r32)                    _BFGET_(r32,11,11)
    #define   SET32RF64MB_FLDNeighborD(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16RF64MB_FLDNeighborD(r16)                    _BFGET_(r16,11,11)
    #define   SET16RF64MB_FLDNeighborD(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32RF64MB_NeighborA(r32)                       _BFGET_(r32,12,12)
    #define   SET32RF64MB_NeighborA(r32,v)                     _BFSET_(r32,12,12,v)
    #define   GET16RF64MB_NeighborA(r16)                       _BFGET_(r16,12,12)
    #define   SET16RF64MB_NeighborA(r16,v)                     _BFSET_(r16,12,12,v)

    #define   GET32RF64MB_NeighborB(r32)                       _BFGET_(r32,13,13)
    #define   SET32RF64MB_NeighborB(r32,v)                     _BFSET_(r32,13,13,v)
    #define   GET16RF64MB_NeighborB(r16)                       _BFGET_(r16,13,13)
    #define   SET16RF64MB_NeighborB(r16,v)                     _BFSET_(r16,13,13,v)

    #define   GET32RF64MB_NeighborC(r32)                       _BFGET_(r32,14,14)
    #define   SET32RF64MB_NeighborC(r32,v)                     _BFSET_(r32,14,14,v)
    #define   GET16RF64MB_NeighborC(r16)                       _BFGET_(r16,14,14)
    #define   SET16RF64MB_NeighborC(r16,v)                     _BFSET_(r16,14,14,v)

    #define   GET32RF64MB_NeighborD(r32)                       _BFGET_(r32,15,15)
    #define   SET32RF64MB_NeighborD(r32,v)                     _BFSET_(r32,15,15,v)
    #define   GET16RF64MB_NeighborD(r16)                       _BFGET_(r16,15,15)
    #define   SET16RF64MB_NeighborD(r16,v)                     _BFSET_(r16,15,15,v)

    #define   GET32RF64MB_FopAddr2(r32)                        _BFGET_(r32,23,16)
    #define   SET32RF64MB_FopAddr2(r32,v)                      _BFSET_(r32,23,16,v)
    #define   GET16RF64MB_FopAddr2(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16RF64MB_FopAddr2(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32RF64MB_FopAddr3(r32)                        _BFGET_(r32,31,24)
    #define   SET32RF64MB_FopAddr3(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16RF64MB_FopAddr3(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64MB_FopAddr3(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_BANK                                      :  3;
            UNSG32 u_Inter                                     :  1;
            UNSG32 u_lastMbRow                                 :  1;
            UNSG32 u_lastMbRowPic                              :  1;
            UNSG32 u_RSVD                                      :  1;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_FLDNeighborA                              :  1;
            UNSG32 u_FLDNeighborB                              :  1;
            UNSG32 u_FLDNeighborC                              :  1;
            UNSG32 u_FLDNeighborD                              :  1;
            UNSG32 u_NeighborA                                 :  1;
            UNSG32 u_NeighborB                                 :  1;
            UNSG32 u_NeighborC                                 :  1;
            UNSG32 u_NeighborD                                 :  1;
            UNSG32 u_FopAddr2                                  :  8;
            UNSG32 u_FopAddr3                                  :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64MB_FopAddr(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32RF64MB_FopAddr(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16RF64MB_FopAddr(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16RF64MB_FopAddr(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define   GET32RF64MB_FopAddr1(r32)                        _BFGET_(r32,15, 8)
    #define   SET32RF64MB_FopAddr1(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16RF64MB_FopAddr1(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64MB_FopAddr1(r16,v)                      _BFSET_(r16,15, 8,v)

    #define   GET32RF64MB_MbX(r32)                             _BFGET_(r32,23,16)
    #define   SET32RF64MB_MbX(r32,v)                           _BFSET_(r32,23,16,v)
    #define   GET16RF64MB_MbX(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16RF64MB_MbX(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32RF64MB_MbY(r32)                             _BFGET_(r32,31,24)
    #define   SET32RF64MB_MbY(r32,v)                           _BFSET_(r32,31,24,v)
    #define   GET16RF64MB_MbY(r16)                             _BFGET_(r16,15, 8)
    #define   SET16RF64MB_MbY(r16,v)                           _BFSET_(r16,15, 8,v)

            UNSG32 u_FopAddr                                   :  8;
            UNSG32 u_FopAddr1                                  :  8;
            UNSG32 u_MbX                                       :  8;
            UNSG32 u_MbY                                       :  8;
    ///////////////////////////////////////////////////////////
    } SIE_RF64MB;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64MB_drvrd(SIE_RF64MB *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64MB_drvwr(SIE_RF64MB *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64MB_reset(SIE_RF64MB *p);
     SIGN32 RF64MB_cmp  (SIE_RF64MB *p, SIE_RF64MB *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64MB_check(p,pie,pfx,hLOG) RF64MB_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64MB_print(p,    pfx,hLOG) RF64MB_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64MB
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64QP                  biu              (4,4)
///     ###
///     * QP for neighboring macroblocks; used by FOP only. Padded to 64b
///     * Same as {BLK,chroma,RSVD,QP,Qu,Qv} in MBPROP in decHal_mbLvl.sxw.txt
///     * Also added DC/ACstep_* for coefficient scaling for DC/AC prediction for MPEG-4/VC-1
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  DCstep_Y                  
///                                    ###
///                                    * VC-1: DCSTEP for coeff scaling in DC prediction (only 6 bits are used)
///                                    * MPEG-4: qstep luma coeff scaling in DC prediction
///                                    ###
///               %unsigned 8  ACstep_Y                  
///                                    ###
///                                    * VC-1: DCSTEP for coeff scaling in AC prediction (only 6 bits are used)
///                                    * MPEG-4: qstep luma coeff scaling in AC prediction
///                                    ###
///               %unsigned 8  DCstep_C                  
///                                    ###
///                                    * VC-1: not used
///                                    * MPEG-4: qstep chroma coeff scaling in DC prediction
///                                    ###
///               %unsigned 8  ACstep_C                  
///                                    ###
///                                    * VC-1: not used
///                                    * MPEG-4: qstep chroma coeff scaling in AC prediction
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 8  RSVD8                     
///               %unsigned 8  QPY                       
///                                    ###
///                                    * H.264: QP for Luma; 0~51 inclusive
///                                    * MPEG-4: QP_AC (used to determine if coeff scaling is required for AC prediction)
///                                    ###
///               %unsigned 8  QPU                       
///                                    ###
///                                    * H.264: QP fo Cb; 0~51 inclusive
///                                    ###
///               %unsigned 8  QPV                       
///                                    ###
///                                    * H.264: QP for Cr; 0~51 inclusive
///                                    * End of RF64QP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64QP
#define h_RF64QP (){}

    #define     BA_RF64QP_DCstep_Y                             0x0000
    #define     B16RF64QP_DCstep_Y                             0x0000
    #define   LSb32RF64QP_DCstep_Y                                0
    #define   LSb16RF64QP_DCstep_Y                                0
    #define       bRF64QP_DCstep_Y                             8
    #define   MSK32RF64QP_DCstep_Y                                0x000000FF

    #define     BA_RF64QP_ACstep_Y                             0x0001
    #define     B16RF64QP_ACstep_Y                             0x0000
    #define   LSb32RF64QP_ACstep_Y                                8
    #define   LSb16RF64QP_ACstep_Y                                8
    #define       bRF64QP_ACstep_Y                             8
    #define   MSK32RF64QP_ACstep_Y                                0x0000FF00

    #define     BA_RF64QP_DCstep_C                             0x0002
    #define     B16RF64QP_DCstep_C                             0x0002
    #define   LSb32RF64QP_DCstep_C                                16
    #define   LSb16RF64QP_DCstep_C                                0
    #define       bRF64QP_DCstep_C                             8
    #define   MSK32RF64QP_DCstep_C                                0x00FF0000

    #define     BA_RF64QP_ACstep_C                             0x0003
    #define     B16RF64QP_ACstep_C                             0x0002
    #define   LSb32RF64QP_ACstep_C                                24
    #define   LSb16RF64QP_ACstep_C                                8
    #define       bRF64QP_ACstep_C                             8
    #define   MSK32RF64QP_ACstep_C                                0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64QP_RSVD8                                0x0004
    #define     B16RF64QP_RSVD8                                0x0004
    #define   LSb32RF64QP_RSVD8                                   0
    #define   LSb16RF64QP_RSVD8                                   0
    #define       bRF64QP_RSVD8                                8
    #define   MSK32RF64QP_RSVD8                                   0x000000FF

    #define     BA_RF64QP_QPY                                  0x0005
    #define     B16RF64QP_QPY                                  0x0004
    #define   LSb32RF64QP_QPY                                     8
    #define   LSb16RF64QP_QPY                                     8
    #define       bRF64QP_QPY                                  8
    #define   MSK32RF64QP_QPY                                     0x0000FF00

    #define     BA_RF64QP_QPU                                  0x0006
    #define     B16RF64QP_QPU                                  0x0006
    #define   LSb32RF64QP_QPU                                     16
    #define   LSb16RF64QP_QPU                                     0
    #define       bRF64QP_QPU                                  8
    #define   MSK32RF64QP_QPU                                     0x00FF0000

    #define     BA_RF64QP_QPV                                  0x0007
    #define     B16RF64QP_QPV                                  0x0006
    #define   LSb32RF64QP_QPV                                     24
    #define   LSb16RF64QP_QPV                                     8
    #define       bRF64QP_QPV                                  8
    #define   MSK32RF64QP_QPV                                     0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64QP {
    ///////////////////////////////////////////////////////////
    #define   GET32RF64QP_DCstep_Y(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32RF64QP_DCstep_Y(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16RF64QP_DCstep_Y(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_DCstep_Y(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_ACstep_Y(r32)                        _BFGET_(r32,15, 8)
    #define   SET32RF64QP_ACstep_Y(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16RF64QP_ACstep_Y(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64QP_ACstep_Y(r16,v)                      _BFSET_(r16,15, 8,v)

    #define   GET32RF64QP_DCstep_C(r32)                        _BFGET_(r32,23,16)
    #define   SET32RF64QP_DCstep_C(r32,v)                      _BFSET_(r32,23,16,v)
    #define   GET16RF64QP_DCstep_C(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_DCstep_C(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_ACstep_C(r32)                        _BFGET_(r32,31,24)
    #define   SET32RF64QP_ACstep_C(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16RF64QP_ACstep_C(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64QP_ACstep_C(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_DCstep_Y                                  :  8;
            UNSG32 u_ACstep_Y                                  :  8;
            UNSG32 u_DCstep_C                                  :  8;
            UNSG32 u_ACstep_C                                  :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64QP_RSVD8(r32)                           _BFGET_(r32, 7, 0)
    #define   SET32RF64QP_RSVD8(r32,v)                         _BFSET_(r32, 7, 0,v)
    #define   GET16RF64QP_RSVD8(r16)                           _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_RSVD8(r16,v)                         _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_QPY(r32)                             _BFGET_(r32,15, 8)
    #define   SET32RF64QP_QPY(r32,v)                           _BFSET_(r32,15, 8,v)
    #define   GET16RF64QP_QPY(r16)                             _BFGET_(r16,15, 8)
    #define   SET16RF64QP_QPY(r16,v)                           _BFSET_(r16,15, 8,v)

    #define   GET32RF64QP_QPU(r32)                             _BFGET_(r32,23,16)
    #define   SET32RF64QP_QPU(r32,v)                           _BFSET_(r32,23,16,v)
    #define   GET16RF64QP_QPU(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_QPU(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_QPV(r32)                             _BFGET_(r32,31,24)
    #define   SET32RF64QP_QPV(r32,v)                           _BFSET_(r32,31,24,v)
    #define   GET16RF64QP_QPV(r16)                             _BFGET_(r16,15, 8)
    #define   SET16RF64QP_QPV(r16,v)                           _BFSET_(r16,15, 8,v)

            UNSG32 u_RSVD8                                     :  8;
            UNSG32 u_QPY                                       :  8;
            UNSG32 u_QPU                                       :  8;
            UNSG32 u_QPV                                       :  8;
    ///////////////////////////////////////////////////////////
    } SIE_RF64QP;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64QP_drvrd(SIE_RF64QP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64QP_drvwr(SIE_RF64QP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64QP_reset(SIE_RF64QP *p);
     SIGN32 RF64QP_cmp  (SIE_RF64QP *p, SIE_RF64QP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64QP_check(p,pie,pfx,hLOG) RF64QP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64QP_print(p,    pfx,hLOG) RF64QP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64QP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NLUTCTX                 biu              (4,4)
///     ###
///     * RF64 context for nLut
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:2047]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG      [31]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End NLUTCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NLUTCTX
#define h_NLUTCTX (){}

    #define     RA_NLUTCTX_MB                                  0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_NLUTCTX_RSVD                                0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_NLUTCTX_PIC                                 0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NLUTCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[31];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_NLUTCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 NLUTCTX_drvrd(SIE_NLUTCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NLUTCTX_drvwr(SIE_NLUTCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NLUTCTX_reset(SIE_NLUTCTX *p);
     SIGN32 NLUTCTX_cmp  (SIE_NLUTCTX *p, SIE_NLUTCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NLUTCTX_check(p,pie,pfx,hLOG) NLUTCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NLUTCTX_print(p,    pfx,hLOG) NLUTCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NLUTCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BITOPCTX                biu              (4,4)
///     ###
///     * Operator format for BitOp extension
///     * [0:3583]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 RSVD                 
///               $LUT64b              RSVD              REG      [56]
///                                    ###
///                                    * padding to 3583
///                                    * [3584:3711]
///                                    ###
///     @ 0x001C0                      (P)
///     # 0x001C0 CTX                  
///               $BITOPRF64           CTX               REG          
///                                    ###
///                                    * Four BitOp commands, selected by extension ID
///                                    * End BitOpCtx
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BITOPCTX
#define h_BITOPCTX (){}

    #define     RA_BITOPCTX_RSVD                               0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPCTX_CTX                                0x01C0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BITOPCTX {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[56];
    ///////////////////////////////////////////////////////////
              SIE_BITOPRF64                                    ie_CTX;
    ///////////////////////////////////////////////////////////
    } SIE_BITOPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 BITOPCTX_drvrd(SIE_BITOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BITOPCTX_drvwr(SIE_BITOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BITOPCTX_reset(SIE_BITOPCTX *p);
     SIGN32 BITOPCTX_cmp  (SIE_BITOPCTX *p, SIE_BITOPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BITOPCTX_check(p,pie,pfx,hLOG) BITOPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BITOPCTX_print(p,    pfx,hLOG) BITOPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BITOPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DQCTX                   biu              (4,4)
///     ###
///     * RF64 context for dQuant
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:191]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 QPX                  
///               $RF64QP              QPX               REG          
///                                    ###
///                                    * QP of current block
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 QPN                  
///               $RF64QP              QPN               REG          
///                                    ###
///                                    * QP of neighboring block
///                                    * Used for VC-1/MPEG-4 DC/AC prediction
///                                    * [192:2047]
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 RSVD                 
///               $LUT64b              RSVD              REG      [29]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End DQCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DQCTX
#define h_DQCTX (){}

    #define     RA_DQCTX_MB                                    0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_QPX                                   0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_QPN                                   0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_RSVD                                  0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_PIC                                   0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DQCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPX;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPN;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[29];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_DQCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 DQCTX_drvrd(SIE_DQCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DQCTX_drvwr(SIE_DQCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DQCTX_reset(SIE_DQCTX *p);
     SIGN32 DQCTX_cmp  (SIE_DQCTX *p, SIE_DQCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DQCTX_check(p,pie,pfx,hLOG) DQCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DQCTX_print(p,    pfx,hLOG) DQCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DQCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASPCTX                  biu              (4,4)
///     ###
///     * RF64 context for ASP
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:255]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG       [3]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 D33                  
///               $HCTX4x4             D33               REG          
///                                    ###
///                                    * Y(-1,-1)
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 B30                  
///               $HCTX4x4             B30               REG          
///                                    ###
///                                    * Y(0,-1) or U(0,-1) or DCU(0,-1)
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 B31                  
///               $HCTX4x4             B31               REG          
///                                    ###
///                                    * Y(1,-1) or V(0,-1) or DCV(0,-1)
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 B32                  
///               $HCTX4x4             B32               REG          
///                                    ###
///                                    * Y(2,-1) or U(1,-1)
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 B33                  
///               $HCTX4x4             B33               REG          
///                                    ###
///                                    * Y(3,-1) or V(1,-1) or DCY(0,-1)
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 C30                  
///               $HCTX4x4             C30               REG          
///                                    ###
///                                    * Y(4,-1)
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 A03                  
///               $HCTX4x4             A03               REG          
///                                    ###
///                                    * Y(-1,0)
///                                    ###
///     @ 0x00090                      (P)
///     # 0x00090 A12                  
///               $HCTX4x4             A12               REG          
///                                    ###
///                                    * U(-1,0) & V(-1,0)
///                                    ###
///     @ 0x000A0                      (P)
///     # 0x000A0 A13                  
///               $HCTX4x4             A13               REG          
///                                    ###
///                                    * Y(-1,1)
///                                    ###
///     @ 0x000B0                      (P)
///     # 0x000B0 A23                  
///               $HCTX4x4             A23               REG          
///                                    ###
///                                    * Y(-1,2)
///                                    ###
///     @ 0x000C0                      (P)
///     # 0x000C0 A30                  
///               $HCTX4x4             A30               REG          
///                                    ###
///                                    * DCU(-1,0) & DCV(-1,0)
///                                    ###
///     @ 0x000D0                      (P)
///     # 0x000D0 A31                  
///               $HCTX4x4             A31               REG          
///                                    ###
///                                    * DCI(-1,0) & DCY(-1,0)
///                                    ###
///     @ 0x000E0                      (P)
///     # 0x000E0 A32                  
///               $HCTX4x4             A32               REG          
///                                    ###
///                                    * U(-1,1) & V(-1,1)
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 A33                  
///               $HCTX4x4             A33               REG          
///                                    ###
///                                    * Y(-1,3)
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End ASPCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASPCTX
#define h_ASPCTX (){}

    #define     RA_ASPCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_RSVD                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_D33                                  0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B30                                  0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B31                                  0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B32                                  0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B33                                  0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_C30                                  0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A03                                  0x0080
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A12                                  0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A13                                  0x00A0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A23                                  0x00B0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A30                                  0x00C0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A31                                  0x00D0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A32                                  0x00E0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A33                                  0x00F0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASPCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[3];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_D33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_C30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A03;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A12;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A13;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A23;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A33;
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_ASPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ASPCTX_drvrd(SIE_ASPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASPCTX_drvwr(SIE_ASPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASPCTX_reset(SIE_ASPCTX *p);
     SIGN32 ASPCTX_cmp  (SIE_ASPCTX *p, SIE_ASPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASPCTX_check(p,pie,pfx,hLOG) ASPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASPCTX_print(p,    pfx,hLOG) ASPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTX_ARR                biu              (4,4)
///     ###
///     * 16 * HCTX4x4 for ASP
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 CTX                  
///               $HCTX4x4             CTX               REG      [16]
///                                    ###
///                                    * HCTX4x4
///                                    * End HCTX_ARR
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     256B, bits:    2048b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTX_ARR
#define h_HCTX_ARR (){}

    #define     RA_HCTX_ARR_CTX                                0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTX_ARR {
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_CTX[16];
    ///////////////////////////////////////////////////////////
    } SIE_HCTX_ARR;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTX_ARR_drvrd(SIE_HCTX_ARR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTX_ARR_drvwr(SIE_HCTX_ARR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTX_ARR_reset(SIE_HCTX_ARR *p);
     SIGN32 HCTX_ARR_cmp  (SIE_HCTX_ARR *p, SIE_HCTX_ARR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTX_ARR_check(p,pie,pfx,hLOG) HCTX_ARR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTX_ARR_print(p,    pfx,hLOG) HCTX_ARR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTX_ARR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASECTX                  biu              (4,4)
///     ###
///     * RF64 context for ASE
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:255]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG       [3]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 D33                  
///               $HCTX4x4             D33               REG          
///                                    ###
///                                    * Y(-1,-1)
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 B30                  
///               $HCTX4x4             B30               REG          
///                                    ###
///                                    * Y(0,-1) or U(0,-1) or DCU(0,-1)
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 B31                  
///               $HCTX4x4             B31               REG          
///                                    ###
///                                    * Y(1,-1) or V(0,-1) or DCV(0,-1)
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 B32                  
///               $HCTX4x4             B32               REG          
///                                    ###
///                                    * Y(2,-1) or U(1,-1)
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 B33                  
///               $HCTX4x4             B33               REG          
///                                    ###
///                                    * Y(3,-1) or V(1,-1) or DCY(0,-1)
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 C30                  
///               $HCTX4x4             C30               REG          
///                                    ###
///                                    * Y(4,-1)
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 A03                  
///               $HCTX4x4             A03               REG          
///                                    ###
///                                    * Y(-1,0)
///                                    ###
///     @ 0x00090                      (P)
///     # 0x00090 A12                  
///               $HCTX4x4             A12               REG          
///                                    ###
///                                    * U(-1,0) & V(-1,0)
///                                    ###
///     @ 0x000A0                      (P)
///     # 0x000A0 A13                  
///               $HCTX4x4             A13               REG          
///                                    ###
///                                    * Y(-1,1)
///                                    ###
///     @ 0x000B0                      (P)
///     # 0x000B0 A23                  
///               $HCTX4x4             A23               REG          
///                                    ###
///                                    * Y(-1,2)
///                                    ###
///     @ 0x000C0                      (P)
///     # 0x000C0 A30                  
///               $HCTX4x4             A30               REG          
///                                    ###
///                                    * DCU(-1,0) & DCV(-1,0)
///                                    ###
///     @ 0x000D0                      (P)
///     # 0x000D0 A31                  
///               $HCTX4x4             A31               REG          
///                                    ###
///                                    * DCI(-1,0) & DCY(-1,0)
///                                    ###
///     @ 0x000E0                      (P)
///     # 0x000E0 A32                  
///               $HCTX4x4             A32               REG          
///                                    ###
///                                    * U(-1,1) & V(-1,1)
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 A33                  
///               $HCTX4x4             A33               REG          
///                                    ###
///                                    * Y(-1,3)
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End ASECTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASECTX
#define h_ASECTX (){}

    #define     RA_ASECTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_RSVD                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_D33                                  0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B30                                  0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B31                                  0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B32                                  0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B33                                  0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_C30                                  0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A03                                  0x0080
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A12                                  0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A13                                  0x00A0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A23                                  0x00B0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A30                                  0x00C0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A31                                  0x00D0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A32                                  0x00E0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A33                                  0x00F0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASECTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[3];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_D33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_C30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A03;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A12;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A13;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A23;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A33;
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_ASECTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ASECTX_drvrd(SIE_ASECTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASECTX_drvwr(SIE_ASECTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASECTX_reset(SIE_ASECTX *p);
     SIGN32 ASECTX_cmp  (SIE_ASECTX *p, SIE_ASECTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASECTX_check(p,pie,pfx,hLOG) ASECTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASECTX_print(p,    pfx,hLOG) ASECTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASECTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASE_ND_CTX              biu              (4,4)
///     ###
///     * RF64 context for ASE (to store Neighbor D in MBAFF mode)
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 RSVD                 
///               $LUT64b              RSVD              REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:191]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 A03m                 
///               $HCTX4x4             A03m              REG          
///                                    ###
///                                    * Neighbor D for when locating at A03 in MBAFF mode
///                                    * [192:255]
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 RSVD1                
///               $LUT64b              RSVD1             REG      [32]
///                                    ###
///                                    * [2240:2367]
///                                    ###
///     @ 0x00118                      (P)
///     # 0x00118 A13m                 
///               $HCTX4x4             A13m              REG          
///                                    ###
///                                    * Neighbor D for when locating at A13 in MBAFF mode
///                                    * [2368:2495]
///                                    ###
///     @ 0x00128                      (P)
///     # 0x00128 A23m                 
///               $HCTX4x4             A23m              REG          
///                                    ###
///                                    * Neighbor D for when locating at A23 in MBAFF mode
///                                    * [2496:4097]
///                                    ###
///     @ 0x00138                      (P)
///     # 0x00138 RSVD2                
///               $LUT64b              RSVD2             REG      [25]
///                                    ###
///                                    * Padding to the end
///                                    * End ASE_ND_CTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASE_ND_CTX
#define h_ASE_ND_CTX (){}

    #define     RA_ASE_ND_CTX_RSVD                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_A03m                             0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_RSVD1                            0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_A13m                             0x0118
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_A23m                             0x0128
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_RSVD2                            0x0138
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASE_ND_CTX {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A03m;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD1[32];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A13m;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A23m;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD2[25];
    ///////////////////////////////////////////////////////////
    } SIE_ASE_ND_CTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ASE_ND_CTX_drvrd(SIE_ASE_ND_CTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASE_ND_CTX_drvwr(SIE_ASE_ND_CTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASE_ND_CTX_reset(SIE_ASE_ND_CTX *p);
     SIGN32 ASE_ND_CTX_cmp  (SIE_ASE_ND_CTX *p, SIE_ASE_ND_CTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASE_ND_CTX_check(p,pie,pfx,hLOG) ASE_ND_CTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASE_ND_CTX_print(p,    pfx,hLOG) ASE_ND_CTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASE_ND_CTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPCTX                  biu              (4,4)
///     ###
///     * RF64 context for FOP
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 QPX0                 
///               $RF64QP              QPX0              REG          
///                                    ###
///                                    * QP of current MB
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 QPX1                 
///               $RF64QP              QPX1              REG          
///                                    ###
///                                    * QP of current MB
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 QPA0                 
///               $RF64QP              QPA0              REG          
///                                    ###
///                                    * QP of even MB of left MB pair
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 QPA1                 
///               $RF64QP              QPA1              REG          
///                                    ###
///                                    * QP of odd MB of left MB pair
///                                    ###
///     @ 0x00028                      (P)
///     # 0x00028 QPB0                 
///               $RF64QP              QPB0              REG          
///                                    ###
///                                    * QP of even MB of top MB pair
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 QPB1                 
///               $RF64QP              QPB1              REG          
///                                    ###
///                                    * QP of odd MB of top MB pair
///                                    * [448:831]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 BlkX                 
///               $HCTX4x4             BlkX              REG          
///                                    ###
///                                    * Context for current block
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 BlkA                 
///               $HCTX4x4             BlkA              REG          
///                                    ###
///                                    * Context for left neighbor
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 BlkB                 
///               $HCTX4x4             BlkB              REG          
///                                    ###
///                                    * Context for top block
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 BlkC                 
///               $HCTX4x4             BlkC              REG          
///                                    ###
///                                    * Block context used in VC-1 main profile P exception 2.
///                                    * [960:2047]
///                                    ###
///     @ 0x00078                      (P)
///     # 0x00078 RSVD                 
///               $LUT64b              RSVD              REG      [17]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End RF64CTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPCTX
#define h_FOPCTX (){}

    #define     RA_FOPCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPX0                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPX1                                 0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPA0                                 0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPA1                                 0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPB0                                 0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPB1                                 0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkX                                 0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkA                                 0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkB                                 0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkC                                 0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_RSVD                                 0x0078
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPX0;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPX1;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPA0;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPA1;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPB0;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPB1;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkX;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkA;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkB;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkC;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[17];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_FOPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPCTX_drvrd(SIE_FOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPCTX_drvwr(SIE_FOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPCTX_reset(SIE_FOPCTX *p);
     SIGN32 FOPCTX_cmp  (SIE_FOPCTX *p, SIE_FOPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPCTX_check(p,pie,pfx,hLOG) FOPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPCTX_print(p,    pfx,hLOG) FOPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE pmvScale                biu              (4,4)
///     ###
///     * Scaling factors for PMV calculation (for AVS)
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 scaleA                    
///                                    ###
///                                    * Scaling factor for MVs of block A
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 scaleB                    
///                                    ###
///                                    * Scaling factor for MVs of block B
///                                    * [64:127]
///                                    ###
///     @ 0x00008                      (P)
///               %unsigned 32 scaleC                    
///                                    ###
///                                    * Scaling factor for MVs of block C
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 32 scaleD                    
///                                    ###
///                                    * Scaling factor for MVs of block D
///                                    * End pmvScale
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_pmvScale
#define h_pmvScale (){}

    #define     BA_pmvScale_scaleA                             0x0000
    #define     B16pmvScale_scaleA                             0x0000
    #define   LSb32pmvScale_scaleA                                0
    #define   LSb16pmvScale_scaleA                                0
    #define       bpmvScale_scaleA                             32
    #define   MSK32pmvScale_scaleA                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_pmvScale_scaleB                             0x0004
    #define     B16pmvScale_scaleB                             0x0004
    #define   LSb32pmvScale_scaleB                                0
    #define   LSb16pmvScale_scaleB                                0
    #define       bpmvScale_scaleB                             32
    #define   MSK32pmvScale_scaleB                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_pmvScale_scaleC                             0x0008
    #define     B16pmvScale_scaleC                             0x0008
    #define   LSb32pmvScale_scaleC                                0
    #define   LSb16pmvScale_scaleC                                0
    #define       bpmvScale_scaleC                             32
    #define   MSK32pmvScale_scaleC                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_pmvScale_scaleD                             0x000C
    #define     B16pmvScale_scaleD                             0x000C
    #define   LSb32pmvScale_scaleD                                0
    #define   LSb16pmvScale_scaleD                                0
    #define       bpmvScale_scaleD                             32
    #define   MSK32pmvScale_scaleD                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_pmvScale {
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleA(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleA(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleA                                    : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleB(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleB(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleB                                    : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleC(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleC(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleC                                    : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleD(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleD(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleD                                    : 32;
    ///////////////////////////////////////////////////////////
    } SIE_pmvScale;

    ///////////////////////////////////////////////////////////
     SIGN32 pmvScale_drvrd(SIE_pmvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 pmvScale_drvwr(SIE_pmvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void pmvScale_reset(SIE_pmvScale *p);
     SIGN32 pmvScale_cmp  (SIE_pmvScale *p, SIE_pmvScale *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define pmvScale_check(p,pie,pfx,hLOG) pmvScale_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define pmvScale_print(p,    pfx,hLOG) pmvScale_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: pmvScale
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PMVCTX                  biu              (4,4)
///     ###
///     * RF64 context for PMV
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD0                
///               $LUT64b              RSVD0             REG       [6]
///                                    ###
///                                    * padding to align block-level context
///                                    * [448:1087]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 BlkX                 
///               $FCTX                BlkX              REG          
///                                    ###
///                                    * Context for current block
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 ChromaMV             
///               $MV                  ChromaMV          REG          
///                                    ###
///                                    * MPEG-4 chroma MV
///                                    ###
///     @ 0x00044                      (P)
///               %unsigned 32 RSVDX                     
///                                    ###
///                                    * padding to 128-bit
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 BlkA                 
///               $FCTX                BlkA              REG          
///                                    ###
///                                    * Context for left neighbor
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 BlkD                 
///               $FCTX                BlkD              REG          
///                                    ###
///                                    * Context for upper-left neighbor
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 BlkB                 
///               $FCTX                BlkB              REG          
///                                    ###
///                                    * Context for top neighbor
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 BlkC                 
///               $FCTX                BlkC              REG          
///                                    ###
///                                    * Context for upper-right neighbor
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 BlkA1                
///               $FCTX                BlkA1             REG          
///                                    ###
///                                    * Context for 2nd left neighbor, interlace frame
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 BlkD1                
///               $FCTX                BlkD1             REG          
///                                    ###
///                                    * Context for 2nd upper-left neighbor, interlace frame
///                                    ###
///     @ 0x00078                      (P)
///     # 0x00078 BlkB1                
///               $FCTX                BlkB1             REG          
///                                    ###
///                                    * Context for 2nd top neighbor, interlace frame
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 BlkC1                
///               $FCTX                BlkC1             REG          
///                                    ###
///                                    * Context for 2nd up-right neighbor, interlace frame only
///                                    * [1088:1727]
///                                    ###
///     @ 0x00088                      (P)
///               %unsigned 32 pmvScale_0i               
///               %unsigned 32 pmvScale_1i               
///               %unsigned 32 pmvScale_2i               
///               %unsigned 32 pmvScale_3i               
///               %unsigned 32 pmvScale_4i               
///               %unsigned 32 pmvScale_5i               
///               %unsigned 32 pmvScale_6i               
///               %unsigned 32 pmvScale_7i               
///               %unsigned 32 pmvScale_8i               
///               %unsigned 32 pmvScale_9i               
///               %unsigned 32 pmvScale_10i              
///               %unsigned 32 pmvScale_11i              
///               %unsigned 32 pmvScale_12i              
///               %unsigned 32 pmvScale_13i              
///               %unsigned 32 pmvScale_14i              
///               %unsigned 32 pmvScale_15i              
///               %unsigned 32 pmvScale_16i              
///               %unsigned 32 pmvScale_17i              
///               %unsigned 32 pmvScale_18i              
///               %unsigned 32 pmvScale_19i              
///                                    ###
///                                    * Scale candidates for PMV.
///                                    * [1727:2047]
///                                    ###
///     @ 0x000D8                      (P)
///     # 0x000D8 RSVD                 
///               $LUT64b              RSVD              REG       [5]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End PMVCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PMVCTX
#define h_PMVCTX (){}

    #define     RA_PMVCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_RSVD0                                0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkX                                 0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_ChromaMV                             0x0040
    ///////////////////////////////////////////////////////////

    #define     BA_PMVCTX_RSVDX                                0x0044
    #define     B16PMVCTX_RSVDX                                0x0044
    #define   LSb32PMVCTX_RSVDX                                   0
    #define   LSb16PMVCTX_RSVDX                                   0
    #define       bPMVCTX_RSVDX                                32
    #define   MSK32PMVCTX_RSVDX                                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkA                                 0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkD                                 0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkB                                 0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkC                                 0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkA1                                0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkD1                                0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkB1                                0x0078
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkC1                                0x0080
    ///////////////////////////////////////////////////////////

    #define     BA_PMVCTX_pmvScale_0i                          0x0088
    #define     B16PMVCTX_pmvScale_0i                          0x0088
    #define   LSb32PMVCTX_pmvScale_0i                             0
    #define   LSb16PMVCTX_pmvScale_0i                             0
    #define       bPMVCTX_pmvScale_0i                          32
    #define   MSK32PMVCTX_pmvScale_0i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_1i                          0x008C
    #define     B16PMVCTX_pmvScale_1i                          0x008C
    #define   LSb32PMVCTX_pmvScale_1i                             0
    #define   LSb16PMVCTX_pmvScale_1i                             0
    #define       bPMVCTX_pmvScale_1i                          32
    #define   MSK32PMVCTX_pmvScale_1i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_2i                          0x0090
    #define     B16PMVCTX_pmvScale_2i                          0x0090
    #define   LSb32PMVCTX_pmvScale_2i                             0
    #define   LSb16PMVCTX_pmvScale_2i                             0
    #define       bPMVCTX_pmvScale_2i                          32
    #define   MSK32PMVCTX_pmvScale_2i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_3i                          0x0094
    #define     B16PMVCTX_pmvScale_3i                          0x0094
    #define   LSb32PMVCTX_pmvScale_3i                             0
    #define   LSb16PMVCTX_pmvScale_3i                             0
    #define       bPMVCTX_pmvScale_3i                          32
    #define   MSK32PMVCTX_pmvScale_3i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_4i                          0x0098
    #define     B16PMVCTX_pmvScale_4i                          0x0098
    #define   LSb32PMVCTX_pmvScale_4i                             0
    #define   LSb16PMVCTX_pmvScale_4i                             0
    #define       bPMVCTX_pmvScale_4i                          32
    #define   MSK32PMVCTX_pmvScale_4i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_5i                          0x009C
    #define     B16PMVCTX_pmvScale_5i                          0x009C
    #define   LSb32PMVCTX_pmvScale_5i                             0
    #define   LSb16PMVCTX_pmvScale_5i                             0
    #define       bPMVCTX_pmvScale_5i                          32
    #define   MSK32PMVCTX_pmvScale_5i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_6i                          0x00A0
    #define     B16PMVCTX_pmvScale_6i                          0x00A0
    #define   LSb32PMVCTX_pmvScale_6i                             0
    #define   LSb16PMVCTX_pmvScale_6i                             0
    #define       bPMVCTX_pmvScale_6i                          32
    #define   MSK32PMVCTX_pmvScale_6i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_7i                          0x00A4
    #define     B16PMVCTX_pmvScale_7i                          0x00A4
    #define   LSb32PMVCTX_pmvScale_7i                             0
    #define   LSb16PMVCTX_pmvScale_7i                             0
    #define       bPMVCTX_pmvScale_7i                          32
    #define   MSK32PMVCTX_pmvScale_7i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_8i                          0x00A8
    #define     B16PMVCTX_pmvScale_8i                          0x00A8
    #define   LSb32PMVCTX_pmvScale_8i                             0
    #define   LSb16PMVCTX_pmvScale_8i                             0
    #define       bPMVCTX_pmvScale_8i                          32
    #define   MSK32PMVCTX_pmvScale_8i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_9i                          0x00AC
    #define     B16PMVCTX_pmvScale_9i                          0x00AC
    #define   LSb32PMVCTX_pmvScale_9i                             0
    #define   LSb16PMVCTX_pmvScale_9i                             0
    #define       bPMVCTX_pmvScale_9i                          32
    #define   MSK32PMVCTX_pmvScale_9i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_10i                         0x00B0
    #define     B16PMVCTX_pmvScale_10i                         0x00B0
    #define   LSb32PMVCTX_pmvScale_10i                            0
    #define   LSb16PMVCTX_pmvScale_10i                            0
    #define       bPMVCTX_pmvScale_10i                         32
    #define   MSK32PMVCTX_pmvScale_10i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_11i                         0x00B4
    #define     B16PMVCTX_pmvScale_11i                         0x00B4
    #define   LSb32PMVCTX_pmvScale_11i                            0
    #define   LSb16PMVCTX_pmvScale_11i                            0
    #define       bPMVCTX_pmvScale_11i                         32
    #define   MSK32PMVCTX_pmvScale_11i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_12i                         0x00B8
    #define     B16PMVCTX_pmvScale_12i                         0x00B8
    #define   LSb32PMVCTX_pmvScale_12i                            0
    #define   LSb16PMVCTX_pmvScale_12i                            0
    #define       bPMVCTX_pmvScale_12i                         32
    #define   MSK32PMVCTX_pmvScale_12i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_13i                         0x00BC
    #define     B16PMVCTX_pmvScale_13i                         0x00BC
    #define   LSb32PMVCTX_pmvScale_13i                            0
    #define   LSb16PMVCTX_pmvScale_13i                            0
    #define       bPMVCTX_pmvScale_13i                         32
    #define   MSK32PMVCTX_pmvScale_13i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_14i                         0x00C0
    #define     B16PMVCTX_pmvScale_14i                         0x00C0
    #define   LSb32PMVCTX_pmvScale_14i                            0
    #define   LSb16PMVCTX_pmvScale_14i                            0
    #define       bPMVCTX_pmvScale_14i                         32
    #define   MSK32PMVCTX_pmvScale_14i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_15i                         0x00C4
    #define     B16PMVCTX_pmvScale_15i                         0x00C4
    #define   LSb32PMVCTX_pmvScale_15i                            0
    #define   LSb16PMVCTX_pmvScale_15i                            0
    #define       bPMVCTX_pmvScale_15i                         32
    #define   MSK32PMVCTX_pmvScale_15i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_16i                         0x00C8
    #define     B16PMVCTX_pmvScale_16i                         0x00C8
    #define   LSb32PMVCTX_pmvScale_16i                            0
    #define   LSb16PMVCTX_pmvScale_16i                            0
    #define       bPMVCTX_pmvScale_16i                         32
    #define   MSK32PMVCTX_pmvScale_16i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_17i                         0x00CC
    #define     B16PMVCTX_pmvScale_17i                         0x00CC
    #define   LSb32PMVCTX_pmvScale_17i                            0
    #define   LSb16PMVCTX_pmvScale_17i                            0
    #define       bPMVCTX_pmvScale_17i                         32
    #define   MSK32PMVCTX_pmvScale_17i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_18i                         0x00D0
    #define     B16PMVCTX_pmvScale_18i                         0x00D0
    #define   LSb32PMVCTX_pmvScale_18i                            0
    #define   LSb16PMVCTX_pmvScale_18i                            0
    #define       bPMVCTX_pmvScale_18i                         32
    #define   MSK32PMVCTX_pmvScale_18i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_19i                         0x00D4
    #define     B16PMVCTX_pmvScale_19i                         0x00D4
    #define   LSb32PMVCTX_pmvScale_19i                            0
    #define   LSb16PMVCTX_pmvScale_19i                            0
    #define       bPMVCTX_pmvScale_19i                         32
    #define   MSK32PMVCTX_pmvScale_19i                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_RSVD                                 0x00D8
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PMVCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD0[6];
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkX;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_ChromaMV;
    ///////////////////////////////////////////////////////////
    #define   GET32PMVCTX_RSVDX(r32)                           _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_RSVDX(r32,v)                         _BFSET_(r32,31, 0,v)

            UNSG32 u_RSVDX                                     : 32;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkA;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkD;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkB;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkC;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkA1;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkD1;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkB1;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkC1;
    ///////////////////////////////////////////////////////////
    #define   GET32PMVCTX_pmvScale_0i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_0i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_0i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_1i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_1i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_1i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_2i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_2i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_2i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_3i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_3i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_3i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_4i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_4i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_4i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_5i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_5i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_5i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_6i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_6i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_6i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_7i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_7i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_7i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_8i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_8i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_8i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_9i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_9i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_9i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_10i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_10i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_10i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_11i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_11i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_11i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_12i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_12i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_12i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_13i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_13i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_13i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_14i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_14i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_14i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_15i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_15i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_15i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_16i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_16i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_16i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_17i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_17i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_17i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_18i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_18i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_18i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_19i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_19i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_19i                              : 32;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[5];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_PMVCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 PMVCTX_drvrd(SIE_PMVCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PMVCTX_drvwr(SIE_PMVCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PMVCTX_reset(SIE_PMVCTX *p);
     SIGN32 PMVCTX_cmp  (SIE_PMVCTX *p, SIE_PMVCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PMVCTX_check(p,pie,pfx,hLOG) PMVCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PMVCTX_print(p,    pfx,hLOG) PMVCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PMVCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dirMvCTX                biu              (4,4)
///     ###
///     * RF64 context for direct mode MV calculation
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD0                
///               $LUT64b              RSVD0             REG       [6]
///                                    ###
///                                    * padding to align block-level context
///                                    * [448:575]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 BlkX                 
///               $HCTX4x4             BlkX              REG          
///                                    ###
///                                    * Context of the current block; 128-bit.
///                                    * [576:639]
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 BlkCol               
///               $FCTX                BlkCol            REG          
///                                    ###
///                                    * Context of co-located block; 64-bit.
///                                    * [640:703]
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 mvScale              
///               $dirMvScale          mvScale           REG          
///                                    ###
///                                    * MV scaling factor for temporal direct mode; 64 bits
///                                    * [704:1919]
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 RSVD                 
///               $LUT64b              RSVD              REG      [19]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [1920:2047]
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 MbPMV                
///               $HCTX4x4             MbPMV             REG          
///                                    ###
///                                    * Macroblock PMV, for spatial direct mode only
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End dirMvCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dirMvCTX
#define h_dirMvCTX (){}

    #define     RA_dirMvCTX_MB                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_RSVD0                              0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_BlkX                               0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_BlkCol                             0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_mvScale                            0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_RSVD                               0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_MbPMV                              0x00F0
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_PIC                                0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dirMvCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD0[6];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkX;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkCol;
    ///////////////////////////////////////////////////////////
              SIE_dirMvScale                                   ie_mvScale;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[19];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_MbPMV;
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_dirMvCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 dirMvCTX_drvrd(SIE_dirMvCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dirMvCTX_drvwr(SIE_dirMvCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dirMvCTX_reset(SIE_dirMvCTX *p);
     SIGN32 dirMvCTX_cmp  (SIE_dirMvCTX *p, SIE_dirMvCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dirMvCTX_check(p,pie,pfx,hLOG) dirMvCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dirMvCTX_print(p,    pfx,hLOG) dirMvCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dirMvCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vcMsgCTX                biu              (4,4)
///     ###
///     * RF64 context for the vcMsg extension
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * 64b macroblock-level parameter
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD0                
///               $LUT64b              RSVD0             REG       [6]
///                                    ###
///                                    * padding to align block-level context
///                                    * [448:511]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 blkX                 
///               $FCTX                blkX              REG          
///                                    ###
///                                    * Motion information context of current partition
///                                    * [512:2047]
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 RSVD                 
///               $LUT64b              RSVD              REG      [24]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End vcMsgCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vcMsgCTX
#define h_vcMsgCTX (){}

    #define     RA_vcMsgCTX_MB                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_RSVD0                              0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_blkX                               0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_RSVD                               0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_PIC                                0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vcMsgCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD0[6];
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_blkX;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[24];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_vcMsgCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 vcMsgCTX_drvrd(SIE_vcMsgCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vcMsgCTX_drvwr(SIE_vcMsgCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vcMsgCTX_reset(SIE_vcMsgCTX *p);
     SIGN32 vcMsgCTX_cmp  (SIE_vcMsgCTX *p, SIE_vcMsgCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vcMsgCTX_check(p,pie,pfx,hLOG) vcMsgCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vcMsgCTX_print(p,    pfx,hLOG) vcMsgCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vcMsgCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vldCTX                  biu              (4,4)
///     ###
///     * RF64 context for vld
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:2047]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG      [31]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End vldCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vldCTX
#define h_vldCTX (){}

    #define     RA_vldCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vldCTX_RSVD                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_vldCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vldCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[31];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_vldCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 vldCTX_drvrd(SIE_vldCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vldCTX_drvwr(SIE_vldCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vldCTX_reset(SIE_vldCTX *p);
     SIGN32 vldCTX_cmp  (SIE_vldCTX *p, SIE_vldCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vldCTX_check(p,pie,pfx,hLOG) vldCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vldCTX_print(p,    pfx,hLOG) vldCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vldCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ClkRstBiu               biu              (4,4)
///     ###
///     * Common Biu Unit used for block level reset and clock gating control
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CRCtl                (P)
///               ###
///               * Clock Reset Control Register
///               ###
///               %unsigned 1  rst                       0x1
///                                    ###
///                                    * Software reset. The reset signal is active low.
///                                    * 0 -> the block will be under reset.
///                                    * 1-> the block will be out of reset.
///                                    ###
///               %unsigned 1  swClk_en                  0x1
///                                    ###
///                                    * Software controlled clock enable.
///                                    * 0 -> The corresponding block will be disabled (gated)
///                                    * 1 -> The corresponding clock will be enabled (ungated)
///                                    ###
///               %unsigned 1  dyCG_en                   0x1
///                                    ###
///                                    * This is used to control (enalbe/disable) the HW self dynamic clock gating unit.
///                                    * 0 -> the dynamic clock gating will be disabled (the clock can not be turned off by dynamic clock gating unit).
///                                    * 1 -> the dynamic clock gating will be enabled (the clock can be dynamically turned on/off by the dynamic clock control unit).
///                                    * Here is the glue logic to generate the block level clock enable signal.
///                                    * ClkEn = swClk_en & (~dyCG_en | dyClk_en).
///                                    * swClk_en and dyCG_en are from this biu, and dyClk_en is the signal generated by the dynamic clock control unit.
///                                    * End of ClkRstBiu
///                                    ###
///               %%        29         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       3b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ClkRstBiu
#define h_ClkRstBiu (){}

    #define     RA_ClkRstBiu_CRCtl                             0x0000

    #define     BA_ClkRstBiu_CRCtl_rst                         0x0000
    #define     B16ClkRstBiu_CRCtl_rst                         0x0000
    #define   LSb32ClkRstBiu_CRCtl_rst                            0
    #define   LSb16ClkRstBiu_CRCtl_rst                            0
    #define       bClkRstBiu_CRCtl_rst                         1
    #define   MSK32ClkRstBiu_CRCtl_rst                            0x00000001

    #define     BA_ClkRstBiu_CRCtl_swClk_en                    0x0000
    #define     B16ClkRstBiu_CRCtl_swClk_en                    0x0000
    #define   LSb32ClkRstBiu_CRCtl_swClk_en                       1
    #define   LSb16ClkRstBiu_CRCtl_swClk_en                       1
    #define       bClkRstBiu_CRCtl_swClk_en                    1
    #define   MSK32ClkRstBiu_CRCtl_swClk_en                       0x00000002

    #define     BA_ClkRstBiu_CRCtl_dyCG_en                     0x0000
    #define     B16ClkRstBiu_CRCtl_dyCG_en                     0x0000
    #define   LSb32ClkRstBiu_CRCtl_dyCG_en                        2
    #define   LSb16ClkRstBiu_CRCtl_dyCG_en                        2
    #define       bClkRstBiu_CRCtl_dyCG_en                     1
    #define   MSK32ClkRstBiu_CRCtl_dyCG_en                        0x00000004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ClkRstBiu {
    ///////////////////////////////////////////////////////////
    #define   GET32ClkRstBiu_CRCtl_rst(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32ClkRstBiu_CRCtl_rst(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16ClkRstBiu_CRCtl_rst(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16ClkRstBiu_CRCtl_rst(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32ClkRstBiu_CRCtl_swClk_en(r32)               _BFGET_(r32, 1, 1)
    #define   SET32ClkRstBiu_CRCtl_swClk_en(r32,v)             _BFSET_(r32, 1, 1,v)
    #define   GET16ClkRstBiu_CRCtl_swClk_en(r16)               _BFGET_(r16, 1, 1)
    #define   SET16ClkRstBiu_CRCtl_swClk_en(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32ClkRstBiu_CRCtl_dyCG_en(r32)                _BFGET_(r32, 2, 2)
    #define   SET32ClkRstBiu_CRCtl_dyCG_en(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16ClkRstBiu_CRCtl_dyCG_en(r16)                _BFGET_(r16, 2, 2)
    #define   SET16ClkRstBiu_CRCtl_dyCG_en(r16,v)              _BFSET_(r16, 2, 2,v)

    #define     w32ClkRstBiu_CRCtl                             {\
            UNSG32 uCRCtl_rst                                  :  1;\
            UNSG32 uCRCtl_swClk_en                             :  1;\
            UNSG32 uCRCtl_dyCG_en                              :  1;\
            UNSG32 RSVDx0_b3                                   : 29;\
          }
    union { UNSG32 u32ClkRstBiu_CRCtl;
            struct w32ClkRstBiu_CRCtl;
          };
    ///////////////////////////////////////////////////////////
    } SIE_ClkRstBiu;

    typedef union  T32ClkRstBiu_CRCtl
          { UNSG32 u32;
            struct w32ClkRstBiu_CRCtl;
                 } T32ClkRstBiu_CRCtl;
    ///////////////////////////////////////////////////////////

    typedef union  TClkRstBiu_CRCtl
          { UNSG32 u32[1];
            struct {
            struct w32ClkRstBiu_CRCtl;
                   };
                 } TClkRstBiu_CRCtl;

    ///////////////////////////////////////////////////////////
     SIGN32 ClkRstBiu_drvrd(SIE_ClkRstBiu *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ClkRstBiu_drvwr(SIE_ClkRstBiu *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ClkRstBiu_reset(SIE_ClkRstBiu *p);
     SIGN32 ClkRstBiu_cmp  (SIE_ClkRstBiu *p, SIE_ClkRstBiu *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ClkRstBiu_check(p,pie,pfx,hLOG) ClkRstBiu_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ClkRstBiu_print(p,    pfx,hLOG) ClkRstBiu_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ClkRstBiu
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vProDHub                                 (4,4)
///     ###
///     * dHub channel ID assignment and channel size configurations
///     ###
///     # # ----------------------------------------------------------
///               : ChannelNum         0xC
///                            ###
///                            * Bank[0], 4KByte
///                            ###
///               : ID_CPU_RD          0x0
///               : SIZE_CPU_RD_CMD    0x20
///               : SIZE_CPU_RD_DAT    0x80
///                            ###
///                            * CPU read channel; doubles as M2H copy channel
///                            ###
///               : ID_CPU_WR          0x1
///               : SIZE_CPU_WR_CMD    0x20
///               : SIZE_CPU_WR_DAT    0x200
///                            ###
///                            * CPU write channel; doubles as H2M copy channel
///                            ###
///               : ID_BIU_CFG         0x2
///               : SIZE_BIU_CFG_CMD   0x100
///               : SIZE_BIU_CFG_DAT   0x80
///                            ###
///                            * vPro BIU config channel
///                            ###
///               : ID_VFMT_WR         0x3
///               : SIZE_VFMT_WR_CMD   0x40
///               : SIZE_VFMT_WR_DAT   0x400
///                            ###
///                            * vFMT write channel
///                            ###
///               : ID_DS_RD           0x4
///               : SIZE_DS_RD_CMD     0x20
///               : SIZE_DS_RD_DAT     0x100
///                            ###
///                            * Data Streamer read channel
///                            ###
///               : ID_DS_WR           0x5
///               : SIZE_DS_WR_CMD     0x20
///               : SIZE_DS_WR_DAT     0x100
///                            ###
///                            * Data Streamer write channel
///                            ###
///               : ID_P3ALT_RD        0x6
///               : SIZE_P3ALT_RD_CMD  0x10
///               : SIZE_P3ALT_RD_DAT  0x80
///                            ###
///                            * PCube VC-1 deblocking context in; double as debugging input
///                            ###
///               : ID_P3ALT_WR        0x7
///               : SIZE_P3ALT_WR_CMD  0x10
///               : SIZE_P3ALT_WR_DAT  0x80
///                            ###
///                            * PCube VC-1 deblocking context out; doubles as debugging out
///                            ###
///               : ID_VLDX_RD         0x8
///               : SIZE_VLDX_RD_CMD   0x80
///               : SIZE_VLDX_RD_DAT   0x100
///                            ###
///                            * vldX read channel
///                            ###
///               : ID_VLD0_RD         0x9
///               : SIZE_VLD0_RD_CMD   0x80
///               : SIZE_VLD0_RD_DAT   0x100
///                            ###
///                            * Vld0 read channel
///                            ###
///               : ID_VLC_WR          0xA
///               : SIZE_VLC_WR_CMD    0x20
///               : SIZE_VLC_WR_DAT    0x100
///                            ###
///                            * VLC write channel 0
///                            ###
///               : ID_VLC1_WR         0xB
///               : SIZE_VLC1_WR_CMD   0x20
///               : SIZE_VLC1_WR_DAT   0x100
///                            ###
///                            * VLC write channel 1
///                            * Bank[1],4KByte (32Kbit)
///                            ###
///               : ID_VC_RD           0xC
///               : SIZE_VC_RD_CMD     0x100
///               : SIZE_VC_RD_DAT     0xF00
///                            ###
///                            * vCache reference read channel
///                            ###
///     @ 0x00000 Dummy                (P)
///               %unsigned 1  xxx                       0x0
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vProDHub
#define h_vProDHub (){}

    #define        vProDHub_ChannelNum                         0xC
    #define        vProDHub_ID_CPU_RD                          0x0
    #define        vProDHub_SIZE_CPU_RD_CMD                    0x20
    #define        vProDHub_SIZE_CPU_RD_DAT                    0x80
    #define        vProDHub_ID_CPU_WR                          0x1
    #define        vProDHub_SIZE_CPU_WR_CMD                    0x20
    #define        vProDHub_SIZE_CPU_WR_DAT                    0x200
    #define        vProDHub_ID_BIU_CFG                         0x2
    #define        vProDHub_SIZE_BIU_CFG_CMD                   0x100
    #define        vProDHub_SIZE_BIU_CFG_DAT                   0x80
    #define        vProDHub_ID_VFMT_WR                         0x3
    #define        vProDHub_SIZE_VFMT_WR_CMD                   0x40
    #define        vProDHub_SIZE_VFMT_WR_DAT                   0x400
    #define        vProDHub_ID_DS_RD                           0x4
    #define        vProDHub_SIZE_DS_RD_CMD                     0x20
    #define        vProDHub_SIZE_DS_RD_DAT                     0x100
    #define        vProDHub_ID_DS_WR                           0x5
    #define        vProDHub_SIZE_DS_WR_CMD                     0x20
    #define        vProDHub_SIZE_DS_WR_DAT                     0x100
    #define        vProDHub_ID_P3ALT_RD                        0x6
    #define        vProDHub_SIZE_P3ALT_RD_CMD                  0x10
    #define        vProDHub_SIZE_P3ALT_RD_DAT                  0x80
    #define        vProDHub_ID_P3ALT_WR                        0x7
    #define        vProDHub_SIZE_P3ALT_WR_CMD                  0x10
    #define        vProDHub_SIZE_P3ALT_WR_DAT                  0x80
    #define        vProDHub_ID_VLDX_RD                         0x8
    #define        vProDHub_SIZE_VLDX_RD_CMD                   0x80
    #define        vProDHub_SIZE_VLDX_RD_DAT                   0x100
    #define        vProDHub_ID_VLD0_RD                         0x9
    #define        vProDHub_SIZE_VLD0_RD_CMD                   0x80
    #define        vProDHub_SIZE_VLD0_RD_DAT                   0x100
    #define        vProDHub_ID_VLC_WR                          0xA
    #define        vProDHub_SIZE_VLC_WR_CMD                    0x20
    #define        vProDHub_SIZE_VLC_WR_DAT                    0x100
    #define        vProDHub_ID_VLC1_WR                         0xB
    #define        vProDHub_SIZE_VLC1_WR_CMD                   0x20
    #define        vProDHub_SIZE_VLC1_WR_DAT                   0x100
    #define        vProDHub_ID_VC_RD                           0xC
    #define        vProDHub_SIZE_VC_RD_CMD                     0x100
    #define        vProDHub_SIZE_VC_RD_DAT                     0xF00
    ///////////////////////////////////////////////////////////
    #define     RA_vProDHub_Dummy                              0x0000

    #define     BA_vProDHub_Dummy_xxx                          0x0000
    #define     B16vProDHub_Dummy_xxx                          0x0000
    #define   LSb32vProDHub_Dummy_xxx                             0
    #define   LSb16vProDHub_Dummy_xxx                             0
    #define       bvProDHub_Dummy_xxx                          1
    #define   MSK32vProDHub_Dummy_xxx                             0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vProDHub {
    ///////////////////////////////////////////////////////////
    #define   GET32vProDHub_Dummy_xxx(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32vProDHub_Dummy_xxx(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16vProDHub_Dummy_xxx(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16vProDHub_Dummy_xxx(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32vProDHub_Dummy                              {\
            UNSG32 uDummy_xxx                                  :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32vProDHub_Dummy;
            struct w32vProDHub_Dummy;
          };
    ///////////////////////////////////////////////////////////
    } SIE_vProDHub;

    typedef union  T32vProDHub_Dummy
          { UNSG32 u32;
            struct w32vProDHub_Dummy;
                 } T32vProDHub_Dummy;
    ///////////////////////////////////////////////////////////

    typedef union  TvProDHub_Dummy
          { UNSG32 u32[1];
            struct {
            struct w32vProDHub_Dummy;
                   };
                 } TvProDHub_Dummy;

    ///////////////////////////////////////////////////////////
     SIGN32 vProDHub_drvrd(SIE_vProDHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vProDHub_drvwr(SIE_vProDHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vProDHub_reset(SIE_vProDHub *p);
     SIGN32 vProDHub_cmp  (SIE_vProDHub *p, SIE_vProDHub *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vProDHub_check(p,pie,pfx,hLOG) vProDHub_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vProDHub_print(p,    pfx,hLOG) vProDHub_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vProDHub
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dtcmEntry                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 word_0i                   
///               %unsigned 32 word_1i                   
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dtcmEntry
#define h_dtcmEntry (){}

    #define     BA_dtcmEntry_word_0i                           0x0000
    #define     B16dtcmEntry_word_0i                           0x0000
    #define   LSb32dtcmEntry_word_0i                              0
    #define   LSb16dtcmEntry_word_0i                              0
    #define       bdtcmEntry_word_0i                           32
    #define   MSK32dtcmEntry_word_0i                              0xFFFFFFFF

    #define     BA_dtcmEntry_word_1i                           0x0004
    #define     B16dtcmEntry_word_1i                           0x0004
    #define   LSb32dtcmEntry_word_1i                              0
    #define   LSb16dtcmEntry_word_1i                              0
    #define       bdtcmEntry_word_1i                           32
    #define   MSK32dtcmEntry_word_1i                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dtcmEntry {
    ///////////////////////////////////////////////////////////
    #define   GET32dtcmEntry_word_0i(r32)                      _BFGET_(r32,31, 0)
    #define   SET32dtcmEntry_word_0i(r32,v)                    _BFSET_(r32,31, 0,v)

            UNSG32 u_word_0i                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32dtcmEntry_word_1i(r32)                      _BFGET_(r32,31, 0)
    #define   SET32dtcmEntry_word_1i(r32,v)                    _BFSET_(r32,31, 0,v)

            UNSG32 u_word_1i                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_dtcmEntry;

    ///////////////////////////////////////////////////////////
     SIGN32 dtcmEntry_drvrd(SIE_dtcmEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dtcmEntry_drvwr(SIE_dtcmEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dtcmEntry_reset(SIE_dtcmEntry *p);
     SIGN32 dtcmEntry_cmp  (SIE_dtcmEntry *p, SIE_dtcmEntry *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dtcmEntry_check(p,pie,pfx,hLOG) dtcmEntry_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dtcmEntry_print(p,    pfx,hLOG) dtcmEntry_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dtcmEntry
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE busAdrWin                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 adrH                 (P)
///               %unsigned 32 val                       0xFFFFFFFF
///     @ 0x00004 adrL                 (P)
///               %unsigned 32 val                       0x0
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_busAdrWin
#define h_busAdrWin (){}

    #define     RA_busAdrWin_adrH                              0x0000

    #define     BA_busAdrWin_adrH_val                          0x0000
    #define     B16busAdrWin_adrH_val                          0x0000
    #define   LSb32busAdrWin_adrH_val                             0
    #define   LSb16busAdrWin_adrH_val                             0
    #define       bbusAdrWin_adrH_val                          32
    #define   MSK32busAdrWin_adrH_val                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_busAdrWin_adrL                              0x0004

    #define     BA_busAdrWin_adrL_val                          0x0004
    #define     B16busAdrWin_adrL_val                          0x0004
    #define   LSb32busAdrWin_adrL_val                             0
    #define   LSb16busAdrWin_adrL_val                             0
    #define       bbusAdrWin_adrL_val                          32
    #define   MSK32busAdrWin_adrL_val                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_busAdrWin {
    ///////////////////////////////////////////////////////////
    #define   GET32busAdrWin_adrH_val(r32)                     _BFGET_(r32,31, 0)
    #define   SET32busAdrWin_adrH_val(r32,v)                   _BFSET_(r32,31, 0,v)

    #define     w32busAdrWin_adrH                              {\
            UNSG32 uadrH_val                                   : 32;\
          }
    union { UNSG32 u32busAdrWin_adrH;
            struct w32busAdrWin_adrH;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32busAdrWin_adrL_val(r32)                     _BFGET_(r32,31, 0)
    #define   SET32busAdrWin_adrL_val(r32,v)                   _BFSET_(r32,31, 0,v)

    #define     w32busAdrWin_adrL                              {\
            UNSG32 uadrL_val                                   : 32;\
          }
    union { UNSG32 u32busAdrWin_adrL;
            struct w32busAdrWin_adrL;
          };
    ///////////////////////////////////////////////////////////
    } SIE_busAdrWin;

    typedef union  T32busAdrWin_adrH
          { UNSG32 u32;
            struct w32busAdrWin_adrH;
                 } T32busAdrWin_adrH;
    typedef union  T32busAdrWin_adrL
          { UNSG32 u32;
            struct w32busAdrWin_adrL;
                 } T32busAdrWin_adrL;
    ///////////////////////////////////////////////////////////

    typedef union  TbusAdrWin_adrH
          { UNSG32 u32[1];
            struct {
            struct w32busAdrWin_adrH;
                   };
                 } TbusAdrWin_adrH;
    typedef union  TbusAdrWin_adrL
          { UNSG32 u32[1];
            struct {
            struct w32busAdrWin_adrL;
                   };
                 } TbusAdrWin_adrL;

    ///////////////////////////////////////////////////////////
     SIGN32 busAdrWin_drvrd(SIE_busAdrWin *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 busAdrWin_drvwr(SIE_busAdrWin *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void busAdrWin_reset(SIE_busAdrWin *p);
     SIGN32 busAdrWin_cmp  (SIE_busAdrWin *p, SIE_busAdrWin *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define busAdrWin_check(p,pie,pfx,hLOG) busAdrWin_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define busAdrWin_print(p,    pfx,hLOG) busAdrWin_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: busAdrWin
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE axiBusCtrl              biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 busWinArr            
///               $busAdrWin           busWinArr         REG       [8]
///     @ 0x00040 trash                (P)
///               %unsigned 32 adr                       
///                                    ###
///                                    * If the bus (AXI) write does not fall into any range specified by the 8 set of busAdrWin, it will redirect to the trash.adr in DRAM. The trash buffer size should be at least 128Byte to cover the one AXI bus burst.
///                                    * SW need to configure the 8 set of bus address window and the trash address properly to avoid vMeta write any address in DRAM which is not belong to vMeta data buffer.
///                                    ###
///     @ 0x00044 busErr               (RW-)
///               %unsigned 32 adr                       0xFFFFFFFF
///                                    ###
///                                    * Used to record the Error address when bus wirte address is not falling into any specified window.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      72B, bits:     576b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_axiBusCtrl
#define h_axiBusCtrl (){}

    #define     RA_axiBusCtrl_busWinArr                        0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_axiBusCtrl_trash                            0x0040

    #define     BA_axiBusCtrl_trash_adr                        0x0040
    #define     B16axiBusCtrl_trash_adr                        0x0040
    #define   LSb32axiBusCtrl_trash_adr                           0
    #define   LSb16axiBusCtrl_trash_adr                           0
    #define       baxiBusCtrl_trash_adr                        32
    #define   MSK32axiBusCtrl_trash_adr                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_axiBusCtrl_busErr                           0x0044

    #define     BA_axiBusCtrl_busErr_adr                       0x0044
    #define     B16axiBusCtrl_busErr_adr                       0x0044
    #define   LSb32axiBusCtrl_busErr_adr                          0
    #define   LSb16axiBusCtrl_busErr_adr                          0
    #define       baxiBusCtrl_busErr_adr                       32
    #define   MSK32axiBusCtrl_busErr_adr                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_axiBusCtrl {
    ///////////////////////////////////////////////////////////
              SIE_busAdrWin                                    ie_busWinArr[8];
    ///////////////////////////////////////////////////////////
    #define   GET32axiBusCtrl_trash_adr(r32)                   _BFGET_(r32,31, 0)
    #define   SET32axiBusCtrl_trash_adr(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32axiBusCtrl_trash                            {\
            UNSG32 utrash_adr                                  : 32;\
          }
    union { UNSG32 u32axiBusCtrl_trash;
            struct w32axiBusCtrl_trash;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32axiBusCtrl_busErr_adr(r32)                  _BFGET_(r32,31, 0)
    #define   SET32axiBusCtrl_busErr_adr(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32axiBusCtrl_busErr                           {\
            UNSG32 ubusErr_adr                                 : 32;\
          }
    union { UNSG32 u32axiBusCtrl_busErr;
            struct w32axiBusCtrl_busErr;
          };
    ///////////////////////////////////////////////////////////
    } SIE_axiBusCtrl;

    typedef union  T32axiBusCtrl_trash
          { UNSG32 u32;
            struct w32axiBusCtrl_trash;
                 } T32axiBusCtrl_trash;
    typedef union  T32axiBusCtrl_busErr
          { UNSG32 u32;
            struct w32axiBusCtrl_busErr;
                 } T32axiBusCtrl_busErr;
    ///////////////////////////////////////////////////////////

    typedef union  TaxiBusCtrl_trash
          { UNSG32 u32[1];
            struct {
            struct w32axiBusCtrl_trash;
                   };
                 } TaxiBusCtrl_trash;
    typedef union  TaxiBusCtrl_busErr
          { UNSG32 u32[1];
            struct {
            struct w32axiBusCtrl_busErr;
                   };
                 } TaxiBusCtrl_busErr;

    ///////////////////////////////////////////////////////////
     SIGN32 axiBusCtrl_drvrd(SIE_axiBusCtrl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 axiBusCtrl_drvwr(SIE_axiBusCtrl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void axiBusCtrl_reset(SIE_axiBusCtrl *p);
     SIGN32 axiBusCtrl_cmp  (SIE_axiBusCtrl *p, SIE_axiBusCtrl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define axiBusCtrl_check(p,pie,pfx,hLOG) axiBusCtrl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define axiBusCtrl_print(p,    pfx,hLOG) axiBusCtrl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: axiBusCtrl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vProMisc                biu              (4,4)
///     ###
///     * vPro top-level BIU, providing accesses to vPro HBO and other misc configurations such as software resets
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 TCM                  (P)
///     # 0x00000 dtcm                 
///               $dtcmEntry           dtcm              MEM   [12544]
///                                    ###
///                                    * vProHbo DTCM, occupying 256KB address space; physical size is ~100KB
///                                    ###
///     @ 0x20000                      (W-)
///     #         # Stuffing bytes...
///               %% 1048576
///     @ 0x40000 HMEM                 (P)
///     # 0x40000 hmem                 
///               $dtcmEntry           hmem              MEM    [1536]
///                                    ###
///                                    * vProHub DTCM, occupying 16KB address space; physical size is 8KB
///                                    * vPro top-level module BIUs
///                                    ###
///     @ 0x44000 HBO                  (P)
///     # 0x44000 hbo                  
///               $HBO                 hbo               REG          
///     @ 0x44700 DHUB                 (P)
///     # 0x44700 dhub                 
///               $dHubReg2D           dhub              REG          
///                                    ###
///                                    * Misc register definitions
///                                    ###
///     @ 0x45700 P3Dbg                (P)
///               %unsigned 1  En                        0x0
///                                    ###
///                                    * 0 : DMA channel 0 and 1 are hooked up together for memory copy.
///                                    * 1: Dma channel 0 and 1 are hooked up with p3 debug read and write channel.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x45704 vProM2m              (P)
///               %unsigned 1  En                        0x0
///                                    ###
///                                    * 0: use dHub channels 1 & 2 for CPU read / write
///                                    * 1: use dHub channels 1 & 2 for m2m copy
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x45708 vProCfgChn           (P)
///               %unsigned 1  En                        0x1
///                                    ###
///                                    * 0: Disable dHub channel 3 for BIU write.
///                                    * 1: use dHub channel 3 for BIU write. (config channel)
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x4570C vProAxiRaMin         (P)
///               %unsigned 32 addr                      0x0
///     @ 0x45710 vProAxiRaMax         (P)
///               %unsigned 32 addr                      0x0
///     @ 0x45714 vProAxiWaMin         (P)
///               %unsigned 32 addr                      0x0
///     @ 0x45718 vProAxiWaMax         (P)
///               %unsigned 32 addr                      0x0
///     @ 0x4571C vProVFC              (P)
///     # 0x4571C VFC                  
///               $vProVFC             VFC               REG          
///     @ 0x45740 CRCHUB               (P)
///     # 0x45740 crcHub               
///               $crcHub              crcHub            REG          
///     @ 0x45940 AXIBUSCTRL           (P)
///     # 0x45940 axiBusCtrl           
///               $axiBusCtrl          axiBusCtrl        REG          
///     @ 0x45988                      (W-)
///     #         # Stuffing bytes...
///               %% 865216
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:  393216B, bits:    9915b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vProMisc
#define h_vProMisc (){}

    #define     RA_vProMisc_TCM                                0x0000
    #define     RA_vProMisc_dtcm                               0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_HMEM                               0x40000
    #define     RA_vProMisc_hmem                               0x40000
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_HBO                                0x44000
    #define     RA_vProMisc_hbo                                0x44000
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_DHUB                               0x44700
    #define     RA_vProMisc_dhub                               0x44700
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_P3Dbg                              0x45700

    #define     BA_vProMisc_P3Dbg_En                           0x45700
    #define     B16vProMisc_P3Dbg_En                           0x45700
    #define   LSb32vProMisc_P3Dbg_En                              0
    #define   LSb16vProMisc_P3Dbg_En                              0
    #define       bvProMisc_P3Dbg_En                           1
    #define   MSK32vProMisc_P3Dbg_En                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProM2m                            0x45704

    #define     BA_vProMisc_vProM2m_En                         0x45704
    #define     B16vProMisc_vProM2m_En                         0x45704
    #define   LSb32vProMisc_vProM2m_En                            0
    #define   LSb16vProMisc_vProM2m_En                            0
    #define       bvProMisc_vProM2m_En                         1
    #define   MSK32vProMisc_vProM2m_En                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProCfgChn                         0x45708

    #define     BA_vProMisc_vProCfgChn_En                      0x45708
    #define     B16vProMisc_vProCfgChn_En                      0x45708
    #define   LSb32vProMisc_vProCfgChn_En                         0
    #define   LSb16vProMisc_vProCfgChn_En                         0
    #define       bvProMisc_vProCfgChn_En                      1
    #define   MSK32vProMisc_vProCfgChn_En                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProAxiRaMin                       0x4570C

    #define     BA_vProMisc_vProAxiRaMin_addr                  0x4570C
    #define     B16vProMisc_vProAxiRaMin_addr                  0x4570C
    #define   LSb32vProMisc_vProAxiRaMin_addr                     0
    #define   LSb16vProMisc_vProAxiRaMin_addr                     0
    #define       bvProMisc_vProAxiRaMin_addr                  32
    #define   MSK32vProMisc_vProAxiRaMin_addr                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProAxiRaMax                       0x45710

    #define     BA_vProMisc_vProAxiRaMax_addr                  0x45710
    #define     B16vProMisc_vProAxiRaMax_addr                  0x45710
    #define   LSb32vProMisc_vProAxiRaMax_addr                     0
    #define   LSb16vProMisc_vProAxiRaMax_addr                     0
    #define       bvProMisc_vProAxiRaMax_addr                  32
    #define   MSK32vProMisc_vProAxiRaMax_addr                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProAxiWaMin                       0x45714

    #define     BA_vProMisc_vProAxiWaMin_addr                  0x45714
    #define     B16vProMisc_vProAxiWaMin_addr                  0x45714
    #define   LSb32vProMisc_vProAxiWaMin_addr                     0
    #define   LSb16vProMisc_vProAxiWaMin_addr                     0
    #define       bvProMisc_vProAxiWaMin_addr                  32
    #define   MSK32vProMisc_vProAxiWaMin_addr                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProAxiWaMax                       0x45718

    #define     BA_vProMisc_vProAxiWaMax_addr                  0x45718
    #define     B16vProMisc_vProAxiWaMax_addr                  0x45718
    #define   LSb32vProMisc_vProAxiWaMax_addr                     0
    #define   LSb16vProMisc_vProAxiWaMax_addr                     0
    #define       bvProMisc_vProAxiWaMax_addr                  32
    #define   MSK32vProMisc_vProAxiWaMax_addr                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_vProVFC                            0x4571C
    #define     RA_vProMisc_VFC                                0x4571C
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_CRCHUB                             0x45740
    #define     RA_vProMisc_crcHub                             0x45740
    ///////////////////////////////////////////////////////////
    #define     RA_vProMisc_AXIBUSCTRL                         0x45940
    #define     RA_vProMisc_axiBusCtrl                         0x45940
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vProMisc {
    ///////////////////////////////////////////////////////////
              SIE_dtcmEntry                                    ie_dtcm[12544];
             UNSG8 RSVD_dtcm                                   [30720];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx20000                                  [131072];
    ///////////////////////////////////////////////////////////
              SIE_dtcmEntry                                    ie_hmem[1536];
             UNSG8 RSVD_hmem                                   [4096];
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo;
    ///////////////////////////////////////////////////////////
              SIE_dHubReg2D                                    ie_dhub;
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_P3Dbg_En(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32vProMisc_P3Dbg_En(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16vProMisc_P3Dbg_En(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16vProMisc_P3Dbg_En(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32vProMisc_P3Dbg                              {\
            UNSG32 uP3Dbg_En                                   :  1;\
            UNSG32 RSVDx45700_b1                               : 31;\
          }
    union { UNSG32 u32vProMisc_P3Dbg;
            struct w32vProMisc_P3Dbg;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_vProM2m_En(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32vProMisc_vProM2m_En(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16vProMisc_vProM2m_En(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16vProMisc_vProM2m_En(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32vProMisc_vProM2m                            {\
            UNSG32 uvProM2m_En                                 :  1;\
            UNSG32 RSVDx45704_b1                               : 31;\
          }
    union { UNSG32 u32vProMisc_vProM2m;
            struct w32vProMisc_vProM2m;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_vProCfgChn_En(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32vProMisc_vProCfgChn_En(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16vProMisc_vProCfgChn_En(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16vProMisc_vProCfgChn_En(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32vProMisc_vProCfgChn                         {\
            UNSG32 uvProCfgChn_En                              :  1;\
            UNSG32 RSVDx45708_b1                               : 31;\
          }
    union { UNSG32 u32vProMisc_vProCfgChn;
            struct w32vProMisc_vProCfgChn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_vProAxiRaMin_addr(r32)             _BFGET_(r32,31, 0)
    #define   SET32vProMisc_vProAxiRaMin_addr(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32vProMisc_vProAxiRaMin                       {\
            UNSG32 uvProAxiRaMin_addr                          : 32;\
          }
    union { UNSG32 u32vProMisc_vProAxiRaMin;
            struct w32vProMisc_vProAxiRaMin;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_vProAxiRaMax_addr(r32)             _BFGET_(r32,31, 0)
    #define   SET32vProMisc_vProAxiRaMax_addr(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32vProMisc_vProAxiRaMax                       {\
            UNSG32 uvProAxiRaMax_addr                          : 32;\
          }
    union { UNSG32 u32vProMisc_vProAxiRaMax;
            struct w32vProMisc_vProAxiRaMax;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_vProAxiWaMin_addr(r32)             _BFGET_(r32,31, 0)
    #define   SET32vProMisc_vProAxiWaMin_addr(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32vProMisc_vProAxiWaMin                       {\
            UNSG32 uvProAxiWaMin_addr                          : 32;\
          }
    union { UNSG32 u32vProMisc_vProAxiWaMin;
            struct w32vProMisc_vProAxiWaMin;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProMisc_vProAxiWaMax_addr(r32)             _BFGET_(r32,31, 0)
    #define   SET32vProMisc_vProAxiWaMax_addr(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32vProMisc_vProAxiWaMax                       {\
            UNSG32 uvProAxiWaMax_addr                          : 32;\
          }
    union { UNSG32 u32vProMisc_vProAxiWaMax;
            struct w32vProMisc_vProAxiWaMax;
          };
    ///////////////////////////////////////////////////////////
              SIE_vProVFC                                      ie_VFC;
    ///////////////////////////////////////////////////////////
              SIE_crcHub                                       ie_crcHub;
    ///////////////////////////////////////////////////////////
              SIE_axiBusCtrl                                   ie_axiBusCtrl;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx45988                                  [108152];
    ///////////////////////////////////////////////////////////
    } SIE_vProMisc;

    typedef union  T32vProMisc_P3Dbg
          { UNSG32 u32;
            struct w32vProMisc_P3Dbg;
                 } T32vProMisc_P3Dbg;
    typedef union  T32vProMisc_vProM2m
          { UNSG32 u32;
            struct w32vProMisc_vProM2m;
                 } T32vProMisc_vProM2m;
    typedef union  T32vProMisc_vProCfgChn
          { UNSG32 u32;
            struct w32vProMisc_vProCfgChn;
                 } T32vProMisc_vProCfgChn;
    typedef union  T32vProMisc_vProAxiRaMin
          { UNSG32 u32;
            struct w32vProMisc_vProAxiRaMin;
                 } T32vProMisc_vProAxiRaMin;
    typedef union  T32vProMisc_vProAxiRaMax
          { UNSG32 u32;
            struct w32vProMisc_vProAxiRaMax;
                 } T32vProMisc_vProAxiRaMax;
    typedef union  T32vProMisc_vProAxiWaMin
          { UNSG32 u32;
            struct w32vProMisc_vProAxiWaMin;
                 } T32vProMisc_vProAxiWaMin;
    typedef union  T32vProMisc_vProAxiWaMax
          { UNSG32 u32;
            struct w32vProMisc_vProAxiWaMax;
                 } T32vProMisc_vProAxiWaMax;
    ///////////////////////////////////////////////////////////

    typedef union  TvProMisc_P3Dbg
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_P3Dbg;
                   };
                 } TvProMisc_P3Dbg;
    typedef union  TvProMisc_vProM2m
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_vProM2m;
                   };
                 } TvProMisc_vProM2m;
    typedef union  TvProMisc_vProCfgChn
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_vProCfgChn;
                   };
                 } TvProMisc_vProCfgChn;
    typedef union  TvProMisc_vProAxiRaMin
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_vProAxiRaMin;
                   };
                 } TvProMisc_vProAxiRaMin;
    typedef union  TvProMisc_vProAxiRaMax
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_vProAxiRaMax;
                   };
                 } TvProMisc_vProAxiRaMax;
    typedef union  TvProMisc_vProAxiWaMin
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_vProAxiWaMin;
                   };
                 } TvProMisc_vProAxiWaMin;
    typedef union  TvProMisc_vProAxiWaMax
          { UNSG32 u32[1];
            struct {
            struct w32vProMisc_vProAxiWaMax;
                   };
                 } TvProMisc_vProAxiWaMax;

    ///////////////////////////////////////////////////////////
     SIGN32 vProMisc_drvrd(SIE_vProMisc *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vProMisc_drvwr(SIE_vProMisc *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vProMisc_reset(SIE_vProMisc *p);
     SIGN32 vProMisc_cmp  (SIE_vProMisc *p, SIE_vProMisc *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vProMisc_check(p,pie,pfx,hLOG) vProMisc_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vProMisc_print(p,    pfx,hLOG) vProMisc_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vProMisc
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vProRst                 biu              (4,4)
///     ###
///     * vPro control BIU, providing all block level and vPro subsystem software reset, gated clock control, and also provides vPro version number.
///     * For all reset control bit, 0-- reset, 1-- release. After chip power on reset, all these registers are 0 which means the vPro subsystem is in reset state and should be kicked-off by CPU.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 Version              (R-)
///               %unsigned 8  build                     0x0
///               %unsigned 8  rsvd                      0x0
///               %unsigned 8  minor                     0x5
///               %unsigned 8  major                     0x2
///     @ 0x00004 vPro                 (RW-)
///               %unsigned 1  rstn                      0x0
///                                    ###
///                                    * Write 0 to reset the whole vPro; write 1 to release
///                                    ###
///               %unsigned 1  clk_en                    0x0
///                                    ###
///                                    * Write 0 to disable vPro clock source.
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00008                      (P)
///     # 0x00008 vproBiu              
///               $ClkRstBiu           vproBiu           REG          
///     @ 0x0000C                      (P)
///     # 0x0000C vproMisc             
///               $ClkRstBiu           vproMisc          REG          
///     @ 0x00010 clkCntL              (RW-)
///               %unsigned 32 val                       
///     @ 0x00014 clkCntH              (RW-)
///               %unsigned 32 val                       
///                                    ###
///                                    * cklCntL and clkCntH together forms a 64-bit free run counter to count the sysClk. Here is the operation mode.
///                                    * 1. CPU read clkCntL: CPU will get the lower 32-bit of the counter, and the higher 32-bit will be updated to clkCntH.
///                                    * 2. CPU read clkCntH: CPU will get the higher 32-bit of the counter previously latched by operation #1.
///                                    * 3. CPU write cklCntL: will set the internal 64-bit counter with register value of {clkCntH, clkCntL}.
///                                    * 4. CPU write clkCntH: only clkClkCnt will be updated, and the internal 64-bit counter will not be touched.
///                                    ###
///     @ 0x00018 busEn                (RW-)
///               %unsigned 32 val                       
///                                    : start                 0x5650524F
///                                    : stop                  0x53544F50
///                                                 ###
///                                                 * Write “VPRO” to enable bus, and write “STOP” to disable bus.
///                                                 * When bus is disabled, CPU can not access any internal biu except the vProRst biu.
///                                                 * When bus is enabled, CPU can access any vMeta biu.
///                                                 ###
///     @ 0x0001C busErr               (RW-)
///               %unsigned 32 val                       0xFFFFFFFF
///                                    ###
///                                    * The bus access information will be recorded if the following two conditions are true.
///                                    * 1. bus is disabled.
///                                    * 2. bus is trying to access vMeta internal biu (other than vProRst biu).
///                                    * bit [31:2] record the address[31:2],
///                                    * bit [1] record the transaction type, 0 -> read and 1-> write.
///                                    * Bit[0]=0 indicate the register has been updated.
///                                    ###
///     @ 0x00020 interrupt            (R-)
///               %unsigned 1  status                    
///                                    ###
///                                    * This is a read only register, it will return the current vPro interrupt line value. (dmaIntrVpro, whether the interrupt is asserted to CPU or not)
///                                    * 1: vMeta asserts interrupt to the CPU
///                                    * 0: vMeta does not assert interrupt to the CPU
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      36B, bits:     169b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vProRst
#define h_vProRst (){}

    #define     RA_vProRst_Version                             0x0000

    #define     BA_vProRst_Version_build                       0x0000
    #define     B16vProRst_Version_build                       0x0000
    #define   LSb32vProRst_Version_build                          0
    #define   LSb16vProRst_Version_build                          0
    #define       bvProRst_Version_build                       8
    #define   MSK32vProRst_Version_build                          0x000000FF

    #define     BA_vProRst_Version_rsvd                        0x0001
    #define     B16vProRst_Version_rsvd                        0x0000
    #define   LSb32vProRst_Version_rsvd                           8
    #define   LSb16vProRst_Version_rsvd                           8
    #define       bvProRst_Version_rsvd                        8
    #define   MSK32vProRst_Version_rsvd                           0x0000FF00

    #define     BA_vProRst_Version_minor                       0x0002
    #define     B16vProRst_Version_minor                       0x0002
    #define   LSb32vProRst_Version_minor                          16
    #define   LSb16vProRst_Version_minor                          0
    #define       bvProRst_Version_minor                       8
    #define   MSK32vProRst_Version_minor                          0x00FF0000

    #define     BA_vProRst_Version_major                       0x0003
    #define     B16vProRst_Version_major                       0x0002
    #define   LSb32vProRst_Version_major                          24
    #define   LSb16vProRst_Version_major                          8
    #define       bvProRst_Version_major                       8
    #define   MSK32vProRst_Version_major                          0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_vPro                                0x0004

    #define     BA_vProRst_vPro_rstn                           0x0004
    #define     B16vProRst_vPro_rstn                           0x0004
    #define   LSb32vProRst_vPro_rstn                              0
    #define   LSb16vProRst_vPro_rstn                              0
    #define       bvProRst_vPro_rstn                           1
    #define   MSK32vProRst_vPro_rstn                              0x00000001

    #define     BA_vProRst_vPro_clk_en                         0x0004
    #define     B16vProRst_vPro_clk_en                         0x0004
    #define   LSb32vProRst_vPro_clk_en                            1
    #define   LSb16vProRst_vPro_clk_en                            1
    #define       bvProRst_vPro_clk_en                         1
    #define   MSK32vProRst_vPro_clk_en                            0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_vproBiu                             0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_vproMisc                            0x000C
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_clkCntL                             0x0010

    #define     BA_vProRst_clkCntL_val                         0x0010
    #define     B16vProRst_clkCntL_val                         0x0010
    #define   LSb32vProRst_clkCntL_val                            0
    #define   LSb16vProRst_clkCntL_val                            0
    #define       bvProRst_clkCntL_val                         32
    #define   MSK32vProRst_clkCntL_val                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_clkCntH                             0x0014

    #define     BA_vProRst_clkCntH_val                         0x0014
    #define     B16vProRst_clkCntH_val                         0x0014
    #define   LSb32vProRst_clkCntH_val                            0
    #define   LSb16vProRst_clkCntH_val                            0
    #define       bvProRst_clkCntH_val                         32
    #define   MSK32vProRst_clkCntH_val                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_busEn                               0x0018

    #define     BA_vProRst_busEn_val                           0x0018
    #define     B16vProRst_busEn_val                           0x0018
    #define   LSb32vProRst_busEn_val                              0
    #define   LSb16vProRst_busEn_val                              0
    #define       bvProRst_busEn_val                           32
    #define   MSK32vProRst_busEn_val                              0xFFFFFFFF
    #define        vProRst_busEn_val_start                                  0x5650524F
    #define        vProRst_busEn_val_stop                                   0x53544F50
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_busErr                              0x001C

    #define     BA_vProRst_busErr_val                          0x001C
    #define     B16vProRst_busErr_val                          0x001C
    #define   LSb32vProRst_busErr_val                             0
    #define   LSb16vProRst_busErr_val                             0
    #define       bvProRst_busErr_val                          32
    #define   MSK32vProRst_busErr_val                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_vProRst_interrupt                           0x0020

    #define     BA_vProRst_interrupt_status                    0x0020
    #define     B16vProRst_interrupt_status                    0x0020
    #define   LSb32vProRst_interrupt_status                       0
    #define   LSb16vProRst_interrupt_status                       0
    #define       bvProRst_interrupt_status                    1
    #define   MSK32vProRst_interrupt_status                       0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vProRst {
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_Version_build(r32)                  _BFGET_(r32, 7, 0)
    #define   SET32vProRst_Version_build(r32,v)                _BFSET_(r32, 7, 0,v)
    #define   GET16vProRst_Version_build(r16)                  _BFGET_(r16, 7, 0)
    #define   SET16vProRst_Version_build(r16,v)                _BFSET_(r16, 7, 0,v)

    #define   GET32vProRst_Version_rsvd(r32)                   _BFGET_(r32,15, 8)
    #define   SET32vProRst_Version_rsvd(r32,v)                 _BFSET_(r32,15, 8,v)
    #define   GET16vProRst_Version_rsvd(r16)                   _BFGET_(r16,15, 8)
    #define   SET16vProRst_Version_rsvd(r16,v)                 _BFSET_(r16,15, 8,v)

    #define   GET32vProRst_Version_minor(r32)                  _BFGET_(r32,23,16)
    #define   SET32vProRst_Version_minor(r32,v)                _BFSET_(r32,23,16,v)
    #define   GET16vProRst_Version_minor(r16)                  _BFGET_(r16, 7, 0)
    #define   SET16vProRst_Version_minor(r16,v)                _BFSET_(r16, 7, 0,v)

    #define   GET32vProRst_Version_major(r32)                  _BFGET_(r32,31,24)
    #define   SET32vProRst_Version_major(r32,v)                _BFSET_(r32,31,24,v)
    #define   GET16vProRst_Version_major(r16)                  _BFGET_(r16,15, 8)
    #define   SET16vProRst_Version_major(r16,v)                _BFSET_(r16,15, 8,v)

    #define     w32vProRst_Version                             {\
            UNSG32 uVersion_build                              :  8;\
            UNSG32 uVersion_rsvd                               :  8;\
            UNSG32 uVersion_minor                              :  8;\
            UNSG32 uVersion_major                              :  8;\
          }
    union { UNSG32 u32vProRst_Version;
            struct w32vProRst_Version;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_vPro_rstn(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32vProRst_vPro_rstn(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16vProRst_vPro_rstn(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16vProRst_vPro_rstn(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define   GET32vProRst_vPro_clk_en(r32)                    _BFGET_(r32, 1, 1)
    #define   SET32vProRst_vPro_clk_en(r32,v)                  _BFSET_(r32, 1, 1,v)
    #define   GET16vProRst_vPro_clk_en(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16vProRst_vPro_clk_en(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define     w32vProRst_vPro                                {\
            UNSG32 uvPro_rstn                                  :  1;\
            UNSG32 uvPro_clk_en                                :  1;\
            UNSG32 RSVDx4_b2                                   : 30;\
          }
    union { UNSG32 u32vProRst_vPro;
            struct w32vProRst_vPro;
          };
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vproBiu;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vproMisc;
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_clkCntL_val(r32)                    _BFGET_(r32,31, 0)
    #define   SET32vProRst_clkCntL_val(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32vProRst_clkCntL                             {\
            UNSG32 uclkCntL_val                                : 32;\
          }
    union { UNSG32 u32vProRst_clkCntL;
            struct w32vProRst_clkCntL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_clkCntH_val(r32)                    _BFGET_(r32,31, 0)
    #define   SET32vProRst_clkCntH_val(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32vProRst_clkCntH                             {\
            UNSG32 uclkCntH_val                                : 32;\
          }
    union { UNSG32 u32vProRst_clkCntH;
            struct w32vProRst_clkCntH;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_busEn_val(r32)                      _BFGET_(r32,31, 0)
    #define   SET32vProRst_busEn_val(r32,v)                    _BFSET_(r32,31, 0,v)

    #define     w32vProRst_busEn                               {\
            UNSG32 ubusEn_val                                  : 32;\
          }
    union { UNSG32 u32vProRst_busEn;
            struct w32vProRst_busEn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_busErr_val(r32)                     _BFGET_(r32,31, 0)
    #define   SET32vProRst_busErr_val(r32,v)                   _BFSET_(r32,31, 0,v)

    #define     w32vProRst_busErr                              {\
            UNSG32 ubusErr_val                                 : 32;\
          }
    union { UNSG32 u32vProRst_busErr;
            struct w32vProRst_busErr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vProRst_interrupt_status(r32)               _BFGET_(r32, 0, 0)
    #define   SET32vProRst_interrupt_status(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16vProRst_interrupt_status(r16)               _BFGET_(r16, 0, 0)
    #define   SET16vProRst_interrupt_status(r16,v)             _BFSET_(r16, 0, 0,v)

    #define     w32vProRst_interrupt                           {\
            UNSG32 uinterrupt_status                           :  1;\
            UNSG32 RSVDx20_b1                                  : 31;\
          }
    union { UNSG32 u32vProRst_interrupt;
            struct w32vProRst_interrupt;
          };
    ///////////////////////////////////////////////////////////
    } SIE_vProRst;

    typedef union  T32vProRst_Version
          { UNSG32 u32;
            struct w32vProRst_Version;
                 } T32vProRst_Version;
    typedef union  T32vProRst_vPro
          { UNSG32 u32;
            struct w32vProRst_vPro;
                 } T32vProRst_vPro;
    typedef union  T32vProRst_clkCntL
          { UNSG32 u32;
            struct w32vProRst_clkCntL;
                 } T32vProRst_clkCntL;
    typedef union  T32vProRst_clkCntH
          { UNSG32 u32;
            struct w32vProRst_clkCntH;
                 } T32vProRst_clkCntH;
    typedef union  T32vProRst_busEn
          { UNSG32 u32;
            struct w32vProRst_busEn;
                 } T32vProRst_busEn;
    typedef union  T32vProRst_busErr
          { UNSG32 u32;
            struct w32vProRst_busErr;
                 } T32vProRst_busErr;
    typedef union  T32vProRst_interrupt
          { UNSG32 u32;
            struct w32vProRst_interrupt;
                 } T32vProRst_interrupt;
    ///////////////////////////////////////////////////////////

    typedef union  TvProRst_Version
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_Version;
                   };
                 } TvProRst_Version;
    typedef union  TvProRst_vPro
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_vPro;
                   };
                 } TvProRst_vPro;
    typedef union  TvProRst_clkCntL
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_clkCntL;
                   };
                 } TvProRst_clkCntL;
    typedef union  TvProRst_clkCntH
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_clkCntH;
                   };
                 } TvProRst_clkCntH;
    typedef union  TvProRst_busEn
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_busEn;
                   };
                 } TvProRst_busEn;
    typedef union  TvProRst_busErr
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_busErr;
                   };
                 } TvProRst_busErr;
    typedef union  TvProRst_interrupt
          { UNSG32 u32[1];
            struct {
            struct w32vProRst_interrupt;
                   };
                 } TvProRst_interrupt;

    ///////////////////////////////////////////////////////////
     SIGN32 vProRst_drvrd(SIE_vProRst *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vProRst_drvwr(SIE_vProRst *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vProRst_reset(SIE_vProRst *p);
     SIGN32 vProRst_cmp  (SIE_vProRst *p, SIE_vProRst *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vProRst_check(p,pie,pfx,hLOG) vProRst_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vProRst_print(p,    pfx,hLOG) vProRst_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vProRst
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vPro                                     (4,4)
///     ###
///     * Constants for vPro submodule hSel decoding
///     ###
///     # # ----------------------------------------------------------
///               : SIZE               0x400000
///               : DEC_BIT            0x16
///                            ###
///                            * vProRst module
///                            ###
///               : RST_OFST           0x0
///               : RST_SIZE           0x10000
///               : RST_DEC_BIT        0x10
///                            ###
///                            * vCache
///                            ###
///               : VC_OFST            0x10000
///               : VC_SIZE            0x10000
///               : VC_DEC_BIT         0x10
///                            ###
///                            * vProMisc
///                            ###
///               : MX_OFST            0x80000
///               : MX_SIZE            0x80000
///               : MX_DEC_BIT         0x13
///                            ###
///                            * VSCOPE
///                            ###
///               : VX_OFST            0x100000
///               : VX_SIZE            0x100000
///               : VX_DEC_BIT         0x14
///                            ###
///                            * PCUBE
///                            ###
///               : P3_OFST            0x200000
///               : P3_SIZE            0x100000
///               : P3_DEC_BIT         0x14
///     @ 0x00000 Dummy                (P)
///               %unsigned 1  xxx                       0x0
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vPro
#define h_vPro (){}

    #define        vPro_SIZE                                   0x400000
    #define        vPro_DEC_BIT                                0x16
    #define        vPro_RST_OFST                               0x0
    #define        vPro_RST_SIZE                               0x10000
    #define        vPro_RST_DEC_BIT                            0x10
    #define        vPro_VC_OFST                                0x10000
    #define        vPro_VC_SIZE                                0x10000
    #define        vPro_VC_DEC_BIT                             0x10
    #define        vPro_MX_OFST                                0x80000
    #define        vPro_MX_SIZE                                0x80000
    #define        vPro_MX_DEC_BIT                             0x13
    #define        vPro_VX_OFST                                0x100000
    #define        vPro_VX_SIZE                                0x100000
    #define        vPro_VX_DEC_BIT                             0x14
    #define        vPro_P3_OFST                                0x200000
    #define        vPro_P3_SIZE                                0x100000
    #define        vPro_P3_DEC_BIT                             0x14
    ///////////////////////////////////////////////////////////
    #define     RA_vPro_Dummy                                  0x0000

    #define     BA_vPro_Dummy_xxx                              0x0000
    #define     B16vPro_Dummy_xxx                              0x0000
    #define   LSb32vPro_Dummy_xxx                                 0
    #define   LSb16vPro_Dummy_xxx                                 0
    #define       bvPro_Dummy_xxx                              1
    #define   MSK32vPro_Dummy_xxx                                 0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vPro {
    ///////////////////////////////////////////////////////////
    #define   GET32vPro_Dummy_xxx(r32)                         _BFGET_(r32, 0, 0)
    #define   SET32vPro_Dummy_xxx(r32,v)                       _BFSET_(r32, 0, 0,v)
    #define   GET16vPro_Dummy_xxx(r16)                         _BFGET_(r16, 0, 0)
    #define   SET16vPro_Dummy_xxx(r16,v)                       _BFSET_(r16, 0, 0,v)

    #define     w32vPro_Dummy                                  {\
            UNSG32 uDummy_xxx                                  :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32vPro_Dummy;
            struct w32vPro_Dummy;
          };
    ///////////////////////////////////////////////////////////
    } SIE_vPro;

    typedef union  T32vPro_Dummy
          { UNSG32 u32;
            struct w32vPro_Dummy;
                 } T32vPro_Dummy;
    ///////////////////////////////////////////////////////////

    typedef union  TvPro_Dummy
          { UNSG32 u32[1];
            struct {
            struct w32vPro_Dummy;
                   };
                 } TvPro_Dummy;

    ///////////////////////////////////////////////////////////
     SIGN32 vPro_drvrd(SIE_vPro *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vPro_drvwr(SIE_vPro *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vPro_reset(SIE_vPro *p);
     SIGN32 vPro_cmp  (SIE_vPro *p, SIE_vPro *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vPro_check(p,pie,pfx,hLOG) vPro_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vPro_print(p,    pfx,hLOG) vPro_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vPro
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: vpro_spec.h
////////////////////////////////////////////////////////////

