# Copyright (C) 2020 Arm Limited or its affiliates. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the License); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.



from ctypes import *
from enum import Enum

ARCH_VER = '0.169.0'


class DEBUG_INTERNAL(Enum):
    SHARED_BUFFER0 = 0x0400
    SHARED_BUFFER1 = 0x0404
    SHARED_BUFFER2 = 0x0408
    SHARED_BUFFER3 = 0x040C
    SHARED_BUFFER4 = 0x0410
    SHARED_BUFFER5 = 0x0414
    SHARED_BUFFER6 = 0x0418
    SHARED_BUFFER7 = 0x041C
    SHARED_BUFFER8 = 0x0420
    SHARED_BUFFER9 = 0x0424
    SHARED_BUFFER10 = 0x0428
    SHARED_BUFFER11 = 0x042C
    SHARED_BUFFER12 = 0x0430
    SHARED_BUFFER13 = 0x0434
    SHARED_BUFFER14 = 0x0438
    SHARED_BUFFER15 = 0x043C
    SHARED_BUFFER16 = 0x0440
    SHARED_BUFFER17 = 0x0444
    SHARED_BUFFER18 = 0x0448
    SHARED_BUFFER19 = 0x044C
    SHARED_BUFFER20 = 0x0450
    SHARED_BUFFER21 = 0x0454
    SHARED_BUFFER22 = 0x0458
    SHARED_BUFFER23 = 0x045C
    SHARED_BUFFER24 = 0x0460
    SHARED_BUFFER25 = 0x0464
    SHARED_BUFFER26 = 0x0468
    SHARED_BUFFER27 = 0x046C
    SHARED_BUFFER28 = 0x0470
    SHARED_BUFFER29 = 0x0474
    SHARED_BUFFER30 = 0x0478
    SHARED_BUFFER31 = 0x047C
    SHARED_BUFFER32 = 0x0480
    SHARED_BUFFER33 = 0x0484
    SHARED_BUFFER34 = 0x0488
    SHARED_BUFFER35 = 0x048C
    SHARED_BUFFER36 = 0x0490
    SHARED_BUFFER37 = 0x0494
    SHARED_BUFFER38 = 0x0498
    SHARED_BUFFER39 = 0x049C
    SHARED_BUFFER40 = 0x04A0
    SHARED_BUFFER41 = 0x04A4
    SHARED_BUFFER42 = 0x04A8
    SHARED_BUFFER43 = 0x04AC
    SHARED_BUFFER44 = 0x04B0
    SHARED_BUFFER45 = 0x04B4
    SHARED_BUFFER46 = 0x04B8
    SHARED_BUFFER47 = 0x04BC
    SHARED_BUFFER48 = 0x04C0
    SHARED_BUFFER49 = 0x04C4
    SHARED_BUFFER50 = 0x04C8
    SHARED_BUFFER51 = 0x04CC
    SHARED_BUFFER52 = 0x04D0
    SHARED_BUFFER53 = 0x04D4
    SHARED_BUFFER54 = 0x04D8
    SHARED_BUFFER55 = 0x04DC
    SHARED_BUFFER56 = 0x04E0
    SHARED_BUFFER57 = 0x04E4
    SHARED_BUFFER58 = 0x04E8
    SHARED_BUFFER59 = 0x04EC
    SHARED_BUFFER60 = 0x04F0
    SHARED_BUFFER61 = 0x04F4
    SHARED_BUFFER62 = 0x04F8
    SHARED_BUFFER63 = 0x04FC
    SHARED_BUFFER64 = 0x0500
    SHARED_BUFFER65 = 0x0504
    SHARED_BUFFER66 = 0x0508
    SHARED_BUFFER67 = 0x050C
    SHARED_BUFFER68 = 0x0510
    SHARED_BUFFER69 = 0x0514
    SHARED_BUFFER70 = 0x0518
    SHARED_BUFFER71 = 0x051C
    SHARED_BUFFER72 = 0x0520
    SHARED_BUFFER73 = 0x0524
    SHARED_BUFFER74 = 0x0528
    SHARED_BUFFER75 = 0x052C
    SHARED_BUFFER76 = 0x0530
    SHARED_BUFFER77 = 0x0534
    SHARED_BUFFER78 = 0x0538
    SHARED_BUFFER79 = 0x053C
    SHARED_BUFFER80 = 0x0540
    SHARED_BUFFER81 = 0x0544
    SHARED_BUFFER82 = 0x0548
    SHARED_BUFFER83 = 0x054C
    SHARED_BUFFER84 = 0x0550
    SHARED_BUFFER85 = 0x0554
    SHARED_BUFFER86 = 0x0558
    SHARED_BUFFER87 = 0x055C
    SHARED_BUFFER88 = 0x0560
    SHARED_BUFFER89 = 0x0564
    SHARED_BUFFER90 = 0x0568
    SHARED_BUFFER91 = 0x056C
    SHARED_BUFFER92 = 0x0570
    SHARED_BUFFER93 = 0x0574
    SHARED_BUFFER94 = 0x0578
    SHARED_BUFFER95 = 0x057C
    SHARED_BUFFER96 = 0x0580
    SHARED_BUFFER97 = 0x0584
    SHARED_BUFFER98 = 0x0588
    SHARED_BUFFER99 = 0x058C
    SHARED_BUFFER100 = 0x0590
    SHARED_BUFFER101 = 0x0594
    SHARED_BUFFER102 = 0x0598
    SHARED_BUFFER103 = 0x059C
    SHARED_BUFFER104 = 0x05A0
    SHARED_BUFFER105 = 0x05A4
    SHARED_BUFFER106 = 0x05A8
    SHARED_BUFFER107 = 0x05AC
    SHARED_BUFFER108 = 0x05B0
    SHARED_BUFFER109 = 0x05B4
    SHARED_BUFFER110 = 0x05B8
    SHARED_BUFFER111 = 0x05BC
    SHARED_BUFFER112 = 0x05C0
    SHARED_BUFFER113 = 0x05C4
    SHARED_BUFFER114 = 0x05C8
    SHARED_BUFFER115 = 0x05CC
    SHARED_BUFFER116 = 0x05D0
    SHARED_BUFFER117 = 0x05D4
    SHARED_BUFFER118 = 0x05D8
    SHARED_BUFFER119 = 0x05DC
    SHARED_BUFFER120 = 0x05E0
    SHARED_BUFFER121 = 0x05E4
    SHARED_BUFFER122 = 0x05E8
    SHARED_BUFFER123 = 0x05EC
    SHARED_BUFFER124 = 0x05F0
    SHARED_BUFFER125 = 0x05F4
    SHARED_BUFFER126 = 0x05F8
    SHARED_BUFFER127 = 0x05FC
    SHARED_BUFFER128 = 0x0600
    SHARED_BUFFER129 = 0x0604
    SHARED_BUFFER130 = 0x0608
    SHARED_BUFFER131 = 0x060C
    SHARED_BUFFER132 = 0x0610
    SHARED_BUFFER133 = 0x0614
    SHARED_BUFFER134 = 0x0618
    SHARED_BUFFER135 = 0x061C
    SHARED_BUFFER136 = 0x0620
    SHARED_BUFFER137 = 0x0624
    SHARED_BUFFER138 = 0x0628
    SHARED_BUFFER139 = 0x062C
    SHARED_BUFFER140 = 0x0630
    SHARED_BUFFER141 = 0x0634
    SHARED_BUFFER142 = 0x0638
    SHARED_BUFFER143 = 0x063C
    SHARED_BUFFER144 = 0x0640
    SHARED_BUFFER145 = 0x0644
    SHARED_BUFFER146 = 0x0648
    SHARED_BUFFER147 = 0x064C
    SHARED_BUFFER148 = 0x0650
    SHARED_BUFFER149 = 0x0654
    SHARED_BUFFER150 = 0x0658
    SHARED_BUFFER151 = 0x065C
    SHARED_BUFFER152 = 0x0660
    SHARED_BUFFER153 = 0x0664
    SHARED_BUFFER154 = 0x0668
    SHARED_BUFFER155 = 0x066C
    SHARED_BUFFER156 = 0x0670
    SHARED_BUFFER157 = 0x0674
    SHARED_BUFFER158 = 0x0678
    SHARED_BUFFER159 = 0x067C
    SHARED_BUFFER160 = 0x0680
    SHARED_BUFFER161 = 0x0684
    SHARED_BUFFER162 = 0x0688
    SHARED_BUFFER163 = 0x068C
    SHARED_BUFFER164 = 0x0690
    SHARED_BUFFER165 = 0x0694
    SHARED_BUFFER166 = 0x0698
    SHARED_BUFFER167 = 0x069C
    SHARED_BUFFER168 = 0x06A0
    SHARED_BUFFER169 = 0x06A4
    SHARED_BUFFER170 = 0x06A8
    SHARED_BUFFER171 = 0x06AC
    SHARED_BUFFER172 = 0x06B0
    SHARED_BUFFER173 = 0x06B4
    SHARED_BUFFER174 = 0x06B8
    SHARED_BUFFER175 = 0x06BC
    SHARED_BUFFER176 = 0x06C0
    SHARED_BUFFER177 = 0x06C4
    SHARED_BUFFER178 = 0x06C8
    SHARED_BUFFER179 = 0x06CC
    SHARED_BUFFER180 = 0x06D0
    SHARED_BUFFER181 = 0x06D4
    SHARED_BUFFER182 = 0x06D8
    SHARED_BUFFER183 = 0x06DC
    SHARED_BUFFER184 = 0x06E0
    SHARED_BUFFER185 = 0x06E4
    SHARED_BUFFER186 = 0x06E8
    SHARED_BUFFER187 = 0x06EC
    SHARED_BUFFER188 = 0x06F0
    SHARED_BUFFER189 = 0x06F4
    SHARED_BUFFER190 = 0x06F8
    SHARED_BUFFER191 = 0x06FC
    SHARED_BUFFER192 = 0x0700
    SHARED_BUFFER193 = 0x0704
    SHARED_BUFFER194 = 0x0708
    SHARED_BUFFER195 = 0x070C
    SHARED_BUFFER196 = 0x0710
    SHARED_BUFFER197 = 0x0714
    SHARED_BUFFER198 = 0x0718
    SHARED_BUFFER199 = 0x071C
    SHARED_BUFFER200 = 0x0720
    SHARED_BUFFER201 = 0x0724
    SHARED_BUFFER202 = 0x0728
    SHARED_BUFFER203 = 0x072C
    SHARED_BUFFER204 = 0x0730
    SHARED_BUFFER205 = 0x0734
    SHARED_BUFFER206 = 0x0738
    SHARED_BUFFER207 = 0x073C
    SHARED_BUFFER208 = 0x0740
    SHARED_BUFFER209 = 0x0744
    SHARED_BUFFER210 = 0x0748
    SHARED_BUFFER211 = 0x074C
    SHARED_BUFFER212 = 0x0750
    SHARED_BUFFER213 = 0x0754
    SHARED_BUFFER214 = 0x0758
    SHARED_BUFFER215 = 0x075C
    SHARED_BUFFER216 = 0x0760
    SHARED_BUFFER217 = 0x0764
    SHARED_BUFFER218 = 0x0768
    SHARED_BUFFER219 = 0x076C
    SHARED_BUFFER220 = 0x0770
    SHARED_BUFFER221 = 0x0774
    SHARED_BUFFER222 = 0x0778
    SHARED_BUFFER223 = 0x077C
    SHARED_BUFFER224 = 0x0780
    SHARED_BUFFER225 = 0x0784
    SHARED_BUFFER226 = 0x0788
    SHARED_BUFFER227 = 0x078C
    SHARED_BUFFER228 = 0x0790
    SHARED_BUFFER229 = 0x0794
    SHARED_BUFFER230 = 0x0798
    SHARED_BUFFER231 = 0x079C
    SHARED_BUFFER232 = 0x07A0
    SHARED_BUFFER233 = 0x07A4
    SHARED_BUFFER234 = 0x07A8
    SHARED_BUFFER235 = 0x07AC
    SHARED_BUFFER236 = 0x07B0
    SHARED_BUFFER237 = 0x07B4
    SHARED_BUFFER238 = 0x07B8
    SHARED_BUFFER239 = 0x07BC
    SHARED_BUFFER240 = 0x07C0
    SHARED_BUFFER241 = 0x07C4
    SHARED_BUFFER242 = 0x07C8
    SHARED_BUFFER243 = 0x07CC
    SHARED_BUFFER244 = 0x07D0
    SHARED_BUFFER245 = 0x07D4
    SHARED_BUFFER246 = 0x07D8
    SHARED_BUFFER247 = 0x07DC
    SHARED_BUFFER248 = 0x07E0
    SHARED_BUFFER249 = 0x07E4
    SHARED_BUFFER250 = 0x07E8
    SHARED_BUFFER251 = 0x07EC
    SHARED_BUFFER252 = 0x07F0
    SHARED_BUFFER253 = 0x07F4
    SHARED_BUFFER254 = 0x07F8
    SHARED_BUFFER255 = 0x07FC
    SIZE = 0x0800

