/********************************************************************************
 * 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: soc.h
////////////////////////////////////////////////////////////
#ifndef soc_h
#define soc_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 IRQ                                      (4,4)
///     # # ----------------------------------------------------------
///               : mc_irq             0x0
///               : v2gInt             0x1
///               : IntrFigo           0x2
///               : IntrHwBlk          0x3
///               : bcmIntr            0x4
///               : intrPb0            0x5
///               : intrPb1            0x6
///               : intrPb2            0x7
///               : ictlInst0CPUIrq    0x8
///               : ictlInst1CPUIrq    0x9
///               : ictlInst2CPUIrq    0xA
///               : usb0Intr           0xB
///               : nanfIntr           0xC
///               : emmc_int           0xD
///               : ptp1Irq            0xE
///               : sdio_interrupt     0xF
///               : eth1Irq            0x10
///               : sm2socHwInt0       0x11
///               : sm2socHwInt1       0x12
///               : sm2socSwInt        0x13
///               : intrGfx3D          0x14
///               : nCTIIRQ0           0x15
///               : nCTIIRQ1           0x16
///               : nPMUIRQ0           0x17
///               : nPMUIRQ1           0x18
///               : nPMUIRQ2           0x19
///               : nPMUIRQ3           0x1A
///               : nAXIERRIRQ         0x1B
///               : fvs_crc2icu_intr   0x1C
///               : XINTdec            0x1D
///               : intrAhbTrc         0x1E
///               : AxiErrMonIntr      0x1F
///               : AxiWrFiltIntr      0x20
///               : dHubIntrAvio0      0x21
///               : dHubIntrAvio1      0x22
///               : zspInt             0x23
///               : TOTAL_IRQ          0x24
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       0B, bits:       0b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IRQ
#define h_IRQ (){}

    #define        IRQ_mc_irq                                  0x0
    #define        IRQ_v2gInt                                  0x1
    #define        IRQ_IntrFigo                                0x2
    #define        IRQ_IntrHwBlk                               0x3
    #define        IRQ_bcmIntr                                 0x4
    #define        IRQ_intrPb0                                 0x5
    #define        IRQ_intrPb1                                 0x6
    #define        IRQ_intrPb2                                 0x7
    #define        IRQ_ictlInst0CPUIrq                         0x8
    #define        IRQ_ictlInst1CPUIrq                         0x9
    #define        IRQ_ictlInst2CPUIrq                         0xA
    #define        IRQ_usb0Intr                                0xB
    #define        IRQ_nanfIntr                                0xC
    #define        IRQ_emmc_int                                0xD
    #define        IRQ_ptp1Irq                                 0xE
    #define        IRQ_sdio_interrupt                          0xF
    #define        IRQ_eth1Irq                                 0x10
    #define        IRQ_sm2socHwInt0                            0x11
    #define        IRQ_sm2socHwInt1                            0x12
    #define        IRQ_sm2socSwInt                             0x13
    #define        IRQ_intrGfx3D                               0x14
    #define        IRQ_nCTIIRQ0                                0x15
    #define        IRQ_nCTIIRQ1                                0x16
    #define        IRQ_nPMUIRQ0                                0x17
    #define        IRQ_nPMUIRQ1                                0x18
    #define        IRQ_nPMUIRQ2                                0x19
    #define        IRQ_nPMUIRQ3                                0x1A
    #define        IRQ_nAXIERRIRQ                              0x1B
    #define        IRQ_fvs_crc2icu_intr                        0x1C
    #define        IRQ_XINTdec                                 0x1D
    #define        IRQ_intrAhbTrc                              0x1E
    #define        IRQ_AxiErrMonIntr                           0x1F
    #define        IRQ_AxiWrFiltIntr                           0x20
    #define        IRQ_dHubIntrAvio0                           0x21
    #define        IRQ_dHubIntrAvio1                           0x22
    #define        IRQ_zspInt                                  0x23
    #define        IRQ_TOTAL_IRQ                               0x24
    ///////////////////////////////////////////////////////////

#endif
//////
/// ENDOFINTERFACE: IRQ
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE streamCtl               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               ###
///               * The base address of the frame
///               ###
///               %unsigned 32 baseAddr                  0x0
///     @ 0x00004                      (P)
///               ###
///               * The width of the frame
///               ###
///               %unsigned 16 width                     0x0
///               %%        16         # Stuffing bits...
///     @ 0x00008                      (P)
///               ###
///               * The stride of the DDR image. That is the distance between on pixel and the pixel directly below it.
///               ###
///               %unsigned 16 stride                    0x0
///               %%        16         # Stuffing bits...
///     @ 0x0000C                      (P)
///               ###
///               * The height of the frame
///               ###
///               %unsigned 16 height                    0x0
///               %%        16         # Stuffing bits...
///     @ 0x00010                      (P)
///               ###
///               * The intended value quantization parameters
///               ###
///               %unsigned 8  qp                        0x0
///               %%        24         # Stuffing bits...
///     @ 0x00014                      (P)
///               ###
///               * The target compression ratio
///               * Note that the MTR only supports bandwidth compression, but not memory footprint compression. We may support an optional hard compression ratio cap so we can reduce memory footprint as well.
///               ###
///               %unsigned 8  compressRatio             0x0
///               %%        24         # Stuffing bits...
///     @ 0x00018                      (P)
///               ###
///               * Compression scheme
///               * Note: Scheme C not supported in our current application
///               ###
///               %unsigned 3  scheme                    0x0
///                                    : A                         0x0
///                                    : B                         0x1
///                                    : C                         0x2
///                                    : D                         0x3
///                                    : E                         0x4
///               %%        29         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      28B, bits:      99b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_streamCtl
#define h_streamCtl (){}

    #define     BA_streamCtl_baseAddr                          0x0000
    #define     B16streamCtl_baseAddr                          0x0000
    #define   LSb32streamCtl_baseAddr                             0
    #define   LSb16streamCtl_baseAddr                             0
    #define       bstreamCtl_baseAddr                          32
    #define   MSK32streamCtl_baseAddr                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_streamCtl_width                             0x0004
    #define     B16streamCtl_width                             0x0004
    #define   LSb32streamCtl_width                                0
    #define   LSb16streamCtl_width                                0
    #define       bstreamCtl_width                             16
    #define   MSK32streamCtl_width                                0x0000FFFF
    ///////////////////////////////////////////////////////////

    #define     BA_streamCtl_stride                            0x0008
    #define     B16streamCtl_stride                            0x0008
    #define   LSb32streamCtl_stride                               0
    #define   LSb16streamCtl_stride                               0
    #define       bstreamCtl_stride                            16
    #define   MSK32streamCtl_stride                               0x0000FFFF
    ///////////////////////////////////////////////////////////

    #define     BA_streamCtl_height                            0x000C
    #define     B16streamCtl_height                            0x000C
    #define   LSb32streamCtl_height                               0
    #define   LSb16streamCtl_height                               0
    #define       bstreamCtl_height                            16
    #define   MSK32streamCtl_height                               0x0000FFFF
    ///////////////////////////////////////////////////////////

    #define     BA_streamCtl_qp                                0x0010
    #define     B16streamCtl_qp                                0x0010
    #define   LSb32streamCtl_qp                                   0
    #define   LSb16streamCtl_qp                                   0
    #define       bstreamCtl_qp                                8
    #define   MSK32streamCtl_qp                                   0x000000FF
    ///////////////////////////////////////////////////////////

    #define     BA_streamCtl_compressRatio                     0x0014
    #define     B16streamCtl_compressRatio                     0x0014
    #define   LSb32streamCtl_compressRatio                        0
    #define   LSb16streamCtl_compressRatio                        0
    #define       bstreamCtl_compressRatio                     8
    #define   MSK32streamCtl_compressRatio                        0x000000FF
    ///////////////////////////////////////////////////////////

    #define     BA_streamCtl_scheme                            0x0018
    #define     B16streamCtl_scheme                            0x0018
    #define   LSb32streamCtl_scheme                               0
    #define   LSb16streamCtl_scheme                               0
    #define       bstreamCtl_scheme                            3
    #define   MSK32streamCtl_scheme                               0x00000007
    #define        streamCtl_scheme_A                                       0x0
    #define        streamCtl_scheme_B                                       0x1
    #define        streamCtl_scheme_C                                       0x2
    #define        streamCtl_scheme_D                                       0x3
    #define        streamCtl_scheme_E                                       0x4
    ///////////////////////////////////////////////////////////

    typedef struct SIE_streamCtl {
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_baseAddr(r32)                     _BFGET_(r32,31, 0)
    #define   SET32streamCtl_baseAddr(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_baseAddr                                  : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_width(r32)                        _BFGET_(r32,15, 0)
    #define   SET32streamCtl_width(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16streamCtl_width(r16)                        _BFGET_(r16,15, 0)
    #define   SET16streamCtl_width(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_width                                     : 16;
            UNSG32 RSVDx4_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_stride(r32)                       _BFGET_(r32,15, 0)
    #define   SET32streamCtl_stride(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16streamCtl_stride(r16)                       _BFGET_(r16,15, 0)
    #define   SET16streamCtl_stride(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_stride                                    : 16;
            UNSG32 RSVDx8_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_height(r32)                       _BFGET_(r32,15, 0)
    #define   SET32streamCtl_height(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16streamCtl_height(r16)                       _BFGET_(r16,15, 0)
    #define   SET16streamCtl_height(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_height                                    : 16;
            UNSG32 RSVDxC_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_qp(r32)                           _BFGET_(r32, 7, 0)
    #define   SET32streamCtl_qp(r32,v)                         _BFSET_(r32, 7, 0,v)
    #define   GET16streamCtl_qp(r16)                           _BFGET_(r16, 7, 0)
    #define   SET16streamCtl_qp(r16,v)                         _BFSET_(r16, 7, 0,v)

            UNSG32 u_qp                                        :  8;
            UNSG32 RSVDx10_b8                                  : 24;
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_compressRatio(r32)                _BFGET_(r32, 7, 0)
    #define   SET32streamCtl_compressRatio(r32,v)              _BFSET_(r32, 7, 0,v)
    #define   GET16streamCtl_compressRatio(r16)                _BFGET_(r16, 7, 0)
    #define   SET16streamCtl_compressRatio(r16,v)              _BFSET_(r16, 7, 0,v)

            UNSG32 u_compressRatio                             :  8;
            UNSG32 RSVDx14_b8                                  : 24;
    ///////////////////////////////////////////////////////////
    #define   GET32streamCtl_scheme(r32)                       _BFGET_(r32, 2, 0)
    #define   SET32streamCtl_scheme(r32,v)                     _BFSET_(r32, 2, 0,v)
    #define   GET16streamCtl_scheme(r16)                       _BFGET_(r16, 2, 0)
    #define   SET16streamCtl_scheme(r16,v)                     _BFSET_(r16, 2, 0,v)

            UNSG32 u_scheme                                    :  3;
            UNSG32 RSVDx18_b3                                  : 29;
    ///////////////////////////////////////////////////////////
    } SIE_streamCtl;

    ///////////////////////////////////////////////////////////
     SIGN32 streamCtl_drvrd(SIE_streamCtl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 streamCtl_drvwr(SIE_streamCtl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void streamCtl_reset(SIE_streamCtl *p);
     SIGN32 streamCtl_cmp  (SIE_streamCtl *p, SIE_streamCtl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define streamCtl_check(p,pie,pfx,hLOG) streamCtl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define streamCtl_print(p,    pfx,hLOG) streamCtl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: streamCtl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE zOrderCtl               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 baseAddr             (P)
///               ###
///               * The base address of the Z-order rectangle
///               ###
///               %unsigned 32 val                       0x0
///                                    ###
///                                    * Must be 128-byte (AXI burst x16) aligned. Lower 7-bits will be ignored.
///                                    ###
///     @ 0x00004 width                (P)
///               ###
///               * The width of the Z-order rectangle
///               ###
///               %unsigned 13 val                       0x0
///                                    ###
///                                    * Max supported width is 2048 pixels for 32-bit pixels, 4096 for 16-bit pixels, and 8192 for 8-bit pixels.
///                                    ###
///               %%        19         # Stuffing bits...
///     @ 0x00008 stride               (P)
///               ###
///               * The stride of the DDR image. That is the distance between one pixel and the pixel directly below it.
///               ###
///               %unsigned 16 val                       0x0
///                                    ###
///                                    * Must be 128-byte (AXI burst x16) aligned. Lower 7-bits will be ignored. Max supported stride is 16k pixels for 32-bit pixels, 32k pixels for 16-bit pixels, and 64k for 8-bit pixels.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0000C height               (P)
///               ###
///               * The height of the Z-order rectangle
///               ###
///               %unsigned 11 val                       0x0
///                                    ###
///                                    * Max supported height is 2048 pixels.
///                                    ###
///               %%        21         # Stuffing bits...
///     @ 0x00010 active               (P)
///               ###
///               * Bit indicating whether the current rectangle filtering is active
///               ###
///               %unsigned 1  val                       0x0
///               %%        31         # Stuffing bits...
///     @ 0x00014 visible              (P)
///               ###
///               * Bit indicating whether the current region is visible
///               ###
///               %unsigned 1  val                       0x0
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      24B, bits:      74b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_zOrderCtl
#define h_zOrderCtl (){}

    #define     RA_zOrderCtl_baseAddr                          0x0000

    #define     BA_zOrderCtl_baseAddr_val                      0x0000
    #define     B16zOrderCtl_baseAddr_val                      0x0000
    #define   LSb32zOrderCtl_baseAddr_val                         0
    #define   LSb16zOrderCtl_baseAddr_val                         0
    #define       bzOrderCtl_baseAddr_val                      32
    #define   MSK32zOrderCtl_baseAddr_val                         0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_zOrderCtl_width                             0x0004

    #define     BA_zOrderCtl_width_val                         0x0004
    #define     B16zOrderCtl_width_val                         0x0004
    #define   LSb32zOrderCtl_width_val                            0
    #define   LSb16zOrderCtl_width_val                            0
    #define       bzOrderCtl_width_val                         13
    #define   MSK32zOrderCtl_width_val                            0x00001FFF
    ///////////////////////////////////////////////////////////
    #define     RA_zOrderCtl_stride                            0x0008

    #define     BA_zOrderCtl_stride_val                        0x0008
    #define     B16zOrderCtl_stride_val                        0x0008
    #define   LSb32zOrderCtl_stride_val                           0
    #define   LSb16zOrderCtl_stride_val                           0
    #define       bzOrderCtl_stride_val                        16
    #define   MSK32zOrderCtl_stride_val                           0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_zOrderCtl_height                            0x000C

    #define     BA_zOrderCtl_height_val                        0x000C
    #define     B16zOrderCtl_height_val                        0x000C
    #define   LSb32zOrderCtl_height_val                           0
    #define   LSb16zOrderCtl_height_val                           0
    #define       bzOrderCtl_height_val                        11
    #define   MSK32zOrderCtl_height_val                           0x000007FF
    ///////////////////////////////////////////////////////////
    #define     RA_zOrderCtl_active                            0x0010

    #define     BA_zOrderCtl_active_val                        0x0010
    #define     B16zOrderCtl_active_val                        0x0010
    #define   LSb32zOrderCtl_active_val                           0
    #define   LSb16zOrderCtl_active_val                           0
    #define       bzOrderCtl_active_val                        1
    #define   MSK32zOrderCtl_active_val                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_zOrderCtl_visible                           0x0014

    #define     BA_zOrderCtl_visible_val                       0x0014
    #define     B16zOrderCtl_visible_val                       0x0014
    #define   LSb32zOrderCtl_visible_val                          0
    #define   LSb16zOrderCtl_visible_val                          0
    #define       bzOrderCtl_visible_val                       1
    #define   MSK32zOrderCtl_visible_val                          0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_zOrderCtl {
    ///////////////////////////////////////////////////////////
    #define   GET32zOrderCtl_baseAddr_val(r32)                 _BFGET_(r32,31, 0)
    #define   SET32zOrderCtl_baseAddr_val(r32,v)               _BFSET_(r32,31, 0,v)

    #define     w32zOrderCtl_baseAddr                          {\
            UNSG32 ubaseAddr_val                               : 32;\
          }
    union { UNSG32 u32zOrderCtl_baseAddr;
            struct w32zOrderCtl_baseAddr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32zOrderCtl_width_val(r32)                    _BFGET_(r32,12, 0)
    #define   SET32zOrderCtl_width_val(r32,v)                  _BFSET_(r32,12, 0,v)
    #define   GET16zOrderCtl_width_val(r16)                    _BFGET_(r16,12, 0)
    #define   SET16zOrderCtl_width_val(r16,v)                  _BFSET_(r16,12, 0,v)

    #define     w32zOrderCtl_width                             {\
            UNSG32 uwidth_val                                  : 13;\
            UNSG32 RSVDx4_b13                                  : 19;\
          }
    union { UNSG32 u32zOrderCtl_width;
            struct w32zOrderCtl_width;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32zOrderCtl_stride_val(r32)                   _BFGET_(r32,15, 0)
    #define   SET32zOrderCtl_stride_val(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16zOrderCtl_stride_val(r16)                   _BFGET_(r16,15, 0)
    #define   SET16zOrderCtl_stride_val(r16,v)                 _BFSET_(r16,15, 0,v)

    #define     w32zOrderCtl_stride                            {\
            UNSG32 ustride_val                                 : 16;\
            UNSG32 RSVDx8_b16                                  : 16;\
          }
    union { UNSG32 u32zOrderCtl_stride;
            struct w32zOrderCtl_stride;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32zOrderCtl_height_val(r32)                   _BFGET_(r32,10, 0)
    #define   SET32zOrderCtl_height_val(r32,v)                 _BFSET_(r32,10, 0,v)
    #define   GET16zOrderCtl_height_val(r16)                   _BFGET_(r16,10, 0)
    #define   SET16zOrderCtl_height_val(r16,v)                 _BFSET_(r16,10, 0,v)

    #define     w32zOrderCtl_height                            {\
            UNSG32 uheight_val                                 : 11;\
            UNSG32 RSVDxC_b11                                  : 21;\
          }
    union { UNSG32 u32zOrderCtl_height;
            struct w32zOrderCtl_height;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32zOrderCtl_active_val(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32zOrderCtl_active_val(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16zOrderCtl_active_val(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16zOrderCtl_active_val(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32zOrderCtl_active                            {\
            UNSG32 uactive_val                                 :  1;\
            UNSG32 RSVDx10_b1                                  : 31;\
          }
    union { UNSG32 u32zOrderCtl_active;
            struct w32zOrderCtl_active;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32zOrderCtl_visible_val(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32zOrderCtl_visible_val(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16zOrderCtl_visible_val(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16zOrderCtl_visible_val(r16,v)                _BFSET_(r16, 0, 0,v)

    #define     w32zOrderCtl_visible                           {\
            UNSG32 uvisible_val                                :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32zOrderCtl_visible;
            struct w32zOrderCtl_visible;
          };
    ///////////////////////////////////////////////////////////
    } SIE_zOrderCtl;

    typedef union  T32zOrderCtl_baseAddr
          { UNSG32 u32;
            struct w32zOrderCtl_baseAddr;
                 } T32zOrderCtl_baseAddr;
    typedef union  T32zOrderCtl_width
          { UNSG32 u32;
            struct w32zOrderCtl_width;
                 } T32zOrderCtl_width;
    typedef union  T32zOrderCtl_stride
          { UNSG32 u32;
            struct w32zOrderCtl_stride;
                 } T32zOrderCtl_stride;
    typedef union  T32zOrderCtl_height
          { UNSG32 u32;
            struct w32zOrderCtl_height;
                 } T32zOrderCtl_height;
    typedef union  T32zOrderCtl_active
          { UNSG32 u32;
            struct w32zOrderCtl_active;
                 } T32zOrderCtl_active;
    typedef union  T32zOrderCtl_visible
          { UNSG32 u32;
            struct w32zOrderCtl_visible;
                 } T32zOrderCtl_visible;
    ///////////////////////////////////////////////////////////

    typedef union  TzOrderCtl_baseAddr
          { UNSG32 u32[1];
            struct {
            struct w32zOrderCtl_baseAddr;
                   };
                 } TzOrderCtl_baseAddr;
    typedef union  TzOrderCtl_width
          { UNSG32 u32[1];
            struct {
            struct w32zOrderCtl_width;
                   };
                 } TzOrderCtl_width;
    typedef union  TzOrderCtl_stride
          { UNSG32 u32[1];
            struct {
            struct w32zOrderCtl_stride;
                   };
                 } TzOrderCtl_stride;
    typedef union  TzOrderCtl_height
          { UNSG32 u32[1];
            struct {
            struct w32zOrderCtl_height;
                   };
                 } TzOrderCtl_height;
    typedef union  TzOrderCtl_active
          { UNSG32 u32[1];
            struct {
            struct w32zOrderCtl_active;
                   };
                 } TzOrderCtl_active;
    typedef union  TzOrderCtl_visible
          { UNSG32 u32[1];
            struct {
            struct w32zOrderCtl_visible;
                   };
                 } TzOrderCtl_visible;

    ///////////////////////////////////////////////////////////
     SIGN32 zOrderCtl_drvrd(SIE_zOrderCtl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 zOrderCtl_drvwr(SIE_zOrderCtl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void zOrderCtl_reset(SIE_zOrderCtl *p);
     SIGN32 zOrderCtl_cmp  (SIE_zOrderCtl *p, SIE_zOrderCtl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define zOrderCtl_check(p,pie,pfx,hLOG) zOrderCtl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define zOrderCtl_print(p,    pfx,hLOG) zOrderCtl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: zOrderCtl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE mtr                     biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 zOrderCtl            (P)
///     # 0x00000 zOAry                
///               $zOrderCtl           zOAry             REG       [4]
///                                    ###
///                                    * 4 rectangles are defined
///                                    ###
///     @ 0x00060 zOActive             (P)
///               ###
///               * Bit indicating whether Z-order filtering is active
///               ###
///               %unsigned 1  val                       0x0
///               %%        31         # Stuffing bits...
///     @ 0x00064 zOBypLength          (P)
///               ###
///               * Specifies the upper limit of the transaction burst length that will always be bypassed
///               ###
///               %unsigned 4  val                       0x3
///                                    ###
///                                    * Transactions of burst length < bypLength will be bypassed.
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     104B, bits:     301b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_mtr
#define h_mtr (){}

    #define     RA_mtr_zOrderCtl                               0x0000
    #define     RA_mtr_zOAry                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_mtr_zOActive                                0x0060

    #define     BA_mtr_zOActive_val                            0x0060
    #define     B16mtr_zOActive_val                            0x0060
    #define   LSb32mtr_zOActive_val                               0
    #define   LSb16mtr_zOActive_val                               0
    #define       bmtr_zOActive_val                            1
    #define   MSK32mtr_zOActive_val                               0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_mtr_zOBypLength                             0x0064

    #define     BA_mtr_zOBypLength_val                         0x0064
    #define     B16mtr_zOBypLength_val                         0x0064
    #define   LSb32mtr_zOBypLength_val                            0
    #define   LSb16mtr_zOBypLength_val                            0
    #define       bmtr_zOBypLength_val                         4
    #define   MSK32mtr_zOBypLength_val                            0x0000000F
    ///////////////////////////////////////////////////////////

    typedef struct SIE_mtr {
    ///////////////////////////////////////////////////////////
              SIE_zOrderCtl                                    ie_zOAry[4];
    ///////////////////////////////////////////////////////////
    #define   GET32mtr_zOActive_val(r32)                       _BFGET_(r32, 0, 0)
    #define   SET32mtr_zOActive_val(r32,v)                     _BFSET_(r32, 0, 0,v)
    #define   GET16mtr_zOActive_val(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16mtr_zOActive_val(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define     w32mtr_zOActive                                {\
            UNSG32 uzOActive_val                               :  1;\
            UNSG32 RSVDx60_b1                                  : 31;\
          }
    union { UNSG32 u32mtr_zOActive;
            struct w32mtr_zOActive;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32mtr_zOBypLength_val(r32)                    _BFGET_(r32, 3, 0)
    #define   SET32mtr_zOBypLength_val(r32,v)                  _BFSET_(r32, 3, 0,v)
    #define   GET16mtr_zOBypLength_val(r16)                    _BFGET_(r16, 3, 0)
    #define   SET16mtr_zOBypLength_val(r16,v)                  _BFSET_(r16, 3, 0,v)

    #define     w32mtr_zOBypLength                             {\
            UNSG32 uzOBypLength_val                            :  4;\
            UNSG32 RSVDx64_b4                                  : 28;\
          }
    union { UNSG32 u32mtr_zOBypLength;
            struct w32mtr_zOBypLength;
          };
    ///////////////////////////////////////////////////////////
    } SIE_mtr;

    typedef union  T32mtr_zOActive
          { UNSG32 u32;
            struct w32mtr_zOActive;
                 } T32mtr_zOActive;
    typedef union  T32mtr_zOBypLength
          { UNSG32 u32;
            struct w32mtr_zOBypLength;
                 } T32mtr_zOBypLength;
    ///////////////////////////////////////////////////////////

    typedef union  Tmtr_zOActive
          { UNSG32 u32[1];
            struct {
            struct w32mtr_zOActive;
                   };
                 } Tmtr_zOActive;
    typedef union  Tmtr_zOBypLength
          { UNSG32 u32[1];
            struct {
            struct w32mtr_zOBypLength;
                   };
                 } Tmtr_zOBypLength;

    ///////////////////////////////////////////////////////////
     SIGN32 mtr_drvrd(SIE_mtr *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 mtr_drvwr(SIE_mtr *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void mtr_reset(SIE_mtr *p);
     SIGN32 mtr_cmp  (SIE_mtr *p, SIE_mtr *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define mtr_check(p,pie,pfx,hLOG) mtr_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define mtr_print(p,    pfx,hLOG) mtr_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: mtr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE seSetting                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 setting              (P)
///               ###
///               * Access Control Register
///               ###
///               %unsigned 16 startAddr3116             0x0
///                                    ###
///                                    * The starting address[31:16] of access control region. The address has to be region-size aligned
///                                    ###
///               %unsigned 4  regionSize                0x0
///                                    : size64KB                  0x0
///                                    : size128KB                 0x1
///                                    : size256KB                 0x2
///                                    : size512KB                 0x3
///                                    : size1MB                   0x4
///                                    : size2MB                   0x5
///                                    : size4MB                   0x6
///                                    : size8MB                   0x7
///                                    : size16MB                  0x8
///                                    : size32MB                  0x9
///                                    : size64MB                  0xA
///                                    : size128MB                 0xB
///                                    : size256MB                 0xC
///                                    : size512MB                 0xD
///                                                 ###
///                                                 * size of protection region
///                                                 ###
///               %unsigned 1  enable                    0x0
///                                    ###
///                                    * 1'b1: The access control is enabled as specified by starting address and region size.
///                                    * 1'b0: The access control is disabled
///                                    ###
///               %%        11         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      21b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_seSetting
#define h_seSetting (){}

    #define     RA_seSetting_setting                           0x0000

    #define     BA_seSetting_setting_startAddr3116             0x0000
    #define     B16seSetting_setting_startAddr3116             0x0000
    #define   LSb32seSetting_setting_startAddr3116                0
    #define   LSb16seSetting_setting_startAddr3116                0
    #define       bseSetting_setting_startAddr3116             16
    #define   MSK32seSetting_setting_startAddr3116                0x0000FFFF

    #define     BA_seSetting_setting_regionSize                0x0002
    #define     B16seSetting_setting_regionSize                0x0002
    #define   LSb32seSetting_setting_regionSize                   16
    #define   LSb16seSetting_setting_regionSize                   0
    #define       bseSetting_setting_regionSize                4
    #define   MSK32seSetting_setting_regionSize                   0x000F0000
    #define        seSetting_setting_regionSize_size64KB                    0x0
    #define        seSetting_setting_regionSize_size128KB                   0x1
    #define        seSetting_setting_regionSize_size256KB                   0x2
    #define        seSetting_setting_regionSize_size512KB                   0x3
    #define        seSetting_setting_regionSize_size1MB                     0x4
    #define        seSetting_setting_regionSize_size2MB                     0x5
    #define        seSetting_setting_regionSize_size4MB                     0x6
    #define        seSetting_setting_regionSize_size8MB                     0x7
    #define        seSetting_setting_regionSize_size16MB                    0x8
    #define        seSetting_setting_regionSize_size32MB                    0x9
    #define        seSetting_setting_regionSize_size64MB                    0xA
    #define        seSetting_setting_regionSize_size128MB                   0xB
    #define        seSetting_setting_regionSize_size256MB                   0xC
    #define        seSetting_setting_regionSize_size512MB                   0xD

    #define     BA_seSetting_setting_enable                    0x0002
    #define     B16seSetting_setting_enable                    0x0002
    #define   LSb32seSetting_setting_enable                       20
    #define   LSb16seSetting_setting_enable                       4
    #define       bseSetting_setting_enable                    1
    #define   MSK32seSetting_setting_enable                       0x00100000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_seSetting {
    ///////////////////////////////////////////////////////////
    #define   GET32seSetting_setting_startAddr3116(r32)        _BFGET_(r32,15, 0)
    #define   SET32seSetting_setting_startAddr3116(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16seSetting_setting_startAddr3116(r16)        _BFGET_(r16,15, 0)
    #define   SET16seSetting_setting_startAddr3116(r16,v)      _BFSET_(r16,15, 0,v)

    #define   GET32seSetting_setting_regionSize(r32)           _BFGET_(r32,19,16)
    #define   SET32seSetting_setting_regionSize(r32,v)         _BFSET_(r32,19,16,v)
    #define   GET16seSetting_setting_regionSize(r16)           _BFGET_(r16, 3, 0)
    #define   SET16seSetting_setting_regionSize(r16,v)         _BFSET_(r16, 3, 0,v)

    #define   GET32seSetting_setting_enable(r32)               _BFGET_(r32,20,20)
    #define   SET32seSetting_setting_enable(r32,v)             _BFSET_(r32,20,20,v)
    #define   GET16seSetting_setting_enable(r16)               _BFGET_(r16, 4, 4)
    #define   SET16seSetting_setting_enable(r16,v)             _BFSET_(r16, 4, 4,v)

    #define     w32seSetting_setting                           {\
            UNSG32 usetting_startAddr3116                      : 16;\
            UNSG32 usetting_regionSize                         :  4;\
            UNSG32 usetting_enable                             :  1;\
            UNSG32 RSVDx0_b21                                  : 11;\
          }
    union { UNSG32 u32seSetting_setting;
            struct w32seSetting_setting;
          };
    ///////////////////////////////////////////////////////////
    } SIE_seSetting;

    typedef union  T32seSetting_setting
          { UNSG32 u32;
            struct w32seSetting_setting;
                 } T32seSetting_setting;
    ///////////////////////////////////////////////////////////

    typedef union  TseSetting_setting
          { UNSG32 u32[1];
            struct {
            struct w32seSetting_setting;
                   };
                 } TseSetting_setting;

    ///////////////////////////////////////////////////////////
     SIGN32 seSetting_drvrd(SIE_seSetting *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 seSetting_drvwr(SIE_seSetting *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void seSetting_reset(SIE_seSetting *p);
     SIGN32 seSetting_cmp  (SIE_seSetting *p, SIE_seSetting *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define seSetting_check(p,pie,pfx,hLOG) seSetting_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define seSetting_print(p,    pfx,hLOG) seSetting_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: seSetting
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE seRegion                biu              (4,4)
///     ###
///     * Access Control Registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 CTRL0                
///               $seSetting           CTRL0             REG          
///                                    ###
///                                    * Region 0 access control register
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 CTRL1                
///               $seSetting           CTRL1             REG          
///                                    ###
///                                    * Region 1 access control register
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 CTRL2                
///               $seSetting           CTRL2             REG          
///                                    ###
///                                    * Region 2 access control register
///                                    ###
///     @ 0x0000C                      (P)
///     # 0x0000C CTRL3                
///               $seSetting           CTRL3             REG          
///                                    ###
///                                    * Region 3 access control register
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 CTRL4                
///               $seSetting           CTRL4             REG          
///                                    ###
///                                    * Region 4 access control register
///                                    ###
///     @ 0x00014                      (P)
///     # 0x00014 CTRL5                
///               $seSetting           CTRL5             REG          
///                                    ###
///                                    * Region 5 access control register
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 CTRL6                
///               $seSetting           CTRL6             REG          
///                                    ###
///                                    * Region 6 access control register
///                                    ###
///     @ 0x0001C                      (P)
///     # 0x0001C CTRL7                
///               $seSetting           CTRL7             REG          
///                                    ###
///                                    * Region 7 access control register
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     168b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_seRegion
#define h_seRegion (){}

    #define     RA_seRegion_CTRL0                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL1                              0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL2                              0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL3                              0x000C
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL4                              0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL5                              0x0014
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL6                              0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_seRegion_CTRL7                              0x001C
    ///////////////////////////////////////////////////////////

    typedef struct SIE_seRegion {
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL0;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL1;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL2;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL3;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL4;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL5;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL6;
    ///////////////////////////////////////////////////////////
              SIE_seSetting                                    ie_CTRL7;
    ///////////////////////////////////////////////////////////
    } SIE_seRegion;

    ///////////////////////////////////////////////////////////
     SIGN32 seRegion_drvrd(SIE_seRegion *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 seRegion_drvwr(SIE_seRegion *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void seRegion_reset(SIE_seRegion *p);
     SIGN32 seRegion_cmp  (SIE_seRegion *p, SIE_seRegion *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define seRegion_check(p,pie,pfx,hLOG) seRegion_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define seRegion_print(p,    pfx,hLOG) seRegion_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: seRegion
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ACCTX                                    (4,4)
///     ###
///     * Access control setting for Berlin
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 CPU0WMEM             
///               $seRegion            CPU0WMEM          REG          
///                                    ###
///                                    * Access control for CPU0 write accessing system memory
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 CPU0RMEM             
///               $seRegion            CPU0RMEM          REG          
///                                    ###
///                                    * Access control for CPU0 read accessing system memory
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 PERIFMSTWMEM         
///               $seRegion            PERIFMSTWMEM      REG          
///                                    ###
///                                    * Access control for Peripheral write accessing system memory
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 PERIFMSTRMEM         
///               $seRegion            PERIFMSTRMEM      REG          
///                                    ###
///                                    * Access control for Peripheral read accessing system memory
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:     672b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ACCTX
#define h_ACCTX (){}

    #define     RA_ACCTX_CPU0WMEM                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ACCTX_CPU0RMEM                              0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_ACCTX_PERIFMSTWMEM                          0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_ACCTX_PERIFMSTRMEM                          0x0060
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ACCTX {
    ///////////////////////////////////////////////////////////
              SIE_seRegion                                     ie_CPU0WMEM;
    ///////////////////////////////////////////////////////////
              SIE_seRegion                                     ie_CPU0RMEM;
    ///////////////////////////////////////////////////////////
              SIE_seRegion                                     ie_PERIFMSTWMEM;
    ///////////////////////////////////////////////////////////
              SIE_seRegion                                     ie_PERIFMSTRMEM;
    ///////////////////////////////////////////////////////////
    } SIE_ACCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ACCTX_drvrd(SIE_ACCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ACCTX_drvwr(SIE_ACCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ACCTX_reset(SIE_ACCTX *p);
     SIGN32 ACCTX_cmp  (SIE_ACCTX *p, SIE_ACCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ACCTX_check(p,pie,pfx,hLOG) ACCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ACCTX_print(p,    pfx,hLOG) ACCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ACCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE pll                                      (4,4)
///     ###
///     * SSPLL is a differential, wide range, and low power spread-spectrum PLL that is also capable of
///     * adding in a fixed frequency offset in about 1 ppm/step resolution.
///     * .. Input Frequency: Fref: 8 MHz ~ 2 GHz
///     * Output Frequency: Fout: 9 MHz ~ 3GHz for differential outputs CLKOUTP and CLKOUTN;
///     * 9 MHz ~ 2.1 GHz for single -ended output CLKOUT.
///     * .. Fout(CLKOUT) = Fref *(4*N/M) / CLKOUT_SE_DIV_SEL
///     * Fout(CLKOUTP, CLKOUTN) = Fref*(4*N/M) / CLKOUT_DIFF_DIV_SEL
///     * M: Reference Divider: 1 to 511.
///     * N: Feedback Divider: 1 to 511.
///     * VCODIV: VCO differential divider is controlled by CLKOUT_DIFF_DIV_SEL.
///     * VCO single-ended divider is controlled by CLKOUT_SE_DIV_SEL.
///     * Divider value = 1 1,2,3,4.128.
///     * Update Rate: Fref / M = 8 to 32 MHz (to maintain the PLL stability).
///     * NOTE: Although VCO can be operated between 12 ~ 3 GHz, the 1 ~ 1.5 GHz range is
///     * applicable only in the low power mode and cannot be used with the SSC function. In order to
///     * use the SSC function VCO must be operated above 1.5GHz.
///     * .. Cycle to Cycle Jitter (max): <30 ps.
///     * .. Programmable Reference and Feedback Divider.
///     * .. 1 ppm/step frequency offset resolution. Up to 50,000 ppm without changing the Feedback
///     * Divider setting.
///     * .. SSC frequency range: 30 KHz ~ 100 KHz
///     * .. SSC amplitude range: up to +/-5%. (SSC function is disabled by default.)
///     * .. Supporting both down-spread and center-spread modes.
///     * .. Current consumption( typical corner, AVDD=1.8 V, DVDD=1.05V): see sspll document
///     * .. Locking time: < 50 us
///     * .. Process Node: 28 nm LP
///     * .. Analog Power Supply: 1.8 V (+10%, -5%)
///     * .. Digital Power Supply: 1.05 V (±10%)
///     * Support Low DVDD Mode: Digtial Power Supply = 0.75V ~ 1.32V. See section 2.1 for detail.
///     * .. Output Duty Cycle: 45% - 55% for any post divider ratio
///     * .. Built-in Bandgap circuit.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 ctrl                 (P-)
///               ###
///               * PLL Control register
///               ###
///               %unsigned 1  PU                        0x1
///                                    ###
///                                    * PLL Power-Up
///                                    * 1: power up.
///                                    * 0: power down.
///                                    ###
///               %unsigned 1  RESET                     0x0
///                                    ###
///                                    * Power On Reset. Active high, reset PLL and all logic.
///                                    * 1: reset.
///                                    * 0: no reset.
///                                    ###
///               %unsigned 1  AVDD1815_SEL              0x1
///                                    ###
///                                    * AVDD Select.
///                                    * Selects whether AVDD is 1.8V
///                                    * or 1.5V.
///                                    * 1: 1.8V
///                                    * 0: 1.5V
///                                    ###
///               %unsigned 9  REFDIV                    0x2
///                                    ###
///                                    * Reference Clock Divider
///                                    * Select.
///                                    * Divider = REFDIV[8:0]
///                                    * 9’h000 = divide by 1
///                                    * 9’h001 = divide by 1
///                                    * 9’h002 = divide by 2
///                                    * 9’h003 = divide by 3
///                                    * ...
///                                    * 9’h1FF = divide by 511.
///                                    * REFDIV[8:0] range is 1~250
///                                    ###
///               %unsigned 9  FBDIV                     0x20
///                                    ###
///                                    * Feedback Clock Divider Select.
///                                    * Divider= FBDIV [8:0]
///                                    * 9’h000 = divide by 1
///                                    * 9’h001 = divide by 1
///                                    * 9’h002 = divide by 2
///                                    * 9’h003 = divide by 3
///                                    * ...
///                                    * 9’h1FF = divide by 511.
///                                    * FBDIV range is 9 to 94
///                                    ###
///               %unsigned 2  VDDM                      0x1
///                                    ###
///                                    * VCO Supply Control.
///                                    * 11: 1.3 V
///                                    * 10: 1.25 V
///                                    * 01: 1.2 V
///                                    * 00: 1.15 V.
///                                    ###
///               %unsigned 3  VDDL                      0x4
///                                    ###
///                                    * Internal VDD Supply
///                                    * Control.
///                                    * 000:0.9V
///                                    * 001:0.95V
///                                    * 010:1V
///                                    * 011:1.05V
///                                    * 100:1.1V
///                                    * 101:1.15V
///                                    * 110:1.2V
///                                    * 111:1.2V.
///                                    ###
///               %unsigned 4  ICP                       0x1
///                                    ###
///                                    * Charge-pump Current Control Bits.
///                                    * 0000: 3 uA
///                                    * 0001: 3.75 uA
///                                    * 0010: 4.5 uA
///                                    * 0011: 5.25 uA
///                                    * 0100: 6 uA
///                                    * 0101: 7.5 uA
///                                    * 0110: 9 uA
///                                    * 0111: 10.5 uA
///                                    * 1000: 12 uA
///                                    * 1001: 15 uA
///                                    * 1010: 18 uA
///                                    * 1011: 21 uA
///                                    * 1100: 24 uA
///                                    * 1101: 30 uA
///                                    * 1110: 36 uA
///                                    * 1111: 42 uA.
///                                    * Note : ICP[3:0] = (10 MHz / Update Rate) * Default.
///                                    * If PU_BW_SEL = 1, then increase ICP value by 2x
///                                    ###
///               %unsigned 1  PLL_BW_SEL                0x0
///                                    ###
///                                    * PLL Bandwidth Select.
///                                    * 1: BW x 2
///                                    * 0: Normal PLL bandwidth.
///                                    * Note: Use bandwidth x 2 only if update rate is between 16 - 32 MHz.
///                                    * NOTE: Bandwidth x 2 is for special cases only. If used, the update rate must be between 16 MHz - 32 MHz.
///                                    ###
///               %%        1          # Stuffing bits...
///     # 0x00004 ctrl1                
///               %unsigned 4  KVCO                      0xA
///                                    ###
///                                    * KVCO Frequency Range
///                                    * Select.
///                                    * 0000~0111: Reserved.
///                                    * 1000:1.2GHz ~ 1.35GHz
///                                    * 1001:1.35GHz ~ 1.5GHz
///                                    * 1010:1.5GHz ~ 1.75GHz
///                                    * 1011:1.75GHz ~ 2.00GHz
///                                    * 1100: 2GHz ~ 2.2GHz
///                                    * 1101: 2.2GHz ~ 2.4GHz
///                                    * 1110: 2.4GHz ~ 2.6GHz
///                                    * 1111: 2.6GHz ~ 3GHz
///                                    * SSC mode is only supported for frequency >=2 GHz
///                                    * FVCO=((4*REFCLK/M)*N)/(1+OFFSET_PERCENT)
///                                    ###
///               %unsigned 2  CTUNE                     0x1
///                                    ###
///                                    * VCO Capacitor Select.
///                                    * 00: No Cap Loading
///                                    * 01: One Unit Cap Loading
///                                    * 10: Two Unit Cap Loading
///                                    * 11: Three Unit Cap Loading.
///                                    ###
///               %unsigned 3  CLKOUT_DIFF_DIV_SEL       0x2
///                                    ###
///                                    * Post Divider For Differential
///                                    * Output Clock.
///                                    * 000: 1
///                                    * 001: 2
///                                    * 010: 4
///                                    * 011: 8
///                                    * 100: 16
///                                    * 101: 32
///                                    * 110: 64
///                                    * 111:128
///                                    ###
///               %unsigned 3  CLKOUT_SE_DIV_SEL         0x2
///                                    ###
///                                    * Post Divider For
///                                    * Single-ended Output Clock.
///                                    * 000: 1
///                                    * 001: 2
///                                    * 010: 4
///                                    * 011: 8
///                                    * 100: 16
///                                    * 101: 32
///                                    * 110: 64
///                                    * 111:128
///                                    ###
///               %unsigned 1  CLKOUT_SOURCE_SEL         0x1
///                                    ###
///                                    * Differential Clock And
///                                    * Single-ended Clock Source Control.
///                                    * 0: from the phase interpolator.
///                                    * 1: from VCO directly.
///                                    * Note: This is used in test mode only. Select ‘1’ for normal operation.
///                                    ###
///               %unsigned 1  CLKOUT_DIFF_EN            0x1
///                                    ###
///                                    * Differential Clock Enable.
///                                    * 0:Disable differential clock
///                                    * 1:Enable differential clock
///                                    ###
///               %unsigned 1  BYPASS_EN                 0x0
///                                    ###
///                                    * PLL Clock Bypass Enable.
///                                    * 1: The PLL is bypassed. CLKOUT is derived from REFCLK.
///                                    * 0: CLKOUT is derived from the PLL clock.
///                                    * NOTE: Bypass only works for the single ended clock.
///                                    * If BYPASS_EN==1. CLKOUT= REFCLK.
///                                    * Make sure Fvco/CLKOUT_SE_DIV_SEL< 2.1 GHz, when using the bypass function.
///                                    ###
///               %unsigned 1  CLKOUT_SE_GATING_EN       0x0
///                                    ###
///                                    * Clock Output Gating Control.
///                                    * Selection for using the PLL lock signal to gate the output clock.
///                                    * 0: The PLL_LOCK signal won't affect the output clock, CLKOUT
///                                    * 1: Use PLL_LOCK signal to gate the output clock, CLKOUT.
///                                    ###
///               %unsigned 1  FBCLK_EXT_SEL             0x0
///                                    ###
///                                    * External Or Internal Feedback
///                                    * Clock Select.
///                                    * 0: select internal feedback clock
///                                    * 1: select external feedback clock.
///                                    * Note: For most applications the external feedback clock is not used. In these cases use the default selection "0".
///                                    ###
///               %unsigned 6  FBCDLY                    0x0
///                                    ###
///                                    * Fine Tune Delay Select
///                                    * Between REFCLK And FBCLK_EXT When FBCLK_EXT_SEL = 1.
///                                    * FBCDLY[5] is the sign bit.
///                                    * 1 = FBCLK_EXT will lag REFCLK.
///                                    * 0 = FBCLK_EXT will lead REFCLK.
///                                    * FBCDLY[4:0] decides the actual amount of delay.
///                                    * 00000: No delay.
///                                    * Each additional step has these
///                                    * delays:
///                                    * 00h = No delay
///                                    * 01h = 15 - 50 ps phase difference
///                                    * 02h = 30 - 100 ps phase difference
///                                    * 03h = 45 - 150 ps phase difference
///                                    * ...
///                                    * 3Fh = 945 ps - 3150 ps phase difference.
///                                    * Note: Used in DSPLL application, do not use in regular PLL application.
///                                    ###
///               %unsigned 3  FD                        0x4
///                                    ###
///                                    * Tune Frequency Detector Precision
///                                    * FD[0]: Reserved.
///                                    * FD[2:1] FD precision
///                                    * 00 +/- 0.1%
///                                    * 01 +/- 0.2%
///                                    * 10 +/- 0.4%
///                                    * 11 +/- 0.8%.
///                                    ###
///               %unsigned 4  INTPI                     0x6
///                                    ###
///                                    * Phase Interpolator Bias Current Select.
///                                    * 1.2 ~ 1.5 GHz NOT SUPPORTED
///                                    * 0101: (VCO:1.5 ~ 2 GHz)
///                                    * 0110: (VCO:2 ~ 2.5 GHz)
///                                    * 1000: (VCO:2.5 ~ 3GHz).
///                                    * NOTE: VCO running frequency below 1.5 GHz not supported.
///                                    ###
///               %%        2          # Stuffing bits...
///     # 0x00008 ctrl2                
///               %unsigned 3  INTPR                     0x4
///                                    ###
///                                    * Phase Interpolator Resistor Select.
///                                    * NOTE: VCO running frequency below 1.5 GHz not supported.
///                                    ###
///               %unsigned 1  PI_EN                     0x0
///                                    ###
///                                    * Phase Interpolator Enable.
///                                    * 1: Enable phase interpolator
///                                    * 0: Disable phase interpolator.
///                                    ###
///               %unsigned 1  PI_LOOP_MODE              0x0
///                                    ###
///                                    * Phase Interpolator Loop Control.
///                                    * 1: PI is in the PLL loop.
///                                    * 0: PI is out of the PLL loop
///                                    ###
///               %unsigned 1  CLK_DET_EN                0x1
///                                    ###
///                                    * PI Output Clock Enable. This selection enables the PI output clock for the internal reset circuit
///                                    ###
///               %unsigned 1  RESET_PI                  0x0
///                                    ###
///                                    * External Interpolator Reset.
///                                    * 1: reset.
///                                    * 0: no reset.
///                                    ###
///               %unsigned 1  RESET_SSC                 0x0
///                                    ###
///                                    * SSC reset
///                                    * 0 : No reset
///                                    * 1 : Reset
///                                    ###
///               %unsigned 1  FREQ_OFFSET_EN            0x0
///                                    ###
///                                    * Frequency Offset Enable.
///                                    * 0: Disable
///                                    * 1: Enable.
///                                    ###
///               %unsigned 17 FREQ_OFFSET               0x0
///                                    ###
///                                    * Frequency Offset Value
///                                    * Control.
///                                    * [16]: Sign-Bit.
///                                    * 0: Frequency down
///                                    * 1: Frequency up
///                                    * [15:0] : 1 LSB 1 ppm, upto 5%
///                                    * 1LSB=10e6/(4*128 *2048) ppm
///                                    * [16]=0--->Sign= 1
///                                    * [16]=1--->Sign= -1
///                                    * Fout = Fvco/ (1 + Sign* FREQ_OFFSET[15:0] *1LSB)
///                                    ###
///               %unsigned 1  FREQ_OFFSET_MODE_SELECTION 0x0
///                                    ###
///                                    * Frequency Offset Mode Select.
///                                    * 0: FREQ_OFFSET[16:0] is updated by FREQ_OFFSET_VALID
///                                    * 1: FREQ_OFFSET[16:0] is sampled by CK_DIV64_OUT
///                                    * (It has to be valid at the rising edge of CK_DIV64_OUT).
///                                    * Note: For special application only. Use FREQ_OFFSET_VALID to update FREQ_OFFSET[16:0] by default.
///                                    ###
///               %unsigned 1  FREQ_OFFSET_VALID         0x0
///                                    ###
///                                    * Frequency Offset Value Valid.
///                                    * Indicates that frequency offset value (FREQ_OFFSET[16:0]) is valid.
///                                    * Note:
///                                    * 1) A rising edge will trigger the frequency offset generation circuit to read in the FREQ_OFFSET [16:0] value. The pulse width has to be no less than 50 ns.
///                                    * 2) This signal is only needed when FREQ_OFFSET_MODE_SELECTION=0.
///                                    ###
///               %unsigned 1  SSC_CLK_EN                0x0
///                                    ###
///                                    * SSC Clock Enable.
///                                    * This selection enables the PI output clock for SSC digital logic.
///                                    ###
///               %unsigned 1  SSC_MODE                  0x1
///                                    ###
///                                    * SSC Mode Select.
///                                    * 0: center spread
///                                    * 1: down spread.
///                                    ###
///               %%        2          # Stuffing bits...
///     # 0x0000C ctrl3                
///               %unsigned 16 SSC_FREQ_DIV              0x0
///                                    ###
///                                    * SSC Frequency Select.
///                                    ###
///               %unsigned 11 SSC_RNGE                  0x0
///                                    ###
///                                    * SSC Range Select. SSC_RNGE[10:0] = Desired SSC amplitude /(SSC_FREQ_DIV[14:0]*2^(-28)).
///                                    * Rounding to integer required.
///                                    ###
///               %unsigned 4  TEST_ANA                  0x0
///                                    ###
///                                    * Analog test point
///                                    ###
///               %%        1          # Stuffing bits...
///     # 0x00010 ctrl4                
///               %unsigned 8  RESERVE_IN                0x0
///                                    ###
///                                    * Reserved input pins
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00014 status               (R-)
///               ###
///               * PLL status register
///               ###
///               %unsigned 1  PLL_LOCK                  
///                                    ###
///                                    * PLL Lock Detect.
///                                    * 1: PLL locked.
///                                    * 0: PLL not locked.
///                                    * Note:
///                                    * After PLL is powered up, wait for 50 us to check for the lock status.
///                                    * In normal operation, when PLL_LOCK signal is detected low, sample the signal again after 100 us to confirm the status.
///                                    * This signal is for testing purpose only, do not use it for any functional use.
///                                    ###
///               %unsigned 1  CLK_CFMOD                 
///                                    ###
///                                    * Clock Mode Output.
///                                    *  For down spread and
///                                    * PI_LOOP_MODE = 0, output
///                                    * is 0.
///                                    *  For down spread and
///                                    * PI_LOOP_MODE = 1, output
///                                    * is 1.
///                                    *  For center spread, output a
///                                    * clock with SSC modulation
///                                    * frequency.
///                                    ###
///               %unsigned 1  CLK_FMOD                  
///                                    ###
///                                    * Clock Output And Modulation
///                                    * Frequency.
///                                    * For down spread, output a clock
///                                    * with SSC modulation frequency.
///                                    * For center spread, output a clock
///                                    * with double SSC modulation
///                                    * frequency.
///                                    ###
///               %unsigned 8  RESERVE_OUT               
///                                    ###
///                                    * Reserve Output Register pins.
///                                    ###
///               %%        21         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      24B, bits:     141b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_pll
#define h_pll (){}

    #define     RA_pll_ctrl                                    0x0000

    #define     BA_pll_ctrl_PU                                 0x0000
    #define     B16pll_ctrl_PU                                 0x0000
    #define   LSb32pll_ctrl_PU                                    0
    #define   LSb16pll_ctrl_PU                                    0
    #define       bpll_ctrl_PU                                 1
    #define   MSK32pll_ctrl_PU                                    0x00000001

    #define     BA_pll_ctrl_RESET                              0x0000
    #define     B16pll_ctrl_RESET                              0x0000
    #define   LSb32pll_ctrl_RESET                                 1
    #define   LSb16pll_ctrl_RESET                                 1
    #define       bpll_ctrl_RESET                              1
    #define   MSK32pll_ctrl_RESET                                 0x00000002

    #define     BA_pll_ctrl_AVDD1815_SEL                       0x0000
    #define     B16pll_ctrl_AVDD1815_SEL                       0x0000
    #define   LSb32pll_ctrl_AVDD1815_SEL                          2
    #define   LSb16pll_ctrl_AVDD1815_SEL                          2
    #define       bpll_ctrl_AVDD1815_SEL                       1
    #define   MSK32pll_ctrl_AVDD1815_SEL                          0x00000004

    #define     BA_pll_ctrl_REFDIV                             0x0000
    #define     B16pll_ctrl_REFDIV                             0x0000
    #define   LSb32pll_ctrl_REFDIV                                3
    #define   LSb16pll_ctrl_REFDIV                                3
    #define       bpll_ctrl_REFDIV                             9
    #define   MSK32pll_ctrl_REFDIV                                0x00000FF8

    #define     BA_pll_ctrl_FBDIV                              0x0001
    #define     B16pll_ctrl_FBDIV                              0x0000
    #define   LSb32pll_ctrl_FBDIV                                 12
    #define   LSb16pll_ctrl_FBDIV                                 12
    #define       bpll_ctrl_FBDIV                              9
    #define   MSK32pll_ctrl_FBDIV                                 0x001FF000

    #define     BA_pll_ctrl_VDDM                               0x0002
    #define     B16pll_ctrl_VDDM                               0x0002
    #define   LSb32pll_ctrl_VDDM                                  21
    #define   LSb16pll_ctrl_VDDM                                  5
    #define       bpll_ctrl_VDDM                               2
    #define   MSK32pll_ctrl_VDDM                                  0x00600000

    #define     BA_pll_ctrl_VDDL                               0x0002
    #define     B16pll_ctrl_VDDL                               0x0002
    #define   LSb32pll_ctrl_VDDL                                  23
    #define   LSb16pll_ctrl_VDDL                                  7
    #define       bpll_ctrl_VDDL                               3
    #define   MSK32pll_ctrl_VDDL                                  0x03800000

    #define     BA_pll_ctrl_ICP                                0x0003
    #define     B16pll_ctrl_ICP                                0x0002
    #define   LSb32pll_ctrl_ICP                                   26
    #define   LSb16pll_ctrl_ICP                                   10
    #define       bpll_ctrl_ICP                                4
    #define   MSK32pll_ctrl_ICP                                   0x3C000000

    #define     BA_pll_ctrl_PLL_BW_SEL                         0x0003
    #define     B16pll_ctrl_PLL_BW_SEL                         0x0002
    #define   LSb32pll_ctrl_PLL_BW_SEL                            30
    #define   LSb16pll_ctrl_PLL_BW_SEL                            14
    #define       bpll_ctrl_PLL_BW_SEL                         1
    #define   MSK32pll_ctrl_PLL_BW_SEL                            0x40000000

    #define     RA_pll_ctrl1                                   0x0004

    #define     BA_pll_ctrl_KVCO                               0x0004
    #define     B16pll_ctrl_KVCO                               0x0004
    #define   LSb32pll_ctrl_KVCO                                  0
    #define   LSb16pll_ctrl_KVCO                                  0
    #define       bpll_ctrl_KVCO                               4
    #define   MSK32pll_ctrl_KVCO                                  0x0000000F

    #define     BA_pll_ctrl_CTUNE                              0x0004
    #define     B16pll_ctrl_CTUNE                              0x0004
    #define   LSb32pll_ctrl_CTUNE                                 4
    #define   LSb16pll_ctrl_CTUNE                                 4
    #define       bpll_ctrl_CTUNE                              2
    #define   MSK32pll_ctrl_CTUNE                                 0x00000030

    #define     BA_pll_ctrl_CLKOUT_DIFF_DIV_SEL                0x0004
    #define     B16pll_ctrl_CLKOUT_DIFF_DIV_SEL                0x0004
    #define   LSb32pll_ctrl_CLKOUT_DIFF_DIV_SEL                   6
    #define   LSb16pll_ctrl_CLKOUT_DIFF_DIV_SEL                   6
    #define       bpll_ctrl_CLKOUT_DIFF_DIV_SEL                3
    #define   MSK32pll_ctrl_CLKOUT_DIFF_DIV_SEL                   0x000001C0

    #define     BA_pll_ctrl_CLKOUT_SE_DIV_SEL                  0x0005
    #define     B16pll_ctrl_CLKOUT_SE_DIV_SEL                  0x0004
    #define   LSb32pll_ctrl_CLKOUT_SE_DIV_SEL                     9
    #define   LSb16pll_ctrl_CLKOUT_SE_DIV_SEL                     9
    #define       bpll_ctrl_CLKOUT_SE_DIV_SEL                  3
    #define   MSK32pll_ctrl_CLKOUT_SE_DIV_SEL                     0x00000E00

    #define     BA_pll_ctrl_CLKOUT_SOURCE_SEL                  0x0005
    #define     B16pll_ctrl_CLKOUT_SOURCE_SEL                  0x0004
    #define   LSb32pll_ctrl_CLKOUT_SOURCE_SEL                     12
    #define   LSb16pll_ctrl_CLKOUT_SOURCE_SEL                     12
    #define       bpll_ctrl_CLKOUT_SOURCE_SEL                  1
    #define   MSK32pll_ctrl_CLKOUT_SOURCE_SEL                     0x00001000

    #define     BA_pll_ctrl_CLKOUT_DIFF_EN                     0x0005
    #define     B16pll_ctrl_CLKOUT_DIFF_EN                     0x0004
    #define   LSb32pll_ctrl_CLKOUT_DIFF_EN                        13
    #define   LSb16pll_ctrl_CLKOUT_DIFF_EN                        13
    #define       bpll_ctrl_CLKOUT_DIFF_EN                     1
    #define   MSK32pll_ctrl_CLKOUT_DIFF_EN                        0x00002000

    #define     BA_pll_ctrl_BYPASS_EN                          0x0005
    #define     B16pll_ctrl_BYPASS_EN                          0x0004
    #define   LSb32pll_ctrl_BYPASS_EN                             14
    #define   LSb16pll_ctrl_BYPASS_EN                             14
    #define       bpll_ctrl_BYPASS_EN                          1
    #define   MSK32pll_ctrl_BYPASS_EN                             0x00004000

    #define     BA_pll_ctrl_CLKOUT_SE_GATING_EN                0x0005
    #define     B16pll_ctrl_CLKOUT_SE_GATING_EN                0x0004
    #define   LSb32pll_ctrl_CLKOUT_SE_GATING_EN                   15
    #define   LSb16pll_ctrl_CLKOUT_SE_GATING_EN                   15
    #define       bpll_ctrl_CLKOUT_SE_GATING_EN                1
    #define   MSK32pll_ctrl_CLKOUT_SE_GATING_EN                   0x00008000

    #define     BA_pll_ctrl_FBCLK_EXT_SEL                      0x0006
    #define     B16pll_ctrl_FBCLK_EXT_SEL                      0x0006
    #define   LSb32pll_ctrl_FBCLK_EXT_SEL                         16
    #define   LSb16pll_ctrl_FBCLK_EXT_SEL                         0
    #define       bpll_ctrl_FBCLK_EXT_SEL                      1
    #define   MSK32pll_ctrl_FBCLK_EXT_SEL                         0x00010000

    #define     BA_pll_ctrl_FBCDLY                             0x0006
    #define     B16pll_ctrl_FBCDLY                             0x0006
    #define   LSb32pll_ctrl_FBCDLY                                17
    #define   LSb16pll_ctrl_FBCDLY                                1
    #define       bpll_ctrl_FBCDLY                             6
    #define   MSK32pll_ctrl_FBCDLY                                0x007E0000

    #define     BA_pll_ctrl_FD                                 0x0006
    #define     B16pll_ctrl_FD                                 0x0006
    #define   LSb32pll_ctrl_FD                                    23
    #define   LSb16pll_ctrl_FD                                    7
    #define       bpll_ctrl_FD                                 3
    #define   MSK32pll_ctrl_FD                                    0x03800000

    #define     BA_pll_ctrl_INTPI                              0x0007
    #define     B16pll_ctrl_INTPI                              0x0006
    #define   LSb32pll_ctrl_INTPI                                 26
    #define   LSb16pll_ctrl_INTPI                                 10
    #define       bpll_ctrl_INTPI                              4
    #define   MSK32pll_ctrl_INTPI                                 0x3C000000

    #define     RA_pll_ctrl2                                   0x0008

    #define     BA_pll_ctrl_INTPR                              0x0008
    #define     B16pll_ctrl_INTPR                              0x0008
    #define   LSb32pll_ctrl_INTPR                                 0
    #define   LSb16pll_ctrl_INTPR                                 0
    #define       bpll_ctrl_INTPR                              3
    #define   MSK32pll_ctrl_INTPR                                 0x00000007

    #define     BA_pll_ctrl_PI_EN                              0x0008
    #define     B16pll_ctrl_PI_EN                              0x0008
    #define   LSb32pll_ctrl_PI_EN                                 3
    #define   LSb16pll_ctrl_PI_EN                                 3
    #define       bpll_ctrl_PI_EN                              1
    #define   MSK32pll_ctrl_PI_EN                                 0x00000008

    #define     BA_pll_ctrl_PI_LOOP_MODE                       0x0008
    #define     B16pll_ctrl_PI_LOOP_MODE                       0x0008
    #define   LSb32pll_ctrl_PI_LOOP_MODE                          4
    #define   LSb16pll_ctrl_PI_LOOP_MODE                          4
    #define       bpll_ctrl_PI_LOOP_MODE                       1
    #define   MSK32pll_ctrl_PI_LOOP_MODE                          0x00000010

    #define     BA_pll_ctrl_CLK_DET_EN                         0x0008
    #define     B16pll_ctrl_CLK_DET_EN                         0x0008
    #define   LSb32pll_ctrl_CLK_DET_EN                            5
    #define   LSb16pll_ctrl_CLK_DET_EN                            5
    #define       bpll_ctrl_CLK_DET_EN                         1
    #define   MSK32pll_ctrl_CLK_DET_EN                            0x00000020

    #define     BA_pll_ctrl_RESET_PI                           0x0008
    #define     B16pll_ctrl_RESET_PI                           0x0008
    #define   LSb32pll_ctrl_RESET_PI                              6
    #define   LSb16pll_ctrl_RESET_PI                              6
    #define       bpll_ctrl_RESET_PI                           1
    #define   MSK32pll_ctrl_RESET_PI                              0x00000040

    #define     BA_pll_ctrl_RESET_SSC                          0x0008
    #define     B16pll_ctrl_RESET_SSC                          0x0008
    #define   LSb32pll_ctrl_RESET_SSC                             7
    #define   LSb16pll_ctrl_RESET_SSC                             7
    #define       bpll_ctrl_RESET_SSC                          1
    #define   MSK32pll_ctrl_RESET_SSC                             0x00000080

    #define     BA_pll_ctrl_FREQ_OFFSET_EN                     0x0009
    #define     B16pll_ctrl_FREQ_OFFSET_EN                     0x0008
    #define   LSb32pll_ctrl_FREQ_OFFSET_EN                        8
    #define   LSb16pll_ctrl_FREQ_OFFSET_EN                        8
    #define       bpll_ctrl_FREQ_OFFSET_EN                     1
    #define   MSK32pll_ctrl_FREQ_OFFSET_EN                        0x00000100

    #define     BA_pll_ctrl_FREQ_OFFSET                        0x0009
    #define     B16pll_ctrl_FREQ_OFFSET                        0x0008
    #define   LSb32pll_ctrl_FREQ_OFFSET                           9
    #define   LSb16pll_ctrl_FREQ_OFFSET                           9
    #define       bpll_ctrl_FREQ_OFFSET                        17
    #define   MSK32pll_ctrl_FREQ_OFFSET                           0x03FFFE00

    #define     BA_pll_ctrl_FREQ_OFFSET_MODE_SELECTION         0x000B
    #define     B16pll_ctrl_FREQ_OFFSET_MODE_SELECTION         0x000A
    #define   LSb32pll_ctrl_FREQ_OFFSET_MODE_SELECTION            26
    #define   LSb16pll_ctrl_FREQ_OFFSET_MODE_SELECTION            10
    #define       bpll_ctrl_FREQ_OFFSET_MODE_SELECTION         1
    #define   MSK32pll_ctrl_FREQ_OFFSET_MODE_SELECTION            0x04000000

    #define     BA_pll_ctrl_FREQ_OFFSET_VALID                  0x000B
    #define     B16pll_ctrl_FREQ_OFFSET_VALID                  0x000A
    #define   LSb32pll_ctrl_FREQ_OFFSET_VALID                     27
    #define   LSb16pll_ctrl_FREQ_OFFSET_VALID                     11
    #define       bpll_ctrl_FREQ_OFFSET_VALID                  1
    #define   MSK32pll_ctrl_FREQ_OFFSET_VALID                     0x08000000

    #define     BA_pll_ctrl_SSC_CLK_EN                         0x000B
    #define     B16pll_ctrl_SSC_CLK_EN                         0x000A
    #define   LSb32pll_ctrl_SSC_CLK_EN                            28
    #define   LSb16pll_ctrl_SSC_CLK_EN                            12
    #define       bpll_ctrl_SSC_CLK_EN                         1
    #define   MSK32pll_ctrl_SSC_CLK_EN                            0x10000000

    #define     BA_pll_ctrl_SSC_MODE                           0x000B
    #define     B16pll_ctrl_SSC_MODE                           0x000A
    #define   LSb32pll_ctrl_SSC_MODE                              29
    #define   LSb16pll_ctrl_SSC_MODE                              13
    #define       bpll_ctrl_SSC_MODE                           1
    #define   MSK32pll_ctrl_SSC_MODE                              0x20000000

    #define     RA_pll_ctrl3                                   0x000C

    #define     BA_pll_ctrl_SSC_FREQ_DIV                       0x000C
    #define     B16pll_ctrl_SSC_FREQ_DIV                       0x000C
    #define   LSb32pll_ctrl_SSC_FREQ_DIV                          0
    #define   LSb16pll_ctrl_SSC_FREQ_DIV                          0
    #define       bpll_ctrl_SSC_FREQ_DIV                       16
    #define   MSK32pll_ctrl_SSC_FREQ_DIV                          0x0000FFFF

    #define     BA_pll_ctrl_SSC_RNGE                           0x000E
    #define     B16pll_ctrl_SSC_RNGE                           0x000E
    #define   LSb32pll_ctrl_SSC_RNGE                              16
    #define   LSb16pll_ctrl_SSC_RNGE                              0
    #define       bpll_ctrl_SSC_RNGE                           11
    #define   MSK32pll_ctrl_SSC_RNGE                              0x07FF0000

    #define     BA_pll_ctrl_TEST_ANA                           0x000F
    #define     B16pll_ctrl_TEST_ANA                           0x000E
    #define   LSb32pll_ctrl_TEST_ANA                              27
    #define   LSb16pll_ctrl_TEST_ANA                              11
    #define       bpll_ctrl_TEST_ANA                           4
    #define   MSK32pll_ctrl_TEST_ANA                              0x78000000

    #define     RA_pll_ctrl4                                   0x0010

    #define     BA_pll_ctrl_RESERVE_IN                         0x0010
    #define     B16pll_ctrl_RESERVE_IN                         0x0010
    #define   LSb32pll_ctrl_RESERVE_IN                            0
    #define   LSb16pll_ctrl_RESERVE_IN                            0
    #define       bpll_ctrl_RESERVE_IN                         8
    #define   MSK32pll_ctrl_RESERVE_IN                            0x000000FF
    ///////////////////////////////////////////////////////////
    #define     RA_pll_status                                  0x0014

    #define     BA_pll_status_PLL_LOCK                         0x0014
    #define     B16pll_status_PLL_LOCK                         0x0014
    #define   LSb32pll_status_PLL_LOCK                            0
    #define   LSb16pll_status_PLL_LOCK                            0
    #define       bpll_status_PLL_LOCK                         1
    #define   MSK32pll_status_PLL_LOCK                            0x00000001

    #define     BA_pll_status_CLK_CFMOD                        0x0014
    #define     B16pll_status_CLK_CFMOD                        0x0014
    #define   LSb32pll_status_CLK_CFMOD                           1
    #define   LSb16pll_status_CLK_CFMOD                           1
    #define       bpll_status_CLK_CFMOD                        1
    #define   MSK32pll_status_CLK_CFMOD                           0x00000002

    #define     BA_pll_status_CLK_FMOD                         0x0014
    #define     B16pll_status_CLK_FMOD                         0x0014
    #define   LSb32pll_status_CLK_FMOD                            2
    #define   LSb16pll_status_CLK_FMOD                            2
    #define       bpll_status_CLK_FMOD                         1
    #define   MSK32pll_status_CLK_FMOD                            0x00000004

    #define     BA_pll_status_RESERVE_OUT                      0x0014
    #define     B16pll_status_RESERVE_OUT                      0x0014
    #define   LSb32pll_status_RESERVE_OUT                         3
    #define   LSb16pll_status_RESERVE_OUT                         3
    #define       bpll_status_RESERVE_OUT                      8
    #define   MSK32pll_status_RESERVE_OUT                         0x000007F8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_pll {
    ///////////////////////////////////////////////////////////
    #define   GET32pll_ctrl_PU(r32)                            _BFGET_(r32, 0, 0)
    #define   SET32pll_ctrl_PU(r32,v)                          _BFSET_(r32, 0, 0,v)
    #define   GET16pll_ctrl_PU(r16)                            _BFGET_(r16, 0, 0)
    #define   SET16pll_ctrl_PU(r16,v)                          _BFSET_(r16, 0, 0,v)

    #define   GET32pll_ctrl_RESET(r32)                         _BFGET_(r32, 1, 1)
    #define   SET32pll_ctrl_RESET(r32,v)                       _BFSET_(r32, 1, 1,v)
    #define   GET16pll_ctrl_RESET(r16)                         _BFGET_(r16, 1, 1)
    #define   SET16pll_ctrl_RESET(r16,v)                       _BFSET_(r16, 1, 1,v)

    #define   GET32pll_ctrl_AVDD1815_SEL(r32)                  _BFGET_(r32, 2, 2)
    #define   SET32pll_ctrl_AVDD1815_SEL(r32,v)                _BFSET_(r32, 2, 2,v)
    #define   GET16pll_ctrl_AVDD1815_SEL(r16)                  _BFGET_(r16, 2, 2)
    #define   SET16pll_ctrl_AVDD1815_SEL(r16,v)                _BFSET_(r16, 2, 2,v)

    #define   GET32pll_ctrl_REFDIV(r32)                        _BFGET_(r32,11, 3)
    #define   SET32pll_ctrl_REFDIV(r32,v)                      _BFSET_(r32,11, 3,v)
    #define   GET16pll_ctrl_REFDIV(r16)                        _BFGET_(r16,11, 3)
    #define   SET16pll_ctrl_REFDIV(r16,v)                      _BFSET_(r16,11, 3,v)

    #define   GET32pll_ctrl_FBDIV(r32)                         _BFGET_(r32,20,12)
    #define   SET32pll_ctrl_FBDIV(r32,v)                       _BFSET_(r32,20,12,v)

    #define   GET32pll_ctrl_VDDM(r32)                          _BFGET_(r32,22,21)
    #define   SET32pll_ctrl_VDDM(r32,v)                        _BFSET_(r32,22,21,v)
    #define   GET16pll_ctrl_VDDM(r16)                          _BFGET_(r16, 6, 5)
    #define   SET16pll_ctrl_VDDM(r16,v)                        _BFSET_(r16, 6, 5,v)

    #define   GET32pll_ctrl_VDDL(r32)                          _BFGET_(r32,25,23)
    #define   SET32pll_ctrl_VDDL(r32,v)                        _BFSET_(r32,25,23,v)
    #define   GET16pll_ctrl_VDDL(r16)                          _BFGET_(r16, 9, 7)
    #define   SET16pll_ctrl_VDDL(r16,v)                        _BFSET_(r16, 9, 7,v)

    #define   GET32pll_ctrl_ICP(r32)                           _BFGET_(r32,29,26)
    #define   SET32pll_ctrl_ICP(r32,v)                         _BFSET_(r32,29,26,v)
    #define   GET16pll_ctrl_ICP(r16)                           _BFGET_(r16,13,10)
    #define   SET16pll_ctrl_ICP(r16,v)                         _BFSET_(r16,13,10,v)

    #define   GET32pll_ctrl_PLL_BW_SEL(r32)                    _BFGET_(r32,30,30)
    #define   SET32pll_ctrl_PLL_BW_SEL(r32,v)                  _BFSET_(r32,30,30,v)
    #define   GET16pll_ctrl_PLL_BW_SEL(r16)                    _BFGET_(r16,14,14)
    #define   SET16pll_ctrl_PLL_BW_SEL(r16,v)                  _BFSET_(r16,14,14,v)

    #define     w32pll_ctrl                                    {\
            UNSG32 uctrl_PU                                    :  1;\
            UNSG32 uctrl_RESET                                 :  1;\
            UNSG32 uctrl_AVDD1815_SEL                          :  1;\
            UNSG32 uctrl_REFDIV                                :  9;\
            UNSG32 uctrl_FBDIV                                 :  9;\
            UNSG32 uctrl_VDDM                                  :  2;\
            UNSG32 uctrl_VDDL                                  :  3;\
            UNSG32 uctrl_ICP                                   :  4;\
            UNSG32 uctrl_PLL_BW_SEL                            :  1;\
            UNSG32 RSVDx0_b31                                  :  1;\
          }
    union { UNSG32 u32pll_ctrl;
            struct w32pll_ctrl;
          };
    #define   GET32pll_ctrl_KVCO(r32)                          _BFGET_(r32, 3, 0)
    #define   SET32pll_ctrl_KVCO(r32,v)                        _BFSET_(r32, 3, 0,v)
    #define   GET16pll_ctrl_KVCO(r16)                          _BFGET_(r16, 3, 0)
    #define   SET16pll_ctrl_KVCO(r16,v)                        _BFSET_(r16, 3, 0,v)

    #define   GET32pll_ctrl_CTUNE(r32)                         _BFGET_(r32, 5, 4)
    #define   SET32pll_ctrl_CTUNE(r32,v)                       _BFSET_(r32, 5, 4,v)
    #define   GET16pll_ctrl_CTUNE(r16)                         _BFGET_(r16, 5, 4)
    #define   SET16pll_ctrl_CTUNE(r16,v)                       _BFSET_(r16, 5, 4,v)

    #define   GET32pll_ctrl_CLKOUT_DIFF_DIV_SEL(r32)           _BFGET_(r32, 8, 6)
    #define   SET32pll_ctrl_CLKOUT_DIFF_DIV_SEL(r32,v)         _BFSET_(r32, 8, 6,v)
    #define   GET16pll_ctrl_CLKOUT_DIFF_DIV_SEL(r16)           _BFGET_(r16, 8, 6)
    #define   SET16pll_ctrl_CLKOUT_DIFF_DIV_SEL(r16,v)         _BFSET_(r16, 8, 6,v)

    #define   GET32pll_ctrl_CLKOUT_SE_DIV_SEL(r32)             _BFGET_(r32,11, 9)
    #define   SET32pll_ctrl_CLKOUT_SE_DIV_SEL(r32,v)           _BFSET_(r32,11, 9,v)
    #define   GET16pll_ctrl_CLKOUT_SE_DIV_SEL(r16)             _BFGET_(r16,11, 9)
    #define   SET16pll_ctrl_CLKOUT_SE_DIV_SEL(r16,v)           _BFSET_(r16,11, 9,v)

    #define   GET32pll_ctrl_CLKOUT_SOURCE_SEL(r32)             _BFGET_(r32,12,12)
    #define   SET32pll_ctrl_CLKOUT_SOURCE_SEL(r32,v)           _BFSET_(r32,12,12,v)
    #define   GET16pll_ctrl_CLKOUT_SOURCE_SEL(r16)             _BFGET_(r16,12,12)
    #define   SET16pll_ctrl_CLKOUT_SOURCE_SEL(r16,v)           _BFSET_(r16,12,12,v)

    #define   GET32pll_ctrl_CLKOUT_DIFF_EN(r32)                _BFGET_(r32,13,13)
    #define   SET32pll_ctrl_CLKOUT_DIFF_EN(r32,v)              _BFSET_(r32,13,13,v)
    #define   GET16pll_ctrl_CLKOUT_DIFF_EN(r16)                _BFGET_(r16,13,13)
    #define   SET16pll_ctrl_CLKOUT_DIFF_EN(r16,v)              _BFSET_(r16,13,13,v)

    #define   GET32pll_ctrl_BYPASS_EN(r32)                     _BFGET_(r32,14,14)
    #define   SET32pll_ctrl_BYPASS_EN(r32,v)                   _BFSET_(r32,14,14,v)
    #define   GET16pll_ctrl_BYPASS_EN(r16)                     _BFGET_(r16,14,14)
    #define   SET16pll_ctrl_BYPASS_EN(r16,v)                   _BFSET_(r16,14,14,v)

    #define   GET32pll_ctrl_CLKOUT_SE_GATING_EN(r32)           _BFGET_(r32,15,15)
    #define   SET32pll_ctrl_CLKOUT_SE_GATING_EN(r32,v)         _BFSET_(r32,15,15,v)
    #define   GET16pll_ctrl_CLKOUT_SE_GATING_EN(r16)           _BFGET_(r16,15,15)
    #define   SET16pll_ctrl_CLKOUT_SE_GATING_EN(r16,v)         _BFSET_(r16,15,15,v)

    #define   GET32pll_ctrl_FBCLK_EXT_SEL(r32)                 _BFGET_(r32,16,16)
    #define   SET32pll_ctrl_FBCLK_EXT_SEL(r32,v)               _BFSET_(r32,16,16,v)
    #define   GET16pll_ctrl_FBCLK_EXT_SEL(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16pll_ctrl_FBCLK_EXT_SEL(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32pll_ctrl_FBCDLY(r32)                        _BFGET_(r32,22,17)
    #define   SET32pll_ctrl_FBCDLY(r32,v)                      _BFSET_(r32,22,17,v)
    #define   GET16pll_ctrl_FBCDLY(r16)                        _BFGET_(r16, 6, 1)
    #define   SET16pll_ctrl_FBCDLY(r16,v)                      _BFSET_(r16, 6, 1,v)

    #define   GET32pll_ctrl_FD(r32)                            _BFGET_(r32,25,23)
    #define   SET32pll_ctrl_FD(r32,v)                          _BFSET_(r32,25,23,v)
    #define   GET16pll_ctrl_FD(r16)                            _BFGET_(r16, 9, 7)
    #define   SET16pll_ctrl_FD(r16,v)                          _BFSET_(r16, 9, 7,v)

    #define   GET32pll_ctrl_INTPI(r32)                         _BFGET_(r32,29,26)
    #define   SET32pll_ctrl_INTPI(r32,v)                       _BFSET_(r32,29,26,v)
    #define   GET16pll_ctrl_INTPI(r16)                         _BFGET_(r16,13,10)
    #define   SET16pll_ctrl_INTPI(r16,v)                       _BFSET_(r16,13,10,v)

    #define     w32pll_ctrl1                                   {\
            UNSG32 uctrl_KVCO                                  :  4;\
            UNSG32 uctrl_CTUNE                                 :  2;\
            UNSG32 uctrl_CLKOUT_DIFF_DIV_SEL                   :  3;\
            UNSG32 uctrl_CLKOUT_SE_DIV_SEL                     :  3;\
            UNSG32 uctrl_CLKOUT_SOURCE_SEL                     :  1;\
            UNSG32 uctrl_CLKOUT_DIFF_EN                        :  1;\
            UNSG32 uctrl_BYPASS_EN                             :  1;\
            UNSG32 uctrl_CLKOUT_SE_GATING_EN                   :  1;\
            UNSG32 uctrl_FBCLK_EXT_SEL                         :  1;\
            UNSG32 uctrl_FBCDLY                                :  6;\
            UNSG32 uctrl_FD                                    :  3;\
            UNSG32 uctrl_INTPI                                 :  4;\
            UNSG32 RSVDx4_b30                                  :  2;\
          }
    union { UNSG32 u32pll_ctrl1;
            struct w32pll_ctrl1;
          };
    #define   GET32pll_ctrl_INTPR(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32pll_ctrl_INTPR(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16pll_ctrl_INTPR(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16pll_ctrl_INTPR(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32pll_ctrl_PI_EN(r32)                         _BFGET_(r32, 3, 3)
    #define   SET32pll_ctrl_PI_EN(r32,v)                       _BFSET_(r32, 3, 3,v)
    #define   GET16pll_ctrl_PI_EN(r16)                         _BFGET_(r16, 3, 3)
    #define   SET16pll_ctrl_PI_EN(r16,v)                       _BFSET_(r16, 3, 3,v)

    #define   GET32pll_ctrl_PI_LOOP_MODE(r32)                  _BFGET_(r32, 4, 4)
    #define   SET32pll_ctrl_PI_LOOP_MODE(r32,v)                _BFSET_(r32, 4, 4,v)
    #define   GET16pll_ctrl_PI_LOOP_MODE(r16)                  _BFGET_(r16, 4, 4)
    #define   SET16pll_ctrl_PI_LOOP_MODE(r16,v)                _BFSET_(r16, 4, 4,v)

    #define   GET32pll_ctrl_CLK_DET_EN(r32)                    _BFGET_(r32, 5, 5)
    #define   SET32pll_ctrl_CLK_DET_EN(r32,v)                  _BFSET_(r32, 5, 5,v)
    #define   GET16pll_ctrl_CLK_DET_EN(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16pll_ctrl_CLK_DET_EN(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32pll_ctrl_RESET_PI(r32)                      _BFGET_(r32, 6, 6)
    #define   SET32pll_ctrl_RESET_PI(r32,v)                    _BFSET_(r32, 6, 6,v)
    #define   GET16pll_ctrl_RESET_PI(r16)                      _BFGET_(r16, 6, 6)
    #define   SET16pll_ctrl_RESET_PI(r16,v)                    _BFSET_(r16, 6, 6,v)

    #define   GET32pll_ctrl_RESET_SSC(r32)                     _BFGET_(r32, 7, 7)
    #define   SET32pll_ctrl_RESET_SSC(r32,v)                   _BFSET_(r32, 7, 7,v)
    #define   GET16pll_ctrl_RESET_SSC(r16)                     _BFGET_(r16, 7, 7)
    #define   SET16pll_ctrl_RESET_SSC(r16,v)                   _BFSET_(r16, 7, 7,v)

    #define   GET32pll_ctrl_FREQ_OFFSET_EN(r32)                _BFGET_(r32, 8, 8)
    #define   SET32pll_ctrl_FREQ_OFFSET_EN(r32,v)              _BFSET_(r32, 8, 8,v)
    #define   GET16pll_ctrl_FREQ_OFFSET_EN(r16)                _BFGET_(r16, 8, 8)
    #define   SET16pll_ctrl_FREQ_OFFSET_EN(r16,v)              _BFSET_(r16, 8, 8,v)

    #define   GET32pll_ctrl_FREQ_OFFSET(r32)                   _BFGET_(r32,25, 9)
    #define   SET32pll_ctrl_FREQ_OFFSET(r32,v)                 _BFSET_(r32,25, 9,v)

    #define   GET32pll_ctrl_FREQ_OFFSET_MODE_SELECTION(r32)    _BFGET_(r32,26,26)
    #define   SET32pll_ctrl_FREQ_OFFSET_MODE_SELECTION(r32,v)  _BFSET_(r32,26,26,v)
    #define   GET16pll_ctrl_FREQ_OFFSET_MODE_SELECTION(r16)    _BFGET_(r16,10,10)
    #define   SET16pll_ctrl_FREQ_OFFSET_MODE_SELECTION(r16,v)  _BFSET_(r16,10,10,v)

    #define   GET32pll_ctrl_FREQ_OFFSET_VALID(r32)             _BFGET_(r32,27,27)
    #define   SET32pll_ctrl_FREQ_OFFSET_VALID(r32,v)           _BFSET_(r32,27,27,v)
    #define   GET16pll_ctrl_FREQ_OFFSET_VALID(r16)             _BFGET_(r16,11,11)
    #define   SET16pll_ctrl_FREQ_OFFSET_VALID(r16,v)           _BFSET_(r16,11,11,v)

    #define   GET32pll_ctrl_SSC_CLK_EN(r32)                    _BFGET_(r32,28,28)
    #define   SET32pll_ctrl_SSC_CLK_EN(r32,v)                  _BFSET_(r32,28,28,v)
    #define   GET16pll_ctrl_SSC_CLK_EN(r16)                    _BFGET_(r16,12,12)
    #define   SET16pll_ctrl_SSC_CLK_EN(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32pll_ctrl_SSC_MODE(r32)                      _BFGET_(r32,29,29)
    #define   SET32pll_ctrl_SSC_MODE(r32,v)                    _BFSET_(r32,29,29,v)
    #define   GET16pll_ctrl_SSC_MODE(r16)                      _BFGET_(r16,13,13)
    #define   SET16pll_ctrl_SSC_MODE(r16,v)                    _BFSET_(r16,13,13,v)

    #define     w32pll_ctrl2                                   {\
            UNSG32 uctrl_INTPR                                 :  3;\
            UNSG32 uctrl_PI_EN                                 :  1;\
            UNSG32 uctrl_PI_LOOP_MODE                          :  1;\
            UNSG32 uctrl_CLK_DET_EN                            :  1;\
            UNSG32 uctrl_RESET_PI                              :  1;\
            UNSG32 uctrl_RESET_SSC                             :  1;\
            UNSG32 uctrl_FREQ_OFFSET_EN                        :  1;\
            UNSG32 uctrl_FREQ_OFFSET                           : 17;\
            UNSG32 uctrl_FREQ_OFFSET_MODE_SELECTION            :  1;\
            UNSG32 uctrl_FREQ_OFFSET_VALID                     :  1;\
            UNSG32 uctrl_SSC_CLK_EN                            :  1;\
            UNSG32 uctrl_SSC_MODE                              :  1;\
            UNSG32 RSVDx8_b30                                  :  2;\
          }
    union { UNSG32 u32pll_ctrl2;
            struct w32pll_ctrl2;
          };
    #define   GET32pll_ctrl_SSC_FREQ_DIV(r32)                  _BFGET_(r32,15, 0)
    #define   SET32pll_ctrl_SSC_FREQ_DIV(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16pll_ctrl_SSC_FREQ_DIV(r16)                  _BFGET_(r16,15, 0)
    #define   SET16pll_ctrl_SSC_FREQ_DIV(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32pll_ctrl_SSC_RNGE(r32)                      _BFGET_(r32,26,16)
    #define   SET32pll_ctrl_SSC_RNGE(r32,v)                    _BFSET_(r32,26,16,v)
    #define   GET16pll_ctrl_SSC_RNGE(r16)                      _BFGET_(r16,10, 0)
    #define   SET16pll_ctrl_SSC_RNGE(r16,v)                    _BFSET_(r16,10, 0,v)

    #define   GET32pll_ctrl_TEST_ANA(r32)                      _BFGET_(r32,30,27)
    #define   SET32pll_ctrl_TEST_ANA(r32,v)                    _BFSET_(r32,30,27,v)
    #define   GET16pll_ctrl_TEST_ANA(r16)                      _BFGET_(r16,14,11)
    #define   SET16pll_ctrl_TEST_ANA(r16,v)                    _BFSET_(r16,14,11,v)

    #define     w32pll_ctrl3                                   {\
            UNSG32 uctrl_SSC_FREQ_DIV                          : 16;\
            UNSG32 uctrl_SSC_RNGE                              : 11;\
            UNSG32 uctrl_TEST_ANA                              :  4;\
            UNSG32 RSVDxC_b31                                  :  1;\
          }
    union { UNSG32 u32pll_ctrl3;
            struct w32pll_ctrl3;
          };
    #define   GET32pll_ctrl_RESERVE_IN(r32)                    _BFGET_(r32, 7, 0)
    #define   SET32pll_ctrl_RESERVE_IN(r32,v)                  _BFSET_(r32, 7, 0,v)
    #define   GET16pll_ctrl_RESERVE_IN(r16)                    _BFGET_(r16, 7, 0)
    #define   SET16pll_ctrl_RESERVE_IN(r16,v)                  _BFSET_(r16, 7, 0,v)

    #define     w32pll_ctrl4                                   {\
            UNSG32 uctrl_RESERVE_IN                            :  8;\
            UNSG32 RSVDx10_b8                                  : 24;\
          }
    union { UNSG32 u32pll_ctrl4;
            struct w32pll_ctrl4;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32pll_status_PLL_LOCK(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32pll_status_PLL_LOCK(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16pll_status_PLL_LOCK(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16pll_status_PLL_LOCK(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32pll_status_CLK_CFMOD(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32pll_status_CLK_CFMOD(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16pll_status_CLK_CFMOD(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16pll_status_CLK_CFMOD(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32pll_status_CLK_FMOD(r32)                    _BFGET_(r32, 2, 2)
    #define   SET32pll_status_CLK_FMOD(r32,v)                  _BFSET_(r32, 2, 2,v)
    #define   GET16pll_status_CLK_FMOD(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16pll_status_CLK_FMOD(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32pll_status_RESERVE_OUT(r32)                 _BFGET_(r32,10, 3)
    #define   SET32pll_status_RESERVE_OUT(r32,v)               _BFSET_(r32,10, 3,v)
    #define   GET16pll_status_RESERVE_OUT(r16)                 _BFGET_(r16,10, 3)
    #define   SET16pll_status_RESERVE_OUT(r16,v)               _BFSET_(r16,10, 3,v)

    #define     w32pll_status                                  {\
            UNSG32 ustatus_PLL_LOCK                            :  1;\
            UNSG32 ustatus_CLK_CFMOD                           :  1;\
            UNSG32 ustatus_CLK_FMOD                            :  1;\
            UNSG32 ustatus_RESERVE_OUT                         :  8;\
            UNSG32 RSVDx14_b11                                 : 21;\
          }
    union { UNSG32 u32pll_status;
            struct w32pll_status;
          };
    ///////////////////////////////////////////////////////////
    } SIE_pll;

    typedef union  T32pll_ctrl
          { UNSG32 u32;
            struct w32pll_ctrl;
                 } T32pll_ctrl;
    typedef union  T32pll_ctrl1
          { UNSG32 u32;
            struct w32pll_ctrl1;
                 } T32pll_ctrl1;
    typedef union  T32pll_ctrl2
          { UNSG32 u32;
            struct w32pll_ctrl2;
                 } T32pll_ctrl2;
    typedef union  T32pll_ctrl3
          { UNSG32 u32;
            struct w32pll_ctrl3;
                 } T32pll_ctrl3;
    typedef union  T32pll_ctrl4
          { UNSG32 u32;
            struct w32pll_ctrl4;
                 } T32pll_ctrl4;
    typedef union  T32pll_status
          { UNSG32 u32;
            struct w32pll_status;
                 } T32pll_status;
    ///////////////////////////////////////////////////////////

    typedef union  Tpll_ctrl
          { UNSG32 u32[5];
            struct {
            struct w32pll_ctrl;
            struct w32pll_ctrl1;
            struct w32pll_ctrl2;
            struct w32pll_ctrl3;
            struct w32pll_ctrl4;
                   };
                 } Tpll_ctrl;
    typedef union  Tpll_status
          { UNSG32 u32[1];
            struct {
            struct w32pll_status;
                   };
                 } Tpll_status;

    ///////////////////////////////////////////////////////////
     SIGN32 pll_drvrd(SIE_pll *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 pll_drvwr(SIE_pll *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void pll_reset(SIE_pll *p);
     SIGN32 pll_cmp  (SIE_pll *p, SIE_pll *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define pll_check(p,pie,pfx,hLOG) pll_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define pll_print(p,    pfx,hLOG) pll_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: pll
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MoltresReg              biu              (4,4)
///     ###
///     * All the controls for Moltres (PJ4-MP) sub-system (moltres_mp_ip).
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CTRL5                (RW-)
///               ###
///               * CoreSight related controls
///               ###
///               %unsigned 1  dbgen                     0x1
///                                    ###
///                                    * Invasive Debug Enable.
///                                    ###
///               %unsigned 1  spiden                    0x1
///                                    ###
///                                    * Secure Invasive Debug Enable
///                                    ###
///               %unsigned 1  niden                     0x1
///                                    ###
///                                    * Non Invasive Debug Enable
///                                    ###
///               %unsigned 1  spniden                   0x1
///                                    ###
///                                    * Secure Non Invasive Debug Enable
///                                    ###
///               %unsigned 1  dbgrq                     0x0
///                                    ###
///                                    * Always write as 0.
///                                    ###
///               %unsigned 1  TPCTL                     0x0
///                                    ###
///                                    * report the presence of TRACECTL pin.
///                                    ###
///               %unsigned 5  TPMAXDATASIZE             0x0
///                                    ###
///                                    * indicates the maximum TRACEDATA width.
///                                    ###
///               %unsigned 1  DEVICEEN                  0x1
///                                    ###
///                                    * Enables APB-AP interface
///                                    ###
///               %%        20         # Stuffing bits...
///     @ 0x00004 SoftResetn           (P)
///               ###
///               * Controls various reset inputs of moltres_mp_ip
///               ###
///               %unsigned 1  CPUAxi                    0x1
///                                    ###
///                                    * Active low reset for CPU's AXI bus. Connected to HRESETn input of moltres_mp_ip.
///                                    ###
///               %unsigned 1  MpSubSys                  0x1
///                                    ###
///                                    * Active low reset for MP sub-system (peripherals, timers, watchdogs, AXI, ATB).
///                                    * Controls subsys_awake_nreset input of moltres_mp_ip
///                                    ###
///               %unsigned 1  CoreSight                 0x1
///                                    ###
///                                    * Active low reset for CoreSight module. Resets APB , ATB & CTM interfaces.
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00008 sysIntPol            (P)
///               %unsigned 32 invert                    0x0
///                                    ###
///                                    * one bit per each interrupt source, interrupt position follow IRQ table defined in pic.sxw.txt
///                                    * 0 : Don't invert before sending to GIC inside PJ4-MP
///                                    * 1 : Invert before sending to GIC inside PJ4B-MP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      12B, bits:      47b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MoltresReg
#define h_MoltresReg (){}

    #define     RA_MoltresReg_CTRL5                            0x0000

    #define     BA_MoltresReg_CTRL5_dbgen                      0x0000
    #define     B16MoltresReg_CTRL5_dbgen                      0x0000
    #define   LSb32MoltresReg_CTRL5_dbgen                         0
    #define   LSb16MoltresReg_CTRL5_dbgen                         0
    #define       bMoltresReg_CTRL5_dbgen                      1
    #define   MSK32MoltresReg_CTRL5_dbgen                         0x00000001

    #define     BA_MoltresReg_CTRL5_spiden                     0x0000
    #define     B16MoltresReg_CTRL5_spiden                     0x0000
    #define   LSb32MoltresReg_CTRL5_spiden                        1
    #define   LSb16MoltresReg_CTRL5_spiden                        1
    #define       bMoltresReg_CTRL5_spiden                     1
    #define   MSK32MoltresReg_CTRL5_spiden                        0x00000002

    #define     BA_MoltresReg_CTRL5_niden                      0x0000
    #define     B16MoltresReg_CTRL5_niden                      0x0000
    #define   LSb32MoltresReg_CTRL5_niden                         2
    #define   LSb16MoltresReg_CTRL5_niden                         2
    #define       bMoltresReg_CTRL5_niden                      1
    #define   MSK32MoltresReg_CTRL5_niden                         0x00000004

    #define     BA_MoltresReg_CTRL5_spniden                    0x0000
    #define     B16MoltresReg_CTRL5_spniden                    0x0000
    #define   LSb32MoltresReg_CTRL5_spniden                       3
    #define   LSb16MoltresReg_CTRL5_spniden                       3
    #define       bMoltresReg_CTRL5_spniden                    1
    #define   MSK32MoltresReg_CTRL5_spniden                       0x00000008

    #define     BA_MoltresReg_CTRL5_dbgrq                      0x0000
    #define     B16MoltresReg_CTRL5_dbgrq                      0x0000
    #define   LSb32MoltresReg_CTRL5_dbgrq                         4
    #define   LSb16MoltresReg_CTRL5_dbgrq                         4
    #define       bMoltresReg_CTRL5_dbgrq                      1
    #define   MSK32MoltresReg_CTRL5_dbgrq                         0x00000010

    #define     BA_MoltresReg_CTRL5_TPCTL                      0x0000
    #define     B16MoltresReg_CTRL5_TPCTL                      0x0000
    #define   LSb32MoltresReg_CTRL5_TPCTL                         5
    #define   LSb16MoltresReg_CTRL5_TPCTL                         5
    #define       bMoltresReg_CTRL5_TPCTL                      1
    #define   MSK32MoltresReg_CTRL5_TPCTL                         0x00000020

    #define     BA_MoltresReg_CTRL5_TPMAXDATASIZE              0x0000
    #define     B16MoltresReg_CTRL5_TPMAXDATASIZE              0x0000
    #define   LSb32MoltresReg_CTRL5_TPMAXDATASIZE                 6
    #define   LSb16MoltresReg_CTRL5_TPMAXDATASIZE                 6
    #define       bMoltresReg_CTRL5_TPMAXDATASIZE              5
    #define   MSK32MoltresReg_CTRL5_TPMAXDATASIZE                 0x000007C0

    #define     BA_MoltresReg_CTRL5_DEVICEEN                   0x0001
    #define     B16MoltresReg_CTRL5_DEVICEEN                   0x0000
    #define   LSb32MoltresReg_CTRL5_DEVICEEN                      11
    #define   LSb16MoltresReg_CTRL5_DEVICEEN                      11
    #define       bMoltresReg_CTRL5_DEVICEEN                   1
    #define   MSK32MoltresReg_CTRL5_DEVICEEN                      0x00000800
    ///////////////////////////////////////////////////////////
    #define     RA_MoltresReg_SoftResetn                       0x0004

    #define     BA_MoltresReg_SoftResetn_CPUAxi                0x0004
    #define     B16MoltresReg_SoftResetn_CPUAxi                0x0004
    #define   LSb32MoltresReg_SoftResetn_CPUAxi                   0
    #define   LSb16MoltresReg_SoftResetn_CPUAxi                   0
    #define       bMoltresReg_SoftResetn_CPUAxi                1
    #define   MSK32MoltresReg_SoftResetn_CPUAxi                   0x00000001

    #define     BA_MoltresReg_SoftResetn_MpSubSys              0x0004
    #define     B16MoltresReg_SoftResetn_MpSubSys              0x0004
    #define   LSb32MoltresReg_SoftResetn_MpSubSys                 1
    #define   LSb16MoltresReg_SoftResetn_MpSubSys                 1
    #define       bMoltresReg_SoftResetn_MpSubSys              1
    #define   MSK32MoltresReg_SoftResetn_MpSubSys                 0x00000002

    #define     BA_MoltresReg_SoftResetn_CoreSight             0x0004
    #define     B16MoltresReg_SoftResetn_CoreSight             0x0004
    #define   LSb32MoltresReg_SoftResetn_CoreSight                2
    #define   LSb16MoltresReg_SoftResetn_CoreSight                2
    #define       bMoltresReg_SoftResetn_CoreSight             1
    #define   MSK32MoltresReg_SoftResetn_CoreSight                0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_MoltresReg_sysIntPol                        0x0008

    #define     BA_MoltresReg_sysIntPol_invert                 0x0008
    #define     B16MoltresReg_sysIntPol_invert                 0x0008
    #define   LSb32MoltresReg_sysIntPol_invert                    0
    #define   LSb16MoltresReg_sysIntPol_invert                    0
    #define       bMoltresReg_sysIntPol_invert                 32
    #define   MSK32MoltresReg_sysIntPol_invert                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MoltresReg {
    ///////////////////////////////////////////////////////////
    #define   GET32MoltresReg_CTRL5_dbgen(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32MoltresReg_CTRL5_dbgen(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16MoltresReg_CTRL5_dbgen(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16MoltresReg_CTRL5_dbgen(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32MoltresReg_CTRL5_spiden(r32)                _BFGET_(r32, 1, 1)
    #define   SET32MoltresReg_CTRL5_spiden(r32,v)              _BFSET_(r32, 1, 1,v)
    #define   GET16MoltresReg_CTRL5_spiden(r16)                _BFGET_(r16, 1, 1)
    #define   SET16MoltresReg_CTRL5_spiden(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32MoltresReg_CTRL5_niden(r32)                 _BFGET_(r32, 2, 2)
    #define   SET32MoltresReg_CTRL5_niden(r32,v)               _BFSET_(r32, 2, 2,v)
    #define   GET16MoltresReg_CTRL5_niden(r16)                 _BFGET_(r16, 2, 2)
    #define   SET16MoltresReg_CTRL5_niden(r16,v)               _BFSET_(r16, 2, 2,v)

    #define   GET32MoltresReg_CTRL5_spniden(r32)               _BFGET_(r32, 3, 3)
    #define   SET32MoltresReg_CTRL5_spniden(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16MoltresReg_CTRL5_spniden(r16)               _BFGET_(r16, 3, 3)
    #define   SET16MoltresReg_CTRL5_spniden(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32MoltresReg_CTRL5_dbgrq(r32)                 _BFGET_(r32, 4, 4)
    #define   SET32MoltresReg_CTRL5_dbgrq(r32,v)               _BFSET_(r32, 4, 4,v)
    #define   GET16MoltresReg_CTRL5_dbgrq(r16)                 _BFGET_(r16, 4, 4)
    #define   SET16MoltresReg_CTRL5_dbgrq(r16,v)               _BFSET_(r16, 4, 4,v)

    #define   GET32MoltresReg_CTRL5_TPCTL(r32)                 _BFGET_(r32, 5, 5)
    #define   SET32MoltresReg_CTRL5_TPCTL(r32,v)               _BFSET_(r32, 5, 5,v)
    #define   GET16MoltresReg_CTRL5_TPCTL(r16)                 _BFGET_(r16, 5, 5)
    #define   SET16MoltresReg_CTRL5_TPCTL(r16,v)               _BFSET_(r16, 5, 5,v)

    #define   GET32MoltresReg_CTRL5_TPMAXDATASIZE(r32)         _BFGET_(r32,10, 6)
    #define   SET32MoltresReg_CTRL5_TPMAXDATASIZE(r32,v)       _BFSET_(r32,10, 6,v)
    #define   GET16MoltresReg_CTRL5_TPMAXDATASIZE(r16)         _BFGET_(r16,10, 6)
    #define   SET16MoltresReg_CTRL5_TPMAXDATASIZE(r16,v)       _BFSET_(r16,10, 6,v)

    #define   GET32MoltresReg_CTRL5_DEVICEEN(r32)              _BFGET_(r32,11,11)
    #define   SET32MoltresReg_CTRL5_DEVICEEN(r32,v)            _BFSET_(r32,11,11,v)
    #define   GET16MoltresReg_CTRL5_DEVICEEN(r16)              _BFGET_(r16,11,11)
    #define   SET16MoltresReg_CTRL5_DEVICEEN(r16,v)            _BFSET_(r16,11,11,v)

    #define     w32MoltresReg_CTRL5                            {\
            UNSG32 uCTRL5_dbgen                                :  1;\
            UNSG32 uCTRL5_spiden                               :  1;\
            UNSG32 uCTRL5_niden                                :  1;\
            UNSG32 uCTRL5_spniden                              :  1;\
            UNSG32 uCTRL5_dbgrq                                :  1;\
            UNSG32 uCTRL5_TPCTL                                :  1;\
            UNSG32 uCTRL5_TPMAXDATASIZE                        :  5;\
            UNSG32 uCTRL5_DEVICEEN                             :  1;\
            UNSG32 RSVDx0_b12                                  : 20;\
          }
    union { UNSG32 u32MoltresReg_CTRL5;
            struct w32MoltresReg_CTRL5;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32MoltresReg_SoftResetn_CPUAxi(r32)           _BFGET_(r32, 0, 0)
    #define   SET32MoltresReg_SoftResetn_CPUAxi(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16MoltresReg_SoftResetn_CPUAxi(r16)           _BFGET_(r16, 0, 0)
    #define   SET16MoltresReg_SoftResetn_CPUAxi(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32MoltresReg_SoftResetn_MpSubSys(r32)         _BFGET_(r32, 1, 1)
    #define   SET32MoltresReg_SoftResetn_MpSubSys(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16MoltresReg_SoftResetn_MpSubSys(r16)         _BFGET_(r16, 1, 1)
    #define   SET16MoltresReg_SoftResetn_MpSubSys(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32MoltresReg_SoftResetn_CoreSight(r32)        _BFGET_(r32, 2, 2)
    #define   SET32MoltresReg_SoftResetn_CoreSight(r32,v)      _BFSET_(r32, 2, 2,v)
    #define   GET16MoltresReg_SoftResetn_CoreSight(r16)        _BFGET_(r16, 2, 2)
    #define   SET16MoltresReg_SoftResetn_CoreSight(r16,v)      _BFSET_(r16, 2, 2,v)

    #define     w32MoltresReg_SoftResetn                       {\
            UNSG32 uSoftResetn_CPUAxi                          :  1;\
            UNSG32 uSoftResetn_MpSubSys                        :  1;\
            UNSG32 uSoftResetn_CoreSight                       :  1;\
            UNSG32 RSVDx4_b3                                   : 29;\
          }
    union { UNSG32 u32MoltresReg_SoftResetn;
            struct w32MoltresReg_SoftResetn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32MoltresReg_sysIntPol_invert(r32)            _BFGET_(r32,31, 0)
    #define   SET32MoltresReg_sysIntPol_invert(r32,v)          _BFSET_(r32,31, 0,v)

    #define     w32MoltresReg_sysIntPol                        {\
            UNSG32 usysIntPol_invert                           : 32;\
          }
    union { UNSG32 u32MoltresReg_sysIntPol;
            struct w32MoltresReg_sysIntPol;
          };
    ///////////////////////////////////////////////////////////
    } SIE_MoltresReg;

    typedef union  T32MoltresReg_CTRL5
          { UNSG32 u32;
            struct w32MoltresReg_CTRL5;
                 } T32MoltresReg_CTRL5;
    typedef union  T32MoltresReg_SoftResetn
          { UNSG32 u32;
            struct w32MoltresReg_SoftResetn;
                 } T32MoltresReg_SoftResetn;
    typedef union  T32MoltresReg_sysIntPol
          { UNSG32 u32;
            struct w32MoltresReg_sysIntPol;
                 } T32MoltresReg_sysIntPol;
    ///////////////////////////////////////////////////////////

    typedef union  TMoltresReg_CTRL5
          { UNSG32 u32[1];
            struct {
            struct w32MoltresReg_CTRL5;
                   };
                 } TMoltresReg_CTRL5;
    typedef union  TMoltresReg_SoftResetn
          { UNSG32 u32[1];
            struct {
            struct w32MoltresReg_SoftResetn;
                   };
                 } TMoltresReg_SoftResetn;
    typedef union  TMoltresReg_sysIntPol
          { UNSG32 u32[1];
            struct {
            struct w32MoltresReg_sysIntPol;
                   };
                 } TMoltresReg_sysIntPol;

    ///////////////////////////////////////////////////////////
     SIGN32 MoltresReg_drvrd(SIE_MoltresReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MoltresReg_drvwr(SIE_MoltresReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MoltresReg_reset(SIE_MoltresReg *p);
     SIGN32 MoltresReg_cmp  (SIE_MoltresReg *p, SIE_MoltresReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MoltresReg_check(p,pie,pfx,hLOG) MoltresReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MoltresReg_print(p,    pfx,hLOG) MoltresReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MoltresReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IDReg                   biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CTRL                 (P)
///               ###
///               * ID to {AxUSER, AxCACHE} mapping. Transaction is routed to IOB if (AxUSER | AxCACHE[1]) is true.
///               ###
///               %unsigned 4  AWCAHE                    0x0
///                                    ###
///                                    * AWCAHE corresponding to this ID.
///                                    ###
///               %unsigned 1  AWUSER                    0x0
///                                    ###
///                                    * AWUSER corresponding to this ID.
///                                    ###
///               %unsigned 4  ARCAHE                    0x0
///                                    ###
///                                    * ARCAHE corresponding to this ID.
///                                    ###
///               %unsigned 1  ARUSER                    0x0
///                                    ###
///                                    * ARUSER corresponding to this ID.
///                                    ###
///               %%        22         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      10b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IDReg
#define h_IDReg (){}

    #define     RA_IDReg_CTRL                                  0x0000

    #define     BA_IDReg_CTRL_AWCAHE                           0x0000
    #define     B16IDReg_CTRL_AWCAHE                           0x0000
    #define   LSb32IDReg_CTRL_AWCAHE                              0
    #define   LSb16IDReg_CTRL_AWCAHE                              0
    #define       bIDReg_CTRL_AWCAHE                           4
    #define   MSK32IDReg_CTRL_AWCAHE                              0x0000000F

    #define     BA_IDReg_CTRL_AWUSER                           0x0000
    #define     B16IDReg_CTRL_AWUSER                           0x0000
    #define   LSb32IDReg_CTRL_AWUSER                              4
    #define   LSb16IDReg_CTRL_AWUSER                              4
    #define       bIDReg_CTRL_AWUSER                           1
    #define   MSK32IDReg_CTRL_AWUSER                              0x00000010

    #define     BA_IDReg_CTRL_ARCAHE                           0x0000
    #define     B16IDReg_CTRL_ARCAHE                           0x0000
    #define   LSb32IDReg_CTRL_ARCAHE                              5
    #define   LSb16IDReg_CTRL_ARCAHE                              5
    #define       bIDReg_CTRL_ARCAHE                           4
    #define   MSK32IDReg_CTRL_ARCAHE                              0x000001E0

    #define     BA_IDReg_CTRL_ARUSER                           0x0001
    #define     B16IDReg_CTRL_ARUSER                           0x0000
    #define   LSb32IDReg_CTRL_ARUSER                              9
    #define   LSb16IDReg_CTRL_ARUSER                              9
    #define       bIDReg_CTRL_ARUSER                           1
    #define   MSK32IDReg_CTRL_ARUSER                              0x00000200
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IDReg {
    ///////////////////////////////////////////////////////////
    #define   GET32IDReg_CTRL_AWCAHE(r32)                      _BFGET_(r32, 3, 0)
    #define   SET32IDReg_CTRL_AWCAHE(r32,v)                    _BFSET_(r32, 3, 0,v)
    #define   GET16IDReg_CTRL_AWCAHE(r16)                      _BFGET_(r16, 3, 0)
    #define   SET16IDReg_CTRL_AWCAHE(r16,v)                    _BFSET_(r16, 3, 0,v)

    #define   GET32IDReg_CTRL_AWUSER(r32)                      _BFGET_(r32, 4, 4)
    #define   SET32IDReg_CTRL_AWUSER(r32,v)                    _BFSET_(r32, 4, 4,v)
    #define   GET16IDReg_CTRL_AWUSER(r16)                      _BFGET_(r16, 4, 4)
    #define   SET16IDReg_CTRL_AWUSER(r16,v)                    _BFSET_(r16, 4, 4,v)

    #define   GET32IDReg_CTRL_ARCAHE(r32)                      _BFGET_(r32, 8, 5)
    #define   SET32IDReg_CTRL_ARCAHE(r32,v)                    _BFSET_(r32, 8, 5,v)
    #define   GET16IDReg_CTRL_ARCAHE(r16)                      _BFGET_(r16, 8, 5)
    #define   SET16IDReg_CTRL_ARCAHE(r16,v)                    _BFSET_(r16, 8, 5,v)

    #define   GET32IDReg_CTRL_ARUSER(r32)                      _BFGET_(r32, 9, 9)
    #define   SET32IDReg_CTRL_ARUSER(r32,v)                    _BFSET_(r32, 9, 9,v)
    #define   GET16IDReg_CTRL_ARUSER(r16)                      _BFGET_(r16, 9, 9)
    #define   SET16IDReg_CTRL_ARUSER(r16,v)                    _BFSET_(r16, 9, 9,v)

    #define     w32IDReg_CTRL                                  {\
            UNSG32 uCTRL_AWCAHE                                :  4;\
            UNSG32 uCTRL_AWUSER                                :  1;\
            UNSG32 uCTRL_ARCAHE                                :  4;\
            UNSG32 uCTRL_ARUSER                                :  1;\
            UNSG32 RSVDx0_b10                                  : 22;\
          }
    union { UNSG32 u32IDReg_CTRL;
            struct w32IDReg_CTRL;
          };
    ///////////////////////////////////////////////////////////
    } SIE_IDReg;

    typedef union  T32IDReg_CTRL
          { UNSG32 u32;
            struct w32IDReg_CTRL;
                 } T32IDReg_CTRL;
    ///////////////////////////////////////////////////////////

    typedef union  TIDReg_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32IDReg_CTRL;
                   };
                 } TIDReg_CTRL;

    ///////////////////////////////////////////////////////////
     SIGN32 IDReg_drvrd(SIE_IDReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IDReg_drvwr(SIE_IDReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IDReg_reset(SIE_IDReg *p);
     SIGN32 IDReg_cmp  (SIE_IDReg *p, SIE_IDReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IDReg_check(p,pie,pfx,hLOG) IDReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IDReg_print(p,    pfx,hLOG) IDReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IDReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AxiErrorMon                              (4,4)
///     ###
///     * AXI Bus Error Response Monitor
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 WriteID              (R-)
///               %unsigned 32 berrID                    0x0
///                                    ###
///                                    * ID of AXI Write Transaction that caused an error response
///                                    ###
///     @ 0x00004 WriteStat            (R-)
///               %unsigned 1  berrType                  0x0
///                                    ###
///                                    * Error Response Type
///                                    * 0: SLVERR
///                                    * 1: DECERR
///                                    ###
///               %unsigned 1  berrValid                 0x0
///                                    ###
///                                    * When asserted, an error response is detected and the information are captured into berrID and berrType.
///                                    * Monitoring is stopped
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00008 WriteCtrl            (RW)
///               %unsigned 1  berrClear                 0x0
///                                    ###
///                                    * Writing 1 will clear berrValid and resume the monitoring.
///                                    * This bit self clears.
///                                    ###
///               %unsigned 1  berrIntrEn                0x0
///                                    ###
///                                    * 1: Monitor generates an active high interrupt when berrValid = 1
///                                    * 0: Interrupt is masked.
///                                    * Note: To clear interrupt, write 1 to berrClear
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x0000C ReadID               (R-)
///               %unsigned 32 rerrID                    0x0
///                                    ###
///                                    * ID of AXI Read Transaction that caused an error response
///                                    ###
///     @ 0x00010 ReadStat             (R-)
///               %unsigned 1  rerrType                  0x0
///                                    ###
///                                    * Error Response Type
///                                    * 0: SLVERR
///                                    * 1: DECERR
///                                    ###
///               %unsigned 1  rerrValid                 0x0
///                                    ###
///                                    * When asserted, an error response is detected and the information are captured into rerrID and rerrType.
///                                    * Monitoring is stopped
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00014 ReadCtrl             (RW)
///               %unsigned 1  rerrClear                 0x0
///                                    ###
///                                    * Writing 1 will clear rerrValid and resume the monitoring.
///                                    * This bit self clears.
///                                    ###
///               %unsigned 1  rerrIntrEn                0x0
///                                    ###
///                                    * 1: Monitor generates an active high interrupt when berrValid = 1
///                                    * 0: Interrupt is masked.
///                                    * Note: To clear interrupt, write 1 to berrClear
///                                    ###
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      24B, bits:      72b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AxiErrorMon
#define h_AxiErrorMon (){}

    #define     RA_AxiErrorMon_WriteID                         0x0000

    #define     BA_AxiErrorMon_WriteID_berrID                  0x0000
    #define     B16AxiErrorMon_WriteID_berrID                  0x0000
    #define   LSb32AxiErrorMon_WriteID_berrID                     0
    #define   LSb16AxiErrorMon_WriteID_berrID                     0
    #define       bAxiErrorMon_WriteID_berrID                  32
    #define   MSK32AxiErrorMon_WriteID_berrID                     0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiErrorMon_WriteStat                       0x0004

    #define     BA_AxiErrorMon_WriteStat_berrType              0x0004
    #define     B16AxiErrorMon_WriteStat_berrType              0x0004
    #define   LSb32AxiErrorMon_WriteStat_berrType                 0
    #define   LSb16AxiErrorMon_WriteStat_berrType                 0
    #define       bAxiErrorMon_WriteStat_berrType              1
    #define   MSK32AxiErrorMon_WriteStat_berrType                 0x00000001

    #define     BA_AxiErrorMon_WriteStat_berrValid             0x0004
    #define     B16AxiErrorMon_WriteStat_berrValid             0x0004
    #define   LSb32AxiErrorMon_WriteStat_berrValid                1
    #define   LSb16AxiErrorMon_WriteStat_berrValid                1
    #define       bAxiErrorMon_WriteStat_berrValid             1
    #define   MSK32AxiErrorMon_WriteStat_berrValid                0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_AxiErrorMon_WriteCtrl                       0x0008

    #define     BA_AxiErrorMon_WriteCtrl_berrClear             0x0008
    #define     B16AxiErrorMon_WriteCtrl_berrClear             0x0008
    #define   LSb32AxiErrorMon_WriteCtrl_berrClear                0
    #define   LSb16AxiErrorMon_WriteCtrl_berrClear                0
    #define       bAxiErrorMon_WriteCtrl_berrClear             1
    #define   MSK32AxiErrorMon_WriteCtrl_berrClear                0x00000001

    #define     BA_AxiErrorMon_WriteCtrl_berrIntrEn            0x0008
    #define     B16AxiErrorMon_WriteCtrl_berrIntrEn            0x0008
    #define   LSb32AxiErrorMon_WriteCtrl_berrIntrEn               1
    #define   LSb16AxiErrorMon_WriteCtrl_berrIntrEn               1
    #define       bAxiErrorMon_WriteCtrl_berrIntrEn            1
    #define   MSK32AxiErrorMon_WriteCtrl_berrIntrEn               0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_AxiErrorMon_ReadID                          0x000C

    #define     BA_AxiErrorMon_ReadID_rerrID                   0x000C
    #define     B16AxiErrorMon_ReadID_rerrID                   0x000C
    #define   LSb32AxiErrorMon_ReadID_rerrID                      0
    #define   LSb16AxiErrorMon_ReadID_rerrID                      0
    #define       bAxiErrorMon_ReadID_rerrID                   32
    #define   MSK32AxiErrorMon_ReadID_rerrID                      0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiErrorMon_ReadStat                        0x0010

    #define     BA_AxiErrorMon_ReadStat_rerrType               0x0010
    #define     B16AxiErrorMon_ReadStat_rerrType               0x0010
    #define   LSb32AxiErrorMon_ReadStat_rerrType                  0
    #define   LSb16AxiErrorMon_ReadStat_rerrType                  0
    #define       bAxiErrorMon_ReadStat_rerrType               1
    #define   MSK32AxiErrorMon_ReadStat_rerrType                  0x00000001

    #define     BA_AxiErrorMon_ReadStat_rerrValid              0x0010
    #define     B16AxiErrorMon_ReadStat_rerrValid              0x0010
    #define   LSb32AxiErrorMon_ReadStat_rerrValid                 1
    #define   LSb16AxiErrorMon_ReadStat_rerrValid                 1
    #define       bAxiErrorMon_ReadStat_rerrValid              1
    #define   MSK32AxiErrorMon_ReadStat_rerrValid                 0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_AxiErrorMon_ReadCtrl                        0x0014

    #define     BA_AxiErrorMon_ReadCtrl_rerrClear              0x0014
    #define     B16AxiErrorMon_ReadCtrl_rerrClear              0x0014
    #define   LSb32AxiErrorMon_ReadCtrl_rerrClear                 0
    #define   LSb16AxiErrorMon_ReadCtrl_rerrClear                 0
    #define       bAxiErrorMon_ReadCtrl_rerrClear              1
    #define   MSK32AxiErrorMon_ReadCtrl_rerrClear                 0x00000001

    #define     BA_AxiErrorMon_ReadCtrl_rerrIntrEn             0x0014
    #define     B16AxiErrorMon_ReadCtrl_rerrIntrEn             0x0014
    #define   LSb32AxiErrorMon_ReadCtrl_rerrIntrEn                1
    #define   LSb16AxiErrorMon_ReadCtrl_rerrIntrEn                1
    #define       bAxiErrorMon_ReadCtrl_rerrIntrEn             1
    #define   MSK32AxiErrorMon_ReadCtrl_rerrIntrEn                0x00000002
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AxiErrorMon {
    ///////////////////////////////////////////////////////////
    #define   GET32AxiErrorMon_WriteID_berrID(r32)             _BFGET_(r32,31, 0)
    #define   SET32AxiErrorMon_WriteID_berrID(r32,v)           _BFSET_(r32,31, 0,v)

    #define     w32AxiErrorMon_WriteID                         {\
            UNSG32 uWriteID_berrID                             : 32;\
          }
    union { UNSG32 u32AxiErrorMon_WriteID;
            struct w32AxiErrorMon_WriteID;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiErrorMon_WriteStat_berrType(r32)         _BFGET_(r32, 0, 0)
    #define   SET32AxiErrorMon_WriteStat_berrType(r32,v)       _BFSET_(r32, 0, 0,v)
    #define   GET16AxiErrorMon_WriteStat_berrType(r16)         _BFGET_(r16, 0, 0)
    #define   SET16AxiErrorMon_WriteStat_berrType(r16,v)       _BFSET_(r16, 0, 0,v)

    #define   GET32AxiErrorMon_WriteStat_berrValid(r32)        _BFGET_(r32, 1, 1)
    #define   SET32AxiErrorMon_WriteStat_berrValid(r32,v)      _BFSET_(r32, 1, 1,v)
    #define   GET16AxiErrorMon_WriteStat_berrValid(r16)        _BFGET_(r16, 1, 1)
    #define   SET16AxiErrorMon_WriteStat_berrValid(r16,v)      _BFSET_(r16, 1, 1,v)

    #define     w32AxiErrorMon_WriteStat                       {\
            UNSG32 uWriteStat_berrType                         :  1;\
            UNSG32 uWriteStat_berrValid                        :  1;\
            UNSG32 RSVDx4_b2                                   : 30;\
          }
    union { UNSG32 u32AxiErrorMon_WriteStat;
            struct w32AxiErrorMon_WriteStat;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiErrorMon_WriteCtrl_berrClear(r32)        _BFGET_(r32, 0, 0)
    #define   SET32AxiErrorMon_WriteCtrl_berrClear(r32,v)      _BFSET_(r32, 0, 0,v)
    #define   GET16AxiErrorMon_WriteCtrl_berrClear(r16)        _BFGET_(r16, 0, 0)
    #define   SET16AxiErrorMon_WriteCtrl_berrClear(r16,v)      _BFSET_(r16, 0, 0,v)

    #define   GET32AxiErrorMon_WriteCtrl_berrIntrEn(r32)       _BFGET_(r32, 1, 1)
    #define   SET32AxiErrorMon_WriteCtrl_berrIntrEn(r32,v)     _BFSET_(r32, 1, 1,v)
    #define   GET16AxiErrorMon_WriteCtrl_berrIntrEn(r16)       _BFGET_(r16, 1, 1)
    #define   SET16AxiErrorMon_WriteCtrl_berrIntrEn(r16,v)     _BFSET_(r16, 1, 1,v)

    #define     w32AxiErrorMon_WriteCtrl                       {\
            UNSG32 uWriteCtrl_berrClear                        :  1;\
            UNSG32 uWriteCtrl_berrIntrEn                       :  1;\
            UNSG32 RSVDx8_b2                                   : 30;\
          }
    union { UNSG32 u32AxiErrorMon_WriteCtrl;
            struct w32AxiErrorMon_WriteCtrl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiErrorMon_ReadID_rerrID(r32)              _BFGET_(r32,31, 0)
    #define   SET32AxiErrorMon_ReadID_rerrID(r32,v)            _BFSET_(r32,31, 0,v)

    #define     w32AxiErrorMon_ReadID                          {\
            UNSG32 uReadID_rerrID                              : 32;\
          }
    union { UNSG32 u32AxiErrorMon_ReadID;
            struct w32AxiErrorMon_ReadID;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiErrorMon_ReadStat_rerrType(r32)          _BFGET_(r32, 0, 0)
    #define   SET32AxiErrorMon_ReadStat_rerrType(r32,v)        _BFSET_(r32, 0, 0,v)
    #define   GET16AxiErrorMon_ReadStat_rerrType(r16)          _BFGET_(r16, 0, 0)
    #define   SET16AxiErrorMon_ReadStat_rerrType(r16,v)        _BFSET_(r16, 0, 0,v)

    #define   GET32AxiErrorMon_ReadStat_rerrValid(r32)         _BFGET_(r32, 1, 1)
    #define   SET32AxiErrorMon_ReadStat_rerrValid(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16AxiErrorMon_ReadStat_rerrValid(r16)         _BFGET_(r16, 1, 1)
    #define   SET16AxiErrorMon_ReadStat_rerrValid(r16,v)       _BFSET_(r16, 1, 1,v)

    #define     w32AxiErrorMon_ReadStat                        {\
            UNSG32 uReadStat_rerrType                          :  1;\
            UNSG32 uReadStat_rerrValid                         :  1;\
            UNSG32 RSVDx10_b2                                  : 30;\
          }
    union { UNSG32 u32AxiErrorMon_ReadStat;
            struct w32AxiErrorMon_ReadStat;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiErrorMon_ReadCtrl_rerrClear(r32)         _BFGET_(r32, 0, 0)
    #define   SET32AxiErrorMon_ReadCtrl_rerrClear(r32,v)       _BFSET_(r32, 0, 0,v)
    #define   GET16AxiErrorMon_ReadCtrl_rerrClear(r16)         _BFGET_(r16, 0, 0)
    #define   SET16AxiErrorMon_ReadCtrl_rerrClear(r16,v)       _BFSET_(r16, 0, 0,v)

    #define   GET32AxiErrorMon_ReadCtrl_rerrIntrEn(r32)        _BFGET_(r32, 1, 1)
    #define   SET32AxiErrorMon_ReadCtrl_rerrIntrEn(r32,v)      _BFSET_(r32, 1, 1,v)
    #define   GET16AxiErrorMon_ReadCtrl_rerrIntrEn(r16)        _BFGET_(r16, 1, 1)
    #define   SET16AxiErrorMon_ReadCtrl_rerrIntrEn(r16,v)      _BFSET_(r16, 1, 1,v)

    #define     w32AxiErrorMon_ReadCtrl                        {\
            UNSG32 uReadCtrl_rerrClear                         :  1;\
            UNSG32 uReadCtrl_rerrIntrEn                        :  1;\
            UNSG32 RSVDx14_b2                                  : 30;\
          }
    union { UNSG32 u32AxiErrorMon_ReadCtrl;
            struct w32AxiErrorMon_ReadCtrl;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AxiErrorMon;

    typedef union  T32AxiErrorMon_WriteID
          { UNSG32 u32;
            struct w32AxiErrorMon_WriteID;
                 } T32AxiErrorMon_WriteID;
    typedef union  T32AxiErrorMon_WriteStat
          { UNSG32 u32;
            struct w32AxiErrorMon_WriteStat;
                 } T32AxiErrorMon_WriteStat;
    typedef union  T32AxiErrorMon_WriteCtrl
          { UNSG32 u32;
            struct w32AxiErrorMon_WriteCtrl;
                 } T32AxiErrorMon_WriteCtrl;
    typedef union  T32AxiErrorMon_ReadID
          { UNSG32 u32;
            struct w32AxiErrorMon_ReadID;
                 } T32AxiErrorMon_ReadID;
    typedef union  T32AxiErrorMon_ReadStat
          { UNSG32 u32;
            struct w32AxiErrorMon_ReadStat;
                 } T32AxiErrorMon_ReadStat;
    typedef union  T32AxiErrorMon_ReadCtrl
          { UNSG32 u32;
            struct w32AxiErrorMon_ReadCtrl;
                 } T32AxiErrorMon_ReadCtrl;
    ///////////////////////////////////////////////////////////

    typedef union  TAxiErrorMon_WriteID
          { UNSG32 u32[1];
            struct {
            struct w32AxiErrorMon_WriteID;
                   };
                 } TAxiErrorMon_WriteID;
    typedef union  TAxiErrorMon_WriteStat
          { UNSG32 u32[1];
            struct {
            struct w32AxiErrorMon_WriteStat;
                   };
                 } TAxiErrorMon_WriteStat;
    typedef union  TAxiErrorMon_WriteCtrl
          { UNSG32 u32[1];
            struct {
            struct w32AxiErrorMon_WriteCtrl;
                   };
                 } TAxiErrorMon_WriteCtrl;
    typedef union  TAxiErrorMon_ReadID
          { UNSG32 u32[1];
            struct {
            struct w32AxiErrorMon_ReadID;
                   };
                 } TAxiErrorMon_ReadID;
    typedef union  TAxiErrorMon_ReadStat
          { UNSG32 u32[1];
            struct {
            struct w32AxiErrorMon_ReadStat;
                   };
                 } TAxiErrorMon_ReadStat;
    typedef union  TAxiErrorMon_ReadCtrl
          { UNSG32 u32[1];
            struct {
            struct w32AxiErrorMon_ReadCtrl;
                   };
                 } TAxiErrorMon_ReadCtrl;

    ///////////////////////////////////////////////////////////
     SIGN32 AxiErrorMon_drvrd(SIE_AxiErrorMon *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AxiErrorMon_drvwr(SIE_AxiErrorMon *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AxiErrorMon_reset(SIE_AxiErrorMon *p);
     SIGN32 AxiErrorMon_cmp  (SIE_AxiErrorMon *p, SIE_AxiErrorMon *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AxiErrorMon_check(p,pie,pfx,hLOG) AxiErrorMon_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AxiErrorMon_print(p,    pfx,hLOG) AxiErrorMon_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AxiErrorMon
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE seSettingX                               (4,4)
///     ###
///     * Config Space Secure Region Registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 seW                  (P)
///               %unsigned 1  seW                       0x0
///                                    ###
///                                    * 1: Only Secure Masters can write to this region
///                                    * 0: Any masters can write to this region
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00004 seR                  (P)
///               %unsigned 1  seR                       0x0
///                                    ###
///                                    * 1: Only Secure Masters can read from this region
///                                    * 0: Any masters can read from this region
///                                    * In combination with seW the access to the region is fully secure if seW and seR are 1 and non-secure when seW and seR are 0
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 seBase               (P)
///               %unsigned 32 seBase                    0x0
///                                    ###
///                                    * Base or Start address of the region
///                                    * Bits [1:0] unused.
///                                    ###
///     @ 0x0000C seMask               (P)
///               %unsigned 32 seMask                    0x0
///                                    ###
///                                    * Used in conjunction with seBase to define region size
///                                    * Bits [1:0] unused
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      66b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_seSettingX
#define h_seSettingX (){}

    #define     RA_seSettingX_seW                              0x0000

    #define     BA_seSettingX_seW_seW                          0x0000
    #define     B16seSettingX_seW_seW                          0x0000
    #define   LSb32seSettingX_seW_seW                             0
    #define   LSb16seSettingX_seW_seW                             0
    #define       bseSettingX_seW_seW                          1
    #define   MSK32seSettingX_seW_seW                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_seSettingX_seR                              0x0004

    #define     BA_seSettingX_seR_seR                          0x0004
    #define     B16seSettingX_seR_seR                          0x0004
    #define   LSb32seSettingX_seR_seR                             0
    #define   LSb16seSettingX_seR_seR                             0
    #define       bseSettingX_seR_seR                          1
    #define   MSK32seSettingX_seR_seR                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_seSettingX_seBase                           0x0008

    #define     BA_seSettingX_seBase_seBase                    0x0008
    #define     B16seSettingX_seBase_seBase                    0x0008
    #define   LSb32seSettingX_seBase_seBase                       0
    #define   LSb16seSettingX_seBase_seBase                       0
    #define       bseSettingX_seBase_seBase                    32
    #define   MSK32seSettingX_seBase_seBase                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_seSettingX_seMask                           0x000C

    #define     BA_seSettingX_seMask_seMask                    0x000C
    #define     B16seSettingX_seMask_seMask                    0x000C
    #define   LSb32seSettingX_seMask_seMask                       0
    #define   LSb16seSettingX_seMask_seMask                       0
    #define       bseSettingX_seMask_seMask                    32
    #define   MSK32seSettingX_seMask_seMask                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_seSettingX {
    ///////////////////////////////////////////////////////////
    #define   GET32seSettingX_seW_seW(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32seSettingX_seW_seW(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16seSettingX_seW_seW(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16seSettingX_seW_seW(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32seSettingX_seW                              {\
            UNSG32 useW_seW                                    :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32seSettingX_seW;
            struct w32seSettingX_seW;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32seSettingX_seR_seR(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32seSettingX_seR_seR(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16seSettingX_seR_seR(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16seSettingX_seR_seR(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32seSettingX_seR                              {\
            UNSG32 useR_seR                                    :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32seSettingX_seR;
            struct w32seSettingX_seR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32seSettingX_seBase_seBase(r32)               _BFGET_(r32,31, 0)
    #define   SET32seSettingX_seBase_seBase(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32seSettingX_seBase                           {\
            UNSG32 useBase_seBase                              : 32;\
          }
    union { UNSG32 u32seSettingX_seBase;
            struct w32seSettingX_seBase;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32seSettingX_seMask_seMask(r32)               _BFGET_(r32,31, 0)
    #define   SET32seSettingX_seMask_seMask(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32seSettingX_seMask                           {\
            UNSG32 useMask_seMask                              : 32;\
          }
    union { UNSG32 u32seSettingX_seMask;
            struct w32seSettingX_seMask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_seSettingX;

    typedef union  T32seSettingX_seW
          { UNSG32 u32;
            struct w32seSettingX_seW;
                 } T32seSettingX_seW;
    typedef union  T32seSettingX_seR
          { UNSG32 u32;
            struct w32seSettingX_seR;
                 } T32seSettingX_seR;
    typedef union  T32seSettingX_seBase
          { UNSG32 u32;
            struct w32seSettingX_seBase;
                 } T32seSettingX_seBase;
    typedef union  T32seSettingX_seMask
          { UNSG32 u32;
            struct w32seSettingX_seMask;
                 } T32seSettingX_seMask;
    ///////////////////////////////////////////////////////////

    typedef union  TseSettingX_seW
          { UNSG32 u32[1];
            struct {
            struct w32seSettingX_seW;
                   };
                 } TseSettingX_seW;
    typedef union  TseSettingX_seR
          { UNSG32 u32[1];
            struct {
            struct w32seSettingX_seR;
                   };
                 } TseSettingX_seR;
    typedef union  TseSettingX_seBase
          { UNSG32 u32[1];
            struct {
            struct w32seSettingX_seBase;
                   };
                 } TseSettingX_seBase;
    typedef union  TseSettingX_seMask
          { UNSG32 u32[1];
            struct {
            struct w32seSettingX_seMask;
                   };
                 } TseSettingX_seMask;

    ///////////////////////////////////////////////////////////
     SIGN32 seSettingX_drvrd(SIE_seSettingX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 seSettingX_drvwr(SIE_seSettingX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void seSettingX_reset(SIE_seSettingX *p);
     SIGN32 seSettingX_cmp  (SIE_seSettingX *p, SIE_seSettingX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define seSettingX_check(p,pie,pfx,hLOG) seSettingX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define seSettingX_print(p,    pfx,hLOG) seSettingX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: seSettingX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE seRegionX                                (4,4)
///     ###
///     * Config Space Secure Regions
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 CTRL0                
///               $seSettingX          CTRL0             REG          
///                                    ###
///                                    * Region 0 access control register
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 CTRL1                
///               $seSettingX          CTRL1             REG          
///                                    ###
///                                    * Region 1 access control register
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 CTRL2                
///               $seSettingX          CTRL2             REG          
///                                    ###
///                                    * Region 2 access control register
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 CTRL3                
///               $seSettingX          CTRL3             REG          
///                                    ###
///                                    * Region 3 access control register
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 CTRL4                
///               $seSettingX          CTRL4             REG          
///                                    ###
///                                    * Region 4 access control register
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 CTRL5                
///               $seSettingX          CTRL5             REG          
///                                    ###
///                                    * Region 5 access control register
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 CTRL6                
///               $seSettingX          CTRL6             REG          
///                                    ###
///                                    * Region 6 access control register
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 CTRL7                
///               $seSettingX          CTRL7             REG          
///                                    ###
///                                    * Region 7 access control register
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 CTRL8                
///               $seSettingX          CTRL8             REG          
///                                    ###
///                                    * Region 8 access control register
///                                    ###
///     @ 0x00090                      (P)
///     # 0x00090 CTRL9                
///               $seSettingX          CTRL9             REG          
///                                    ###
///                                    * Region 9 access control register
///                                    ###
///     @ 0x000A0                      (P)
///     # 0x000A0 CTRL10               
///               $seSettingX          CTRL10            REG          
///                                    ###
///                                    * Region 10 access control register
///                                    ###
///     @ 0x000B0                      (P)
///     # 0x000B0 CTRL11               
///               $seSettingX          CTRL11            REG          
///                                    ###
///                                    * Region 11 access control register
///                                    ###
///     @ 0x000C0                      (P)
///     # 0x000C0 CTRL12               
///               $seSettingX          CTRL12            REG          
///                                    ###
///                                    * Region 12 access control register
///                                    ###
///     @ 0x000D0                      (P)
///     # 0x000D0 CTRL13               
///               $seSettingX          CTRL13            REG          
///                                    ###
///                                    * Region 13 access control register
///                                    ###
///     @ 0x000E0                      (P)
///     # 0x000E0 CTRL14               
///               $seSettingX          CTRL14            REG          
///                                    ###
///                                    * Region 14 access control register
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 CTRL15               
///               $seSettingX          CTRL15            REG          
///                                    ###
///                                    * Region 15 access control register
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     256B, bits:    1056b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_seRegionX
#define h_seRegionX (){}

    #define     RA_seRegionX_CTRL0                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL1                             0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL2                             0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL3                             0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL4                             0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL5                             0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL6                             0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL7                             0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL8                             0x0080
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL9                             0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL10                            0x00A0
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL11                            0x00B0
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL12                            0x00C0
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL13                            0x00D0
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL14                            0x00E0
    ///////////////////////////////////////////////////////////
    #define     RA_seRegionX_CTRL15                            0x00F0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_seRegionX {
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL0;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL1;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL2;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL3;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL4;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL5;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL6;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL7;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL8;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL9;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL10;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL11;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL12;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL13;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL14;
    ///////////////////////////////////////////////////////////
              SIE_seSettingX                                   ie_CTRL15;
    ///////////////////////////////////////////////////////////
    } SIE_seRegionX;

    ///////////////////////////////////////////////////////////
     SIGN32 seRegionX_drvrd(SIE_seRegionX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 seRegionX_drvwr(SIE_seRegionX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void seRegionX_reset(SIE_seRegionX *p);
     SIGN32 seRegionX_cmp  (SIE_seRegionX *p, SIE_seRegionX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define seRegionX_check(p,pie,pfx,hLOG) seRegionX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define seRegionX_print(p,    pfx,hLOG) seRegionX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: seRegionX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE seAccess                                 (4,4)
///     ###
///     * AXI Secure Access
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 seAxi                (P)
///               %unsigned 1  ProtOverrideW             0x0
///                                    ###
///                                    * 1: Overrides AWPROT with ProtValW
///                                    * 0: AWPROT passes through
///                                    ###
///               %unsigned 1  ProtValW                  0x0
///                                    ###
///                                    * 0: AWPROT is 0
///                                    * 1: AWPROT is 1
///                                    ###
///               %unsigned 1  ProtOverrideR             0x0
///                                    ###
///                                    * 1: Overrides ARPROT with ProtValR
///                                    * 0: ARPROT passes through
///                                    ###
///               %unsigned 1  ProtValR                  0x0
///                                    ###
///                                    * 0: ARPROT is 0
///                                    * 1: ARPROT is 1
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       4b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_seAccess
#define h_seAccess (){}

    #define     RA_seAccess_seAxi                              0x0000

    #define     BA_seAccess_seAxi_ProtOverrideW                0x0000
    #define     B16seAccess_seAxi_ProtOverrideW                0x0000
    #define   LSb32seAccess_seAxi_ProtOverrideW                   0
    #define   LSb16seAccess_seAxi_ProtOverrideW                   0
    #define       bseAccess_seAxi_ProtOverrideW                1
    #define   MSK32seAccess_seAxi_ProtOverrideW                   0x00000001

    #define     BA_seAccess_seAxi_ProtValW                     0x0000
    #define     B16seAccess_seAxi_ProtValW                     0x0000
    #define   LSb32seAccess_seAxi_ProtValW                        1
    #define   LSb16seAccess_seAxi_ProtValW                        1
    #define       bseAccess_seAxi_ProtValW                     1
    #define   MSK32seAccess_seAxi_ProtValW                        0x00000002

    #define     BA_seAccess_seAxi_ProtOverrideR                0x0000
    #define     B16seAccess_seAxi_ProtOverrideR                0x0000
    #define   LSb32seAccess_seAxi_ProtOverrideR                   2
    #define   LSb16seAccess_seAxi_ProtOverrideR                   2
    #define       bseAccess_seAxi_ProtOverrideR                1
    #define   MSK32seAccess_seAxi_ProtOverrideR                   0x00000004

    #define     BA_seAccess_seAxi_ProtValR                     0x0000
    #define     B16seAccess_seAxi_ProtValR                     0x0000
    #define   LSb32seAccess_seAxi_ProtValR                        3
    #define   LSb16seAccess_seAxi_ProtValR                        3
    #define       bseAccess_seAxi_ProtValR                     1
    #define   MSK32seAccess_seAxi_ProtValR                        0x00000008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_seAccess {
    ///////////////////////////////////////////////////////////
    #define   GET32seAccess_seAxi_ProtOverrideW(r32)           _BFGET_(r32, 0, 0)
    #define   SET32seAccess_seAxi_ProtOverrideW(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16seAccess_seAxi_ProtOverrideW(r16)           _BFGET_(r16, 0, 0)
    #define   SET16seAccess_seAxi_ProtOverrideW(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32seAccess_seAxi_ProtValW(r32)                _BFGET_(r32, 1, 1)
    #define   SET32seAccess_seAxi_ProtValW(r32,v)              _BFSET_(r32, 1, 1,v)
    #define   GET16seAccess_seAxi_ProtValW(r16)                _BFGET_(r16, 1, 1)
    #define   SET16seAccess_seAxi_ProtValW(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32seAccess_seAxi_ProtOverrideR(r32)           _BFGET_(r32, 2, 2)
    #define   SET32seAccess_seAxi_ProtOverrideR(r32,v)         _BFSET_(r32, 2, 2,v)
    #define   GET16seAccess_seAxi_ProtOverrideR(r16)           _BFGET_(r16, 2, 2)
    #define   SET16seAccess_seAxi_ProtOverrideR(r16,v)         _BFSET_(r16, 2, 2,v)

    #define   GET32seAccess_seAxi_ProtValR(r32)                _BFGET_(r32, 3, 3)
    #define   SET32seAccess_seAxi_ProtValR(r32,v)              _BFSET_(r32, 3, 3,v)
    #define   GET16seAccess_seAxi_ProtValR(r16)                _BFGET_(r16, 3, 3)
    #define   SET16seAccess_seAxi_ProtValR(r16,v)              _BFSET_(r16, 3, 3,v)

    #define     w32seAccess_seAxi                              {\
            UNSG32 useAxi_ProtOverrideW                        :  1;\
            UNSG32 useAxi_ProtValW                             :  1;\
            UNSG32 useAxi_ProtOverrideR                        :  1;\
            UNSG32 useAxi_ProtValR                             :  1;\
            UNSG32 RSVDx0_b4                                   : 28;\
          }
    union { UNSG32 u32seAccess_seAxi;
            struct w32seAccess_seAxi;
          };
    ///////////////////////////////////////////////////////////
    } SIE_seAccess;

    typedef union  T32seAccess_seAxi
          { UNSG32 u32;
            struct w32seAccess_seAxi;
                 } T32seAccess_seAxi;
    ///////////////////////////////////////////////////////////

    typedef union  TseAccess_seAxi
          { UNSG32 u32[1];
            struct {
            struct w32seAccess_seAxi;
                   };
                 } TseAccess_seAxi;

    ///////////////////////////////////////////////////////////
     SIGN32 seAccess_drvrd(SIE_seAccess *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 seAccess_drvwr(SIE_seAccess *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void seAccess_reset(SIE_seAccess *p);
     SIGN32 seAccess_cmp  (SIE_seAccess *p, SIE_seAccess *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define seAccess_check(p,pie,pfx,hLOG) seAccess_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define seAccess_print(p,    pfx,hLOG) seAccess_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: seAccess
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE protOR                  biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 SecureCPU            
///               $seAccess            SecureCPU         REG          
///     @ 0x00004                      (P)
///     # 0x00004 SecureAVIOM0         
///               $seAccess            SecureAVIOM0      REG          
///     @ 0x00008                      (P)
///     # 0x00008 SecureAVIOM1         
///               $seAccess            SecureAVIOM1      REG          
///     @ 0x0000C                      (P)
///     # 0x0000C SecureZSP            
///               $seAccess            SecureZSP         REG          
///     @ 0x00010                      (P)
///     # 0x00010 SecureGFX3D          
///               $seAccess            SecureGFX3D       REG          
///     @ 0x00014                      (P)
///     # 0x00014 SecureV2G            
///               $seAccess            SecureV2G         REG          
///     @ 0x00018                      (P)
///     # 0x00018 SecureHTRO0          
///               $seAccess            SecureHTRO0       REG          
///     @ 0x0001C                      (P)
///     # 0x0001C SecureMTEST          
///               $seAccess            SecureMTEST       REG          
///     @ 0x00020                      (P)
///     # 0x00020 SecureBMON           
///               $seAccess            SecureBMON        REG          
///                                    ###
///                                    * The following are secured based on decoding of the PXBAR AxID values
///                                    ###
///     @ 0x00024                      (P)
///     # 0x00024 SecureFE             
///               $seAccess            SecureFE          REG          
///     @ 0x00028                      (P)
///     # 0x00028 SecureNAND           
///               $seAccess            SecureNAND        REG          
///     @ 0x0002C                      (P)
///     # 0x0002C SecureUSBM0          
///               $seAccess            SecureUSBM0       REG          
///     @ 0x00030                      (P)
///     # 0x00030 SecureSDIO           
///               $seAccess            SecureSDIO        REG          
///     @ 0x00034                      (P)
///     # 0x00034 SecureTSP            
///               $seAccess            SecureTSP         REG          
///     @ 0x00038                      (P)
///     # 0x00038 SecureBCMCPU         
///               $seAccess            SecureBCMCPU      REG          
///     @ 0x0003C                      (P)
///     # 0x0003C SecureBCMDMA         
///               $seAccess            SecureBCMDMA      REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_protOR
#define h_protOR (){}

    #define     RA_protOR_SecureCPU                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureAVIOM0                         0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureAVIOM1                         0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureZSP                            0x000C
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureGFX3D                          0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureV2G                            0x0014
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureHTRO0                          0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureMTEST                          0x001C
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureBMON                           0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureFE                             0x0024
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureNAND                           0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureUSBM0                          0x002C
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureSDIO                           0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureTSP                            0x0034
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureBCMCPU                         0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureBCMDMA                         0x003C
    ///////////////////////////////////////////////////////////

    typedef struct SIE_protOR {
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureCPU;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureAVIOM0;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureAVIOM1;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureZSP;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureGFX3D;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureV2G;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureHTRO0;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureMTEST;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureBMON;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureFE;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureNAND;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureUSBM0;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureSDIO;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureTSP;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureBCMCPU;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureBCMDMA;
    ///////////////////////////////////////////////////////////
    } SIE_protOR;

    ///////////////////////////////////////////////////////////
     SIGN32 protOR_drvrd(SIE_protOR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 protOR_drvwr(SIE_protOR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void protOR_reset(SIE_protOR *p);
     SIGN32 protOR_cmp  (SIE_protOR *p, SIE_protOR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define protOR_check(p,pie,pfx,hLOG) protOR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define protOR_print(p,    pfx,hLOG) protOR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: protOR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AxiWrFilt                                (4,4)
///     ###
///     * AXI Write Strobe Filter
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CTRL                 (RW-)
///               %unsigned 1  En                        0x0
///                                    ###
///                                    * Write filtering is enabled. Checks against all regions will start.
///                                    ###
///               %unsigned 1  Clear                     0x0
///                                    ###
///                                    * Writing 1 to this bit will clear the status and interrupt.
///                                    * This bit self clears
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00004 STATUS               (R-)
///               %unsigned 1  Intr                      0x0
///                                    ###
///                                    * 0: No match to the regions has occurred
///                                    * 1: A region was hit and the WSTRB of the transaction is masked.
///                                    * This bit stays high and the WSTRB stays masked until a 1 is written to CTRL.Clear.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 ProtAddr0            (P)
///               %unsigned 32 Addr                      0x0
///                                    ###
///                                    * Base or Start address of the region
///                                    * Bits [1:0] unused.
///                                    ###
///     @ 0x0000C ProtMask0            (P)
///               %unsigned 32 Mask                      0x0
///                                    ###
///                                    * Used in conjunction with Addr to define region size
///                                    * Bits [1:0] unused
///                                    ###
///     @ 0x00010 ProtAddr1            (P)
///               %unsigned 32 Addr                      0x0
///                                    ###
///                                    * Base or Start address of the region
///                                    * Bits [1:0] unused.
///                                    ###
///     @ 0x00014 ProtMask1            (P)
///               %unsigned 32 Mask                      0x0
///                                    ###
///                                    * Used in conjunction with Addr to define region size
///                                    * Bits [1:0] unused
///                                    ###
///     @ 0x00018 ProtAddr2            (P)
///               %unsigned 32 Addr                      0x0
///                                    ###
///                                    * Base or Start address of the region
///                                    * Bits [1:0] unused.
///                                    ###
///     @ 0x0001C ProtMask2            (P)
///               %unsigned 32 Mask                      0x0
///                                    ###
///                                    * Used in conjunction with Addr to define region size
///                                    * Bits [1:0] unused
///                                    ###
///     @ 0x00020 ProtAddr3            (P)
///               %unsigned 32 Addr                      0x0
///                                    ###
///                                    * Base or Start address of the region
///                                    * Bits [1:0] unused.
///                                    ###
///     @ 0x00024 ProtMask3            (P)
///               %unsigned 32 Mask                      0x0
///                                    ###
///                                    * Used in conjunction with Addr to define region size
///                                    * Bits [1:0] unused
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      40B, bits:     259b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AxiWrFilt
#define h_AxiWrFilt (){}

    #define     RA_AxiWrFilt_CTRL                              0x0000

    #define     BA_AxiWrFilt_CTRL_En                           0x0000
    #define     B16AxiWrFilt_CTRL_En                           0x0000
    #define   LSb32AxiWrFilt_CTRL_En                              0
    #define   LSb16AxiWrFilt_CTRL_En                              0
    #define       bAxiWrFilt_CTRL_En                           1
    #define   MSK32AxiWrFilt_CTRL_En                              0x00000001

    #define     BA_AxiWrFilt_CTRL_Clear                        0x0000
    #define     B16AxiWrFilt_CTRL_Clear                        0x0000
    #define   LSb32AxiWrFilt_CTRL_Clear                           1
    #define   LSb16AxiWrFilt_CTRL_Clear                           1
    #define       bAxiWrFilt_CTRL_Clear                        1
    #define   MSK32AxiWrFilt_CTRL_Clear                           0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_STATUS                            0x0004

    #define     BA_AxiWrFilt_STATUS_Intr                       0x0004
    #define     B16AxiWrFilt_STATUS_Intr                       0x0004
    #define   LSb32AxiWrFilt_STATUS_Intr                          0
    #define   LSb16AxiWrFilt_STATUS_Intr                          0
    #define       bAxiWrFilt_STATUS_Intr                       1
    #define   MSK32AxiWrFilt_STATUS_Intr                          0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtAddr0                         0x0008

    #define     BA_AxiWrFilt_ProtAddr0_Addr                    0x0008
    #define     B16AxiWrFilt_ProtAddr0_Addr                    0x0008
    #define   LSb32AxiWrFilt_ProtAddr0_Addr                       0
    #define   LSb16AxiWrFilt_ProtAddr0_Addr                       0
    #define       bAxiWrFilt_ProtAddr0_Addr                    32
    #define   MSK32AxiWrFilt_ProtAddr0_Addr                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtMask0                         0x000C

    #define     BA_AxiWrFilt_ProtMask0_Mask                    0x000C
    #define     B16AxiWrFilt_ProtMask0_Mask                    0x000C
    #define   LSb32AxiWrFilt_ProtMask0_Mask                       0
    #define   LSb16AxiWrFilt_ProtMask0_Mask                       0
    #define       bAxiWrFilt_ProtMask0_Mask                    32
    #define   MSK32AxiWrFilt_ProtMask0_Mask                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtAddr1                         0x0010

    #define     BA_AxiWrFilt_ProtAddr1_Addr                    0x0010
    #define     B16AxiWrFilt_ProtAddr1_Addr                    0x0010
    #define   LSb32AxiWrFilt_ProtAddr1_Addr                       0
    #define   LSb16AxiWrFilt_ProtAddr1_Addr                       0
    #define       bAxiWrFilt_ProtAddr1_Addr                    32
    #define   MSK32AxiWrFilt_ProtAddr1_Addr                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtMask1                         0x0014

    #define     BA_AxiWrFilt_ProtMask1_Mask                    0x0014
    #define     B16AxiWrFilt_ProtMask1_Mask                    0x0014
    #define   LSb32AxiWrFilt_ProtMask1_Mask                       0
    #define   LSb16AxiWrFilt_ProtMask1_Mask                       0
    #define       bAxiWrFilt_ProtMask1_Mask                    32
    #define   MSK32AxiWrFilt_ProtMask1_Mask                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtAddr2                         0x0018

    #define     BA_AxiWrFilt_ProtAddr2_Addr                    0x0018
    #define     B16AxiWrFilt_ProtAddr2_Addr                    0x0018
    #define   LSb32AxiWrFilt_ProtAddr2_Addr                       0
    #define   LSb16AxiWrFilt_ProtAddr2_Addr                       0
    #define       bAxiWrFilt_ProtAddr2_Addr                    32
    #define   MSK32AxiWrFilt_ProtAddr2_Addr                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtMask2                         0x001C

    #define     BA_AxiWrFilt_ProtMask2_Mask                    0x001C
    #define     B16AxiWrFilt_ProtMask2_Mask                    0x001C
    #define   LSb32AxiWrFilt_ProtMask2_Mask                       0
    #define   LSb16AxiWrFilt_ProtMask2_Mask                       0
    #define       bAxiWrFilt_ProtMask2_Mask                    32
    #define   MSK32AxiWrFilt_ProtMask2_Mask                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtAddr3                         0x0020

    #define     BA_AxiWrFilt_ProtAddr3_Addr                    0x0020
    #define     B16AxiWrFilt_ProtAddr3_Addr                    0x0020
    #define   LSb32AxiWrFilt_ProtAddr3_Addr                       0
    #define   LSb16AxiWrFilt_ProtAddr3_Addr                       0
    #define       bAxiWrFilt_ProtAddr3_Addr                    32
    #define   MSK32AxiWrFilt_ProtAddr3_Addr                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiWrFilt_ProtMask3                         0x0024

    #define     BA_AxiWrFilt_ProtMask3_Mask                    0x0024
    #define     B16AxiWrFilt_ProtMask3_Mask                    0x0024
    #define   LSb32AxiWrFilt_ProtMask3_Mask                       0
    #define   LSb16AxiWrFilt_ProtMask3_Mask                       0
    #define       bAxiWrFilt_ProtMask3_Mask                    32
    #define   MSK32AxiWrFilt_ProtMask3_Mask                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AxiWrFilt {
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_CTRL_En(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32AxiWrFilt_CTRL_En(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16AxiWrFilt_CTRL_En(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16AxiWrFilt_CTRL_En(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define   GET32AxiWrFilt_CTRL_Clear(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32AxiWrFilt_CTRL_Clear(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16AxiWrFilt_CTRL_Clear(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16AxiWrFilt_CTRL_Clear(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define     w32AxiWrFilt_CTRL                              {\
            UNSG32 uCTRL_En                                    :  1;\
            UNSG32 uCTRL_Clear                                 :  1;\
            UNSG32 RSVDx0_b2                                   : 30;\
          }
    union { UNSG32 u32AxiWrFilt_CTRL;
            struct w32AxiWrFilt_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_STATUS_Intr(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32AxiWrFilt_STATUS_Intr(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16AxiWrFilt_STATUS_Intr(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16AxiWrFilt_STATUS_Intr(r16,v)                _BFSET_(r16, 0, 0,v)

    #define     w32AxiWrFilt_STATUS                            {\
            UNSG32 uSTATUS_Intr                                :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32AxiWrFilt_STATUS;
            struct w32AxiWrFilt_STATUS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtAddr0_Addr(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtAddr0_Addr(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtAddr0                         {\
            UNSG32 uProtAddr0_Addr                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtAddr0;
            struct w32AxiWrFilt_ProtAddr0;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtMask0_Mask(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtMask0_Mask(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtMask0                         {\
            UNSG32 uProtMask0_Mask                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtMask0;
            struct w32AxiWrFilt_ProtMask0;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtAddr1_Addr(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtAddr1_Addr(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtAddr1                         {\
            UNSG32 uProtAddr1_Addr                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtAddr1;
            struct w32AxiWrFilt_ProtAddr1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtMask1_Mask(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtMask1_Mask(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtMask1                         {\
            UNSG32 uProtMask1_Mask                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtMask1;
            struct w32AxiWrFilt_ProtMask1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtAddr2_Addr(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtAddr2_Addr(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtAddr2                         {\
            UNSG32 uProtAddr2_Addr                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtAddr2;
            struct w32AxiWrFilt_ProtAddr2;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtMask2_Mask(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtMask2_Mask(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtMask2                         {\
            UNSG32 uProtMask2_Mask                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtMask2;
            struct w32AxiWrFilt_ProtMask2;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtAddr3_Addr(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtAddr3_Addr(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtAddr3                         {\
            UNSG32 uProtAddr3_Addr                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtAddr3;
            struct w32AxiWrFilt_ProtAddr3;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiWrFilt_ProtMask3_Mask(r32)               _BFGET_(r32,31, 0)
    #define   SET32AxiWrFilt_ProtMask3_Mask(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32AxiWrFilt_ProtMask3                         {\
            UNSG32 uProtMask3_Mask                             : 32;\
          }
    union { UNSG32 u32AxiWrFilt_ProtMask3;
            struct w32AxiWrFilt_ProtMask3;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AxiWrFilt;

    typedef union  T32AxiWrFilt_CTRL
          { UNSG32 u32;
            struct w32AxiWrFilt_CTRL;
                 } T32AxiWrFilt_CTRL;
    typedef union  T32AxiWrFilt_STATUS
          { UNSG32 u32;
            struct w32AxiWrFilt_STATUS;
                 } T32AxiWrFilt_STATUS;
    typedef union  T32AxiWrFilt_ProtAddr0
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtAddr0;
                 } T32AxiWrFilt_ProtAddr0;
    typedef union  T32AxiWrFilt_ProtMask0
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtMask0;
                 } T32AxiWrFilt_ProtMask0;
    typedef union  T32AxiWrFilt_ProtAddr1
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtAddr1;
                 } T32AxiWrFilt_ProtAddr1;
    typedef union  T32AxiWrFilt_ProtMask1
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtMask1;
                 } T32AxiWrFilt_ProtMask1;
    typedef union  T32AxiWrFilt_ProtAddr2
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtAddr2;
                 } T32AxiWrFilt_ProtAddr2;
    typedef union  T32AxiWrFilt_ProtMask2
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtMask2;
                 } T32AxiWrFilt_ProtMask2;
    typedef union  T32AxiWrFilt_ProtAddr3
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtAddr3;
                 } T32AxiWrFilt_ProtAddr3;
    typedef union  T32AxiWrFilt_ProtMask3
          { UNSG32 u32;
            struct w32AxiWrFilt_ProtMask3;
                 } T32AxiWrFilt_ProtMask3;
    ///////////////////////////////////////////////////////////

    typedef union  TAxiWrFilt_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_CTRL;
                   };
                 } TAxiWrFilt_CTRL;
    typedef union  TAxiWrFilt_STATUS
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_STATUS;
                   };
                 } TAxiWrFilt_STATUS;
    typedef union  TAxiWrFilt_ProtAddr0
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtAddr0;
                   };
                 } TAxiWrFilt_ProtAddr0;
    typedef union  TAxiWrFilt_ProtMask0
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtMask0;
                   };
                 } TAxiWrFilt_ProtMask0;
    typedef union  TAxiWrFilt_ProtAddr1
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtAddr1;
                   };
                 } TAxiWrFilt_ProtAddr1;
    typedef union  TAxiWrFilt_ProtMask1
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtMask1;
                   };
                 } TAxiWrFilt_ProtMask1;
    typedef union  TAxiWrFilt_ProtAddr2
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtAddr2;
                   };
                 } TAxiWrFilt_ProtAddr2;
    typedef union  TAxiWrFilt_ProtMask2
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtMask2;
                   };
                 } TAxiWrFilt_ProtMask2;
    typedef union  TAxiWrFilt_ProtAddr3
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtAddr3;
                   };
                 } TAxiWrFilt_ProtAddr3;
    typedef union  TAxiWrFilt_ProtMask3
          { UNSG32 u32[1];
            struct {
            struct w32AxiWrFilt_ProtMask3;
                   };
                 } TAxiWrFilt_ProtMask3;

    ///////////////////////////////////////////////////////////
     SIGN32 AxiWrFilt_drvrd(SIE_AxiWrFilt *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AxiWrFilt_drvwr(SIE_AxiWrFilt *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AxiWrFilt_reset(SIE_AxiWrFilt *p);
     SIGN32 AxiWrFilt_cmp  (SIE_AxiWrFilt *p, SIE_AxiWrFilt *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AxiWrFilt_check(p,pie,pfx,hLOG) AxiWrFilt_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AxiWrFilt_print(p,    pfx,hLOG) AxiWrFilt_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AxiWrFilt
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AxiPCnt                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CTRL                 (P)
///               %unsigned 1  clear                     0x0
///                                    ###
///                                    * Clears the counters
///                                    ###
///               %unsigned 1  enable                    0x0
///                                    ###
///                                    * Enable counter increment. SW can make enable = 0 to temporarily disable counter increment.
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00004 TOTAL_CNT            (R-)
///               %unsigned 32 cnt                       0x0
///                                    ###
///                                    * Total no. of AXI clocks
///                                    ###
///     @ 0x00008 RWAIT_CNT            (R-)
///               %unsigned 32 cnt                       0x0
///                                    ###
///                                    * Counts the no.of clocks aRValid = 1 & aRReady = 0
///                                    ###
///     @ 0x0000C RDATA_CNT            (R-)
///               %unsigned 32 cnt                       0x0
///                                    ###
///                                    * Counts the no.of clocks rValid = 1 & rReady = 1
///                                    ###
///     @ 0x00010 WWAIT_CNT            (R-)
///               %unsigned 32 cnt                       0x0
///                                    ###
///                                    * Counts the no.of clocks aWValid = 1 & aWReady = 0
///                                    ###
///     @ 0x00014 WDATA_CNT            (R-)
///               %unsigned 32 cnt                       0x0
///                                    ###
///                                    * Counts the no.of clocks wValid = 1 & wReady = 1
///                                    ###
///     @ 0x00018 OF_STATUS            (R-)
///               %unsigned 1  total                     0x0
///               %unsigned 1  rwait                     0x0
///               %unsigned 1  rdata                     0x0
///               %unsigned 1  wwait                     0x0
///               %unsigned 1  wdata                     0x0
///                                    ###
///                                    * Overflow status of total, wait and data counters. Clear will clear the overflow status as well.
///                                    ###
///               %%        27         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      28B, bits:     167b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AxiPCnt
#define h_AxiPCnt (){}

    #define     RA_AxiPCnt_CTRL                                0x0000

    #define     BA_AxiPCnt_CTRL_clear                          0x0000
    #define     B16AxiPCnt_CTRL_clear                          0x0000
    #define   LSb32AxiPCnt_CTRL_clear                             0
    #define   LSb16AxiPCnt_CTRL_clear                             0
    #define       bAxiPCnt_CTRL_clear                          1
    #define   MSK32AxiPCnt_CTRL_clear                             0x00000001

    #define     BA_AxiPCnt_CTRL_enable                         0x0000
    #define     B16AxiPCnt_CTRL_enable                         0x0000
    #define   LSb32AxiPCnt_CTRL_enable                            1
    #define   LSb16AxiPCnt_CTRL_enable                            1
    #define       bAxiPCnt_CTRL_enable                         1
    #define   MSK32AxiPCnt_CTRL_enable                            0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_AxiPCnt_TOTAL_CNT                           0x0004

    #define     BA_AxiPCnt_TOTAL_CNT_cnt                       0x0004
    #define     B16AxiPCnt_TOTAL_CNT_cnt                       0x0004
    #define   LSb32AxiPCnt_TOTAL_CNT_cnt                          0
    #define   LSb16AxiPCnt_TOTAL_CNT_cnt                          0
    #define       bAxiPCnt_TOTAL_CNT_cnt                       32
    #define   MSK32AxiPCnt_TOTAL_CNT_cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiPCnt_RWAIT_CNT                           0x0008

    #define     BA_AxiPCnt_RWAIT_CNT_cnt                       0x0008
    #define     B16AxiPCnt_RWAIT_CNT_cnt                       0x0008
    #define   LSb32AxiPCnt_RWAIT_CNT_cnt                          0
    #define   LSb16AxiPCnt_RWAIT_CNT_cnt                          0
    #define       bAxiPCnt_RWAIT_CNT_cnt                       32
    #define   MSK32AxiPCnt_RWAIT_CNT_cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiPCnt_RDATA_CNT                           0x000C

    #define     BA_AxiPCnt_RDATA_CNT_cnt                       0x000C
    #define     B16AxiPCnt_RDATA_CNT_cnt                       0x000C
    #define   LSb32AxiPCnt_RDATA_CNT_cnt                          0
    #define   LSb16AxiPCnt_RDATA_CNT_cnt                          0
    #define       bAxiPCnt_RDATA_CNT_cnt                       32
    #define   MSK32AxiPCnt_RDATA_CNT_cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiPCnt_WWAIT_CNT                           0x0010

    #define     BA_AxiPCnt_WWAIT_CNT_cnt                       0x0010
    #define     B16AxiPCnt_WWAIT_CNT_cnt                       0x0010
    #define   LSb32AxiPCnt_WWAIT_CNT_cnt                          0
    #define   LSb16AxiPCnt_WWAIT_CNT_cnt                          0
    #define       bAxiPCnt_WWAIT_CNT_cnt                       32
    #define   MSK32AxiPCnt_WWAIT_CNT_cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiPCnt_WDATA_CNT                           0x0014

    #define     BA_AxiPCnt_WDATA_CNT_cnt                       0x0014
    #define     B16AxiPCnt_WDATA_CNT_cnt                       0x0014
    #define   LSb32AxiPCnt_WDATA_CNT_cnt                          0
    #define   LSb16AxiPCnt_WDATA_CNT_cnt                          0
    #define       bAxiPCnt_WDATA_CNT_cnt                       32
    #define   MSK32AxiPCnt_WDATA_CNT_cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AxiPCnt_OF_STATUS                           0x0018

    #define     BA_AxiPCnt_OF_STATUS_total                     0x0018
    #define     B16AxiPCnt_OF_STATUS_total                     0x0018
    #define   LSb32AxiPCnt_OF_STATUS_total                        0
    #define   LSb16AxiPCnt_OF_STATUS_total                        0
    #define       bAxiPCnt_OF_STATUS_total                     1
    #define   MSK32AxiPCnt_OF_STATUS_total                        0x00000001

    #define     BA_AxiPCnt_OF_STATUS_rwait                     0x0018
    #define     B16AxiPCnt_OF_STATUS_rwait                     0x0018
    #define   LSb32AxiPCnt_OF_STATUS_rwait                        1
    #define   LSb16AxiPCnt_OF_STATUS_rwait                        1
    #define       bAxiPCnt_OF_STATUS_rwait                     1
    #define   MSK32AxiPCnt_OF_STATUS_rwait                        0x00000002

    #define     BA_AxiPCnt_OF_STATUS_rdata                     0x0018
    #define     B16AxiPCnt_OF_STATUS_rdata                     0x0018
    #define   LSb32AxiPCnt_OF_STATUS_rdata                        2
    #define   LSb16AxiPCnt_OF_STATUS_rdata                        2
    #define       bAxiPCnt_OF_STATUS_rdata                     1
    #define   MSK32AxiPCnt_OF_STATUS_rdata                        0x00000004

    #define     BA_AxiPCnt_OF_STATUS_wwait                     0x0018
    #define     B16AxiPCnt_OF_STATUS_wwait                     0x0018
    #define   LSb32AxiPCnt_OF_STATUS_wwait                        3
    #define   LSb16AxiPCnt_OF_STATUS_wwait                        3
    #define       bAxiPCnt_OF_STATUS_wwait                     1
    #define   MSK32AxiPCnt_OF_STATUS_wwait                        0x00000008

    #define     BA_AxiPCnt_OF_STATUS_wdata                     0x0018
    #define     B16AxiPCnt_OF_STATUS_wdata                     0x0018
    #define   LSb32AxiPCnt_OF_STATUS_wdata                        4
    #define   LSb16AxiPCnt_OF_STATUS_wdata                        4
    #define       bAxiPCnt_OF_STATUS_wdata                     1
    #define   MSK32AxiPCnt_OF_STATUS_wdata                        0x00000010
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AxiPCnt {
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_CTRL_clear(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32AxiPCnt_CTRL_clear(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16AxiPCnt_CTRL_clear(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16AxiPCnt_CTRL_clear(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32AxiPCnt_CTRL_enable(r32)                    _BFGET_(r32, 1, 1)
    #define   SET32AxiPCnt_CTRL_enable(r32,v)                  _BFSET_(r32, 1, 1,v)
    #define   GET16AxiPCnt_CTRL_enable(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16AxiPCnt_CTRL_enable(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define     w32AxiPCnt_CTRL                                {\
            UNSG32 uCTRL_clear                                 :  1;\
            UNSG32 uCTRL_enable                                :  1;\
            UNSG32 RSVDx0_b2                                   : 30;\
          }
    union { UNSG32 u32AxiPCnt_CTRL;
            struct w32AxiPCnt_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_TOTAL_CNT_cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32AxiPCnt_TOTAL_CNT_cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32AxiPCnt_TOTAL_CNT                           {\
            UNSG32 uTOTAL_CNT_cnt                              : 32;\
          }
    union { UNSG32 u32AxiPCnt_TOTAL_CNT;
            struct w32AxiPCnt_TOTAL_CNT;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_RWAIT_CNT_cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32AxiPCnt_RWAIT_CNT_cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32AxiPCnt_RWAIT_CNT                           {\
            UNSG32 uRWAIT_CNT_cnt                              : 32;\
          }
    union { UNSG32 u32AxiPCnt_RWAIT_CNT;
            struct w32AxiPCnt_RWAIT_CNT;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_RDATA_CNT_cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32AxiPCnt_RDATA_CNT_cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32AxiPCnt_RDATA_CNT                           {\
            UNSG32 uRDATA_CNT_cnt                              : 32;\
          }
    union { UNSG32 u32AxiPCnt_RDATA_CNT;
            struct w32AxiPCnt_RDATA_CNT;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_WWAIT_CNT_cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32AxiPCnt_WWAIT_CNT_cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32AxiPCnt_WWAIT_CNT                           {\
            UNSG32 uWWAIT_CNT_cnt                              : 32;\
          }
    union { UNSG32 u32AxiPCnt_WWAIT_CNT;
            struct w32AxiPCnt_WWAIT_CNT;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_WDATA_CNT_cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32AxiPCnt_WDATA_CNT_cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32AxiPCnt_WDATA_CNT                           {\
            UNSG32 uWDATA_CNT_cnt                              : 32;\
          }
    union { UNSG32 u32AxiPCnt_WDATA_CNT;
            struct w32AxiPCnt_WDATA_CNT;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AxiPCnt_OF_STATUS_total(r32)                _BFGET_(r32, 0, 0)
    #define   SET32AxiPCnt_OF_STATUS_total(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16AxiPCnt_OF_STATUS_total(r16)                _BFGET_(r16, 0, 0)
    #define   SET16AxiPCnt_OF_STATUS_total(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32AxiPCnt_OF_STATUS_rwait(r32)                _BFGET_(r32, 1, 1)
    #define   SET32AxiPCnt_OF_STATUS_rwait(r32,v)              _BFSET_(r32, 1, 1,v)
    #define   GET16AxiPCnt_OF_STATUS_rwait(r16)                _BFGET_(r16, 1, 1)
    #define   SET16AxiPCnt_OF_STATUS_rwait(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32AxiPCnt_OF_STATUS_rdata(r32)                _BFGET_(r32, 2, 2)
    #define   SET32AxiPCnt_OF_STATUS_rdata(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16AxiPCnt_OF_STATUS_rdata(r16)                _BFGET_(r16, 2, 2)
    #define   SET16AxiPCnt_OF_STATUS_rdata(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32AxiPCnt_OF_STATUS_wwait(r32)                _BFGET_(r32, 3, 3)
    #define   SET32AxiPCnt_OF_STATUS_wwait(r32,v)              _BFSET_(r32, 3, 3,v)
    #define   GET16AxiPCnt_OF_STATUS_wwait(r16)                _BFGET_(r16, 3, 3)
    #define   SET16AxiPCnt_OF_STATUS_wwait(r16,v)              _BFSET_(r16, 3, 3,v)

    #define   GET32AxiPCnt_OF_STATUS_wdata(r32)                _BFGET_(r32, 4, 4)
    #define   SET32AxiPCnt_OF_STATUS_wdata(r32,v)              _BFSET_(r32, 4, 4,v)
    #define   GET16AxiPCnt_OF_STATUS_wdata(r16)                _BFGET_(r16, 4, 4)
    #define   SET16AxiPCnt_OF_STATUS_wdata(r16,v)              _BFSET_(r16, 4, 4,v)

    #define     w32AxiPCnt_OF_STATUS                           {\
            UNSG32 uOF_STATUS_total                            :  1;\
            UNSG32 uOF_STATUS_rwait                            :  1;\
            UNSG32 uOF_STATUS_rdata                            :  1;\
            UNSG32 uOF_STATUS_wwait                            :  1;\
            UNSG32 uOF_STATUS_wdata                            :  1;\
            UNSG32 RSVDx18_b5                                  : 27;\
          }
    union { UNSG32 u32AxiPCnt_OF_STATUS;
            struct w32AxiPCnt_OF_STATUS;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AxiPCnt;

    typedef union  T32AxiPCnt_CTRL
          { UNSG32 u32;
            struct w32AxiPCnt_CTRL;
                 } T32AxiPCnt_CTRL;
    typedef union  T32AxiPCnt_TOTAL_CNT
          { UNSG32 u32;
            struct w32AxiPCnt_TOTAL_CNT;
                 } T32AxiPCnt_TOTAL_CNT;
    typedef union  T32AxiPCnt_RWAIT_CNT
          { UNSG32 u32;
            struct w32AxiPCnt_RWAIT_CNT;
                 } T32AxiPCnt_RWAIT_CNT;
    typedef union  T32AxiPCnt_RDATA_CNT
          { UNSG32 u32;
            struct w32AxiPCnt_RDATA_CNT;
                 } T32AxiPCnt_RDATA_CNT;
    typedef union  T32AxiPCnt_WWAIT_CNT
          { UNSG32 u32;
            struct w32AxiPCnt_WWAIT_CNT;
                 } T32AxiPCnt_WWAIT_CNT;
    typedef union  T32AxiPCnt_WDATA_CNT
          { UNSG32 u32;
            struct w32AxiPCnt_WDATA_CNT;
                 } T32AxiPCnt_WDATA_CNT;
    typedef union  T32AxiPCnt_OF_STATUS
          { UNSG32 u32;
            struct w32AxiPCnt_OF_STATUS;
                 } T32AxiPCnt_OF_STATUS;
    ///////////////////////////////////////////////////////////

    typedef union  TAxiPCnt_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_CTRL;
                   };
                 } TAxiPCnt_CTRL;
    typedef union  TAxiPCnt_TOTAL_CNT
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_TOTAL_CNT;
                   };
                 } TAxiPCnt_TOTAL_CNT;
    typedef union  TAxiPCnt_RWAIT_CNT
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_RWAIT_CNT;
                   };
                 } TAxiPCnt_RWAIT_CNT;
    typedef union  TAxiPCnt_RDATA_CNT
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_RDATA_CNT;
                   };
                 } TAxiPCnt_RDATA_CNT;
    typedef union  TAxiPCnt_WWAIT_CNT
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_WWAIT_CNT;
                   };
                 } TAxiPCnt_WWAIT_CNT;
    typedef union  TAxiPCnt_WDATA_CNT
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_WDATA_CNT;
                   };
                 } TAxiPCnt_WDATA_CNT;
    typedef union  TAxiPCnt_OF_STATUS
          { UNSG32 u32[1];
            struct {
            struct w32AxiPCnt_OF_STATUS;
                   };
                 } TAxiPCnt_OF_STATUS;

    ///////////////////////////////////////////////////////////
     SIGN32 AxiPCnt_drvrd(SIE_AxiPCnt *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AxiPCnt_drvwr(SIE_AxiPCnt *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AxiPCnt_reset(SIE_AxiPCnt *p);
     SIGN32 AxiPCnt_cmp  (SIE_AxiPCnt *p, SIE_AxiPCnt *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AxiPCnt_check(p,pie,pfx,hLOG) AxiPCnt_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AxiPCnt_print(p,    pfx,hLOG) AxiPCnt_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AxiPCnt
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SOC                     biu              (4,4)
///     ###
///     * Configuration registers for VPP MTR. MTR is moved to CPU_SS BIU for BG2-CT. However, the address map is kept same.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (W-)
///     #         # Stuffing bytes...
///               %% 832
///     @ 0x00068                      (P)
///     # 0x00068 SeCtrlCfg            
///               $seRegion            SeCtrlCfg         REG          
///                                    ###
///                                    * Security control for configuration register region
///                                    ###
///     @ 0x00088                      (P)
///     # 0x00088 SeCtrlFa             
///               $seRegion            SeCtrlFa          REG          
///                                    ###
///                                    * Security control for fast-access register region
///                                    ###
///     @ 0x000A8 SeHitRst             (RW-)
///               ###
///               * Reseting seHit registers
///               ###
///               %unsigned 1  seHitCountRstCfg          0x0
///                                    ###
///                                    * 1: reset seHitCountCfg to 0
///                                    * 0: no use
///                                    ###
///               %unsigned 1  seHitCountRstFa           0x0
///                                    ###
///                                    * 1: reset seHitCountFa 0 0
///                                    * 0: no use
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x000AC SeHitCountCfg        (R-)
///               ###
///               * seHit Counter for CFG bus
///               ###
///               %unsigned 32 seHitCountCfg             0x0
///                                    ###
///                                    * the number of secure access violations since reset
///                                    ###
///     @ 0x000B0 SeHitCountFa         (R-)
///               ###
///               * seHit Counter for Fast Access bus
///               ###
///               %unsigned 32 seHitCountFa              0x0
///                                    ###
///                                    * the number of secure access violations since reset
///                                    ###
///     @ 0x000B4 Configuration        (P)
///               ###
///               * SoC miscellaneous control register
///               ###
///               %unsigned 1  blockIFetch               0x0
///                                    ###
///                                    * 1: block instruction access except SDRAM, DRM TCM, ROM, SPI
///                                    * 0: allow instruction access to all region.
///                                    ###
///               %unsigned 1  vMetaIFetchEn             0x0
///                                    ###
///                                    * This bit is don't care when blockIFetch is 0, when blockIFtech is 1, it has the following meaning:
///                                    * 0: Don't allow instruction access to vMeta address region
///                                    * 1: allow instruction access to vMeta address region.
///                                    ###
///               %unsigned 1  AhbTrcEn                  0x0
///                                    ###
///                                    * 0: Disables the AHB Trace Monitor (Bmon)
///                                    * 1: Enables the AHB Trace Monitor (Bmon)
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x000B8 sysIntPol0           (P)
///               %unsigned 32 Invert                    0x0
///                                    ###
///                                    * One bit per interrupt source, interrupt position follows IRQ table defined.
///                                    * Controls bit [31:0] of interrupt sources
///                                    * 0: Don't invert before sending to GIC
///                                    * 1: Invert before sending to GIC
///                                    ###
///     @ 0x000BC sysIntPol1           (P)
///               %unsigned 32 Invert                    0x0
///                                    ###
///                                    * One bit per interrupt source, interrupt position follows IRQ table defined.
///                                    * Controls bit [63:32] of interrupt sources
///                                    * 0: Don't invert before sending to GIC
///                                    * 1: Invert before sending to GIC
///                                    ###
///     @ 0x000C0 sysIntPol2           (P)
///               %unsigned 32 Invert                    0x0
///                                    ###
///                                    * One bit per interrupt source, interrupt position follows IRQ table defined.
///                                    * Controls bit [95:64] of interrupt sources
///                                    * 0: Don't invert before sending to GIC
///                                    * 1: Invert before sending to GIC
///                                    ###
///     @ 0x000C4 sysIntPol3           (P)
///               %unsigned 32 Invert                    0x0
///                                    ###
///                                    * One bit per interrupt source, interrupt position follows IRQ table defined.
///                                    * Controls bit [127:96] of interrupt sources
///                                    * 0: Don't invert before sending to GIC
///                                    * 1: Invert before sending to GIC
///                                    ###
///     @ 0x000C8                      (W-)
///     #         # Stuffing bytes...
///               %% 448
///     @ 0x00100                      (P)
///     # 0x00100 protOR               
///               $protOR              protOR            REG          
///                                    ###
///                                    * AxPROT override controls
///                                    ###
///     @ 0x00140                      (P)
///     # 0x00140 GFX3D_PC             
///               $AxiPCnt             GFX3D_PC          REG          
///                                    ###
///                                    * Performance Counters for GFX3D AXI.
///                                    * *INTERNAL_ONLY**
///                                    ###
///     @ 0x0015C                      (W-)
///     #         # Stuffing bytes...
///               %% 1312
///     @ 0x00200                      (P)
///     # 0x00200 SecureRegionCtrl0    
///               $seRegionX           SecureRegionCtrl0 REG          
///     @ 0x00300                      (P)
///     # 0x00300 SecureRegionCtrl1    
///               $seRegionX           SecureRegionCtrl1 REG          
///     @ 0x00400                      (P)
///     # 0x00400 SecureRegionCtrl2    
///               $seRegionX           SecureRegionCtrl2 REG          
///     @ 0x00500                      (P)
///     # 0x00500 SecureRegionCtrl3    
///               $seRegionX           SecureRegionCtrl3 REG          
///                                    ###
///                                    * Secure Region Registers
///                                    ###
///     @ 0x00600 AHB_RESP_CTRL        (P)
///               %unsigned 1  MaskHrespDef              0x0
///                                    ###
///                                    * Config register access that does not decode into a valid AHB slave (a “hole”) will
///                                    * 0: Return an ERROR response.
///                                    * 1: Return an OKAY response
///                                    ###
///               %unsigned 1  MaskHrespSe               0x0
///               %%        30         # Stuffing bits...
///     @ 0x00604 AXI_BRESP_CTRL       (P)
///               %unsigned 1  CA7                       0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  ZSP                       0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  AVIOM0                    0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  AVIOM1                    0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  GFX3D                     0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  V2G                       0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  HTRO                      0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  MTEST                     0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  BMON                      0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  NAND                      0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  USBM0                     0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  FE                        0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  SDIO                      0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  TSP                       0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  BCMCPU                    0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %unsigned 1  BCMDMA                    0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00608 AXI_RRESP_CTRL       (P)
///               %unsigned 1  CA7                       0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  ZSP                       0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  AVIOM0                    0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  AVIOM1                    0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  GFX3D                     0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  V2G                       0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  HTRO                      0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  MTEST                     0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  NAND                      0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  USBM0                     0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  FE                        0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  SDIO                      0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  TSP                       0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  BCMCPU                    0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %unsigned 1  BCMDMA                    0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %%        17         # Stuffing bits...
///     @ 0x0060C                      (W-)
///     #         # Stuffing bytes...
///               %% 4000
///     @ 0x00800                      (P)
///     # 0x00800 AxiErrMon1           
///               $AxiErrorMon         AxiErrMon1        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr1 (AVIOM0)
///                                    ###
///     @ 0x00818                      (P)
///     # 0x00818 AxiErrMon2           
///               $AxiErrorMon         AxiErrMon2        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr2 (AVIOM1)
///                                    ###
///     @ 0x00830                      (P)
///     # 0x00830 AxiErrMon3           
///               $AxiErrorMon         AxiErrMon3        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr3 (DXBAR_V2G)
///                                    ###
///     @ 0x00848                      (P)
///     # 0x00848 AxiErrMon4           
///               $AxiErrorMon         AxiErrMon4        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr4 (DXBAR)
///                                    ###
///     @ 0x00860                      (P)
///     # 0x00860 AxiErrMon5           
///               $AxiErrorMon         AxiErrMon5        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr5 (GFX3D)
///                                    ###
///     @ 0x00878                      (P)
///     # 0x00878 AxiErrMon6           
///               $AxiErrorMon         AxiErrMon6        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr6 (HTRO0)
///                                    ###
///     @ 0x00890                      (W-)
///     #         # Stuffing bytes...
///               %% 896
///     @ 0x00900                      (P)
///     # 0x00900 AxiWrFiltAVIO0       
///               $AxiWrFilt           AxiWrFiltAVIO0    REG          
///                                    ###
///                                    * AXI WSTRB Filter for AVIO0
///                                    ###
///     @ 0x00928                      (P)
///     # 0x00928 AxiWrFiltAVIO1       
///               $AxiWrFilt           AxiWrFiltAVIO1    REG          
///                                    ###
///                                    * AXI WSTRB Filter for AVIO1
///                                    ###
///     @ 0x00950                      (P)
///     # 0x00950 AxiWrFiltV2G         
///               $AxiWrFilt           AxiWrFiltV2G      REG          
///                                    ###
///                                    * AXI WSTRB Filter for V2G
///                                    ###
///     @ 0x00978                      (P)
///     # 0x00978 AxiWrFiltHTRO0       
///               $AxiWrFilt           AxiWrFiltHTRO0    REG          
///                                    ###
///                                    * AXI WSTRB Filter for HTRO0
///                                    ###
///     @ 0x009A0                      (P)
///     # 0x009A0 AxiWrFiltTSP         
///               $AxiWrFilt           AxiWrFiltTSP      REG          
///                                    ###
///                                    * AXI WSTRB Filter for TSP
///                                    ###
///     @ 0x009C8                      (P)
///     # 0x009C8 AxiWrFiltZSP         
///               $AxiWrFilt           AxiWrFiltZSP      REG          
///                                    ###
///                                    * AXI WSTRB Filter for ZSP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2544B, bits:    7007b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SOC
#define h_SOC (){}

    #define     RA_SOC_SeCtrlCfg                               0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SeCtrlFa                                0x0088
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SeHitRst                                0x00A8

    #define     BA_SOC_SeHitRst_seHitCountRstCfg               0x00A8
    #define     B16SOC_SeHitRst_seHitCountRstCfg               0x00A8
    #define   LSb32SOC_SeHitRst_seHitCountRstCfg                  0
    #define   LSb16SOC_SeHitRst_seHitCountRstCfg                  0
    #define       bSOC_SeHitRst_seHitCountRstCfg               1
    #define   MSK32SOC_SeHitRst_seHitCountRstCfg                  0x00000001

    #define     BA_SOC_SeHitRst_seHitCountRstFa                0x00A8
    #define     B16SOC_SeHitRst_seHitCountRstFa                0x00A8
    #define   LSb32SOC_SeHitRst_seHitCountRstFa                   1
    #define   LSb16SOC_SeHitRst_seHitCountRstFa                   1
    #define       bSOC_SeHitRst_seHitCountRstFa                1
    #define   MSK32SOC_SeHitRst_seHitCountRstFa                   0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SeHitCountCfg                           0x00AC

    #define     BA_SOC_SeHitCountCfg_seHitCountCfg             0x00AC
    #define     B16SOC_SeHitCountCfg_seHitCountCfg             0x00AC
    #define   LSb32SOC_SeHitCountCfg_seHitCountCfg                0
    #define   LSb16SOC_SeHitCountCfg_seHitCountCfg                0
    #define       bSOC_SeHitCountCfg_seHitCountCfg             32
    #define   MSK32SOC_SeHitCountCfg_seHitCountCfg                0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SeHitCountFa                            0x00B0

    #define     BA_SOC_SeHitCountFa_seHitCountFa               0x00B0
    #define     B16SOC_SeHitCountFa_seHitCountFa               0x00B0
    #define   LSb32SOC_SeHitCountFa_seHitCountFa                  0
    #define   LSb16SOC_SeHitCountFa_seHitCountFa                  0
    #define       bSOC_SeHitCountFa_seHitCountFa               32
    #define   MSK32SOC_SeHitCountFa_seHitCountFa                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_Configuration                           0x00B4

    #define     BA_SOC_Configuration_blockIFetch               0x00B4
    #define     B16SOC_Configuration_blockIFetch               0x00B4
    #define   LSb32SOC_Configuration_blockIFetch                  0
    #define   LSb16SOC_Configuration_blockIFetch                  0
    #define       bSOC_Configuration_blockIFetch               1
    #define   MSK32SOC_Configuration_blockIFetch                  0x00000001

    #define     BA_SOC_Configuration_vMetaIFetchEn             0x00B4
    #define     B16SOC_Configuration_vMetaIFetchEn             0x00B4
    #define   LSb32SOC_Configuration_vMetaIFetchEn                1
    #define   LSb16SOC_Configuration_vMetaIFetchEn                1
    #define       bSOC_Configuration_vMetaIFetchEn             1
    #define   MSK32SOC_Configuration_vMetaIFetchEn                0x00000002

    #define     BA_SOC_Configuration_AhbTrcEn                  0x00B4
    #define     B16SOC_Configuration_AhbTrcEn                  0x00B4
    #define   LSb32SOC_Configuration_AhbTrcEn                     2
    #define   LSb16SOC_Configuration_AhbTrcEn                     2
    #define       bSOC_Configuration_AhbTrcEn                  1
    #define   MSK32SOC_Configuration_AhbTrcEn                     0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol0                              0x00B8

    #define     BA_SOC_sysIntPol0_Invert                       0x00B8
    #define     B16SOC_sysIntPol0_Invert                       0x00B8
    #define   LSb32SOC_sysIntPol0_Invert                          0
    #define   LSb16SOC_sysIntPol0_Invert                          0
    #define       bSOC_sysIntPol0_Invert                       32
    #define   MSK32SOC_sysIntPol0_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol1                              0x00BC

    #define     BA_SOC_sysIntPol1_Invert                       0x00BC
    #define     B16SOC_sysIntPol1_Invert                       0x00BC
    #define   LSb32SOC_sysIntPol1_Invert                          0
    #define   LSb16SOC_sysIntPol1_Invert                          0
    #define       bSOC_sysIntPol1_Invert                       32
    #define   MSK32SOC_sysIntPol1_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol2                              0x00C0

    #define     BA_SOC_sysIntPol2_Invert                       0x00C0
    #define     B16SOC_sysIntPol2_Invert                       0x00C0
    #define   LSb32SOC_sysIntPol2_Invert                          0
    #define   LSb16SOC_sysIntPol2_Invert                          0
    #define       bSOC_sysIntPol2_Invert                       32
    #define   MSK32SOC_sysIntPol2_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol3                              0x00C4

    #define     BA_SOC_sysIntPol3_Invert                       0x00C4
    #define     B16SOC_sysIntPol3_Invert                       0x00C4
    #define   LSb32SOC_sysIntPol3_Invert                          0
    #define   LSb16SOC_sysIntPol3_Invert                          0
    #define       bSOC_sysIntPol3_Invert                       32
    #define   MSK32SOC_sysIntPol3_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_protOR                                  0x0100
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_GFX3D_PC                                0x0140
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SecureRegionCtrl0                       0x0200
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SecureRegionCtrl1                       0x0300
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SecureRegionCtrl2                       0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_SecureRegionCtrl3                       0x0500
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AHB_RESP_CTRL                           0x0600

    #define     BA_SOC_AHB_RESP_CTRL_MaskHrespDef              0x0600
    #define     B16SOC_AHB_RESP_CTRL_MaskHrespDef              0x0600
    #define   LSb32SOC_AHB_RESP_CTRL_MaskHrespDef                 0
    #define   LSb16SOC_AHB_RESP_CTRL_MaskHrespDef                 0
    #define       bSOC_AHB_RESP_CTRL_MaskHrespDef              1
    #define   MSK32SOC_AHB_RESP_CTRL_MaskHrespDef                 0x00000001

    #define     BA_SOC_AHB_RESP_CTRL_MaskHrespSe               0x0600
    #define     B16SOC_AHB_RESP_CTRL_MaskHrespSe               0x0600
    #define   LSb32SOC_AHB_RESP_CTRL_MaskHrespSe                  1
    #define   LSb16SOC_AHB_RESP_CTRL_MaskHrespSe                  1
    #define       bSOC_AHB_RESP_CTRL_MaskHrespSe               1
    #define   MSK32SOC_AHB_RESP_CTRL_MaskHrespSe                  0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AXI_BRESP_CTRL                          0x0604

    #define     BA_SOC_AXI_BRESP_CTRL_CA7                      0x0604
    #define     B16SOC_AXI_BRESP_CTRL_CA7                      0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_CA7                         0
    #define   LSb16SOC_AXI_BRESP_CTRL_CA7                         0
    #define       bSOC_AXI_BRESP_CTRL_CA7                      1
    #define   MSK32SOC_AXI_BRESP_CTRL_CA7                         0x00000001

    #define     BA_SOC_AXI_BRESP_CTRL_ZSP                      0x0604
    #define     B16SOC_AXI_BRESP_CTRL_ZSP                      0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_ZSP                         1
    #define   LSb16SOC_AXI_BRESP_CTRL_ZSP                         1
    #define       bSOC_AXI_BRESP_CTRL_ZSP                      1
    #define   MSK32SOC_AXI_BRESP_CTRL_ZSP                         0x00000002

    #define     BA_SOC_AXI_BRESP_CTRL_AVIOM0                   0x0604
    #define     B16SOC_AXI_BRESP_CTRL_AVIOM0                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_AVIOM0                      2
    #define   LSb16SOC_AXI_BRESP_CTRL_AVIOM0                      2
    #define       bSOC_AXI_BRESP_CTRL_AVIOM0                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_AVIOM0                      0x00000004

    #define     BA_SOC_AXI_BRESP_CTRL_AVIOM1                   0x0604
    #define     B16SOC_AXI_BRESP_CTRL_AVIOM1                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_AVIOM1                      3
    #define   LSb16SOC_AXI_BRESP_CTRL_AVIOM1                      3
    #define       bSOC_AXI_BRESP_CTRL_AVIOM1                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_AVIOM1                      0x00000008

    #define     BA_SOC_AXI_BRESP_CTRL_GFX3D                    0x0604
    #define     B16SOC_AXI_BRESP_CTRL_GFX3D                    0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_GFX3D                       4
    #define   LSb16SOC_AXI_BRESP_CTRL_GFX3D                       4
    #define       bSOC_AXI_BRESP_CTRL_GFX3D                    1
    #define   MSK32SOC_AXI_BRESP_CTRL_GFX3D                       0x00000010

    #define     BA_SOC_AXI_BRESP_CTRL_V2G                      0x0604
    #define     B16SOC_AXI_BRESP_CTRL_V2G                      0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_V2G                         5
    #define   LSb16SOC_AXI_BRESP_CTRL_V2G                         5
    #define       bSOC_AXI_BRESP_CTRL_V2G                      1
    #define   MSK32SOC_AXI_BRESP_CTRL_V2G                         0x00000020

    #define     BA_SOC_AXI_BRESP_CTRL_HTRO                     0x0604
    #define     B16SOC_AXI_BRESP_CTRL_HTRO                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_HTRO                        6
    #define   LSb16SOC_AXI_BRESP_CTRL_HTRO                        6
    #define       bSOC_AXI_BRESP_CTRL_HTRO                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_HTRO                        0x00000040

    #define     BA_SOC_AXI_BRESP_CTRL_MTEST                    0x0604
    #define     B16SOC_AXI_BRESP_CTRL_MTEST                    0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_MTEST                       7
    #define   LSb16SOC_AXI_BRESP_CTRL_MTEST                       7
    #define       bSOC_AXI_BRESP_CTRL_MTEST                    1
    #define   MSK32SOC_AXI_BRESP_CTRL_MTEST                       0x00000080

    #define     BA_SOC_AXI_BRESP_CTRL_BMON                     0x0605
    #define     B16SOC_AXI_BRESP_CTRL_BMON                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BMON                        8
    #define   LSb16SOC_AXI_BRESP_CTRL_BMON                        8
    #define       bSOC_AXI_BRESP_CTRL_BMON                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_BMON                        0x00000100

    #define     BA_SOC_AXI_BRESP_CTRL_NAND                     0x0605
    #define     B16SOC_AXI_BRESP_CTRL_NAND                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_NAND                        9
    #define   LSb16SOC_AXI_BRESP_CTRL_NAND                        9
    #define       bSOC_AXI_BRESP_CTRL_NAND                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_NAND                        0x00000200

    #define     BA_SOC_AXI_BRESP_CTRL_USBM0                    0x0605
    #define     B16SOC_AXI_BRESP_CTRL_USBM0                    0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_USBM0                       10
    #define   LSb16SOC_AXI_BRESP_CTRL_USBM0                       10
    #define       bSOC_AXI_BRESP_CTRL_USBM0                    1
    #define   MSK32SOC_AXI_BRESP_CTRL_USBM0                       0x00000400

    #define     BA_SOC_AXI_BRESP_CTRL_FE                       0x0605
    #define     B16SOC_AXI_BRESP_CTRL_FE                       0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_FE                          11
    #define   LSb16SOC_AXI_BRESP_CTRL_FE                          11
    #define       bSOC_AXI_BRESP_CTRL_FE                       1
    #define   MSK32SOC_AXI_BRESP_CTRL_FE                          0x00000800

    #define     BA_SOC_AXI_BRESP_CTRL_SDIO                     0x0605
    #define     B16SOC_AXI_BRESP_CTRL_SDIO                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_SDIO                        12
    #define   LSb16SOC_AXI_BRESP_CTRL_SDIO                        12
    #define       bSOC_AXI_BRESP_CTRL_SDIO                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_SDIO                        0x00001000

    #define     BA_SOC_AXI_BRESP_CTRL_TSP                      0x0605
    #define     B16SOC_AXI_BRESP_CTRL_TSP                      0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_TSP                         13
    #define   LSb16SOC_AXI_BRESP_CTRL_TSP                         13
    #define       bSOC_AXI_BRESP_CTRL_TSP                      1
    #define   MSK32SOC_AXI_BRESP_CTRL_TSP                         0x00002000

    #define     BA_SOC_AXI_BRESP_CTRL_BCMCPU                   0x0605
    #define     B16SOC_AXI_BRESP_CTRL_BCMCPU                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BCMCPU                      14
    #define   LSb16SOC_AXI_BRESP_CTRL_BCMCPU                      14
    #define       bSOC_AXI_BRESP_CTRL_BCMCPU                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_BCMCPU                      0x00004000

    #define     BA_SOC_AXI_BRESP_CTRL_BCMDMA                   0x0605
    #define     B16SOC_AXI_BRESP_CTRL_BCMDMA                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BCMDMA                      15
    #define   LSb16SOC_AXI_BRESP_CTRL_BCMDMA                      15
    #define       bSOC_AXI_BRESP_CTRL_BCMDMA                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_BCMDMA                      0x00008000
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AXI_RRESP_CTRL                          0x0608

    #define     BA_SOC_AXI_RRESP_CTRL_CA7                      0x0608
    #define     B16SOC_AXI_RRESP_CTRL_CA7                      0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_CA7                         0
    #define   LSb16SOC_AXI_RRESP_CTRL_CA7                         0
    #define       bSOC_AXI_RRESP_CTRL_CA7                      1
    #define   MSK32SOC_AXI_RRESP_CTRL_CA7                         0x00000001

    #define     BA_SOC_AXI_RRESP_CTRL_ZSP                      0x0608
    #define     B16SOC_AXI_RRESP_CTRL_ZSP                      0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_ZSP                         1
    #define   LSb16SOC_AXI_RRESP_CTRL_ZSP                         1
    #define       bSOC_AXI_RRESP_CTRL_ZSP                      1
    #define   MSK32SOC_AXI_RRESP_CTRL_ZSP                         0x00000002

    #define     BA_SOC_AXI_RRESP_CTRL_AVIOM0                   0x0608
    #define     B16SOC_AXI_RRESP_CTRL_AVIOM0                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_AVIOM0                      2
    #define   LSb16SOC_AXI_RRESP_CTRL_AVIOM0                      2
    #define       bSOC_AXI_RRESP_CTRL_AVIOM0                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_AVIOM0                      0x00000004

    #define     BA_SOC_AXI_RRESP_CTRL_AVIOM1                   0x0608
    #define     B16SOC_AXI_RRESP_CTRL_AVIOM1                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_AVIOM1                      3
    #define   LSb16SOC_AXI_RRESP_CTRL_AVIOM1                      3
    #define       bSOC_AXI_RRESP_CTRL_AVIOM1                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_AVIOM1                      0x00000008

    #define     BA_SOC_AXI_RRESP_CTRL_GFX3D                    0x0608
    #define     B16SOC_AXI_RRESP_CTRL_GFX3D                    0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_GFX3D                       4
    #define   LSb16SOC_AXI_RRESP_CTRL_GFX3D                       4
    #define       bSOC_AXI_RRESP_CTRL_GFX3D                    1
    #define   MSK32SOC_AXI_RRESP_CTRL_GFX3D                       0x00000010

    #define     BA_SOC_AXI_RRESP_CTRL_V2G                      0x0608
    #define     B16SOC_AXI_RRESP_CTRL_V2G                      0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_V2G                         5
    #define   LSb16SOC_AXI_RRESP_CTRL_V2G                         5
    #define       bSOC_AXI_RRESP_CTRL_V2G                      1
    #define   MSK32SOC_AXI_RRESP_CTRL_V2G                         0x00000020

    #define     BA_SOC_AXI_RRESP_CTRL_HTRO                     0x0608
    #define     B16SOC_AXI_RRESP_CTRL_HTRO                     0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_HTRO                        6
    #define   LSb16SOC_AXI_RRESP_CTRL_HTRO                        6
    #define       bSOC_AXI_RRESP_CTRL_HTRO                     1
    #define   MSK32SOC_AXI_RRESP_CTRL_HTRO                        0x00000040

    #define     BA_SOC_AXI_RRESP_CTRL_MTEST                    0x0608
    #define     B16SOC_AXI_RRESP_CTRL_MTEST                    0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_MTEST                       7
    #define   LSb16SOC_AXI_RRESP_CTRL_MTEST                       7
    #define       bSOC_AXI_RRESP_CTRL_MTEST                    1
    #define   MSK32SOC_AXI_RRESP_CTRL_MTEST                       0x00000080

    #define     BA_SOC_AXI_RRESP_CTRL_NAND                     0x0609
    #define     B16SOC_AXI_RRESP_CTRL_NAND                     0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_NAND                        8
    #define   LSb16SOC_AXI_RRESP_CTRL_NAND                        8
    #define       bSOC_AXI_RRESP_CTRL_NAND                     1
    #define   MSK32SOC_AXI_RRESP_CTRL_NAND                        0x00000100

    #define     BA_SOC_AXI_RRESP_CTRL_USBM0                    0x0609
    #define     B16SOC_AXI_RRESP_CTRL_USBM0                    0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_USBM0                       9
    #define   LSb16SOC_AXI_RRESP_CTRL_USBM0                       9
    #define       bSOC_AXI_RRESP_CTRL_USBM0                    1
    #define   MSK32SOC_AXI_RRESP_CTRL_USBM0                       0x00000200

    #define     BA_SOC_AXI_RRESP_CTRL_FE                       0x0609
    #define     B16SOC_AXI_RRESP_CTRL_FE                       0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_FE                          10
    #define   LSb16SOC_AXI_RRESP_CTRL_FE                          10
    #define       bSOC_AXI_RRESP_CTRL_FE                       1
    #define   MSK32SOC_AXI_RRESP_CTRL_FE                          0x00000400

    #define     BA_SOC_AXI_RRESP_CTRL_SDIO                     0x0609
    #define     B16SOC_AXI_RRESP_CTRL_SDIO                     0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_SDIO                        11
    #define   LSb16SOC_AXI_RRESP_CTRL_SDIO                        11
    #define       bSOC_AXI_RRESP_CTRL_SDIO                     1
    #define   MSK32SOC_AXI_RRESP_CTRL_SDIO                        0x00000800

    #define     BA_SOC_AXI_RRESP_CTRL_TSP                      0x0609
    #define     B16SOC_AXI_RRESP_CTRL_TSP                      0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_TSP                         12
    #define   LSb16SOC_AXI_RRESP_CTRL_TSP                         12
    #define       bSOC_AXI_RRESP_CTRL_TSP                      1
    #define   MSK32SOC_AXI_RRESP_CTRL_TSP                         0x00001000

    #define     BA_SOC_AXI_RRESP_CTRL_BCMCPU                   0x0609
    #define     B16SOC_AXI_RRESP_CTRL_BCMCPU                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_BCMCPU                      13
    #define   LSb16SOC_AXI_RRESP_CTRL_BCMCPU                      13
    #define       bSOC_AXI_RRESP_CTRL_BCMCPU                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_BCMCPU                      0x00002000

    #define     BA_SOC_AXI_RRESP_CTRL_BCMDMA                   0x0609
    #define     B16SOC_AXI_RRESP_CTRL_BCMDMA                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_BCMDMA                      14
    #define   LSb16SOC_AXI_RRESP_CTRL_BCMDMA                      14
    #define       bSOC_AXI_RRESP_CTRL_BCMDMA                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_BCMDMA                      0x00004000
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon1                              0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon2                              0x0818
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon3                              0x0830
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon4                              0x0848
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon5                              0x0860
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon6                              0x0878
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltAVIO0                          0x0900
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltAVIO1                          0x0928
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltV2G                            0x0950
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltHTRO0                          0x0978
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltTSP                            0x09A0
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltZSP                            0x09C8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SOC {
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx0                                      [104];
    ///////////////////////////////////////////////////////////
              SIE_seRegion                                     ie_SeCtrlCfg;
    ///////////////////////////////////////////////////////////
              SIE_seRegion                                     ie_SeCtrlFa;
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_SeHitRst_seHitCountRstCfg(r32)          _BFGET_(r32, 0, 0)
    #define   SET32SOC_SeHitRst_seHitCountRstCfg(r32,v)        _BFSET_(r32, 0, 0,v)
    #define   GET16SOC_SeHitRst_seHitCountRstCfg(r16)          _BFGET_(r16, 0, 0)
    #define   SET16SOC_SeHitRst_seHitCountRstCfg(r16,v)        _BFSET_(r16, 0, 0,v)

    #define   GET32SOC_SeHitRst_seHitCountRstFa(r32)           _BFGET_(r32, 1, 1)
    #define   SET32SOC_SeHitRst_seHitCountRstFa(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_SeHitRst_seHitCountRstFa(r16)           _BFGET_(r16, 1, 1)
    #define   SET16SOC_SeHitRst_seHitCountRstFa(r16,v)         _BFSET_(r16, 1, 1,v)

    #define     w32SOC_SeHitRst                                {\
            UNSG32 uSeHitRst_seHitCountRstCfg                  :  1;\
            UNSG32 uSeHitRst_seHitCountRstFa                   :  1;\
            UNSG32 RSVDxA8_b2                                  : 30;\
          }
    union { UNSG32 u32SOC_SeHitRst;
            struct w32SOC_SeHitRst;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_SeHitCountCfg_seHitCountCfg(r32)        _BFGET_(r32,31, 0)
    #define   SET32SOC_SeHitCountCfg_seHitCountCfg(r32,v)      _BFSET_(r32,31, 0,v)

    #define     w32SOC_SeHitCountCfg                           {\
            UNSG32 uSeHitCountCfg_seHitCountCfg                : 32;\
          }
    union { UNSG32 u32SOC_SeHitCountCfg;
            struct w32SOC_SeHitCountCfg;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_SeHitCountFa_seHitCountFa(r32)          _BFGET_(r32,31, 0)
    #define   SET32SOC_SeHitCountFa_seHitCountFa(r32,v)        _BFSET_(r32,31, 0,v)

    #define     w32SOC_SeHitCountFa                            {\
            UNSG32 uSeHitCountFa_seHitCountFa                  : 32;\
          }
    union { UNSG32 u32SOC_SeHitCountFa;
            struct w32SOC_SeHitCountFa;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_Configuration_blockIFetch(r32)          _BFGET_(r32, 0, 0)
    #define   SET32SOC_Configuration_blockIFetch(r32,v)        _BFSET_(r32, 0, 0,v)
    #define   GET16SOC_Configuration_blockIFetch(r16)          _BFGET_(r16, 0, 0)
    #define   SET16SOC_Configuration_blockIFetch(r16,v)        _BFSET_(r16, 0, 0,v)

    #define   GET32SOC_Configuration_vMetaIFetchEn(r32)        _BFGET_(r32, 1, 1)
    #define   SET32SOC_Configuration_vMetaIFetchEn(r32,v)      _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_Configuration_vMetaIFetchEn(r16)        _BFGET_(r16, 1, 1)
    #define   SET16SOC_Configuration_vMetaIFetchEn(r16,v)      _BFSET_(r16, 1, 1,v)

    #define   GET32SOC_Configuration_AhbTrcEn(r32)             _BFGET_(r32, 2, 2)
    #define   SET32SOC_Configuration_AhbTrcEn(r32,v)           _BFSET_(r32, 2, 2,v)
    #define   GET16SOC_Configuration_AhbTrcEn(r16)             _BFGET_(r16, 2, 2)
    #define   SET16SOC_Configuration_AhbTrcEn(r16,v)           _BFSET_(r16, 2, 2,v)

    #define     w32SOC_Configuration                           {\
            UNSG32 uConfiguration_blockIFetch                  :  1;\
            UNSG32 uConfiguration_vMetaIFetchEn                :  1;\
            UNSG32 uConfiguration_AhbTrcEn                     :  1;\
            UNSG32 RSVDxB4_b3                                  : 29;\
          }
    union { UNSG32 u32SOC_Configuration;
            struct w32SOC_Configuration;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_sysIntPol0_Invert(r32)                  _BFGET_(r32,31, 0)
    #define   SET32SOC_sysIntPol0_Invert(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32SOC_sysIntPol0                              {\
            UNSG32 usysIntPol0_Invert                          : 32;\
          }
    union { UNSG32 u32SOC_sysIntPol0;
            struct w32SOC_sysIntPol0;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_sysIntPol1_Invert(r32)                  _BFGET_(r32,31, 0)
    #define   SET32SOC_sysIntPol1_Invert(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32SOC_sysIntPol1                              {\
            UNSG32 usysIntPol1_Invert                          : 32;\
          }
    union { UNSG32 u32SOC_sysIntPol1;
            struct w32SOC_sysIntPol1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_sysIntPol2_Invert(r32)                  _BFGET_(r32,31, 0)
    #define   SET32SOC_sysIntPol2_Invert(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32SOC_sysIntPol2                              {\
            UNSG32 usysIntPol2_Invert                          : 32;\
          }
    union { UNSG32 u32SOC_sysIntPol2;
            struct w32SOC_sysIntPol2;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_sysIntPol3_Invert(r32)                  _BFGET_(r32,31, 0)
    #define   SET32SOC_sysIntPol3_Invert(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32SOC_sysIntPol3                              {\
            UNSG32 usysIntPol3_Invert                          : 32;\
          }
    union { UNSG32 u32SOC_sysIntPol3;
            struct w32SOC_sysIntPol3;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC8                                     [56];
    ///////////////////////////////////////////////////////////
              SIE_protOR                                       ie_protOR;
    ///////////////////////////////////////////////////////////
              SIE_AxiPCnt                                      ie_GFX3D_PC;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx15C                                    [164];
    ///////////////////////////////////////////////////////////
              SIE_seRegionX                                    ie_SecureRegionCtrl0;
    ///////////////////////////////////////////////////////////
              SIE_seRegionX                                    ie_SecureRegionCtrl1;
    ///////////////////////////////////////////////////////////
              SIE_seRegionX                                    ie_SecureRegionCtrl2;
    ///////////////////////////////////////////////////////////
              SIE_seRegionX                                    ie_SecureRegionCtrl3;
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_AHB_RESP_CTRL_MaskHrespDef(r32)         _BFGET_(r32, 0, 0)
    #define   SET32SOC_AHB_RESP_CTRL_MaskHrespDef(r32,v)       _BFSET_(r32, 0, 0,v)
    #define   GET16SOC_AHB_RESP_CTRL_MaskHrespDef(r16)         _BFGET_(r16, 0, 0)
    #define   SET16SOC_AHB_RESP_CTRL_MaskHrespDef(r16,v)       _BFSET_(r16, 0, 0,v)

    #define   GET32SOC_AHB_RESP_CTRL_MaskHrespSe(r32)          _BFGET_(r32, 1, 1)
    #define   SET32SOC_AHB_RESP_CTRL_MaskHrespSe(r32,v)        _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_AHB_RESP_CTRL_MaskHrespSe(r16)          _BFGET_(r16, 1, 1)
    #define   SET16SOC_AHB_RESP_CTRL_MaskHrespSe(r16,v)        _BFSET_(r16, 1, 1,v)

    #define     w32SOC_AHB_RESP_CTRL                           {\
            UNSG32 uAHB_RESP_CTRL_MaskHrespDef                 :  1;\
            UNSG32 uAHB_RESP_CTRL_MaskHrespSe                  :  1;\
            UNSG32 RSVDx600_b2                                 : 30;\
          }
    union { UNSG32 u32SOC_AHB_RESP_CTRL;
            struct w32SOC_AHB_RESP_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_AXI_BRESP_CTRL_CA7(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32SOC_AXI_BRESP_CTRL_CA7(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16SOC_AXI_BRESP_CTRL_CA7(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16SOC_AXI_BRESP_CTRL_CA7(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32SOC_AXI_BRESP_CTRL_ZSP(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32SOC_AXI_BRESP_CTRL_ZSP(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_AXI_BRESP_CTRL_ZSP(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16SOC_AXI_BRESP_CTRL_ZSP(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32SOC_AXI_BRESP_CTRL_AVIOM0(r32)              _BFGET_(r32, 2, 2)
    #define   SET32SOC_AXI_BRESP_CTRL_AVIOM0(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16SOC_AXI_BRESP_CTRL_AVIOM0(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SOC_AXI_BRESP_CTRL_AVIOM0(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SOC_AXI_BRESP_CTRL_AVIOM1(r32)              _BFGET_(r32, 3, 3)
    #define   SET32SOC_AXI_BRESP_CTRL_AVIOM1(r32,v)            _BFSET_(r32, 3, 3,v)
    #define   GET16SOC_AXI_BRESP_CTRL_AVIOM1(r16)              _BFGET_(r16, 3, 3)
    #define   SET16SOC_AXI_BRESP_CTRL_AVIOM1(r16,v)            _BFSET_(r16, 3, 3,v)

    #define   GET32SOC_AXI_BRESP_CTRL_GFX3D(r32)               _BFGET_(r32, 4, 4)
    #define   SET32SOC_AXI_BRESP_CTRL_GFX3D(r32,v)             _BFSET_(r32, 4, 4,v)
    #define   GET16SOC_AXI_BRESP_CTRL_GFX3D(r16)               _BFGET_(r16, 4, 4)
    #define   SET16SOC_AXI_BRESP_CTRL_GFX3D(r16,v)             _BFSET_(r16, 4, 4,v)

    #define   GET32SOC_AXI_BRESP_CTRL_V2G(r32)                 _BFGET_(r32, 5, 5)
    #define   SET32SOC_AXI_BRESP_CTRL_V2G(r32,v)               _BFSET_(r32, 5, 5,v)
    #define   GET16SOC_AXI_BRESP_CTRL_V2G(r16)                 _BFGET_(r16, 5, 5)
    #define   SET16SOC_AXI_BRESP_CTRL_V2G(r16,v)               _BFSET_(r16, 5, 5,v)

    #define   GET32SOC_AXI_BRESP_CTRL_HTRO(r32)                _BFGET_(r32, 6, 6)
    #define   SET32SOC_AXI_BRESP_CTRL_HTRO(r32,v)              _BFSET_(r32, 6, 6,v)
    #define   GET16SOC_AXI_BRESP_CTRL_HTRO(r16)                _BFGET_(r16, 6, 6)
    #define   SET16SOC_AXI_BRESP_CTRL_HTRO(r16,v)              _BFSET_(r16, 6, 6,v)

    #define   GET32SOC_AXI_BRESP_CTRL_MTEST(r32)               _BFGET_(r32, 7, 7)
    #define   SET32SOC_AXI_BRESP_CTRL_MTEST(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16SOC_AXI_BRESP_CTRL_MTEST(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SOC_AXI_BRESP_CTRL_MTEST(r16,v)             _BFSET_(r16, 7, 7,v)

    #define   GET32SOC_AXI_BRESP_CTRL_BMON(r32)                _BFGET_(r32, 8, 8)
    #define   SET32SOC_AXI_BRESP_CTRL_BMON(r32,v)              _BFSET_(r32, 8, 8,v)
    #define   GET16SOC_AXI_BRESP_CTRL_BMON(r16)                _BFGET_(r16, 8, 8)
    #define   SET16SOC_AXI_BRESP_CTRL_BMON(r16,v)              _BFSET_(r16, 8, 8,v)

    #define   GET32SOC_AXI_BRESP_CTRL_NAND(r32)                _BFGET_(r32, 9, 9)
    #define   SET32SOC_AXI_BRESP_CTRL_NAND(r32,v)              _BFSET_(r32, 9, 9,v)
    #define   GET16SOC_AXI_BRESP_CTRL_NAND(r16)                _BFGET_(r16, 9, 9)
    #define   SET16SOC_AXI_BRESP_CTRL_NAND(r16,v)              _BFSET_(r16, 9, 9,v)

    #define   GET32SOC_AXI_BRESP_CTRL_USBM0(r32)               _BFGET_(r32,10,10)
    #define   SET32SOC_AXI_BRESP_CTRL_USBM0(r32,v)             _BFSET_(r32,10,10,v)
    #define   GET16SOC_AXI_BRESP_CTRL_USBM0(r16)               _BFGET_(r16,10,10)
    #define   SET16SOC_AXI_BRESP_CTRL_USBM0(r16,v)             _BFSET_(r16,10,10,v)

    #define   GET32SOC_AXI_BRESP_CTRL_FE(r32)                  _BFGET_(r32,11,11)
    #define   SET32SOC_AXI_BRESP_CTRL_FE(r32,v)                _BFSET_(r32,11,11,v)
    #define   GET16SOC_AXI_BRESP_CTRL_FE(r16)                  _BFGET_(r16,11,11)
    #define   SET16SOC_AXI_BRESP_CTRL_FE(r16,v)                _BFSET_(r16,11,11,v)

    #define   GET32SOC_AXI_BRESP_CTRL_SDIO(r32)                _BFGET_(r32,12,12)
    #define   SET32SOC_AXI_BRESP_CTRL_SDIO(r32,v)              _BFSET_(r32,12,12,v)
    #define   GET16SOC_AXI_BRESP_CTRL_SDIO(r16)                _BFGET_(r16,12,12)
    #define   SET16SOC_AXI_BRESP_CTRL_SDIO(r16,v)              _BFSET_(r16,12,12,v)

    #define   GET32SOC_AXI_BRESP_CTRL_TSP(r32)                 _BFGET_(r32,13,13)
    #define   SET32SOC_AXI_BRESP_CTRL_TSP(r32,v)               _BFSET_(r32,13,13,v)
    #define   GET16SOC_AXI_BRESP_CTRL_TSP(r16)                 _BFGET_(r16,13,13)
    #define   SET16SOC_AXI_BRESP_CTRL_TSP(r16,v)               _BFSET_(r16,13,13,v)

    #define   GET32SOC_AXI_BRESP_CTRL_BCMCPU(r32)              _BFGET_(r32,14,14)
    #define   SET32SOC_AXI_BRESP_CTRL_BCMCPU(r32,v)            _BFSET_(r32,14,14,v)
    #define   GET16SOC_AXI_BRESP_CTRL_BCMCPU(r16)              _BFGET_(r16,14,14)
    #define   SET16SOC_AXI_BRESP_CTRL_BCMCPU(r16,v)            _BFSET_(r16,14,14,v)

    #define   GET32SOC_AXI_BRESP_CTRL_BCMDMA(r32)              _BFGET_(r32,15,15)
    #define   SET32SOC_AXI_BRESP_CTRL_BCMDMA(r32,v)            _BFSET_(r32,15,15,v)
    #define   GET16SOC_AXI_BRESP_CTRL_BCMDMA(r16)              _BFGET_(r16,15,15)
    #define   SET16SOC_AXI_BRESP_CTRL_BCMDMA(r16,v)            _BFSET_(r16,15,15,v)

    #define     w32SOC_AXI_BRESP_CTRL                          {\
            UNSG32 uAXI_BRESP_CTRL_CA7                         :  1;\
            UNSG32 uAXI_BRESP_CTRL_ZSP                         :  1;\
            UNSG32 uAXI_BRESP_CTRL_AVIOM0                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_AVIOM1                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_GFX3D                       :  1;\
            UNSG32 uAXI_BRESP_CTRL_V2G                         :  1;\
            UNSG32 uAXI_BRESP_CTRL_HTRO                        :  1;\
            UNSG32 uAXI_BRESP_CTRL_MTEST                       :  1;\
            UNSG32 uAXI_BRESP_CTRL_BMON                        :  1;\
            UNSG32 uAXI_BRESP_CTRL_NAND                        :  1;\
            UNSG32 uAXI_BRESP_CTRL_USBM0                       :  1;\
            UNSG32 uAXI_BRESP_CTRL_FE                          :  1;\
            UNSG32 uAXI_BRESP_CTRL_SDIO                        :  1;\
            UNSG32 uAXI_BRESP_CTRL_TSP                         :  1;\
            UNSG32 uAXI_BRESP_CTRL_BCMCPU                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_BCMDMA                      :  1;\
            UNSG32 RSVDx604_b16                                : 16;\
          }
    union { UNSG32 u32SOC_AXI_BRESP_CTRL;
            struct w32SOC_AXI_BRESP_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SOC_AXI_RRESP_CTRL_CA7(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32SOC_AXI_RRESP_CTRL_CA7(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16SOC_AXI_RRESP_CTRL_CA7(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16SOC_AXI_RRESP_CTRL_CA7(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32SOC_AXI_RRESP_CTRL_ZSP(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32SOC_AXI_RRESP_CTRL_ZSP(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_AXI_RRESP_CTRL_ZSP(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16SOC_AXI_RRESP_CTRL_ZSP(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32SOC_AXI_RRESP_CTRL_AVIOM0(r32)              _BFGET_(r32, 2, 2)
    #define   SET32SOC_AXI_RRESP_CTRL_AVIOM0(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16SOC_AXI_RRESP_CTRL_AVIOM0(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SOC_AXI_RRESP_CTRL_AVIOM0(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SOC_AXI_RRESP_CTRL_AVIOM1(r32)              _BFGET_(r32, 3, 3)
    #define   SET32SOC_AXI_RRESP_CTRL_AVIOM1(r32,v)            _BFSET_(r32, 3, 3,v)
    #define   GET16SOC_AXI_RRESP_CTRL_AVIOM1(r16)              _BFGET_(r16, 3, 3)
    #define   SET16SOC_AXI_RRESP_CTRL_AVIOM1(r16,v)            _BFSET_(r16, 3, 3,v)

    #define   GET32SOC_AXI_RRESP_CTRL_GFX3D(r32)               _BFGET_(r32, 4, 4)
    #define   SET32SOC_AXI_RRESP_CTRL_GFX3D(r32,v)             _BFSET_(r32, 4, 4,v)
    #define   GET16SOC_AXI_RRESP_CTRL_GFX3D(r16)               _BFGET_(r16, 4, 4)
    #define   SET16SOC_AXI_RRESP_CTRL_GFX3D(r16,v)             _BFSET_(r16, 4, 4,v)

    #define   GET32SOC_AXI_RRESP_CTRL_V2G(r32)                 _BFGET_(r32, 5, 5)
    #define   SET32SOC_AXI_RRESP_CTRL_V2G(r32,v)               _BFSET_(r32, 5, 5,v)
    #define   GET16SOC_AXI_RRESP_CTRL_V2G(r16)                 _BFGET_(r16, 5, 5)
    #define   SET16SOC_AXI_RRESP_CTRL_V2G(r16,v)               _BFSET_(r16, 5, 5,v)

    #define   GET32SOC_AXI_RRESP_CTRL_HTRO(r32)                _BFGET_(r32, 6, 6)
    #define   SET32SOC_AXI_RRESP_CTRL_HTRO(r32,v)              _BFSET_(r32, 6, 6,v)
    #define   GET16SOC_AXI_RRESP_CTRL_HTRO(r16)                _BFGET_(r16, 6, 6)
    #define   SET16SOC_AXI_RRESP_CTRL_HTRO(r16,v)              _BFSET_(r16, 6, 6,v)

    #define   GET32SOC_AXI_RRESP_CTRL_MTEST(r32)               _BFGET_(r32, 7, 7)
    #define   SET32SOC_AXI_RRESP_CTRL_MTEST(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16SOC_AXI_RRESP_CTRL_MTEST(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SOC_AXI_RRESP_CTRL_MTEST(r16,v)             _BFSET_(r16, 7, 7,v)

    #define   GET32SOC_AXI_RRESP_CTRL_NAND(r32)                _BFGET_(r32, 8, 8)
    #define   SET32SOC_AXI_RRESP_CTRL_NAND(r32,v)              _BFSET_(r32, 8, 8,v)
    #define   GET16SOC_AXI_RRESP_CTRL_NAND(r16)                _BFGET_(r16, 8, 8)
    #define   SET16SOC_AXI_RRESP_CTRL_NAND(r16,v)              _BFSET_(r16, 8, 8,v)

    #define   GET32SOC_AXI_RRESP_CTRL_USBM0(r32)               _BFGET_(r32, 9, 9)
    #define   SET32SOC_AXI_RRESP_CTRL_USBM0(r32,v)             _BFSET_(r32, 9, 9,v)
    #define   GET16SOC_AXI_RRESP_CTRL_USBM0(r16)               _BFGET_(r16, 9, 9)
    #define   SET16SOC_AXI_RRESP_CTRL_USBM0(r16,v)             _BFSET_(r16, 9, 9,v)

    #define   GET32SOC_AXI_RRESP_CTRL_FE(r32)                  _BFGET_(r32,10,10)
    #define   SET32SOC_AXI_RRESP_CTRL_FE(r32,v)                _BFSET_(r32,10,10,v)
    #define   GET16SOC_AXI_RRESP_CTRL_FE(r16)                  _BFGET_(r16,10,10)
    #define   SET16SOC_AXI_RRESP_CTRL_FE(r16,v)                _BFSET_(r16,10,10,v)

    #define   GET32SOC_AXI_RRESP_CTRL_SDIO(r32)                _BFGET_(r32,11,11)
    #define   SET32SOC_AXI_RRESP_CTRL_SDIO(r32,v)              _BFSET_(r32,11,11,v)
    #define   GET16SOC_AXI_RRESP_CTRL_SDIO(r16)                _BFGET_(r16,11,11)
    #define   SET16SOC_AXI_RRESP_CTRL_SDIO(r16,v)              _BFSET_(r16,11,11,v)

    #define   GET32SOC_AXI_RRESP_CTRL_TSP(r32)                 _BFGET_(r32,12,12)
    #define   SET32SOC_AXI_RRESP_CTRL_TSP(r32,v)               _BFSET_(r32,12,12,v)
    #define   GET16SOC_AXI_RRESP_CTRL_TSP(r16)                 _BFGET_(r16,12,12)
    #define   SET16SOC_AXI_RRESP_CTRL_TSP(r16,v)               _BFSET_(r16,12,12,v)

    #define   GET32SOC_AXI_RRESP_CTRL_BCMCPU(r32)              _BFGET_(r32,13,13)
    #define   SET32SOC_AXI_RRESP_CTRL_BCMCPU(r32,v)            _BFSET_(r32,13,13,v)
    #define   GET16SOC_AXI_RRESP_CTRL_BCMCPU(r16)              _BFGET_(r16,13,13)
    #define   SET16SOC_AXI_RRESP_CTRL_BCMCPU(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32SOC_AXI_RRESP_CTRL_BCMDMA(r32)              _BFGET_(r32,14,14)
    #define   SET32SOC_AXI_RRESP_CTRL_BCMDMA(r32,v)            _BFSET_(r32,14,14,v)
    #define   GET16SOC_AXI_RRESP_CTRL_BCMDMA(r16)              _BFGET_(r16,14,14)
    #define   SET16SOC_AXI_RRESP_CTRL_BCMDMA(r16,v)            _BFSET_(r16,14,14,v)

    #define     w32SOC_AXI_RRESP_CTRL                          {\
            UNSG32 uAXI_RRESP_CTRL_CA7                         :  1;\
            UNSG32 uAXI_RRESP_CTRL_ZSP                         :  1;\
            UNSG32 uAXI_RRESP_CTRL_AVIOM0                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_AVIOM1                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_GFX3D                       :  1;\
            UNSG32 uAXI_RRESP_CTRL_V2G                         :  1;\
            UNSG32 uAXI_RRESP_CTRL_HTRO                        :  1;\
            UNSG32 uAXI_RRESP_CTRL_MTEST                       :  1;\
            UNSG32 uAXI_RRESP_CTRL_NAND                        :  1;\
            UNSG32 uAXI_RRESP_CTRL_USBM0                       :  1;\
            UNSG32 uAXI_RRESP_CTRL_FE                          :  1;\
            UNSG32 uAXI_RRESP_CTRL_SDIO                        :  1;\
            UNSG32 uAXI_RRESP_CTRL_TSP                         :  1;\
            UNSG32 uAXI_RRESP_CTRL_BCMCPU                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_BCMDMA                      :  1;\
            UNSG32 RSVDx608_b15                                : 17;\
          }
    union { UNSG32 u32SOC_AXI_RRESP_CTRL;
            struct w32SOC_AXI_RRESP_CTRL;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx60C                                    [500];
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon1;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon2;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon3;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon4;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon5;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon6;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx890                                    [112];
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltAVIO0;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltAVIO1;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltV2G;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltHTRO0;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltTSP;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltZSP;
    ///////////////////////////////////////////////////////////
    } SIE_SOC;

    typedef union  T32SOC_SeHitRst
          { UNSG32 u32;
            struct w32SOC_SeHitRst;
                 } T32SOC_SeHitRst;
    typedef union  T32SOC_SeHitCountCfg
          { UNSG32 u32;
            struct w32SOC_SeHitCountCfg;
                 } T32SOC_SeHitCountCfg;
    typedef union  T32SOC_SeHitCountFa
          { UNSG32 u32;
            struct w32SOC_SeHitCountFa;
                 } T32SOC_SeHitCountFa;
    typedef union  T32SOC_Configuration
          { UNSG32 u32;
            struct w32SOC_Configuration;
                 } T32SOC_Configuration;
    typedef union  T32SOC_sysIntPol0
          { UNSG32 u32;
            struct w32SOC_sysIntPol0;
                 } T32SOC_sysIntPol0;
    typedef union  T32SOC_sysIntPol1
          { UNSG32 u32;
            struct w32SOC_sysIntPol1;
                 } T32SOC_sysIntPol1;
    typedef union  T32SOC_sysIntPol2
          { UNSG32 u32;
            struct w32SOC_sysIntPol2;
                 } T32SOC_sysIntPol2;
    typedef union  T32SOC_sysIntPol3
          { UNSG32 u32;
            struct w32SOC_sysIntPol3;
                 } T32SOC_sysIntPol3;
    typedef union  T32SOC_AHB_RESP_CTRL
          { UNSG32 u32;
            struct w32SOC_AHB_RESP_CTRL;
                 } T32SOC_AHB_RESP_CTRL;
    typedef union  T32SOC_AXI_BRESP_CTRL
          { UNSG32 u32;
            struct w32SOC_AXI_BRESP_CTRL;
                 } T32SOC_AXI_BRESP_CTRL;
    typedef union  T32SOC_AXI_RRESP_CTRL
          { UNSG32 u32;
            struct w32SOC_AXI_RRESP_CTRL;
                 } T32SOC_AXI_RRESP_CTRL;
    ///////////////////////////////////////////////////////////

    typedef union  TSOC_SeHitRst
          { UNSG32 u32[1];
            struct {
            struct w32SOC_SeHitRst;
                   };
                 } TSOC_SeHitRst;
    typedef union  TSOC_SeHitCountCfg
          { UNSG32 u32[1];
            struct {
            struct w32SOC_SeHitCountCfg;
                   };
                 } TSOC_SeHitCountCfg;
    typedef union  TSOC_SeHitCountFa
          { UNSG32 u32[1];
            struct {
            struct w32SOC_SeHitCountFa;
                   };
                 } TSOC_SeHitCountFa;
    typedef union  TSOC_Configuration
          { UNSG32 u32[1];
            struct {
            struct w32SOC_Configuration;
                   };
                 } TSOC_Configuration;
    typedef union  TSOC_sysIntPol0
          { UNSG32 u32[1];
            struct {
            struct w32SOC_sysIntPol0;
                   };
                 } TSOC_sysIntPol0;
    typedef union  TSOC_sysIntPol1
          { UNSG32 u32[1];
            struct {
            struct w32SOC_sysIntPol1;
                   };
                 } TSOC_sysIntPol1;
    typedef union  TSOC_sysIntPol2
          { UNSG32 u32[1];
            struct {
            struct w32SOC_sysIntPol2;
                   };
                 } TSOC_sysIntPol2;
    typedef union  TSOC_sysIntPol3
          { UNSG32 u32[1];
            struct {
            struct w32SOC_sysIntPol3;
                   };
                 } TSOC_sysIntPol3;
    typedef union  TSOC_AHB_RESP_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32SOC_AHB_RESP_CTRL;
                   };
                 } TSOC_AHB_RESP_CTRL;
    typedef union  TSOC_AXI_BRESP_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32SOC_AXI_BRESP_CTRL;
                   };
                 } TSOC_AXI_BRESP_CTRL;
    typedef union  TSOC_AXI_RRESP_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32SOC_AXI_RRESP_CTRL;
                   };
                 } TSOC_AXI_RRESP_CTRL;

    ///////////////////////////////////////////////////////////
     SIGN32 SOC_drvrd(SIE_SOC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SOC_drvwr(SIE_SOC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SOC_reset(SIE_SOC *p);
     SIGN32 SOC_cmp  (SIE_SOC *p, SIE_SOC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SOC_check(p,pie,pfx,hLOG) SOC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SOC_print(p,    pfx,hLOG) SOC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SOC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SocCSApbDec                              (4,4)
///     # # ----------------------------------------------------------
///               : SOCCS_ROM          0x0
///               : SOCCS_ETB          0x1000
///               : SOCCS_CTI          0x2000
///               : SOCCS_FUN          0x4000
///               : CPUINT_ROM         0x20000
///               : CPU0_DBG           0x30000
///               : CPU0_PMU           0x31000
///               : CPU1_DBG           0x32000
///               : CPU1_PMU           0x33000
///               : CPU0_CTI           0x38000
///               : CPU1_CTI           0x39000
///               : CPU0_ETM           0x3C000
///               : CPU1_ETM           0x3D000
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       0B, bits:       0b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SocCSApbDec
#define h_SocCSApbDec (){}

    #define        SocCSApbDec_SOCCS_ROM                       0x0
    #define        SocCSApbDec_SOCCS_ETB                       0x1000
    #define        SocCSApbDec_SOCCS_CTI                       0x2000
    #define        SocCSApbDec_SOCCS_FUN                       0x4000
    #define        SocCSApbDec_CPUINT_ROM                      0x20000
    #define        SocCSApbDec_CPU0_DBG                        0x30000
    #define        SocCSApbDec_CPU0_PMU                        0x31000
    #define        SocCSApbDec_CPU1_DBG                        0x32000
    #define        SocCSApbDec_CPU1_PMU                        0x33000
    #define        SocCSApbDec_CPU0_CTI                        0x38000
    #define        SocCSApbDec_CPU1_CTI                        0x39000
    #define        SocCSApbDec_CPU0_ETM                        0x3C000
    #define        SocCSApbDec_CPU1_ETM                        0x3D000
    ///////////////////////////////////////////////////////////

#endif
//////
/// ENDOFINTERFACE: SocCSApbDec
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: soc.h
////////////////////////////////////////////////////////////

