/********************************************************************************
 * 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 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 SecureNAND           
///               $seAccess            SecureNAND        REG          
///     @ 0x00028                      (P)
///     # 0x00028 SecureUSBM0          
///               $seAccess            SecureUSBM0       REG          
///     @ 0x0002C                      (P)
///     # 0x0002C SecureSDIO           
///               $seAccess            SecureSDIO        REG          
///     @ 0x00030                      (P)
///     # 0x00030 SecureTSP            
///               $seAccess            SecureTSP         REG          
///     @ 0x00034                      (P)
///     # 0x00034 SecureBCMCPU         
///               $seAccess            SecureBCMCPU      REG          
///     @ 0x00038                      (P)
///     # 0x00038 SecureBCMDMA         
///               $seAccess            SecureBCMDMA      REG          
///     @ 0x0003C                      (P)
///     # 0x0003C SecureBCMDIR         
///               $seAccess            SecureBCMDIR      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_SecureNAND                           0x0024
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureUSBM0                          0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureSDIO                           0x002C
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureTSP                            0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureBCMCPU                         0x0034
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureBCMDMA                         0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_protOR_SecureBCMDIR                         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_SecureNAND;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureUSBM0;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureSDIO;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureTSP;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureBCMCPU;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureBCMDMA;
    ///////////////////////////////////////////////////////////
              SIE_seAccess                                     ie_SecureBCMDIR;
    ///////////////////////////////////////////////////////////
    } 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)
///     # # ----------------------------------------------------------
///     @ 0x00000 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  AhbTrcEn                  0x0
///                                    ###
///                                    * 0: Disables the AHB Trace Monitor (Bmon)
///                                    * 1: Enables the AHB Trace Monitor (Bmon)
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00004 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
///                                    ###
///     @ 0x00008 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
///                                    ###
///     @ 0x0000C 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
///                                    ###
///     @ 0x00010 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
///                                    ###
///     @ 0x00014                      (W-)
///     #         # Stuffing bytes...
///               %% 1888
///     @ 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  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  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  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
///                                    ###
///               %unsigned 1  BCMDIR                    0x0
///                                    ###
///                                    * 0: bresp[1] is passed to AXI master unaltered
///                                    * 1: force bresp[1] to 0
///                                    ###
///               %%        18         # 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  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  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  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
///                                    ###
///               %unsigned 1  BCMDIR                    0x0
///                                    ###
///                                    * 0: rresp[1] is passed to AXI master unaltered
///                                    * 1: force rresp[1] to 0
///                                    ###
///               %%        19         # 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 AxiErrMon4           
///               $AxiErrorMon         AxiErrMon4        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr4 (DXBAR)
///                                    ###
///     @ 0x00848                      (P)
///     # 0x00848 AxiErrMon5           
///               $AxiErrorMon         AxiErrMon5        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr5 (GFX3D)
///                                    ###
///     @ 0x00860                      (P)
///     # 0x00860 AxiErrMon6           
///               $AxiErrorMon         AxiErrMon6        REG          
///                                    ###
///                                    * AXI Error Response Monitor for mstr6 (HTRO0)
///                                    ###
///     @ 0x00878                      (W-)
///     #         # Stuffing bytes...
///               %% 1088
///     @ 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 AxiWrFiltHTRO0       
///               $AxiWrFilt           AxiWrFiltHTRO0    REG          
///                                    ###
///                                    * AXI WSTRB Filter for HTRO0
///                                    ###
///     @ 0x00978                      (P)
///     # 0x00978 AxiWrFiltTSP         
///               $AxiWrFilt           AxiWrFiltTSP      REG          
///                                    ###
///                                    * AXI WSTRB Filter for TSP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2464B, bits:    6010b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SOC
#define h_SOC (){}

    #define     RA_SOC_Configuration                           0x0000

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

    #define     BA_SOC_Configuration_AhbTrcEn                  0x0000
    #define     B16SOC_Configuration_AhbTrcEn                  0x0000
    #define   LSb32SOC_Configuration_AhbTrcEn                     1
    #define   LSb16SOC_Configuration_AhbTrcEn                     1
    #define       bSOC_Configuration_AhbTrcEn                  1
    #define   MSK32SOC_Configuration_AhbTrcEn                     0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol0                              0x0004

    #define     BA_SOC_sysIntPol0_Invert                       0x0004
    #define     B16SOC_sysIntPol0_Invert                       0x0004
    #define   LSb32SOC_sysIntPol0_Invert                          0
    #define   LSb16SOC_sysIntPol0_Invert                          0
    #define       bSOC_sysIntPol0_Invert                       32
    #define   MSK32SOC_sysIntPol0_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol1                              0x0008

    #define     BA_SOC_sysIntPol1_Invert                       0x0008
    #define     B16SOC_sysIntPol1_Invert                       0x0008
    #define   LSb32SOC_sysIntPol1_Invert                          0
    #define   LSb16SOC_sysIntPol1_Invert                          0
    #define       bSOC_sysIntPol1_Invert                       32
    #define   MSK32SOC_sysIntPol1_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol2                              0x000C

    #define     BA_SOC_sysIntPol2_Invert                       0x000C
    #define     B16SOC_sysIntPol2_Invert                       0x000C
    #define   LSb32SOC_sysIntPol2_Invert                          0
    #define   LSb16SOC_sysIntPol2_Invert                          0
    #define       bSOC_sysIntPol2_Invert                       32
    #define   MSK32SOC_sysIntPol2_Invert                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_sysIntPol3                              0x0010

    #define     BA_SOC_sysIntPol3_Invert                       0x0010
    #define     B16SOC_sysIntPol3_Invert                       0x0010
    #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_AVIOM0                   0x0604
    #define     B16SOC_AXI_BRESP_CTRL_AVIOM0                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_AVIOM0                      1
    #define   LSb16SOC_AXI_BRESP_CTRL_AVIOM0                      1
    #define       bSOC_AXI_BRESP_CTRL_AVIOM0                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_AVIOM0                      0x00000002

    #define     BA_SOC_AXI_BRESP_CTRL_AVIOM1                   0x0604
    #define     B16SOC_AXI_BRESP_CTRL_AVIOM1                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_AVIOM1                      2
    #define   LSb16SOC_AXI_BRESP_CTRL_AVIOM1                      2
    #define       bSOC_AXI_BRESP_CTRL_AVIOM1                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_AVIOM1                      0x00000004

    #define     BA_SOC_AXI_BRESP_CTRL_GFX3D                    0x0604
    #define     B16SOC_AXI_BRESP_CTRL_GFX3D                    0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_GFX3D                       3
    #define   LSb16SOC_AXI_BRESP_CTRL_GFX3D                       3
    #define       bSOC_AXI_BRESP_CTRL_GFX3D                    1
    #define   MSK32SOC_AXI_BRESP_CTRL_GFX3D                       0x00000008

    #define     BA_SOC_AXI_BRESP_CTRL_HTRO                     0x0604
    #define     B16SOC_AXI_BRESP_CTRL_HTRO                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_HTRO                        4
    #define   LSb16SOC_AXI_BRESP_CTRL_HTRO                        4
    #define       bSOC_AXI_BRESP_CTRL_HTRO                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_HTRO                        0x00000010

    #define     BA_SOC_AXI_BRESP_CTRL_MTEST                    0x0604
    #define     B16SOC_AXI_BRESP_CTRL_MTEST                    0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_MTEST                       5
    #define   LSb16SOC_AXI_BRESP_CTRL_MTEST                       5
    #define       bSOC_AXI_BRESP_CTRL_MTEST                    1
    #define   MSK32SOC_AXI_BRESP_CTRL_MTEST                       0x00000020

    #define     BA_SOC_AXI_BRESP_CTRL_BMON                     0x0604
    #define     B16SOC_AXI_BRESP_CTRL_BMON                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BMON                        6
    #define   LSb16SOC_AXI_BRESP_CTRL_BMON                        6
    #define       bSOC_AXI_BRESP_CTRL_BMON                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_BMON                        0x00000040

    #define     BA_SOC_AXI_BRESP_CTRL_NAND                     0x0604
    #define     B16SOC_AXI_BRESP_CTRL_NAND                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_NAND                        7
    #define   LSb16SOC_AXI_BRESP_CTRL_NAND                        7
    #define       bSOC_AXI_BRESP_CTRL_NAND                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_NAND                        0x00000080

    #define     BA_SOC_AXI_BRESP_CTRL_USBM0                    0x0605
    #define     B16SOC_AXI_BRESP_CTRL_USBM0                    0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_USBM0                       8
    #define   LSb16SOC_AXI_BRESP_CTRL_USBM0                       8
    #define       bSOC_AXI_BRESP_CTRL_USBM0                    1
    #define   MSK32SOC_AXI_BRESP_CTRL_USBM0                       0x00000100

    #define     BA_SOC_AXI_BRESP_CTRL_SDIO                     0x0605
    #define     B16SOC_AXI_BRESP_CTRL_SDIO                     0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_SDIO                        9
    #define   LSb16SOC_AXI_BRESP_CTRL_SDIO                        9
    #define       bSOC_AXI_BRESP_CTRL_SDIO                     1
    #define   MSK32SOC_AXI_BRESP_CTRL_SDIO                        0x00000200

    #define     BA_SOC_AXI_BRESP_CTRL_TSP                      0x0605
    #define     B16SOC_AXI_BRESP_CTRL_TSP                      0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_TSP                         10
    #define   LSb16SOC_AXI_BRESP_CTRL_TSP                         10
    #define       bSOC_AXI_BRESP_CTRL_TSP                      1
    #define   MSK32SOC_AXI_BRESP_CTRL_TSP                         0x00000400

    #define     BA_SOC_AXI_BRESP_CTRL_BCMCPU                   0x0605
    #define     B16SOC_AXI_BRESP_CTRL_BCMCPU                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BCMCPU                      11
    #define   LSb16SOC_AXI_BRESP_CTRL_BCMCPU                      11
    #define       bSOC_AXI_BRESP_CTRL_BCMCPU                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_BCMCPU                      0x00000800

    #define     BA_SOC_AXI_BRESP_CTRL_BCMDMA                   0x0605
    #define     B16SOC_AXI_BRESP_CTRL_BCMDMA                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BCMDMA                      12
    #define   LSb16SOC_AXI_BRESP_CTRL_BCMDMA                      12
    #define       bSOC_AXI_BRESP_CTRL_BCMDMA                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_BCMDMA                      0x00001000

    #define     BA_SOC_AXI_BRESP_CTRL_BCMDIR                   0x0605
    #define     B16SOC_AXI_BRESP_CTRL_BCMDIR                   0x0604
    #define   LSb32SOC_AXI_BRESP_CTRL_BCMDIR                      13
    #define   LSb16SOC_AXI_BRESP_CTRL_BCMDIR                      13
    #define       bSOC_AXI_BRESP_CTRL_BCMDIR                   1
    #define   MSK32SOC_AXI_BRESP_CTRL_BCMDIR                      0x00002000
    ///////////////////////////////////////////////////////////
    #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_AVIOM0                   0x0608
    #define     B16SOC_AXI_RRESP_CTRL_AVIOM0                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_AVIOM0                      1
    #define   LSb16SOC_AXI_RRESP_CTRL_AVIOM0                      1
    #define       bSOC_AXI_RRESP_CTRL_AVIOM0                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_AVIOM0                      0x00000002

    #define     BA_SOC_AXI_RRESP_CTRL_AVIOM1                   0x0608
    #define     B16SOC_AXI_RRESP_CTRL_AVIOM1                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_AVIOM1                      2
    #define   LSb16SOC_AXI_RRESP_CTRL_AVIOM1                      2
    #define       bSOC_AXI_RRESP_CTRL_AVIOM1                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_AVIOM1                      0x00000004

    #define     BA_SOC_AXI_RRESP_CTRL_GFX3D                    0x0608
    #define     B16SOC_AXI_RRESP_CTRL_GFX3D                    0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_GFX3D                       3
    #define   LSb16SOC_AXI_RRESP_CTRL_GFX3D                       3
    #define       bSOC_AXI_RRESP_CTRL_GFX3D                    1
    #define   MSK32SOC_AXI_RRESP_CTRL_GFX3D                       0x00000008

    #define     BA_SOC_AXI_RRESP_CTRL_HTRO                     0x0608
    #define     B16SOC_AXI_RRESP_CTRL_HTRO                     0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_HTRO                        4
    #define   LSb16SOC_AXI_RRESP_CTRL_HTRO                        4
    #define       bSOC_AXI_RRESP_CTRL_HTRO                     1
    #define   MSK32SOC_AXI_RRESP_CTRL_HTRO                        0x00000010

    #define     BA_SOC_AXI_RRESP_CTRL_MTEST                    0x0608
    #define     B16SOC_AXI_RRESP_CTRL_MTEST                    0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_MTEST                       5
    #define   LSb16SOC_AXI_RRESP_CTRL_MTEST                       5
    #define       bSOC_AXI_RRESP_CTRL_MTEST                    1
    #define   MSK32SOC_AXI_RRESP_CTRL_MTEST                       0x00000020

    #define     BA_SOC_AXI_RRESP_CTRL_NAND                     0x0608
    #define     B16SOC_AXI_RRESP_CTRL_NAND                     0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_NAND                        6
    #define   LSb16SOC_AXI_RRESP_CTRL_NAND                        6
    #define       bSOC_AXI_RRESP_CTRL_NAND                     1
    #define   MSK32SOC_AXI_RRESP_CTRL_NAND                        0x00000040

    #define     BA_SOC_AXI_RRESP_CTRL_USBM0                    0x0608
    #define     B16SOC_AXI_RRESP_CTRL_USBM0                    0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_USBM0                       7
    #define   LSb16SOC_AXI_RRESP_CTRL_USBM0                       7
    #define       bSOC_AXI_RRESP_CTRL_USBM0                    1
    #define   MSK32SOC_AXI_RRESP_CTRL_USBM0                       0x00000080

    #define     BA_SOC_AXI_RRESP_CTRL_SDIO                     0x0609
    #define     B16SOC_AXI_RRESP_CTRL_SDIO                     0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_SDIO                        8
    #define   LSb16SOC_AXI_RRESP_CTRL_SDIO                        8
    #define       bSOC_AXI_RRESP_CTRL_SDIO                     1
    #define   MSK32SOC_AXI_RRESP_CTRL_SDIO                        0x00000100

    #define     BA_SOC_AXI_RRESP_CTRL_TSP                      0x0609
    #define     B16SOC_AXI_RRESP_CTRL_TSP                      0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_TSP                         9
    #define   LSb16SOC_AXI_RRESP_CTRL_TSP                         9
    #define       bSOC_AXI_RRESP_CTRL_TSP                      1
    #define   MSK32SOC_AXI_RRESP_CTRL_TSP                         0x00000200

    #define     BA_SOC_AXI_RRESP_CTRL_BCMCPU                   0x0609
    #define     B16SOC_AXI_RRESP_CTRL_BCMCPU                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_BCMCPU                      10
    #define   LSb16SOC_AXI_RRESP_CTRL_BCMCPU                      10
    #define       bSOC_AXI_RRESP_CTRL_BCMCPU                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_BCMCPU                      0x00000400

    #define     BA_SOC_AXI_RRESP_CTRL_BCMDMA                   0x0609
    #define     B16SOC_AXI_RRESP_CTRL_BCMDMA                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_BCMDMA                      11
    #define   LSb16SOC_AXI_RRESP_CTRL_BCMDMA                      11
    #define       bSOC_AXI_RRESP_CTRL_BCMDMA                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_BCMDMA                      0x00000800

    #define     BA_SOC_AXI_RRESP_CTRL_BCMDIR                   0x0609
    #define     B16SOC_AXI_RRESP_CTRL_BCMDIR                   0x0608
    #define   LSb32SOC_AXI_RRESP_CTRL_BCMDIR                      12
    #define   LSb16SOC_AXI_RRESP_CTRL_BCMDIR                      12
    #define       bSOC_AXI_RRESP_CTRL_BCMDIR                   1
    #define   MSK32SOC_AXI_RRESP_CTRL_BCMDIR                      0x00001000
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon1                              0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon2                              0x0818
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon4                              0x0830
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon5                              0x0848
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiErrMon6                              0x0860
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltAVIO0                          0x0900
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltAVIO1                          0x0928
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltHTRO0                          0x0950
    ///////////////////////////////////////////////////////////
    #define     RA_SOC_AxiWrFiltTSP                            0x0978
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SOC {
    ///////////////////////////////////////////////////////////
    #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_AhbTrcEn(r32)             _BFGET_(r32, 1, 1)
    #define   SET32SOC_Configuration_AhbTrcEn(r32,v)           _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_Configuration_AhbTrcEn(r16)             _BFGET_(r16, 1, 1)
    #define   SET16SOC_Configuration_AhbTrcEn(r16,v)           _BFSET_(r16, 1, 1,v)

    #define     w32SOC_Configuration                           {\
            UNSG32 uConfiguration_blockIFetch                  :  1;\
            UNSG32 uConfiguration_AhbTrcEn                     :  1;\
            UNSG32 RSVDx0_b2                                   : 30;\
          }
    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 RSVDx14                                     [236];
    ///////////////////////////////////////////////////////////
              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_AVIOM0(r32)              _BFGET_(r32, 1, 1)
    #define   SET32SOC_AXI_BRESP_CTRL_AVIOM0(r32,v)            _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_AXI_BRESP_CTRL_AVIOM0(r16)              _BFGET_(r16, 1, 1)
    #define   SET16SOC_AXI_BRESP_CTRL_AVIOM0(r16,v)            _BFSET_(r16, 1, 1,v)

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

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

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

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

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

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

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

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

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

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

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

    #define   GET32SOC_AXI_BRESP_CTRL_BCMDIR(r32)              _BFGET_(r32,13,13)
    #define   SET32SOC_AXI_BRESP_CTRL_BCMDIR(r32,v)            _BFSET_(r32,13,13,v)
    #define   GET16SOC_AXI_BRESP_CTRL_BCMDIR(r16)              _BFGET_(r16,13,13)
    #define   SET16SOC_AXI_BRESP_CTRL_BCMDIR(r16,v)            _BFSET_(r16,13,13,v)

    #define     w32SOC_AXI_BRESP_CTRL                          {\
            UNSG32 uAXI_BRESP_CTRL_CA7                         :  1;\
            UNSG32 uAXI_BRESP_CTRL_AVIOM0                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_AVIOM1                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_GFX3D                       :  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_SDIO                        :  1;\
            UNSG32 uAXI_BRESP_CTRL_TSP                         :  1;\
            UNSG32 uAXI_BRESP_CTRL_BCMCPU                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_BCMDMA                      :  1;\
            UNSG32 uAXI_BRESP_CTRL_BCMDIR                      :  1;\
            UNSG32 RSVDx604_b14                                : 18;\
          }
    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_AVIOM0(r32)              _BFGET_(r32, 1, 1)
    #define   SET32SOC_AXI_RRESP_CTRL_AVIOM0(r32,v)            _BFSET_(r32, 1, 1,v)
    #define   GET16SOC_AXI_RRESP_CTRL_AVIOM0(r16)              _BFGET_(r16, 1, 1)
    #define   SET16SOC_AXI_RRESP_CTRL_AVIOM0(r16,v)            _BFSET_(r16, 1, 1,v)

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

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

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

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

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

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

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

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

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

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

    #define   GET32SOC_AXI_RRESP_CTRL_BCMDIR(r32)              _BFGET_(r32,12,12)
    #define   SET32SOC_AXI_RRESP_CTRL_BCMDIR(r32,v)            _BFSET_(r32,12,12,v)
    #define   GET16SOC_AXI_RRESP_CTRL_BCMDIR(r16)              _BFGET_(r16,12,12)
    #define   SET16SOC_AXI_RRESP_CTRL_BCMDIR(r16,v)            _BFSET_(r16,12,12,v)

    #define     w32SOC_AXI_RRESP_CTRL                          {\
            UNSG32 uAXI_RRESP_CTRL_CA7                         :  1;\
            UNSG32 uAXI_RRESP_CTRL_AVIOM0                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_AVIOM1                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_GFX3D                       :  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_SDIO                        :  1;\
            UNSG32 uAXI_RRESP_CTRL_TSP                         :  1;\
            UNSG32 uAXI_RRESP_CTRL_BCMCPU                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_BCMDMA                      :  1;\
            UNSG32 uAXI_RRESP_CTRL_BCMDIR                      :  1;\
            UNSG32 RSVDx608_b13                                : 19;\
          }
    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_AxiErrMon4;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon5;
    ///////////////////////////////////////////////////////////
              SIE_AxiErrorMon                                  ie_AxiErrMon6;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx878                                    [136];
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltAVIO0;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltAVIO1;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltHTRO0;
    ///////////////////////////////////////////////////////////
              SIE_AxiWrFilt                                    ie_AxiWrFiltTSP;
    ///////////////////////////////////////////////////////////
    } SIE_SOC;

    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_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
////////////////////////////////////////////////////////////