class HW_DEBUG_INTERNAL(Enum):
    WD_STATUS = 0x0100
    MAC_STATUS = 0x0104
    DMA_STATUS = 0x0108
    AO_STATUS = 0x0110
    CLKFORCE = 0x0140
    DEBUG = 0x0144
    DEBUG2 = 0x0148
    DEBUGCORE = 0x014C
    SIZE = 0x0150

class NPU_BP(Enum):
    BASEP0 = 0x0080
    BASEP1 = 0x0084
    BASEP2 = 0x0088
    BASEP3 = 0x008C
    BASEP4 = 0x0090
    BASEP5 = 0x0094
    BASEP6 = 0x0098
    BASEP7 = 0x009C
    BASEP8 = 0x00A0
    BASEP9 = 0x00A4
    BASEP10 = 0x00A8
    BASEP11 = 0x00AC
    BASEP12 = 0x00B0
    BASEP13 = 0x00B4
    BASEP14 = 0x00B8
    BASEP15 = 0x00BC
    SIZE = 0x00C0

class NPU_IDS(Enum):
    REVISION = 0x0FC0
    PID4 = 0x0FD0
    PID5 = 0x0FD4
    PID6 = 0x0FD8
    PID7 = 0x0FDC
    PID0 = 0x0FE0
    PID1 = 0x0FE4
    PID2 = 0x0FE8
    PID3 = 0x0FEC
    CID0 = 0x0FF0
    CID1 = 0x0FF4
    CID2 = 0x0FF8
    CID3 = 0x0FFC
    SIZE = 0x1000

class NPU_REG(Enum):
    ID = 0x0000
    STATUS = 0x0004
    CMD = 0x0008
    RESET = 0x000C
    QBASE0 = 0x0010
    QBASE1 = 0x0014
    QREAD = 0x0018
    QCONFIG = 0x001C
    QSIZE = 0x0020
    PROT = 0x0024
    CONFIG = 0x0028
    LOCK = 0x002C
    REGIONCFG = 0x003C
    AXI_LIMIT0 = 0x0040
    AXI_LIMIT1 = 0x0044
    AXI_LIMIT2 = 0x0048
    AXI_LIMIT3 = 0x004C
    SIZE = 0x0050

class PMU_INTERNAL(Enum):
    PMCR = 0x0180
    PMCNTENSET = 0x0184
    PMCNTENCLR = 0x0188
    PMOVSSET = 0x018C
    PMOVSCLR = 0x0190
    PMINTSET = 0x0194
    PMINTCLR = 0x0198
    PMCCNTR_LO = 0x01A0
    PMCCNTR_HI = 0x01A4
    PMCCNTR_CFG = 0x01A8
    PMCAXI_CHAN = 0x01AC
    PMEVCNTR0 = 0x0300
    PMEVCNTR1 = 0x0304
    PMEVCNTR2 = 0x0308
    PMEVCNTR3 = 0x030C
    PMEVTYPER0 = 0x0380
    PMEVTYPER1 = 0x0384
    PMEVTYPER2 = 0x0388
    PMEVTYPER3 = 0x038C
    SIZE = 0x0390

