Add Vela codebase

 - Added modules ethosu.vela and ethosu.mlw_codec.
 - Added README and various configuration files.

Change-Id: I3690f8c8f5966306ecddaeb2793c30ca9c6e2eee
diff --git a/ethosu/vela/ethos_u55_regs/ethos_u55_regs.py b/ethosu/vela/ethos_u55_regs/ethos_u55_regs.py
new file mode 100644
index 0000000..37f7a67
--- /dev/null
+++ b/ethosu/vela/ethos_u55_regs/ethos_u55_regs.py
@@ -0,0 +1,3138 @@
+# 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.154.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):
+    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):
+    W8_U8 = 0
+    W8_S8 = 1
+    W8_U16 = 4
+    W8_S16 = 5
+    W8_S32 = 9
+
+class ifm_scale_mode(Enum):
+    SCALE_16BIT = 0
+    SCALE_OPA_32BIT = 1
+    SCALE_OPB_32BIT = 2
+
+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):
+    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
+    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
+    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 product(Enum):
+    ETHOS_U55 = 0
+
+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 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),
+        ("param", 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_param(self): return param
+    def set_param(self, value): param = 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),
+        ("param", 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_param(self): return param
+    def set_param(self, value): param = 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