class TSU_DEBUG_INTERNAL(Enum):
    IFM_PAD_TOP = 0x0800
    IFM_PAD_LEFT = 0x0804
    IFM_PAD_RIGHT = 0x0808
    IFM_PAD_BOTTOM = 0x080C
    IFM_DEPTH_M1 = 0x0810
    IFM_PRECISION = 0x0814
    IFM_UPSCALE = 0x081C
    IFM_ZERO_POINT = 0x0824
    IFM_WIDTH0_M1 = 0x0828
    IFM_HEIGHT0_M1 = 0x082C
    IFM_HEIGHT1_M1 = 0x0830
    IFM_IB_END = 0x0834
    IFM_REGION = 0x083C
    OFM_WIDTH_M1 = 0x0844
    OFM_HEIGHT_M1 = 0x0848
    OFM_DEPTH_M1 = 0x084C
    OFM_PRECISION = 0x0850
    OFM_BLK_WIDTH_M1 = 0x0854
    OFM_BLK_HEIGHT_M1 = 0x0858
    OFM_BLK_DEPTH_M1 = 0x085C
    OFM_ZERO_POINT = 0x0860
    OFM_WIDTH0_M1 = 0x0868
    OFM_HEIGHT0_M1 = 0x086C
    OFM_HEIGHT1_M1 = 0x0870
    OFM_REGION = 0x087C
    KERNEL_WIDTH_M1 = 0x0880
    KERNEL_HEIGHT_M1 = 0x0884
    KERNEL_STRIDE = 0x0888
    PARALLEL_MODE = 0x088C
    ACC_FORMAT = 0x0890
    ACTIVATION = 0x0894
    ACTIVATION_MIN = 0x0898
    ACTIVATION_MAX = 0x089C
    WEIGHT_REGION = 0x08A0
    SCALE_REGION = 0x08A4
    AB_START = 0x08B4
    BLOCKDEP = 0x08BC
    DMA0_SRC_REGION = 0x08C0
    DMA0_DST_REGION = 0x08C4
    DMA0_SIZE0 = 0x08C8
    DMA0_SIZE1 = 0x08CC
    IFM2_BROADCAST = 0x0900
    IFM2_SCALAR = 0x0904
    IFM2_PRECISION = 0x0914
    IFM2_ZERO_POINT = 0x0924
    IFM2_WIDTH0_M1 = 0x0928
    IFM2_HEIGHT0_M1 = 0x092C
    IFM2_HEIGHT1_M1 = 0x0930
    IFM2_IB_START = 0x0934
    IFM2_REGION = 0x093C
    IFM_BASE0 = 0x0A00
    IFM_BASE0_HI = 0x0A04
    IFM_BASE1 = 0x0A08
    IFM_BASE1_HI = 0x0A0C
    IFM_BASE2 = 0x0A10
    IFM_BASE2_HI = 0x0A14
    IFM_BASE3 = 0x0A18
    IFM_BASE3_HI = 0x0A1C
    IFM_STRIDE_X = 0x0A20
    IFM_STRIDE_X_HI = 0x0A24
    IFM_STRIDE_Y = 0x0A28
    IFM_STRIDE_Y_HI = 0x0A2C
    IFM_STRIDE_C = 0x0A30
    IFM_STRIDE_C_HI = 0x0A34
    OFM_BASE0 = 0x0A40
    OFM_BASE0_HI = 0x0A44
    OFM_BASE1 = 0x0A48
    OFM_BASE1_HI = 0x0A4C
    OFM_BASE2 = 0x0A50
    OFM_BASE2_HI = 0x0A54
    OFM_BASE3 = 0x0A58
    OFM_BASE3_HI = 0x0A5C
    OFM_STRIDE_X = 0x0A60
    OFM_STRIDE_X_HI = 0x0A64
    OFM_STRIDE_Y = 0x0A68
    OFM_STRIDE_Y_HI = 0x0A6C
    OFM_STRIDE_C = 0x0A70
    OFM_STRIDE_C_HI = 0x0A74
    WEIGHT_BASE = 0x0A80
    WEIGHT_BASE_HI = 0x0A84
    WEIGHT_LENGTH = 0x0A88
    WEIGHT_LENGTH_HI = 0x0A8C
    SCALE_BASE = 0x0A90
    SCALE_BASE_HI = 0x0A94
    SCALE_LENGTH = 0x0A98
    OFM_SCALE = 0x0AA0
    OFM_SCALE_SHIFT = 0x0AA4
    OPA_SCALE = 0x0AA8
    OPA_SCALE_SHIFT = 0x0AAC
    OPB_SCALE = 0x0AB0
    DMA0_SRC = 0x0AC0
    DMA0_SRC_HI = 0x0AC4
    DMA0_DST = 0x0AC8
    DMA0_DST_HI = 0x0ACC
    DMA0_LEN = 0x0AD0
    DMA0_LEN_HI = 0x0AD4
    DMA0_SKIP0 = 0x0AD8
    DMA0_SKIP0_HI = 0x0ADC
    DMA0_SKIP1 = 0x0AE0
    DMA0_SKIP1_HI = 0x0AE4
    IFM2_BASE0 = 0x0B00
    IFM2_BASE0_HI = 0x0B04
    IFM2_BASE1 = 0x0B08
    IFM2_BASE1_HI = 0x0B0C
    IFM2_BASE2 = 0x0B10
    IFM2_BASE2_HI = 0x0B14
    IFM2_BASE3 = 0x0B18
    IFM2_BASE3_HI = 0x0B1C
    IFM2_STRIDE_X = 0x0B20
    IFM2_STRIDE_X_HI = 0x0B24
    IFM2_STRIDE_Y = 0x0B28
    IFM2_STRIDE_Y_HI = 0x0B2C
    IFM2_STRIDE_C = 0x0B30
    IFM2_STRIDE_C_HI = 0x0B34
    WEIGHT1_BASE = 0x0B40
    WEIGHT1_BASE_HI = 0x0B44
    WEIGHT1_LENGTH = 0x0B48
    WEIGHT1_LENGTH_HI = 0x0B4C
    SCALE1_BASE = 0x0B50
    SCALE1_BASE_HI = 0x0B54
    SCALE1_LENGTH = 0x0B58
    SIZE = 0x0B5C

class TSU_DEBUG_RO_INTERNAL(Enum):
    KERNEL_X = 0x0200
    KERNEL_Y = 0x0204
    KERNEL_W_M1 = 0x0208
    KERNEL_H_M1 = 0x020C
    OFM_CBLK_WIDTH_M1 = 0x0210
    OFM_CBLK_HEIGHT_M1 = 0x0214
    OFM_CBLK_DEPTH_M1 = 0x0218
    IFM_CBLK_DEPTH_M1 = 0x021C
    OFM_X = 0x0220
    OFM_Y = 0x0224
    OFM_Z = 0x0228
    IFM_Z = 0x022C
    PAD_TOP = 0x0230
    PAD_LEFT = 0x0234
    IFM_CBLK_WIDTH = 0x0238
    IFM_CBLK_HEIGHT = 0x023C
    DMA_IFM_SRC = 0x0240
    DMA_IFM_SRC_HI = 0x0244
    DMA_IFM_DST = 0x0248
    DMA_OFM_SRC = 0x024C
    DMA_OFM_DST = 0x0250
    DMA_OFM_DST_HI = 0x0254
    DMA_WEIGHT_SRC = 0x0258
    DMA_WEIGHT_SRC_HI = 0x025C
    DMA_CMD_SRC = 0x0260
    DMA_CMD_SRC_HI = 0x0264
    DMA_CMD_SIZE = 0x0268
    DMA_M2M_SRC = 0x026C
    DMA_M2M_SRC_HI = 0x0270
    DMA_M2M_DST = 0x0274
    DMA_M2M_DST_HI = 0x0278
    CURRENT_QREAD = 0x027C
    DMA_SCALE_SRC = 0x0280
    DMA_SCALE_SRC_HI = 0x0284
    CURRENT_CMD = 0x02BC
    SIZE = 0x02C0



class acc_format(Enum):
    INT_32BIT = 0
    INT_40BIT = 1
    FP_S5_10 = 2

class activation(Enum):
    NONE = 0
    TANH = 3
    SIGMOID = 4
    LUT_START = 16
    LUT_END = 23

class clip_range(Enum):
    OFM_PRECISION = 0
    FORCE_UINT8 = 2
    FORCE_INT8 = 3
    FORCE_INT16 = 5

class cmd0(Enum):
    NPU_OP_STOP = 0x000
    NPU_OP_IRQ = 0x001
    NPU_OP_CONV = 0x002
    NPU_OP_DEPTHWISE = 0x003
    NPU_OP_POOL = 0x005
    NPU_OP_ELEMENTWISE = 0x006
    NPU_OP_DMA_START = 0x010
    NPU_OP_DMA_WAIT = 0x011
    NPU_OP_KERNEL_WAIT = 0x012
    NPU_OP_PMU_MASK = 0x013
    NPU_SET_IFM_PAD_TOP = 0x100
    NPU_SET_IFM_PAD_LEFT = 0x101
    NPU_SET_IFM_PAD_RIGHT = 0x102
    NPU_SET_IFM_PAD_BOTTOM = 0x103
    NPU_SET_IFM_DEPTH_M1 = 0x104
    NPU_SET_IFM_PRECISION = 0x105
    NPU_SET_IFM_UPSCALE = 0x107
    NPU_SET_IFM_ZERO_POINT = 0x109
    NPU_SET_IFM_WIDTH0_M1 = 0x10A
    NPU_SET_IFM_HEIGHT0_M1 = 0x10B
    NPU_SET_IFM_HEIGHT1_M1 = 0x10C
    NPU_SET_IFM_IB_END = 0x10D
    NPU_SET_IFM_REGION = 0x10F
    NPU_SET_OFM_WIDTH_M1 = 0x111
    NPU_SET_OFM_HEIGHT_M1 = 0x112
    NPU_SET_OFM_DEPTH_M1 = 0x113
    NPU_SET_OFM_PRECISION = 0x114
    NPU_SET_OFM_BLK_WIDTH_M1 = 0x115
    NPU_SET_OFM_BLK_HEIGHT_M1 = 0x116
    NPU_SET_OFM_BLK_DEPTH_M1 = 0x117
    NPU_SET_OFM_ZERO_POINT = 0x118
    NPU_SET_OFM_WIDTH0_M1 = 0x11A
    NPU_SET_OFM_HEIGHT0_M1 = 0x11B
    NPU_SET_OFM_HEIGHT1_M1 = 0x11C
    NPU_SET_OFM_REGION = 0x11F
    NPU_SET_KERNEL_WIDTH_M1 = 0x120
    NPU_SET_KERNEL_HEIGHT_M1 = 0x121
    NPU_SET_KERNEL_STRIDE = 0x122
    NPU_SET_PARALLEL_MODE = 0x123
    NPU_SET_ACC_FORMAT = 0x124
    NPU_SET_ACTIVATION = 0x125
    NPU_SET_ACTIVATION_MIN = 0x126
    NPU_SET_ACTIVATION_MAX = 0x127
    NPU_SET_WEIGHT_REGION = 0x128
    NPU_SET_SCALE_REGION = 0x129
    NPU_SET_AB_START = 0x12D
    NPU_SET_BLOCKDEP = 0x12F
    NPU_SET_DMA0_SRC_REGION = 0x130
    NPU_SET_DMA0_DST_REGION = 0x131
    NPU_SET_DMA0_SIZE0 = 0x132
    NPU_SET_DMA0_SIZE1 = 0x133
    NPU_SET_IFM2_BROADCAST = 0x180
    NPU_SET_IFM2_SCALAR = 0x181
    NPU_SET_IFM2_PRECISION = 0x185
    NPU_SET_IFM2_ZERO_POINT = 0x189
    NPU_SET_IFM2_WIDTH0_M1 = 0x18A
    NPU_SET_IFM2_HEIGHT0_M1 = 0x18B
    NPU_SET_IFM2_HEIGHT1_M1 = 0x18C
    NPU_SET_IFM2_IB_START = 0x18D
    NPU_SET_IFM2_REGION = 0x18F

class cmd1(Enum):
    NPU_SET_IFM_BASE0 = 0x000
    NPU_SET_IFM_BASE1 = 0x001
    NPU_SET_IFM_BASE2 = 0x002
    NPU_SET_IFM_BASE3 = 0x003
    NPU_SET_IFM_STRIDE_X = 0x004
    NPU_SET_IFM_STRIDE_Y = 0x005
    NPU_SET_IFM_STRIDE_C = 0x006
    NPU_SET_OFM_BASE0 = 0x010
    NPU_SET_OFM_BASE1 = 0x011
    NPU_SET_OFM_BASE2 = 0x012
    NPU_SET_OFM_BASE3 = 0x013
    NPU_SET_OFM_STRIDE_X = 0x014
    NPU_SET_OFM_STRIDE_Y = 0x015
    NPU_SET_OFM_STRIDE_C = 0x016
    NPU_SET_WEIGHT_BASE = 0x020
    NPU_SET_WEIGHT_LENGTH = 0x021
    NPU_SET_SCALE_BASE = 0x022
    NPU_SET_SCALE_LENGTH = 0x023
    NPU_SET_OFM_SCALE = 0x024
    NPU_SET_OPA_SCALE = 0x025
    NPU_SET_OPB_SCALE = 0x026
    NPU_SET_DMA0_SRC = 0x030
    NPU_SET_DMA0_DST = 0x031
    NPU_SET_DMA0_LEN = 0x032
    NPU_SET_DMA0_SKIP0 = 0x033
    NPU_SET_DMA0_SKIP1 = 0x034
    NPU_SET_IFM2_BASE0 = 0x080
    NPU_SET_IFM2_BASE1 = 0x081
    NPU_SET_IFM2_BASE2 = 0x082
    NPU_SET_IFM2_BASE3 = 0x083
    NPU_SET_IFM2_STRIDE_X = 0x084
    NPU_SET_IFM2_STRIDE_Y = 0x085
    NPU_SET_IFM2_STRIDE_C = 0x086
    NPU_SET_WEIGHT1_BASE = 0x090
    NPU_SET_WEIGHT1_LENGTH = 0x091
    NPU_SET_SCALE1_BASE = 0x092
    NPU_SET_SCALE1_LENGTH = 0x093

class data_format(Enum):
    NHWC = 0
    NHCWB16 = 1

class elementwise_mode(Enum):
    MUL = 0
    ADD = 1
    SUB = 2
    MIN = 3
    MAX = 4
    LRELU = 5
    ABS = 6
    CLZ = 7
    SHR = 8
    SHL = 9

class ifm_precision(Enum):
    U8 = 0
    S8 = 1
    U16 = 4
    S16 = 5
    S32 = 9

class ifm_scale_mode(Enum):
    SCALE_16BIT = 0
    SCALE_OPA_32BIT = 1
    SCALE_OPB_32BIT = 2

class macs_per_cc(Enum):
    MACS_PER_CC_IS_5 = 0x5
    MACS_PER_CC_IS_6 = 0x6
    MACS_PER_CC_IS_7 = 0x7
    MACS_PER_CC_IS_8 = 0x8

class memory_type(Enum):
    AXI0_OUTSTANDING_COUNTER0 = 0
    AXI0_OUTSTANDING_COUNTER1 = 1
    AXI1_OUTSTANDING_COUNTER2 = 2
    AXI1_OUTSTANDING_COUNTER3 = 3

class ofm_precision(Enum):
    U8 = 0
    S8 = 1
    U16 = 2
    S16 = 3
    S32 = 5

class pmu_event_type(Enum):
    NO_EVENT = 0x00
    CYCLE = 0x11
    NPU_IDLE = 0x20
    MAC_ACTIVE = 0x30
    MAC_ACTIVE_8BIT = 0x31
    MAC_ACTIVE_16BIT = 0x32
    MAC_DPU_ACTIVE = 0x33
    MAC_STALLED_BY_WD_ACC = 0x34
    MAC_STALLED_BY_WD = 0x35
    MAC_STALLED_BY_ACC = 0x36
    MAC_STALLED_BY_IB = 0x37
    MAC_ACTIVE_32BIT = 0x38
    AO_ACTIVE = 0x40
    AO_ACTIVE_8BIT = 0x41
    AO_ACTIVE_16BIT = 0x42
    AO_STALLED_BY_OFMP_OB = 0x43
    AO_STALLED_BY_OFMP = 0x44
    AO_STALLED_BY_OB = 0x45
    AO_STALLED_BY_ACC_IB = 0x46
    AO_STALLED_BY_ACC = 0x47
    AO_STALLED_BY_IB = 0x48
    WD_ACTIVE = 0x50
    WD_STALLED = 0x51
    WD_STALLED_BY_WS = 0x52
    WD_STALLED_BY_WD_BUF = 0x53
    WD_PARSE_ACTIVE = 0x54
    WD_PARSE_STALLED = 0x55
    WD_PARSE_STALLED_IN = 0x56
    WD_PARSE_STALLED_OUT = 0x57
    WD_TRANS_WS = 0x58
    WD_TRANS_WB = 0x59
    WD_TRANS_DW0 = 0x5a
    WD_TRANS_DW1 = 0x5b
    AXI0_RD_TRANS_ACCEPTED = 0x80
    AXI0_RD_TRANS_COMPLETED = 0x81
    AXI0_RD_DATA_BEAT_RECEIVED = 0x82
    AXI0_RD_TRAN_REQ_STALLED = 0x83
    AXI0_WR_TRANS_ACCEPTED = 0x84
    AXI0_WR_TRANS_COMPLETED_M = 0x85
    AXI0_WR_TRANS_COMPLETED_S = 0x86
    AXI0_WR_DATA_BEAT_WRITTEN = 0x87
    AXI0_WR_TRAN_REQ_STALLED = 0x88
    AXI0_WR_DATA_BEAT_STALLED = 0x89
    AXI0_ENABLED_CYCLES = 0x8c
    AXI0_RD_STALL_LIMIT = 0x8e
    AXI0_WR_STALL_LIMIT = 0x8f
    AXI1_RD_TRANS_ACCEPTED = 0x180
    AXI1_RD_TRANS_COMPLETED = 0x181
    AXI1_RD_DATA_BEAT_RECEIVED = 0x182
    AXI1_RD_TRAN_REQ_STALLED = 0x183
    AXI1_WR_TRANS_ACCEPTED = 0x184
    AXI1_WR_TRANS_COMPLETED_M = 0x185
    AXI1_WR_TRANS_COMPLETED_S = 0x186
    AXI1_WR_DATA_BEAT_WRITTEN = 0x187
    AXI1_WR_TRAN_REQ_STALLED = 0x188
    AXI1_WR_DATA_BEAT_STALLED = 0x189
    AXI1_ENABLED_CYCLES = 0x18c
    AXI1_RD_STALL_LIMIT = 0x18e
    AXI1_WR_STALL_LIMIT = 0x18f
    AXI_LATENCY_ANY = 0xa0
    AXI_LATENCY_32 = 0xa1
    AXI_LATENCY_64 = 0xa2
    AXI_LATENCY_128 = 0xa3
    AXI_LATENCY_256 = 0xa4
    AXI_LATENCY_512 = 0xa5
    AXI_LATENCY_1024 = 0xa6

class pooling_mode(Enum):
    MAX = 0
    AVERAGE = 1
    REDUCE_SUM = 2

class privilege_level(Enum):
    USER = 0
    PRIVILEGED = 1

class resampling_mode(Enum):
    NONE = 0
    NEAREST = 1
    TRANSPOSE = 2

class rounding(Enum):
    TFL = 0
    TRUNCATE = 1
    NATURAL = 2

class security_level(Enum):
    SECURE = 0
    NON_SECURE = 1

class shram_size(Enum):
    SHRAM_48KB = 0x30
    SHRAM_24KB = 0x18
    SHRAM_16KB = 0x10

class state(Enum):
    STOPPED = 0
    RUNNING = 1

class stride_mode(Enum):
    STRIDE_MODE_1D = 0
    STRIDE_MODE_2D = 1
    STRIDE_MODE_3D = 2


class clkforce_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("top_level_clk", c_uint32, 1),
            ("cc_clk", c_uint32, 1),
            ("dma_clk", c_uint32, 1),
            ("mac_clk", c_uint32, 1),
            ("ao_clk", c_uint32, 1),
            ("wd_clk", c_uint32, 1),
            ("reserved0", c_uint32, 26),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_top_level_clk(self, value): self.bits.top_level_clk = value
    def get_top_level_clk(self): value = self.bits.top_level_clk; return value
    def set_cc_clk(self, value): self.bits.cc_clk = value
    def get_cc_clk(self): value = self.bits.cc_clk; return value
    def set_dma_clk(self, value): self.bits.dma_clk = value
    def get_dma_clk(self): value = self.bits.dma_clk; return value
    def set_mac_clk(self, value): self.bits.mac_clk = value
    def get_mac_clk(self): value = self.bits.mac_clk; return value
    def set_ao_clk(self, value): self.bits.ao_clk = value
    def get_ao_clk(self): value = self.bits.ao_clk; return value
    def set_wd_clk(self, value): self.bits.wd_clk = value
    def get_wd_clk(self): value = self.bits.wd_clk; return value


class basep0_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep1_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep2_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep3_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep4_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep5_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep6_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep7_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep8_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep9_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep10_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep11_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep12_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep13_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep14_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class basep15_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("addr_word", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_addr_word(self, value): self.bits.addr_word = value
    def get_addr_word(self): value = self.bits.addr_word; return value


class pid4_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid4", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid4(self, value): self.bits.pid4 = value
    def get_pid4(self): value = self.bits.pid4; return value


class pid5_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid5", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid5(self, value): self.bits.pid5 = value
    def get_pid5(self): value = self.bits.pid5; return value


class pid6_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid6", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid6(self, value): self.bits.pid6 = value
    def get_pid6(self): value = self.bits.pid6; return value


class pid7_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid7", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid7(self, value): self.bits.pid7 = value
    def get_pid7(self): value = self.bits.pid7; return value


class pid0_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid0", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid0(self, value): self.bits.pid0 = value
    def get_pid0(self): value = self.bits.pid0; return value


class pid1_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid1", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid1(self, value): self.bits.pid1 = value
    def get_pid1(self): value = self.bits.pid1; return value


class pid2_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid2", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid2(self, value): self.bits.pid2 = value
    def get_pid2(self): value = self.bits.pid2; return value


class pid3_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pid3", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pid3(self, value): self.bits.pid3 = value
    def get_pid3(self): value = self.bits.pid3; return value


class cid0_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cid0", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cid0(self, value): self.bits.cid0 = value
    def get_cid0(self): value = self.bits.cid0; return value


class cid1_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cid1", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cid1(self, value): self.bits.cid1 = value
    def get_cid1(self): value = self.bits.cid1; return value


class cid2_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cid2", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cid2(self, value): self.bits.cid2 = value
    def get_cid2(self): value = self.bits.cid2; return value


class cid3_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cid3", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cid3(self, value): self.bits.cid3 = value
    def get_cid3(self): value = self.bits.cid3; return value


class id_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("version_status", c_uint32, 4),
            ("version_minor", c_uint32, 4),
            ("version_major", c_uint32, 4),
            ("product_major", c_uint32, 4),
            ("arch_patch_rev", c_uint32, 4),
            ("arch_minor_rev", c_uint32, 8),
            ("arch_major_rev", c_uint32, 4),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_version_status(self, value): self.bits.version_status = value
    def get_version_status(self): value = self.bits.version_status; return value
    def set_version_minor(self, value): self.bits.version_minor = value
    def get_version_minor(self): value = self.bits.version_minor; return value
    def set_version_major(self, value): self.bits.version_major = value
    def get_version_major(self): value = self.bits.version_major; return value
    def set_product_major(self, value): self.bits.product_major = value
    def get_product_major(self): value = self.bits.product_major; return value
    def set_arch_patch_rev(self, value): self.bits.arch_patch_rev = value
    def get_arch_patch_rev(self): value = self.bits.arch_patch_rev; return value
    def set_arch_minor_rev(self, value): self.bits.arch_minor_rev = value
    def get_arch_minor_rev(self): value = self.bits.arch_minor_rev; return value
    def set_arch_major_rev(self, value): self.bits.arch_major_rev = value
    def get_arch_major_rev(self): value = self.bits.arch_major_rev; return value


class status_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("state", c_uint32, 1),
            ("irq_raised", c_uint32, 1),
            ("bus_status", c_uint32, 1),
            ("reset_status", c_uint32, 1),
            ("cmd_parse_error", c_uint32, 1),
            ("cmd_end_reached", c_uint32, 1),
            ("pmu_irq_raised", c_uint32, 1),
            ("wd_fault", c_uint32, 1),
            ("reserved0", c_uint32, 3),
            ("faulting_interface", c_uint32, 1),
            ("faulting_channel", c_uint32, 4),
            ("irq_history_mask", c_uint32, 16),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_state(self, value): self.bits.state = value
    def get_state(self): value = self.bits.state; return value
    def set_irq_raised(self, value): self.bits.irq_raised = value
    def get_irq_raised(self): value = self.bits.irq_raised; return value
    def set_bus_status(self, value): self.bits.bus_status = value
    def get_bus_status(self): value = self.bits.bus_status; return value
    def set_reset_status(self, value): self.bits.reset_status = value
    def get_reset_status(self): value = self.bits.reset_status; return value
    def set_cmd_parse_error(self, value): self.bits.cmd_parse_error = value
    def get_cmd_parse_error(self): value = self.bits.cmd_parse_error; return value
    def set_cmd_end_reached(self, value): self.bits.cmd_end_reached = value
    def get_cmd_end_reached(self): value = self.bits.cmd_end_reached; return value
    def set_pmu_irq_raised(self, value): self.bits.pmu_irq_raised = value
    def get_pmu_irq_raised(self): value = self.bits.pmu_irq_raised; return value
    def set_wd_fault(self, value): self.bits.wd_fault = value
    def get_wd_fault(self): value = self.bits.wd_fault; return value
    def set_faulting_interface(self, value): self.bits.faulting_interface = value
    def get_faulting_interface(self): value = self.bits.faulting_interface; return value
    def set_faulting_channel(self, value): self.bits.faulting_channel = value
    def get_faulting_channel(self): value = self.bits.faulting_channel; return value
    def set_irq_history_mask(self, value): self.bits.irq_history_mask = value
    def get_irq_history_mask(self): value = self.bits.irq_history_mask; return value


class cmd_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("transition_to_running_state", c_uint32, 1),
            ("clear_irq", c_uint32, 1),
            ("clock_q_enable", c_uint32, 1),
            ("power_q_enable", c_uint32, 1),
            ("stop_request", c_uint32, 1),
            ("reserved0", c_uint32, 11),
            ("clear_irq_history", c_uint32, 16),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_transition_to_running_state(self, value): self.bits.transition_to_running_state = value
    def get_transition_to_running_state(self): value = self.bits.transition_to_running_state; return value
    def set_clear_irq(self, value): self.bits.clear_irq = value
    def get_clear_irq(self): value = self.bits.clear_irq; return value
    def set_clock_q_enable(self, value): self.bits.clock_q_enable = value
    def get_clock_q_enable(self): value = self.bits.clock_q_enable; return value
    def set_power_q_enable(self, value): self.bits.power_q_enable = value
    def get_power_q_enable(self): value = self.bits.power_q_enable; return value
    def set_stop_request(self, value): self.bits.stop_request = value
    def get_stop_request(self): value = self.bits.stop_request; return value
    def set_clear_irq_history(self, value): self.bits.clear_irq_history = value
    def get_clear_irq_history(self): value = self.bits.clear_irq_history; return value


class reset_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("pending_cpl", c_uint32, 1),
            ("pending_csl", c_uint32, 1),
            ("reserved0", c_uint32, 30),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_pending_cpl(self, value): self.bits.pending_cpl = value
    def get_pending_cpl(self): value = self.bits.pending_cpl; return value
    def set_pending_csl(self, value): self.bits.pending_csl = value
    def get_pending_csl(self): value = self.bits.pending_csl; return value


class qbase0_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("qbase0", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_qbase0(self, value): self.bits.qbase0 = value
    def get_qbase0(self): value = self.bits.qbase0; return value


class qbase1_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("qbase1", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_qbase1(self, value): self.bits.qbase1 = value
    def get_qbase1(self): value = self.bits.qbase1; return value


class qread_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("qread", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_qread(self, value): self.bits.qread = value
    def get_qread(self): value = self.bits.qread; return value


class qconfig_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("qconfig", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_qconfig(self, value): self.bits.qconfig = value
    def get_qconfig(self): value = self.bits.qconfig; return value


class qsize_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("qsize", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_qsize(self, value): self.bits.qsize = value
    def get_qsize(self): value = self.bits.qsize; return value


class prot_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("active_cpl", c_uint32, 1),
            ("active_csl", c_uint32, 1),
            ("reserved0", c_uint32, 30),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_active_cpl(self, value): self.bits.active_cpl = value
    def get_active_cpl(self): value = self.bits.active_cpl; return value
    def set_active_csl(self, value): self.bits.active_csl = value
    def get_active_csl(self): value = self.bits.active_csl; return value


class config_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("macs_per_cc", c_uint32, 4),
            ("cmd_stream_version", c_uint32, 4),
            ("shram_size", c_uint32, 8),
            ("reserved0", c_uint32, 12),
            ("product", c_uint32, 4),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_macs_per_cc(self, value): self.bits.macs_per_cc = value
    def get_macs_per_cc(self): value = self.bits.macs_per_cc; return value
    def set_cmd_stream_version(self, value): self.bits.cmd_stream_version = value
    def get_cmd_stream_version(self): value = self.bits.cmd_stream_version; return value
    def set_shram_size(self, value): self.bits.shram_size = value
    def get_shram_size(self): value = self.bits.shram_size; return value
    def set_product(self, value): self.bits.product = value
    def get_product(self): value = self.bits.product; return value


class lock_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("lock", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_lock(self, value): self.bits.lock = value
    def get_lock(self): value = self.bits.lock; return value


class regioncfg_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("region0", c_uint32, 2),
            ("region1", c_uint32, 2),
            ("region2", c_uint32, 2),
            ("region3", c_uint32, 2),
            ("region4", c_uint32, 2),
            ("region5", c_uint32, 2),
            ("region6", c_uint32, 2),
            ("region7", c_uint32, 2),
            ("reserved0", c_uint32, 16),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_region0(self, value): self.bits.region0 = value
    def get_region0(self): value = self.bits.region0; return value
    def set_region1(self, value): self.bits.region1 = value
    def get_region1(self): value = self.bits.region1; return value
    def set_region2(self, value): self.bits.region2 = value
    def get_region2(self): value = self.bits.region2; return value
    def set_region3(self, value): self.bits.region3 = value
    def get_region3(self): value = self.bits.region3; return value
    def set_region4(self, value): self.bits.region4 = value
    def get_region4(self): value = self.bits.region4; return value
    def set_region5(self, value): self.bits.region5 = value
    def get_region5(self): value = self.bits.region5; return value
    def set_region6(self, value): self.bits.region6 = value
    def get_region6(self): value = self.bits.region6; return value
    def set_region7(self, value): self.bits.region7 = value
    def get_region7(self): value = self.bits.region7; return value


class axi_limit0_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("max_beats", c_uint32, 2),
            ("reserved0", c_uint32, 2),
            ("memtype", c_uint32, 4),
            ("reserved1", c_uint32, 8),
            ("max_outstanding_read_m1", c_uint32, 8),
            ("max_outstanding_write_m1", c_uint32, 8),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_max_beats(self, value): self.bits.max_beats = value
    def get_max_beats(self): value = self.bits.max_beats; return value
    def set_memtype(self, value): self.bits.memtype = value
    def get_memtype(self): value = self.bits.memtype; return value
    def set_max_outstanding_read_m1(self, value): self.bits.max_outstanding_read_m1 = value
    def get_max_outstanding_read_m1(self): value = self.bits.max_outstanding_read_m1; return value
    def set_max_outstanding_write_m1(self, value): self.bits.max_outstanding_write_m1 = value
    def get_max_outstanding_write_m1(self): value = self.bits.max_outstanding_write_m1; return value


class axi_limit1_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("max_beats", c_uint32, 2),
            ("reserved0", c_uint32, 2),
            ("memtype", c_uint32, 4),
            ("reserved1", c_uint32, 8),
            ("max_outstanding_read_m1", c_uint32, 8),
            ("max_outstanding_write_m1", c_uint32, 8),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_max_beats(self, value): self.bits.max_beats = value
    def get_max_beats(self): value = self.bits.max_beats; return value
    def set_memtype(self, value): self.bits.memtype = value
    def get_memtype(self): value = self.bits.memtype; return value
    def set_max_outstanding_read_m1(self, value): self.bits.max_outstanding_read_m1 = value
    def get_max_outstanding_read_m1(self): value = self.bits.max_outstanding_read_m1; return value
    def set_max_outstanding_write_m1(self, value): self.bits.max_outstanding_write_m1 = value
    def get_max_outstanding_write_m1(self): value = self.bits.max_outstanding_write_m1; return value


class axi_limit2_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("max_beats", c_uint32, 2),
            ("reserved0", c_uint32, 2),
            ("memtype", c_uint32, 4),
            ("reserved1", c_uint32, 8),
            ("max_outstanding_read_m1", c_uint32, 8),
            ("max_outstanding_write_m1", c_uint32, 8),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_max_beats(self, value): self.bits.max_beats = value
    def get_max_beats(self): value = self.bits.max_beats; return value
    def set_memtype(self, value): self.bits.memtype = value
    def get_memtype(self): value = self.bits.memtype; return value
    def set_max_outstanding_read_m1(self, value): self.bits.max_outstanding_read_m1 = value
    def get_max_outstanding_read_m1(self): value = self.bits.max_outstanding_read_m1; return value
    def set_max_outstanding_write_m1(self, value): self.bits.max_outstanding_write_m1 = value
    def get_max_outstanding_write_m1(self): value = self.bits.max_outstanding_write_m1; return value


class axi_limit3_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("max_beats", c_uint32, 2),
            ("reserved0", c_uint32, 2),
            ("memtype", c_uint32, 4),
            ("reserved1", c_uint32, 8),
            ("max_outstanding_read_m1", c_uint32, 8),
            ("max_outstanding_write_m1", c_uint32, 8),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_max_beats(self, value): self.bits.max_beats = value
    def get_max_beats(self): value = self.bits.max_beats; return value
    def set_memtype(self, value): self.bits.memtype = value
    def get_memtype(self): value = self.bits.memtype; return value
    def set_max_outstanding_read_m1(self, value): self.bits.max_outstanding_read_m1 = value
    def get_max_outstanding_read_m1(self): value = self.bits.max_outstanding_read_m1; return value
    def set_max_outstanding_write_m1(self, value): self.bits.max_outstanding_write_m1 = value
    def get_max_outstanding_write_m1(self): value = self.bits.max_outstanding_write_m1; return value


class pmcr_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cnt_en", c_uint32, 1),
            ("event_cnt_rst", c_uint32, 1),
            ("cycle_cnt_rst", c_uint32, 1),
            ("mask_en", c_uint32, 1),
            ("reserved0", c_uint32, 7),
            ("num_event_cnt", c_uint32, 5),
            ("reserved1", c_uint32, 16),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cnt_en(self, value): self.bits.cnt_en = value
    def get_cnt_en(self): value = self.bits.cnt_en; return value
    def set_event_cnt_rst(self, value): self.bits.event_cnt_rst = value
    def get_event_cnt_rst(self): value = self.bits.event_cnt_rst; return value
    def set_cycle_cnt_rst(self, value): self.bits.cycle_cnt_rst = value
    def get_cycle_cnt_rst(self): value = self.bits.cycle_cnt_rst; return value
    def set_mask_en(self, value): self.bits.mask_en = value
    def get_mask_en(self): value = self.bits.mask_en; return value
    def set_num_event_cnt(self, value): self.bits.num_event_cnt = value
    def get_num_event_cnt(self): value = self.bits.num_event_cnt; return value


class pmcntenset_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("event_cnt_0", c_uint32, 1),
            ("event_cnt_1", c_uint32, 1),
            ("event_cnt_2", c_uint32, 1),
            ("event_cnt_3", c_uint32, 1),
            ("reserved0", c_uint32, 27),
            ("cycle_cnt", c_uint32, 1),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_event_cnt_0(self, value): self.bits.event_cnt_0 = value
    def get_event_cnt_0(self): value = self.bits.event_cnt_0; return value
    def set_event_cnt_1(self, value): self.bits.event_cnt_1 = value
    def get_event_cnt_1(self): value = self.bits.event_cnt_1; return value
    def set_event_cnt_2(self, value): self.bits.event_cnt_2 = value
    def get_event_cnt_2(self): value = self.bits.event_cnt_2; return value
    def set_event_cnt_3(self, value): self.bits.event_cnt_3 = value
    def get_event_cnt_3(self): value = self.bits.event_cnt_3; return value
    def set_cycle_cnt(self, value): self.bits.cycle_cnt = value
    def get_cycle_cnt(self): value = self.bits.cycle_cnt; return value


class pmcntenclr_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("event_cnt_0", c_uint32, 1),
            ("event_cnt_1", c_uint32, 1),
            ("event_cnt_2", c_uint32, 1),
            ("event_cnt_3", c_uint32, 1),
            ("reserved0", c_uint32, 27),
            ("cycle_cnt", c_uint32, 1),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_event_cnt_0(self, value): self.bits.event_cnt_0 = value
    def get_event_cnt_0(self): value = self.bits.event_cnt_0; return value
    def set_event_cnt_1(self, value): self.bits.event_cnt_1 = value
    def get_event_cnt_1(self): value = self.bits.event_cnt_1; return value
    def set_event_cnt_2(self, value): self.bits.event_cnt_2 = value
    def get_event_cnt_2(self): value = self.bits.event_cnt_2; return value
    def set_event_cnt_3(self, value): self.bits.event_cnt_3 = value
    def get_event_cnt_3(self): value = self.bits.event_cnt_3; return value
    def set_cycle_cnt(self, value): self.bits.cycle_cnt = value
    def get_cycle_cnt(self): value = self.bits.cycle_cnt; return value


class pmovsset_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("event_cnt_0_ovf", c_uint32, 1),
            ("event_cnt_1_ovf", c_uint32, 1),
            ("event_cnt_2_ovf", c_uint32, 1),
            ("event_cnt_3_ovf", c_uint32, 1),
            ("reserved0", c_uint32, 27),
            ("cycle_cnt_ovf", c_uint32, 1),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_event_cnt_0_ovf(self, value): self.bits.event_cnt_0_ovf = value
    def get_event_cnt_0_ovf(self): value = self.bits.event_cnt_0_ovf; return value
    def set_event_cnt_1_ovf(self, value): self.bits.event_cnt_1_ovf = value
    def get_event_cnt_1_ovf(self): value = self.bits.event_cnt_1_ovf; return value
    def set_event_cnt_2_ovf(self, value): self.bits.event_cnt_2_ovf = value
    def get_event_cnt_2_ovf(self): value = self.bits.event_cnt_2_ovf; return value
    def set_event_cnt_3_ovf(self, value): self.bits.event_cnt_3_ovf = value
    def get_event_cnt_3_ovf(self): value = self.bits.event_cnt_3_ovf; return value
    def set_cycle_cnt_ovf(self, value): self.bits.cycle_cnt_ovf = value
    def get_cycle_cnt_ovf(self): value = self.bits.cycle_cnt_ovf; return value


class pmovsclr_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("event_cnt_0_ovf", c_uint32, 1),
            ("event_cnt_1_ovf", c_uint32, 1),
            ("event_cnt_2_ovf", c_uint32, 1),
            ("event_cnt_3_ovf", c_uint32, 1),
            ("reserved0", c_uint32, 27),
            ("cycle_cnt_ovf", c_uint32, 1),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_event_cnt_0_ovf(self, value): self.bits.event_cnt_0_ovf = value
    def get_event_cnt_0_ovf(self): value = self.bits.event_cnt_0_ovf; return value
    def set_event_cnt_1_ovf(self, value): self.bits.event_cnt_1_ovf = value
    def get_event_cnt_1_ovf(self): value = self.bits.event_cnt_1_ovf; return value
    def set_event_cnt_2_ovf(self, value): self.bits.event_cnt_2_ovf = value
    def get_event_cnt_2_ovf(self): value = self.bits.event_cnt_2_ovf; return value
    def set_event_cnt_3_ovf(self, value): self.bits.event_cnt_3_ovf = value
    def get_event_cnt_3_ovf(self): value = self.bits.event_cnt_3_ovf; return value
    def set_cycle_cnt_ovf(self, value): self.bits.cycle_cnt_ovf = value
    def get_cycle_cnt_ovf(self): value = self.bits.cycle_cnt_ovf; return value


class pmintset_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("event_cnt_0_int", c_uint32, 1),
            ("event_cnt_1_int", c_uint32, 1),
            ("event_cnt_2_int", c_uint32, 1),
            ("event_cnt_3_int", c_uint32, 1),
            ("reserved0", c_uint32, 27),
            ("cycle_cnt_int", c_uint32, 1),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_event_cnt_0_int(self, value): self.bits.event_cnt_0_int = value
    def get_event_cnt_0_int(self): value = self.bits.event_cnt_0_int; return value
    def set_event_cnt_1_int(self, value): self.bits.event_cnt_1_int = value
    def get_event_cnt_1_int(self): value = self.bits.event_cnt_1_int; return value
    def set_event_cnt_2_int(self, value): self.bits.event_cnt_2_int = value
    def get_event_cnt_2_int(self): value = self.bits.event_cnt_2_int; return value
    def set_event_cnt_3_int(self, value): self.bits.event_cnt_3_int = value
    def get_event_cnt_3_int(self): value = self.bits.event_cnt_3_int; return value
    def set_cycle_cnt_int(self, value): self.bits.cycle_cnt_int = value
    def get_cycle_cnt_int(self): value = self.bits.cycle_cnt_int; return value


class pmintclr_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("event_cnt_0_int", c_uint32, 1),
            ("event_cnt_1_int", c_uint32, 1),
            ("event_cnt_2_int", c_uint32, 1),
            ("event_cnt_3_int", c_uint32, 1),
            ("reserved0", c_uint32, 27),
            ("cycle_cnt_int", c_uint32, 1),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_event_cnt_0_int(self, value): self.bits.event_cnt_0_int = value
    def get_event_cnt_0_int(self): value = self.bits.event_cnt_0_int; return value
    def set_event_cnt_1_int(self, value): self.bits.event_cnt_1_int = value
    def get_event_cnt_1_int(self): value = self.bits.event_cnt_1_int; return value
    def set_event_cnt_2_int(self, value): self.bits.event_cnt_2_int = value
    def get_event_cnt_2_int(self): value = self.bits.event_cnt_2_int; return value
    def set_event_cnt_3_int(self, value): self.bits.event_cnt_3_int = value
    def get_event_cnt_3_int(self): value = self.bits.event_cnt_3_int; return value
    def set_cycle_cnt_int(self, value): self.bits.cycle_cnt_int = value
    def get_cycle_cnt_int(self): value = self.bits.cycle_cnt_int; return value


class pmccntr_lo_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cycle_cnt_lo", c_uint32, 32),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cycle_cnt_lo(self, value): self.bits.cycle_cnt_lo = value
    def get_cycle_cnt_lo(self): value = self.bits.cycle_cnt_lo; return value


class pmccntr_hi_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cycle_cnt_hi", c_uint32, 16),
            ("reserved0", c_uint32, 16),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cycle_cnt_hi(self, value): self.bits.cycle_cnt_hi = value
    def get_cycle_cnt_hi(self): value = self.bits.cycle_cnt_hi; return value


class pmccntr_cfg_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("cycle_cnt_cfg_start", c_uint32, 10),
            ("reserved0", c_uint32, 6),
            ("cycle_cnt_cfg_stop", c_uint32, 10),
            ("reserved1", c_uint32, 6),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_cycle_cnt_cfg_start(self, value): self.bits.cycle_cnt_cfg_start = value
    def get_cycle_cnt_cfg_start(self): value = self.bits.cycle_cnt_cfg_start; return value
    def set_cycle_cnt_cfg_stop(self, value): self.bits.cycle_cnt_cfg_stop = value
    def get_cycle_cnt_cfg_stop(self): value = self.bits.cycle_cnt_cfg_stop; return value


class pmcaxi_chan_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("axi_chan", c_uint32, 4),
            ("reserved0", c_uint32, 3),
            ("rw", c_uint32, 1),
            ("axi_cnt", c_uint32, 2),
            ("reserved1", c_uint32, 22),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_axi_chan(self, value): self.bits.axi_chan = value
    def get_axi_chan(self): value = self.bits.axi_chan; return value
    def set_rw(self, value): self.bits.rw = value
    def get_rw(self): value = self.bits.rw; return value
    def set_axi_cnt(self, value): self.bits.axi_cnt = value
    def get_axi_cnt(self): value = self.bits.axi_cnt; return value


class pmevtyper0_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("ev_type", c_uint32, 10),
            ("reserved0", c_uint32, 22),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_ev_type(self, value): self.bits.ev_type = value
    def get_ev_type(self): value = self.bits.ev_type; return value


class pmevtyper1_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("ev_type", c_uint32, 10),
            ("reserved0", c_uint32, 22),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_ev_type(self, value): self.bits.ev_type = value
    def get_ev_type(self): value = self.bits.ev_type; return value


class pmevtyper2_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("ev_type", c_uint32, 10),
            ("reserved0", c_uint32, 22),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_ev_type(self, value): self.bits.ev_type = value
    def get_ev_type(self): value = self.bits.ev_type; return value


class pmevtyper3_r(Union):
    class _bitfield(Structure):
        _fields_ = [
            ("ev_type", c_uint32, 10),
            ("reserved0", c_uint32, 22),
        ]
    _fields_ = [("bits", _bitfield),
                ("word", c_uint32)]
    def set_ev_type(self, value): self.bits.ev_type = value
    def get_ev_type(self): value = self.bits.ev_type; return value

class command_no_payload_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class command_with_payload_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("param", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_param(self): return param
    def set_param(self, value): param = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_op_stop_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("mask", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_STOP and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_mask(self): return mask
    def set_mask(self, value): mask = value

class npu_op_irq_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("mask", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_IRQ and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_mask(self): return mask
    def set_mask(self, value): mask = value

class npu_op_conv_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("reserved0", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_CONV and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value

class npu_op_depthwise_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("reserved0", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_DEPTHWISE and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value

class npu_op_pool_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("mode", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_POOL and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_mode(self): return mode
    def set_mode(self, value): mode = value

class npu_op_elementwise_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("mode", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_ELEMENTWISE and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_mode(self): return mode
    def set_mode(self, value): mode = value

class npu_op_dma_start_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("channel_mode", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_DMA_START and must_be_zero0==0;
    def get_channel_mode(self): return channel_mode
    def set_channel_mode(self, value): channel_mode = value
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value

class npu_op_dma_wait_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("reserved0", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_DMA_WAIT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value

class npu_op_kernel_wait_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_KERNEL_WAIT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_op_pmu_mask_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_OP_PMU_MASK and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_pad_top_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_PAD_TOP and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_pad_left_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_PAD_LEFT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_pad_right_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_PAD_RIGHT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_pad_bottom_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_PAD_BOTTOM and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_depth_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_DEPTH_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_precision_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("precision", c_uint32, 4),
        ("reserved0", c_uint32, 2),
        ("format", c_uint32, 2),
        ("scale_mode", c_uint32, 2),
        ("reserved1", c_uint32, 4),
        ("round_mode", c_uint32, 2),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_PRECISION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_format(self): return format
    def set_format(self, value): format = value
    def get_precision(self): return precision
    def set_precision(self, value): precision = value
    def get_round_mode(self): return round_mode
    def set_round_mode(self, value): round_mode = value
    def get_scale_mode(self): return scale_mode
    def set_scale_mode(self, value): scale_mode = value

class npu_set_ifm_upscale_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("mode", c_uint32, 2),
        ("reserved0", c_uint32, 14),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_UPSCALE and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_mode(self): return mode
    def set_mode(self, value): mode = value

class npu_set_ifm_zero_point_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_ZERO_POINT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_width0_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_WIDTH0_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_height0_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_HEIGHT0_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_height1_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_HEIGHT1_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_ib_end_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_IB_END and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_width_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_WIDTH_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_height_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_HEIGHT_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_depth_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_DEPTH_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_precision_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("precision", c_uint32, 3),
        ("reserved0", c_uint32, 3),
        ("format", c_uint32, 2),
        ("scaling", c_uint32, 1),
        ("reserved1", c_uint32, 5),
        ("rounding", c_uint32, 2),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_PRECISION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_format(self): return format
    def set_format(self, value): format = value
    def get_precision(self): return precision
    def set_precision(self, value): precision = value
    def get_rounding(self): return rounding
    def set_rounding(self, value): rounding = value
    def get_scaling(self): return scaling
    def set_scaling(self, value): scaling = value

class npu_set_ofm_blk_width_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_BLK_WIDTH_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_blk_height_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_BLK_HEIGHT_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_blk_depth_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_BLK_DEPTH_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_zero_point_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_ZERO_POINT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_width0_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_WIDTH0_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_height0_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_HEIGHT0_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_height1_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_HEIGHT1_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ofm_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_OFM_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_kernel_width_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_KERNEL_WIDTH_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_kernel_height_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_KERNEL_HEIGHT_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_kernel_stride_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_KERNEL_STRIDE and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_parallel_mode_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_PARALLEL_MODE and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_acc_format_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_ACC_FORMAT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_activation_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("type", c_uint32, 12),
        ("act_clip_range", c_uint32, 4),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_ACTIVATION and must_be_zero0==0;
    def get_act_clip_range(self): return act_clip_range
    def set_act_clip_range(self, value): act_clip_range = value
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_type(self): return type
    def set_type(self, value): type = value

class npu_set_activation_min_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_ACTIVATION_MIN and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_activation_max_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_ACTIVATION_MAX and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_weight_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_WEIGHT_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_scale_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_SCALE_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ab_start_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_AB_START and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_blockdep_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_BLOCKDEP and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_dma0_src_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("region", c_uint32, 8),
        ("internal", c_uint32, 1),
        ("stride_mode", c_uint32, 2),
        ("reserved0", c_uint32, 5),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_DMA0_SRC_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_internal(self): return internal
    def set_internal(self, value): internal = value
    def get_region(self): return region
    def set_region(self, value): region = value
    def get_stride_mode(self): return stride_mode
    def set_stride_mode(self, value): stride_mode = value

class npu_set_dma0_dst_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("region", c_uint32, 8),
        ("internal", c_uint32, 1),
        ("stride_mode", c_uint32, 2),
        ("reserved0", c_uint32, 5),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_DMA0_DST_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_internal(self): return internal
    def set_internal(self, value): internal = value
    def get_region(self): return region
    def set_region(self, value): region = value
    def get_stride_mode(self): return stride_mode
    def set_stride_mode(self, value): stride_mode = value

class npu_set_dma0_size0_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_DMA0_SIZE0 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_dma0_size1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_DMA0_SIZE1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_broadcast_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("broadcast_height", c_uint32, 1),
        ("broadcast_width", c_uint32, 1),
        ("broadcast_depth", c_uint32, 1),
        ("reserved0", c_uint32, 3),
        ("operand_order", c_uint32, 1),
        ("broadcast_scalar", c_uint32, 1),
        ("reserved1", c_uint32, 8),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_BROADCAST and must_be_zero0==0;
    def get_broadcast_depth(self): return broadcast_depth
    def set_broadcast_depth(self, value): broadcast_depth = value
    def get_broadcast_height(self): return broadcast_height
    def set_broadcast_height(self, value): broadcast_height = value
    def get_broadcast_scalar(self): return broadcast_scalar
    def set_broadcast_scalar(self, value): broadcast_scalar = value
    def get_broadcast_width(self): return broadcast_width
    def set_broadcast_width(self, value): broadcast_width = value
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_operand_order(self): return operand_order
    def set_operand_order(self, value): operand_order = value

class npu_set_ifm2_scalar_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_SCALAR and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_precision_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("precision", c_uint32, 4),
        ("reserved0", c_uint32, 2),
        ("format", c_uint32, 2),
        ("reserved1", c_uint32, 8),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_PRECISION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_format(self): return format
    def set_format(self, value): format = value
    def get_precision(self): return precision
    def set_precision(self, value): precision = value

class npu_set_ifm2_zero_point_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_ZERO_POINT and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_width0_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_WIDTH0_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_height0_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_HEIGHT0_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_height1_m1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_HEIGHT1_M1 and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_ib_start_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_IB_START and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm2_region_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero0", c_uint32, 6),
        ("param", c_uint32, 16),
    ]
    def valid(self): return cmd_code==cmd0.NPU_SET_IFM2_REGION and must_be_zero0==0;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_param(self): return param
    def set_param(self, value): param = value

class npu_set_ifm_base0_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_BASE0 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm_base1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_BASE1 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm_base2_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_BASE2 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm_base3_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_BASE3 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm_stride_x_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_STRIDE_X and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm_stride_y_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_STRIDE_Y and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm_stride_c_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM_STRIDE_C and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_base0_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_BASE0 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_base1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_BASE1 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_base2_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_BASE2 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_base3_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_BASE3 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_stride_x_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_STRIDE_X and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_stride_y_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_STRIDE_Y and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_stride_c_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_STRIDE_C and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_weight_base_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_WEIGHT_BASE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_weight_length_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_WEIGHT_LENGTH and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_scale_base_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_SCALE_BASE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_scale_length_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_SCALE_LENGTH and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ofm_scale_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("shift", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OFM_SCALE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value
    def get_shift(self): return shift
    def set_shift(self, value): shift = value

class npu_set_opa_scale_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("shift", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OPA_SCALE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value
    def get_shift(self): return shift
    def set_shift(self, value): shift = value

class npu_set_opb_scale_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_OPB_SCALE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_dma0_src_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_DMA0_SRC and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_dma0_dst_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_DMA0_DST and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_dma0_len_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_DMA0_LEN and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_dma0_skip0_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("param", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_DMA0_SKIP0 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_param(self): return param
    def set_param(self, value): param = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_dma0_skip1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("param", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_DMA0_SKIP1 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_param(self): return param
    def set_param(self, value): param = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_base0_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_BASE0 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_base1_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_BASE1 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_base2_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_BASE2 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_base3_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_BASE3 and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_stride_x_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_STRIDE_X and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_stride_y_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_STRIDE_Y and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_ifm2_stride_c_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_IFM2_STRIDE_C and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_weight1_base_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("param", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_WEIGHT1_BASE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_param(self): return param
    def set_param(self, value): param = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_weight1_length_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_WEIGHT1_LENGTH and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_scale1_base_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("param", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_SCALE1_BASE and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_param(self): return param
    def set_param(self, value): param = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

class npu_set_scale1_length_t(Structure):
    _fields_ = [
        ("cmd_code", c_uint32, 10),
        ("must_be_zero", c_uint32, 4),
        ("payload_size", c_uint32, 2),
        ("reserved0", c_uint32, 16),
        ("data", c_uint32, 32),
    ]
    def valid(self): return cmd_code==cmd1.NPU_SET_SCALE1_LENGTH and must_be_zero==0 and payload_size>=1 and payload_size<=2;
    def get_cmd_code(self): return cmd_code
    def set_cmd_code(self, value): cmd_code = value
    def get_data(self): return data
    def set_data(self, value): data = value
    def get_payload_size(self): return payload_size
    def set_payload_size(self, value): payload_size = value

