blob: 856b1402a56eb153f18be9a87acc8b57e556a77a [file] [log] [blame]
Kristofer Jonsson49bdee82020-04-06 13:21:21 +02001/*
2 * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19#pragma once
20
21#ifdef __KERNEL__
22#include <linux/types.h>
23#else
24#include <stdint.h>
25#endif
26
27#ifdef MODEL_REGS
28#include "core/simple_types.h"
29#endif
30
31#if !defined(__cplusplus) || __cplusplus < 201402L
32#define CONSTEXPR
33#else
34#define CONSTEXPR constexpr
35#endif
36
37#ifndef __cplusplus
38#define STRUCT struct
39#else
40#define STRUCT
41#include <stdexcept>
42#endif
43
44#define NNX_ARCH_VERSION_MAJOR 0
45#define NNX_ARCH_VERSION_MINOR 154
46#define NNX_ARCH_VERSION_PATCH 0
47#define NNX_ARCH_BASENAME "ULTAN"
48
49// Register offsets
50
51//
52// Register subpage DEBUG_INTERNAL
53//
54#define NPU_REG_SHARED_BUFFER0 0x0400
55#define NPU_REG_SHARED_BUFFER1 0x0404
56#define NPU_REG_SHARED_BUFFER2 0x0408
57#define NPU_REG_SHARED_BUFFER3 0x040C
58#define NPU_REG_SHARED_BUFFER4 0x0410
59#define NPU_REG_SHARED_BUFFER5 0x0414
60#define NPU_REG_SHARED_BUFFER6 0x0418
61#define NPU_REG_SHARED_BUFFER7 0x041C
62#define NPU_REG_SHARED_BUFFER8 0x0420
63#define NPU_REG_SHARED_BUFFER9 0x0424
64#define NPU_REG_SHARED_BUFFER10 0x0428
65#define NPU_REG_SHARED_BUFFER11 0x042C
66#define NPU_REG_SHARED_BUFFER12 0x0430
67#define NPU_REG_SHARED_BUFFER13 0x0434
68#define NPU_REG_SHARED_BUFFER14 0x0438
69#define NPU_REG_SHARED_BUFFER15 0x043C
70#define NPU_REG_SHARED_BUFFER16 0x0440
71#define NPU_REG_SHARED_BUFFER17 0x0444
72#define NPU_REG_SHARED_BUFFER18 0x0448
73#define NPU_REG_SHARED_BUFFER19 0x044C
74#define NPU_REG_SHARED_BUFFER20 0x0450
75#define NPU_REG_SHARED_BUFFER21 0x0454
76#define NPU_REG_SHARED_BUFFER22 0x0458
77#define NPU_REG_SHARED_BUFFER23 0x045C
78#define NPU_REG_SHARED_BUFFER24 0x0460
79#define NPU_REG_SHARED_BUFFER25 0x0464
80#define NPU_REG_SHARED_BUFFER26 0x0468
81#define NPU_REG_SHARED_BUFFER27 0x046C
82#define NPU_REG_SHARED_BUFFER28 0x0470
83#define NPU_REG_SHARED_BUFFER29 0x0474
84#define NPU_REG_SHARED_BUFFER30 0x0478
85#define NPU_REG_SHARED_BUFFER31 0x047C
86#define NPU_REG_SHARED_BUFFER32 0x0480
87#define NPU_REG_SHARED_BUFFER33 0x0484
88#define NPU_REG_SHARED_BUFFER34 0x0488
89#define NPU_REG_SHARED_BUFFER35 0x048C
90#define NPU_REG_SHARED_BUFFER36 0x0490
91#define NPU_REG_SHARED_BUFFER37 0x0494
92#define NPU_REG_SHARED_BUFFER38 0x0498
93#define NPU_REG_SHARED_BUFFER39 0x049C
94#define NPU_REG_SHARED_BUFFER40 0x04A0
95#define NPU_REG_SHARED_BUFFER41 0x04A4
96#define NPU_REG_SHARED_BUFFER42 0x04A8
97#define NPU_REG_SHARED_BUFFER43 0x04AC
98#define NPU_REG_SHARED_BUFFER44 0x04B0
99#define NPU_REG_SHARED_BUFFER45 0x04B4
100#define NPU_REG_SHARED_BUFFER46 0x04B8
101#define NPU_REG_SHARED_BUFFER47 0x04BC
102#define NPU_REG_SHARED_BUFFER48 0x04C0
103#define NPU_REG_SHARED_BUFFER49 0x04C4
104#define NPU_REG_SHARED_BUFFER50 0x04C8
105#define NPU_REG_SHARED_BUFFER51 0x04CC
106#define NPU_REG_SHARED_BUFFER52 0x04D0
107#define NPU_REG_SHARED_BUFFER53 0x04D4
108#define NPU_REG_SHARED_BUFFER54 0x04D8
109#define NPU_REG_SHARED_BUFFER55 0x04DC
110#define NPU_REG_SHARED_BUFFER56 0x04E0
111#define NPU_REG_SHARED_BUFFER57 0x04E4
112#define NPU_REG_SHARED_BUFFER58 0x04E8
113#define NPU_REG_SHARED_BUFFER59 0x04EC
114#define NPU_REG_SHARED_BUFFER60 0x04F0
115#define NPU_REG_SHARED_BUFFER61 0x04F4
116#define NPU_REG_SHARED_BUFFER62 0x04F8
117#define NPU_REG_SHARED_BUFFER63 0x04FC
118#define NPU_REG_SHARED_BUFFER64 0x0500
119#define NPU_REG_SHARED_BUFFER65 0x0504
120#define NPU_REG_SHARED_BUFFER66 0x0508
121#define NPU_REG_SHARED_BUFFER67 0x050C
122#define NPU_REG_SHARED_BUFFER68 0x0510
123#define NPU_REG_SHARED_BUFFER69 0x0514
124#define NPU_REG_SHARED_BUFFER70 0x0518
125#define NPU_REG_SHARED_BUFFER71 0x051C
126#define NPU_REG_SHARED_BUFFER72 0x0520
127#define NPU_REG_SHARED_BUFFER73 0x0524
128#define NPU_REG_SHARED_BUFFER74 0x0528
129#define NPU_REG_SHARED_BUFFER75 0x052C
130#define NPU_REG_SHARED_BUFFER76 0x0530
131#define NPU_REG_SHARED_BUFFER77 0x0534
132#define NPU_REG_SHARED_BUFFER78 0x0538
133#define NPU_REG_SHARED_BUFFER79 0x053C
134#define NPU_REG_SHARED_BUFFER80 0x0540
135#define NPU_REG_SHARED_BUFFER81 0x0544
136#define NPU_REG_SHARED_BUFFER82 0x0548
137#define NPU_REG_SHARED_BUFFER83 0x054C
138#define NPU_REG_SHARED_BUFFER84 0x0550
139#define NPU_REG_SHARED_BUFFER85 0x0554
140#define NPU_REG_SHARED_BUFFER86 0x0558
141#define NPU_REG_SHARED_BUFFER87 0x055C
142#define NPU_REG_SHARED_BUFFER88 0x0560
143#define NPU_REG_SHARED_BUFFER89 0x0564
144#define NPU_REG_SHARED_BUFFER90 0x0568
145#define NPU_REG_SHARED_BUFFER91 0x056C
146#define NPU_REG_SHARED_BUFFER92 0x0570
147#define NPU_REG_SHARED_BUFFER93 0x0574
148#define NPU_REG_SHARED_BUFFER94 0x0578
149#define NPU_REG_SHARED_BUFFER95 0x057C
150#define NPU_REG_SHARED_BUFFER96 0x0580
151#define NPU_REG_SHARED_BUFFER97 0x0584
152#define NPU_REG_SHARED_BUFFER98 0x0588
153#define NPU_REG_SHARED_BUFFER99 0x058C
154#define NPU_REG_SHARED_BUFFER100 0x0590
155#define NPU_REG_SHARED_BUFFER101 0x0594
156#define NPU_REG_SHARED_BUFFER102 0x0598
157#define NPU_REG_SHARED_BUFFER103 0x059C
158#define NPU_REG_SHARED_BUFFER104 0x05A0
159#define NPU_REG_SHARED_BUFFER105 0x05A4
160#define NPU_REG_SHARED_BUFFER106 0x05A8
161#define NPU_REG_SHARED_BUFFER107 0x05AC
162#define NPU_REG_SHARED_BUFFER108 0x05B0
163#define NPU_REG_SHARED_BUFFER109 0x05B4
164#define NPU_REG_SHARED_BUFFER110 0x05B8
165#define NPU_REG_SHARED_BUFFER111 0x05BC
166#define NPU_REG_SHARED_BUFFER112 0x05C0
167#define NPU_REG_SHARED_BUFFER113 0x05C4
168#define NPU_REG_SHARED_BUFFER114 0x05C8
169#define NPU_REG_SHARED_BUFFER115 0x05CC
170#define NPU_REG_SHARED_BUFFER116 0x05D0
171#define NPU_REG_SHARED_BUFFER117 0x05D4
172#define NPU_REG_SHARED_BUFFER118 0x05D8
173#define NPU_REG_SHARED_BUFFER119 0x05DC
174#define NPU_REG_SHARED_BUFFER120 0x05E0
175#define NPU_REG_SHARED_BUFFER121 0x05E4
176#define NPU_REG_SHARED_BUFFER122 0x05E8
177#define NPU_REG_SHARED_BUFFER123 0x05EC
178#define NPU_REG_SHARED_BUFFER124 0x05F0
179#define NPU_REG_SHARED_BUFFER125 0x05F4
180#define NPU_REG_SHARED_BUFFER126 0x05F8
181#define NPU_REG_SHARED_BUFFER127 0x05FC
182#define NPU_REG_SHARED_BUFFER128 0x0600
183#define NPU_REG_SHARED_BUFFER129 0x0604
184#define NPU_REG_SHARED_BUFFER130 0x0608
185#define NPU_REG_SHARED_BUFFER131 0x060C
186#define NPU_REG_SHARED_BUFFER132 0x0610
187#define NPU_REG_SHARED_BUFFER133 0x0614
188#define NPU_REG_SHARED_BUFFER134 0x0618
189#define NPU_REG_SHARED_BUFFER135 0x061C
190#define NPU_REG_SHARED_BUFFER136 0x0620
191#define NPU_REG_SHARED_BUFFER137 0x0624
192#define NPU_REG_SHARED_BUFFER138 0x0628
193#define NPU_REG_SHARED_BUFFER139 0x062C
194#define NPU_REG_SHARED_BUFFER140 0x0630
195#define NPU_REG_SHARED_BUFFER141 0x0634
196#define NPU_REG_SHARED_BUFFER142 0x0638
197#define NPU_REG_SHARED_BUFFER143 0x063C
198#define NPU_REG_SHARED_BUFFER144 0x0640
199#define NPU_REG_SHARED_BUFFER145 0x0644
200#define NPU_REG_SHARED_BUFFER146 0x0648
201#define NPU_REG_SHARED_BUFFER147 0x064C
202#define NPU_REG_SHARED_BUFFER148 0x0650
203#define NPU_REG_SHARED_BUFFER149 0x0654
204#define NPU_REG_SHARED_BUFFER150 0x0658
205#define NPU_REG_SHARED_BUFFER151 0x065C
206#define NPU_REG_SHARED_BUFFER152 0x0660
207#define NPU_REG_SHARED_BUFFER153 0x0664
208#define NPU_REG_SHARED_BUFFER154 0x0668
209#define NPU_REG_SHARED_BUFFER155 0x066C
210#define NPU_REG_SHARED_BUFFER156 0x0670
211#define NPU_REG_SHARED_BUFFER157 0x0674
212#define NPU_REG_SHARED_BUFFER158 0x0678
213#define NPU_REG_SHARED_BUFFER159 0x067C
214#define NPU_REG_SHARED_BUFFER160 0x0680
215#define NPU_REG_SHARED_BUFFER161 0x0684
216#define NPU_REG_SHARED_BUFFER162 0x0688
217#define NPU_REG_SHARED_BUFFER163 0x068C
218#define NPU_REG_SHARED_BUFFER164 0x0690
219#define NPU_REG_SHARED_BUFFER165 0x0694
220#define NPU_REG_SHARED_BUFFER166 0x0698
221#define NPU_REG_SHARED_BUFFER167 0x069C
222#define NPU_REG_SHARED_BUFFER168 0x06A0
223#define NPU_REG_SHARED_BUFFER169 0x06A4
224#define NPU_REG_SHARED_BUFFER170 0x06A8
225#define NPU_REG_SHARED_BUFFER171 0x06AC
226#define NPU_REG_SHARED_BUFFER172 0x06B0
227#define NPU_REG_SHARED_BUFFER173 0x06B4
228#define NPU_REG_SHARED_BUFFER174 0x06B8
229#define NPU_REG_SHARED_BUFFER175 0x06BC
230#define NPU_REG_SHARED_BUFFER176 0x06C0
231#define NPU_REG_SHARED_BUFFER177 0x06C4
232#define NPU_REG_SHARED_BUFFER178 0x06C8
233#define NPU_REG_SHARED_BUFFER179 0x06CC
234#define NPU_REG_SHARED_BUFFER180 0x06D0
235#define NPU_REG_SHARED_BUFFER181 0x06D4
236#define NPU_REG_SHARED_BUFFER182 0x06D8
237#define NPU_REG_SHARED_BUFFER183 0x06DC
238#define NPU_REG_SHARED_BUFFER184 0x06E0
239#define NPU_REG_SHARED_BUFFER185 0x06E4
240#define NPU_REG_SHARED_BUFFER186 0x06E8
241#define NPU_REG_SHARED_BUFFER187 0x06EC
242#define NPU_REG_SHARED_BUFFER188 0x06F0
243#define NPU_REG_SHARED_BUFFER189 0x06F4
244#define NPU_REG_SHARED_BUFFER190 0x06F8
245#define NPU_REG_SHARED_BUFFER191 0x06FC
246#define NPU_REG_SHARED_BUFFER192 0x0700
247#define NPU_REG_SHARED_BUFFER193 0x0704
248#define NPU_REG_SHARED_BUFFER194 0x0708
249#define NPU_REG_SHARED_BUFFER195 0x070C
250#define NPU_REG_SHARED_BUFFER196 0x0710
251#define NPU_REG_SHARED_BUFFER197 0x0714
252#define NPU_REG_SHARED_BUFFER198 0x0718
253#define NPU_REG_SHARED_BUFFER199 0x071C
254#define NPU_REG_SHARED_BUFFER200 0x0720
255#define NPU_REG_SHARED_BUFFER201 0x0724
256#define NPU_REG_SHARED_BUFFER202 0x0728
257#define NPU_REG_SHARED_BUFFER203 0x072C
258#define NPU_REG_SHARED_BUFFER204 0x0730
259#define NPU_REG_SHARED_BUFFER205 0x0734
260#define NPU_REG_SHARED_BUFFER206 0x0738
261#define NPU_REG_SHARED_BUFFER207 0x073C
262#define NPU_REG_SHARED_BUFFER208 0x0740
263#define NPU_REG_SHARED_BUFFER209 0x0744
264#define NPU_REG_SHARED_BUFFER210 0x0748
265#define NPU_REG_SHARED_BUFFER211 0x074C
266#define NPU_REG_SHARED_BUFFER212 0x0750
267#define NPU_REG_SHARED_BUFFER213 0x0754
268#define NPU_REG_SHARED_BUFFER214 0x0758
269#define NPU_REG_SHARED_BUFFER215 0x075C
270#define NPU_REG_SHARED_BUFFER216 0x0760
271#define NPU_REG_SHARED_BUFFER217 0x0764
272#define NPU_REG_SHARED_BUFFER218 0x0768
273#define NPU_REG_SHARED_BUFFER219 0x076C
274#define NPU_REG_SHARED_BUFFER220 0x0770
275#define NPU_REG_SHARED_BUFFER221 0x0774
276#define NPU_REG_SHARED_BUFFER222 0x0778
277#define NPU_REG_SHARED_BUFFER223 0x077C
278#define NPU_REG_SHARED_BUFFER224 0x0780
279#define NPU_REG_SHARED_BUFFER225 0x0784
280#define NPU_REG_SHARED_BUFFER226 0x0788
281#define NPU_REG_SHARED_BUFFER227 0x078C
282#define NPU_REG_SHARED_BUFFER228 0x0790
283#define NPU_REG_SHARED_BUFFER229 0x0794
284#define NPU_REG_SHARED_BUFFER230 0x0798
285#define NPU_REG_SHARED_BUFFER231 0x079C
286#define NPU_REG_SHARED_BUFFER232 0x07A0
287#define NPU_REG_SHARED_BUFFER233 0x07A4
288#define NPU_REG_SHARED_BUFFER234 0x07A8
289#define NPU_REG_SHARED_BUFFER235 0x07AC
290#define NPU_REG_SHARED_BUFFER236 0x07B0
291#define NPU_REG_SHARED_BUFFER237 0x07B4
292#define NPU_REG_SHARED_BUFFER238 0x07B8
293#define NPU_REG_SHARED_BUFFER239 0x07BC
294#define NPU_REG_SHARED_BUFFER240 0x07C0
295#define NPU_REG_SHARED_BUFFER241 0x07C4
296#define NPU_REG_SHARED_BUFFER242 0x07C8
297#define NPU_REG_SHARED_BUFFER243 0x07CC
298#define NPU_REG_SHARED_BUFFER244 0x07D0
299#define NPU_REG_SHARED_BUFFER245 0x07D4
300#define NPU_REG_SHARED_BUFFER246 0x07D8
301#define NPU_REG_SHARED_BUFFER247 0x07DC
302#define NPU_REG_SHARED_BUFFER248 0x07E0
303#define NPU_REG_SHARED_BUFFER249 0x07E4
304#define NPU_REG_SHARED_BUFFER250 0x07E8
305#define NPU_REG_SHARED_BUFFER251 0x07EC
306#define NPU_REG_SHARED_BUFFER252 0x07F0
307#define NPU_REG_SHARED_BUFFER253 0x07F4
308#define NPU_REG_SHARED_BUFFER254 0x07F8
309#define NPU_REG_SHARED_BUFFER255 0x07FC
310#define DEBUG_INTERNAL_REGISTERS_SIZE 0x0800
311
312//
313// Register subpage HW_DEBUG_INTERNAL
314//
315#define NPU_REG_CLKFORCE 0x0140
316#define NPU_REG_DEBUG 0x0144
317#define NPU_REG_DEBUG2 0x0148
318#define NPU_REG_DEBUGCORE 0x014C
319#define HW_DEBUG_INTERNAL_REGISTERS_SIZE 0x0150
320
321//
322// Register subpage NPU_BP
323//
324#define NPU_REG_BASEP0 0x0080
325#define NPU_REG_BASEP1 0x0084
326#define NPU_REG_BASEP2 0x0088
327#define NPU_REG_BASEP3 0x008C
328#define NPU_REG_BASEP4 0x0090
329#define NPU_REG_BASEP5 0x0094
330#define NPU_REG_BASEP6 0x0098
331#define NPU_REG_BASEP7 0x009C
332#define NPU_REG_BASEP8 0x00A0
333#define NPU_REG_BASEP9 0x00A4
334#define NPU_REG_BASEP10 0x00A8
335#define NPU_REG_BASEP11 0x00AC
336#define NPU_REG_BASEP12 0x00B0
337#define NPU_REG_BASEP13 0x00B4
338#define NPU_REG_BASEP14 0x00B8
339#define NPU_REG_BASEP15 0x00BC
340#define NPU_BP_REGISTERS_SIZE 0x00C0
341
342//
343// Register subpage NPU_IDS
344//
345#define NPU_REG_REVISION 0x0FC0
346#define NPU_REG_PID4 0x0FD0
347#define NPU_REG_PID5 0x0FD4
348#define NPU_REG_PID6 0x0FD8
349#define NPU_REG_PID7 0x0FDC
350#define NPU_REG_PID0 0x0FE0
351#define NPU_REG_PID1 0x0FE4
352#define NPU_REG_PID2 0x0FE8
353#define NPU_REG_PID3 0x0FEC
354#define NPU_REG_CID0 0x0FF0
355#define NPU_REG_CID1 0x0FF4
356#define NPU_REG_CID2 0x0FF8
357#define NPU_REG_CID3 0x0FFC
358#define NPU_IDS_REGISTERS_SIZE 0x1000
359
360//
361// Register subpage NPU_REG
362//
363#define NPU_REG_ID 0x0000
364#define NPU_REG_STATUS 0x0004
365#define NPU_REG_CMD 0x0008
366#define NPU_REG_RESET 0x000C
367#define NPU_REG_QBASE0 0x0010
368#define NPU_REG_QBASE1 0x0014
369#define NPU_REG_QREAD 0x0018
370#define NPU_REG_QCONFIG 0x001C
371#define NPU_REG_QSIZE 0x0020
372#define NPU_REG_PROT 0x0024
373#define NPU_REG_CONFIG 0x0028
374#define NPU_REG_LOCK 0x002C
375#define NPU_REG_REGIONCFG 0x003C
376#define NPU_REG_AXI_LIMIT0 0x0040
377#define NPU_REG_AXI_LIMIT1 0x0044
378#define NPU_REG_AXI_LIMIT2 0x0048
379#define NPU_REG_AXI_LIMIT3 0x004C
380#define NPU_REG_REGISTERS_SIZE 0x0050
381
382//
383// Register subpage PMU_INTERNAL
384//
385#define NPU_REG_PMCR 0x0180
386#define NPU_REG_PMCNTENSET 0x0184
387#define NPU_REG_PMCNTENCLR 0x0188
388#define NPU_REG_PMOVSSET 0x018C
389#define NPU_REG_PMOVSCLR 0x0190
390#define NPU_REG_PMINTSET 0x0194
391#define NPU_REG_PMINTCLR 0x0198
392#define NPU_REG_PMCCNTR_LO 0x01A0
393#define NPU_REG_PMCCNTR_HI 0x01A4
394#define NPU_REG_PMCCNTR_CFG 0x01A8
395#define NPU_REG_PMCAXI_CHAN 0x01AC
396#define NPU_REG_PMEVCNTR0 0x0300
397#define NPU_REG_PMEVCNTR1 0x0304
398#define NPU_REG_PMEVCNTR2 0x0308
399#define NPU_REG_PMEVCNTR3 0x030C
400#define NPU_REG_PMEVTYPER0 0x0380
401#define NPU_REG_PMEVTYPER1 0x0384
402#define NPU_REG_PMEVTYPER2 0x0388
403#define NPU_REG_PMEVTYPER3 0x038C
404#define PMU_INTERNAL_REGISTERS_SIZE 0x0390
405
406//
407// Register subpage TSU_DEBUG_INTERNAL
408//
409#define NPU_REG_IFM_PAD_TOP 0x0800
410#define NPU_REG_IFM_PAD_LEFT 0x0804
411#define NPU_REG_IFM_PAD_RIGHT 0x0808
412#define NPU_REG_IFM_PAD_BOTTOM 0x080C
413#define NPU_REG_IFM_DEPTH_M1 0x0810
414#define NPU_REG_IFM_PRECISION 0x0814
415#define NPU_REG_IFM_UPSCALE 0x081C
416#define NPU_REG_IFM_ZERO_POINT 0x0824
417#define NPU_REG_IFM_WIDTH0_M1 0x0828
418#define NPU_REG_IFM_HEIGHT0_M1 0x082C
419#define NPU_REG_IFM_HEIGHT1_M1 0x0830
420#define NPU_REG_IFM_IB_END 0x0834
421#define NPU_REG_IFM_REGION 0x083C
422#define NPU_REG_OFM_WIDTH_M1 0x0844
423#define NPU_REG_OFM_HEIGHT_M1 0x0848
424#define NPU_REG_OFM_DEPTH_M1 0x084C
425#define NPU_REG_OFM_PRECISION 0x0850
426#define NPU_REG_OFM_BLK_WIDTH_M1 0x0854
427#define NPU_REG_OFM_BLK_HEIGHT_M1 0x0858
428#define NPU_REG_OFM_BLK_DEPTH_M1 0x085C
429#define NPU_REG_OFM_ZERO_POINT 0x0860
430#define NPU_REG_OFM_WIDTH0_M1 0x0868
431#define NPU_REG_OFM_HEIGHT0_M1 0x086C
432#define NPU_REG_OFM_HEIGHT1_M1 0x0870
433#define NPU_REG_OFM_REGION 0x087C
434#define NPU_REG_KERNEL_WIDTH_M1 0x0880
435#define NPU_REG_KERNEL_HEIGHT_M1 0x0884
436#define NPU_REG_KERNEL_STRIDE 0x0888
437#define NPU_REG_PARALLEL_MODE 0x088C
438#define NPU_REG_ACC_FORMAT 0x0890
439#define NPU_REG_ACTIVATION 0x0894
440#define NPU_REG_ACTIVATION_MIN 0x0898
441#define NPU_REG_ACTIVATION_MAX 0x089C
442#define NPU_REG_WEIGHT_REGION 0x08A0
443#define NPU_REG_SCALE_REGION 0x08A4
444#define NPU_REG_AB_START 0x08B4
445#define NPU_REG_BLOCKDEP 0x08BC
446#define NPU_REG_DMA0_SRC_REGION 0x08C0
447#define NPU_REG_DMA0_DST_REGION 0x08C4
448#define NPU_REG_DMA0_SIZE0 0x08C8
449#define NPU_REG_DMA0_SIZE1 0x08CC
450#define NPU_REG_IFM2_BROADCAST 0x0900
451#define NPU_REG_IFM2_SCALAR 0x0904
452#define NPU_REG_IFM2_PRECISION 0x0914
453#define NPU_REG_IFM2_ZERO_POINT 0x0924
454#define NPU_REG_IFM2_WIDTH0_M1 0x0928
455#define NPU_REG_IFM2_HEIGHT0_M1 0x092C
456#define NPU_REG_IFM2_HEIGHT1_M1 0x0930
457#define NPU_REG_IFM2_IB_START 0x0934
458#define NPU_REG_IFM2_REGION 0x093C
459#define NPU_REG_IFM_BASE0 0x0A00
460#define NPU_REG_IFM_BASE0_HI 0x0A04
461#define NPU_REG_IFM_BASE1 0x0A08
462#define NPU_REG_IFM_BASE1_HI 0x0A0C
463#define NPU_REG_IFM_BASE2 0x0A10
464#define NPU_REG_IFM_BASE2_HI 0x0A14
465#define NPU_REG_IFM_BASE3 0x0A18
466#define NPU_REG_IFM_BASE3_HI 0x0A1C
467#define NPU_REG_IFM_STRIDE_X 0x0A20
468#define NPU_REG_IFM_STRIDE_X_HI 0x0A24
469#define NPU_REG_IFM_STRIDE_Y 0x0A28
470#define NPU_REG_IFM_STRIDE_Y_HI 0x0A2C
471#define NPU_REG_IFM_STRIDE_C 0x0A30
472#define NPU_REG_IFM_STRIDE_C_HI 0x0A34
473#define NPU_REG_OFM_BASE0 0x0A40
474#define NPU_REG_OFM_BASE0_HI 0x0A44
475#define NPU_REG_OFM_BASE1 0x0A48
476#define NPU_REG_OFM_BASE1_HI 0x0A4C
477#define NPU_REG_OFM_BASE2 0x0A50
478#define NPU_REG_OFM_BASE2_HI 0x0A54
479#define NPU_REG_OFM_BASE3 0x0A58
480#define NPU_REG_OFM_BASE3_HI 0x0A5C
481#define NPU_REG_OFM_STRIDE_X 0x0A60
482#define NPU_REG_OFM_STRIDE_X_HI 0x0A64
483#define NPU_REG_OFM_STRIDE_Y 0x0A68
484#define NPU_REG_OFM_STRIDE_Y_HI 0x0A6C
485#define NPU_REG_OFM_STRIDE_C 0x0A70
486#define NPU_REG_OFM_STRIDE_C_HI 0x0A74
487#define NPU_REG_WEIGHT_BASE 0x0A80
488#define NPU_REG_WEIGHT_BASE_HI 0x0A84
489#define NPU_REG_WEIGHT_LENGTH 0x0A88
490#define NPU_REG_WEIGHT_LENGTH_HI 0x0A8C
491#define NPU_REG_SCALE_BASE 0x0A90
492#define NPU_REG_SCALE_BASE_HI 0x0A94
493#define NPU_REG_SCALE_LENGTH 0x0A98
494#define NPU_REG_OFM_SCALE 0x0AA0
495#define NPU_REG_OFM_SCALE_SHIFT 0x0AA4
496#define NPU_REG_OPA_SCALE 0x0AA8
497#define NPU_REG_OPA_SCALE_SHIFT 0x0AAC
498#define NPU_REG_OPB_SCALE 0x0AB0
499#define NPU_REG_DMA0_SRC 0x0AC0
500#define NPU_REG_DMA0_SRC_HI 0x0AC4
501#define NPU_REG_DMA0_DST 0x0AC8
502#define NPU_REG_DMA0_DST_HI 0x0ACC
503#define NPU_REG_DMA0_LEN 0x0AD0
504#define NPU_REG_DMA0_LEN_HI 0x0AD4
505#define NPU_REG_DMA0_SKIP0 0x0AD8
506#define NPU_REG_DMA0_SKIP0_HI 0x0ADC
507#define NPU_REG_DMA0_SKIP1 0x0AE0
508#define NPU_REG_DMA0_SKIP1_HI 0x0AE4
509#define NPU_REG_IFM2_BASE0 0x0B00
510#define NPU_REG_IFM2_BASE0_HI 0x0B04
511#define NPU_REG_IFM2_BASE1 0x0B08
512#define NPU_REG_IFM2_BASE1_HI 0x0B0C
513#define NPU_REG_IFM2_BASE2 0x0B10
514#define NPU_REG_IFM2_BASE2_HI 0x0B14
515#define NPU_REG_IFM2_BASE3 0x0B18
516#define NPU_REG_IFM2_BASE3_HI 0x0B1C
517#define NPU_REG_IFM2_STRIDE_X 0x0B20
518#define NPU_REG_IFM2_STRIDE_X_HI 0x0B24
519#define NPU_REG_IFM2_STRIDE_Y 0x0B28
520#define NPU_REG_IFM2_STRIDE_Y_HI 0x0B2C
521#define NPU_REG_IFM2_STRIDE_C 0x0B30
522#define NPU_REG_IFM2_STRIDE_C_HI 0x0B34
523#define NPU_REG_WEIGHT1_BASE 0x0B40
524#define NPU_REG_WEIGHT1_BASE_HI 0x0B44
525#define NPU_REG_WEIGHT1_LENGTH 0x0B48
526#define NPU_REG_WEIGHT1_LENGTH_HI 0x0B4C
527#define NPU_REG_SCALE1_BASE 0x0B50
528#define NPU_REG_SCALE1_BASE_HI 0x0B54
529#define NPU_REG_SCALE1_LENGTH 0x0B58
530#define TSU_DEBUG_INTERNAL_REGISTERS_SIZE 0x0B5C
531
532//
533// Register subpage TSU_DEBUG_RO_INTERNAL
534//
535#define NPU_REG_KERNEL_X 0x0200
536#define NPU_REG_KERNEL_Y 0x0204
537#define NPU_REG_KERNEL_W_M1 0x0208
538#define NPU_REG_KERNEL_H_M1 0x020C
539#define NPU_REG_OFM_CBLK_WIDTH_M1 0x0210
540#define NPU_REG_OFM_CBLK_HEIGHT_M1 0x0214
541#define NPU_REG_OFM_CBLK_DEPTH_M1 0x0218
542#define NPU_REG_IFM_CBLK_DEPTH_M1 0x021C
543#define NPU_REG_OFM_X 0x0220
544#define NPU_REG_OFM_Y 0x0224
545#define NPU_REG_OFM_Z 0x0228
546#define NPU_REG_IFM_Z 0x022C
547#define NPU_REG_PAD_TOP 0x0230
548#define NPU_REG_PAD_LEFT 0x0234
549#define NPU_REG_IFM_CBLK_WIDTH 0x0238
550#define NPU_REG_IFM_CBLK_HEIGHT 0x023C
551#define NPU_REG_DMA_IFM_SRC 0x0240
552#define NPU_REG_DMA_IFM_SRC_HI 0x0244
553#define NPU_REG_DMA_IFM_DST 0x0248
554#define NPU_REG_DMA_OFM_SRC 0x024C
555#define NPU_REG_DMA_OFM_DST 0x0250
556#define NPU_REG_DMA_OFM_DST_HI 0x0254
557#define NPU_REG_DMA_WEIGHT_SRC 0x0258
558#define NPU_REG_DMA_WEIGHT_SRC_HI 0x025C
559#define NPU_REG_DMA_CMD_SRC 0x0260
560#define NPU_REG_DMA_CMD_SRC_HI 0x0264
561#define NPU_REG_DMA_CMD_SIZE 0x0268
562#define NPU_REG_DMA_M2M_SRC 0x026C
563#define NPU_REG_DMA_M2M_SRC_HI 0x0270
564#define NPU_REG_DMA_M2M_DST 0x0274
565#define NPU_REG_DMA_M2M_DST_HI 0x0278
566#define NPU_REG_CURRENT_QREAD 0x027C
567#define NPU_REG_DMA_SCALE_SRC 0x0280
568#define NPU_REG_DMA_SCALE_SRC_HI 0x0284
569#define NPU_REG_CURRENT_CMD 0x02BC
570#define TSU_DEBUG_RO_INTERNAL_REGISTERS_SIZE 0x02C0
571
572#ifdef __cplusplus
573
574// Enum types
575
576enum class acc_format : uint8_t
577{
578 INT_32BIT = 0,
579 INT_40BIT = 1,
580 FP_S5_10 = 2,
581};
582
583enum class activation : uint8_t
584{
585 NONE = 0,
586 TANH = 3,
587 SIGMOID = 4,
588 LUT_START = 16,
589 LUT_END = 23,
590};
591
592enum class clip_range : uint8_t
593{
594 OFM_PRECISION = 0,
595 FORCE_UINT8 = 2,
596 FORCE_INT8 = 3,
597 FORCE_INT16 = 5,
598};
599
600enum class cmd0 : uint16_t
601{
602 NPU_OP_STOP = 0x000,
603 NPU_OP_IRQ = 0x001,
604 NPU_OP_CONV = 0x002,
605 NPU_OP_DEPTHWISE = 0x003,
606 NPU_OP_POOL = 0x005,
607 NPU_OP_ELEMENTWISE = 0x006,
608 NPU_OP_DMA_START = 0x010,
609 NPU_OP_DMA_WAIT = 0x011,
610 NPU_OP_KERNEL_WAIT = 0x012,
611 NPU_OP_PMU_MASK = 0x013,
612 NPU_SET_IFM_PAD_TOP = 0x100,
613 NPU_SET_IFM_PAD_LEFT = 0x101,
614 NPU_SET_IFM_PAD_RIGHT = 0x102,
615 NPU_SET_IFM_PAD_BOTTOM = 0x103,
616 NPU_SET_IFM_DEPTH_M1 = 0x104,
617 NPU_SET_IFM_PRECISION = 0x105,
618 NPU_SET_IFM_UPSCALE = 0x107,
619 NPU_SET_IFM_ZERO_POINT = 0x109,
620 NPU_SET_IFM_WIDTH0_M1 = 0x10A,
621 NPU_SET_IFM_HEIGHT0_M1 = 0x10B,
622 NPU_SET_IFM_HEIGHT1_M1 = 0x10C,
623 NPU_SET_IFM_IB_END = 0x10D,
624 NPU_SET_IFM_REGION = 0x10F,
625 NPU_SET_OFM_WIDTH_M1 = 0x111,
626 NPU_SET_OFM_HEIGHT_M1 = 0x112,
627 NPU_SET_OFM_DEPTH_M1 = 0x113,
628 NPU_SET_OFM_PRECISION = 0x114,
629 NPU_SET_OFM_BLK_WIDTH_M1 = 0x115,
630 NPU_SET_OFM_BLK_HEIGHT_M1 = 0x116,
631 NPU_SET_OFM_BLK_DEPTH_M1 = 0x117,
632 NPU_SET_OFM_ZERO_POINT = 0x118,
633 NPU_SET_OFM_WIDTH0_M1 = 0x11A,
634 NPU_SET_OFM_HEIGHT0_M1 = 0x11B,
635 NPU_SET_OFM_HEIGHT1_M1 = 0x11C,
636 NPU_SET_OFM_REGION = 0x11F,
637 NPU_SET_KERNEL_WIDTH_M1 = 0x120,
638 NPU_SET_KERNEL_HEIGHT_M1 = 0x121,
639 NPU_SET_KERNEL_STRIDE = 0x122,
640 NPU_SET_PARALLEL_MODE = 0x123,
641 NPU_SET_ACC_FORMAT = 0x124,
642 NPU_SET_ACTIVATION = 0x125,
643 NPU_SET_ACTIVATION_MIN = 0x126,
644 NPU_SET_ACTIVATION_MAX = 0x127,
645 NPU_SET_WEIGHT_REGION = 0x128,
646 NPU_SET_SCALE_REGION = 0x129,
647 NPU_SET_AB_START = 0x12D,
648 NPU_SET_BLOCKDEP = 0x12F,
649 NPU_SET_DMA0_SRC_REGION = 0x130,
650 NPU_SET_DMA0_DST_REGION = 0x131,
651 NPU_SET_DMA0_SIZE0 = 0x132,
652 NPU_SET_DMA0_SIZE1 = 0x133,
653 NPU_SET_IFM2_BROADCAST = 0x180,
654 NPU_SET_IFM2_SCALAR = 0x181,
655 NPU_SET_IFM2_PRECISION = 0x185,
656 NPU_SET_IFM2_ZERO_POINT = 0x189,
657 NPU_SET_IFM2_WIDTH0_M1 = 0x18A,
658 NPU_SET_IFM2_HEIGHT0_M1 = 0x18B,
659 NPU_SET_IFM2_HEIGHT1_M1 = 0x18C,
660 NPU_SET_IFM2_IB_START = 0x18D,
661 NPU_SET_IFM2_REGION = 0x18F,
662};
663
664enum class cmd1 : uint8_t
665{
666 NPU_SET_IFM_BASE0 = 0x000,
667 NPU_SET_IFM_BASE1 = 0x001,
668 NPU_SET_IFM_BASE2 = 0x002,
669 NPU_SET_IFM_BASE3 = 0x003,
670 NPU_SET_IFM_STRIDE_X = 0x004,
671 NPU_SET_IFM_STRIDE_Y = 0x005,
672 NPU_SET_IFM_STRIDE_C = 0x006,
673 NPU_SET_OFM_BASE0 = 0x010,
674 NPU_SET_OFM_BASE1 = 0x011,
675 NPU_SET_OFM_BASE2 = 0x012,
676 NPU_SET_OFM_BASE3 = 0x013,
677 NPU_SET_OFM_STRIDE_X = 0x014,
678 NPU_SET_OFM_STRIDE_Y = 0x015,
679 NPU_SET_OFM_STRIDE_C = 0x016,
680 NPU_SET_WEIGHT_BASE = 0x020,
681 NPU_SET_WEIGHT_LENGTH = 0x021,
682 NPU_SET_SCALE_BASE = 0x022,
683 NPU_SET_SCALE_LENGTH = 0x023,
684 NPU_SET_OFM_SCALE = 0x024,
685 NPU_SET_OPA_SCALE = 0x025,
686 NPU_SET_OPB_SCALE = 0x026,
687 NPU_SET_DMA0_SRC = 0x030,
688 NPU_SET_DMA0_DST = 0x031,
689 NPU_SET_DMA0_LEN = 0x032,
690 NPU_SET_DMA0_SKIP0 = 0x033,
691 NPU_SET_DMA0_SKIP1 = 0x034,
692 NPU_SET_IFM2_BASE0 = 0x080,
693 NPU_SET_IFM2_BASE1 = 0x081,
694 NPU_SET_IFM2_BASE2 = 0x082,
695 NPU_SET_IFM2_BASE3 = 0x083,
696 NPU_SET_IFM2_STRIDE_X = 0x084,
697 NPU_SET_IFM2_STRIDE_Y = 0x085,
698 NPU_SET_IFM2_STRIDE_C = 0x086,
699 NPU_SET_WEIGHT1_BASE = 0x090,
700 NPU_SET_WEIGHT1_LENGTH = 0x091,
701 NPU_SET_SCALE1_BASE = 0x092,
702 NPU_SET_SCALE1_LENGTH = 0x093,
703};
704
705enum class data_format : uint8_t
706{
707 NHWC = 0,
708 NHCWB16 = 1,
709};
710
711enum class elementwise_mode : uint8_t
712{
713 MUL = 0,
714 ADD = 1,
715 SUB = 2,
716 MIN = 3,
717 MAX = 4,
718 LRELU = 5,
719 ABS = 6,
720 CLZ = 7,
721 SHR = 8,
722 SHL = 9,
723};
724
725enum class ifm_precision : uint8_t
726{
727 W8_U8 = 0,
728 W8_S8 = 1,
729 W8_U16 = 4,
730 W8_S16 = 5,
731 W8_S32 = 9,
732};
733
734enum class ifm_scale_mode : uint8_t
735{
736 SCALE_16BIT = 0,
737 SCALE_OPA_32BIT = 1,
738 SCALE_OPB_32BIT = 2,
739};
740
741enum class memory_type : uint8_t
742{
743 AXI0_OUTSTANDING_COUNTER0 = 0,
744 AXI0_OUTSTANDING_COUNTER1 = 1,
745 AXI1_OUTSTANDING_COUNTER2 = 2,
746 AXI1_OUTSTANDING_COUNTER3 = 3,
747};
748
749enum class ofm_precision : uint8_t
750{
751 U8 = 0,
752 S8 = 1,
753 U16 = 2,
754 S16 = 3,
755 S32 = 5,
756};
757
758enum class pmu_event_type : uint16_t
759{
760 CYCLE = 0x11,
761 NPU_IDLE = 0x20,
762 MAC_ACTIVE = 0x30,
763 MAC_ACTIVE_8BIT = 0x31,
764 MAC_ACTIVE_16BIT = 0x32,
765 MAC_DPU_ACTIVE = 0x33,
766 MAC_STALLED_BY_WD_ACC = 0x34,
767 MAC_STALLED_BY_WD = 0x35,
768 MAC_STALLED_BY_ACC = 0x36,
769 MAC_STALLED_BY_IB = 0x37,
770 AO_ACTIVE = 0x40,
771 AO_ACTIVE_8BIT = 0x41,
772 AO_ACTIVE_16BIT = 0x42,
773 AO_STALLED_BY_OFMP_OB = 0x43,
774 AO_STALLED_BY_OFMP = 0x44,
775 AO_STALLED_BY_OB = 0x45,
776 AO_STALLED_BY_ACC_IB = 0x46,
777 AO_STALLED_BY_ACC = 0x47,
778 AO_STALLED_BY_IB = 0x48,
779 WD_ACTIVE = 0x50,
780 WD_STALLED = 0x51,
781 WD_STALLED_BY_WS = 0x52,
782 WD_STALLED_BY_WD_BUF = 0x53,
783 WD_PARSE_ACTIVE = 0x54,
784 WD_PARSE_STALLED = 0x55,
785 WD_PARSE_STALLED_IN = 0x56,
786 WD_PARSE_STALLED_OUT = 0x57,
787 AXI0_RD_TRANS_ACCEPTED = 0x80,
788 AXI0_RD_TRANS_COMPLETED = 0x81,
789 AXI0_RD_DATA_BEAT_RECEIVED = 0x82,
790 AXI0_RD_TRAN_REQ_STALLED = 0x83,
791 AXI0_WR_TRANS_ACCEPTED = 0x84,
792 AXI0_WR_TRANS_COMPLETED_M = 0x85,
793 AXI0_WR_TRANS_COMPLETED_S = 0x86,
794 AXI0_WR_DATA_BEAT_WRITTEN = 0x87,
795 AXI0_WR_TRAN_REQ_STALLED = 0x88,
796 AXI0_WR_DATA_BEAT_STALLED = 0x89,
797 AXI0_ENABLED_CYCLES = 0x8c,
798 AXI0_RD_STALL_LIMIT = 0x8e,
799 AXI0_WR_STALL_LIMIT = 0x8f,
800 AXI1_RD_TRANS_ACCEPTED = 0x180,
801 AXI1_RD_TRANS_COMPLETED = 0x181,
802 AXI1_RD_DATA_BEAT_RECEIVED = 0x182,
803 AXI1_RD_TRAN_REQ_STALLED = 0x183,
804 AXI1_WR_TRANS_ACCEPTED = 0x184,
805 AXI1_WR_TRANS_COMPLETED_M = 0x185,
806 AXI1_WR_TRANS_COMPLETED_S = 0x186,
807 AXI1_WR_DATA_BEAT_WRITTEN = 0x187,
808 AXI1_WR_TRAN_REQ_STALLED = 0x188,
809 AXI1_WR_DATA_BEAT_STALLED = 0x189,
810 AXI1_ENABLED_CYCLES = 0x18c,
811 AXI1_RD_STALL_LIMIT = 0x18e,
812 AXI1_WR_STALL_LIMIT = 0x18f,
813 AXI_LATENCY_ANY = 0xa0,
814 AXI_LATENCY_32 = 0xa1,
815 AXI_LATENCY_64 = 0xa2,
816 AXI_LATENCY_128 = 0xa3,
817 AXI_LATENCY_256 = 0xa4,
818 AXI_LATENCY_512 = 0xa5,
819 AXI_LATENCY_1024 = 0xa6,
820};
821
822enum class pooling_mode : uint8_t
823{
824 MAX = 0,
825 AVERAGE = 1,
826 REDUCE_SUM = 2,
827};
828
829enum class privilege_level : uint8_t
830{
831 USER = 0,
832 PRIVILEGED = 1,
833};
834
835enum class product : uint8_t
836{
837 ETHOS_U55 = 0,
838};
839
840enum class resampling_mode : uint8_t
841{
842 NONE = 0,
843 NEAREST = 1,
844 TRANSPOSE = 2,
845};
846
847enum class rounding : uint8_t
848{
849 TFL = 0,
850 TRUNCATE = 1,
851 NATURAL = 2,
852};
853
854enum class security_level : uint8_t
855{
856 SECURE = 0,
857 NON_SECURE = 1,
858};
859
860enum class state : uint8_t
861{
862 STOPPED = 0,
863 RUNNING = 1,
864};
865
866enum class stride_mode : uint8_t
867{
868 STRIDE_MODE_1D = 0,
869 STRIDE_MODE_2D = 1,
870 STRIDE_MODE_3D = 2,
871};
872
873#else
874
875enum acc_format
876{
877 ACC_FORMAT_INT_32BIT = 0,
878 ACC_FORMAT_INT_40BIT = 1,
879 ACC_FORMAT_FP_S5_10 = 2,
880};
881
882enum activation
883{
884 ACTIVATION_NONE = 0,
885 ACTIVATION_TANH = 3,
886 ACTIVATION_SIGMOID = 4,
887 ACTIVATION_LUT_START = 16,
888 ACTIVATION_LUT_END = 23,
889};
890
891enum clip_range
892{
893 CLIP_RANGE_OFM_PRECISION = 0,
894 CLIP_RANGE_FORCE_UINT8 = 2,
895 CLIP_RANGE_FORCE_INT8 = 3,
896 CLIP_RANGE_FORCE_INT16 = 5,
897};
898
899enum cmd0
900{
901 CMD0_NPU_OP_STOP = 0x000,
902 CMD0_NPU_OP_IRQ = 0x001,
903 CMD0_NPU_OP_CONV = 0x002,
904 CMD0_NPU_OP_DEPTHWISE = 0x003,
905 CMD0_NPU_OP_POOL = 0x005,
906 CMD0_NPU_OP_ELEMENTWISE = 0x006,
907 CMD0_NPU_OP_DMA_START = 0x010,
908 CMD0_NPU_OP_DMA_WAIT = 0x011,
909 CMD0_NPU_OP_KERNEL_WAIT = 0x012,
910 CMD0_NPU_OP_PMU_MASK = 0x013,
911 CMD0_NPU_SET_IFM_PAD_TOP = 0x100,
912 CMD0_NPU_SET_IFM_PAD_LEFT = 0x101,
913 CMD0_NPU_SET_IFM_PAD_RIGHT = 0x102,
914 CMD0_NPU_SET_IFM_PAD_BOTTOM = 0x103,
915 CMD0_NPU_SET_IFM_DEPTH_M1 = 0x104,
916 CMD0_NPU_SET_IFM_PRECISION = 0x105,
917 CMD0_NPU_SET_IFM_UPSCALE = 0x107,
918 CMD0_NPU_SET_IFM_ZERO_POINT = 0x109,
919 CMD0_NPU_SET_IFM_WIDTH0_M1 = 0x10A,
920 CMD0_NPU_SET_IFM_HEIGHT0_M1 = 0x10B,
921 CMD0_NPU_SET_IFM_HEIGHT1_M1 = 0x10C,
922 CMD0_NPU_SET_IFM_IB_END = 0x10D,
923 CMD0_NPU_SET_IFM_REGION = 0x10F,
924 CMD0_NPU_SET_OFM_WIDTH_M1 = 0x111,
925 CMD0_NPU_SET_OFM_HEIGHT_M1 = 0x112,
926 CMD0_NPU_SET_OFM_DEPTH_M1 = 0x113,
927 CMD0_NPU_SET_OFM_PRECISION = 0x114,
928 CMD0_NPU_SET_OFM_BLK_WIDTH_M1 = 0x115,
929 CMD0_NPU_SET_OFM_BLK_HEIGHT_M1 = 0x116,
930 CMD0_NPU_SET_OFM_BLK_DEPTH_M1 = 0x117,
931 CMD0_NPU_SET_OFM_ZERO_POINT = 0x118,
932 CMD0_NPU_SET_OFM_WIDTH0_M1 = 0x11A,
933 CMD0_NPU_SET_OFM_HEIGHT0_M1 = 0x11B,
934 CMD0_NPU_SET_OFM_HEIGHT1_M1 = 0x11C,
935 CMD0_NPU_SET_OFM_REGION = 0x11F,
936 CMD0_NPU_SET_KERNEL_WIDTH_M1 = 0x120,
937 CMD0_NPU_SET_KERNEL_HEIGHT_M1 = 0x121,
938 CMD0_NPU_SET_KERNEL_STRIDE = 0x122,
939 CMD0_NPU_SET_PARALLEL_MODE = 0x123,
940 CMD0_NPU_SET_ACC_FORMAT = 0x124,
941 CMD0_NPU_SET_ACTIVATION = 0x125,
942 CMD0_NPU_SET_ACTIVATION_MIN = 0x126,
943 CMD0_NPU_SET_ACTIVATION_MAX = 0x127,
944 CMD0_NPU_SET_WEIGHT_REGION = 0x128,
945 CMD0_NPU_SET_SCALE_REGION = 0x129,
946 CMD0_NPU_SET_AB_START = 0x12D,
947 CMD0_NPU_SET_BLOCKDEP = 0x12F,
948 CMD0_NPU_SET_DMA0_SRC_REGION = 0x130,
949 CMD0_NPU_SET_DMA0_DST_REGION = 0x131,
950 CMD0_NPU_SET_DMA0_SIZE0 = 0x132,
951 CMD0_NPU_SET_DMA0_SIZE1 = 0x133,
952 CMD0_NPU_SET_IFM2_BROADCAST = 0x180,
953 CMD0_NPU_SET_IFM2_SCALAR = 0x181,
954 CMD0_NPU_SET_IFM2_PRECISION = 0x185,
955 CMD0_NPU_SET_IFM2_ZERO_POINT = 0x189,
956 CMD0_NPU_SET_IFM2_WIDTH0_M1 = 0x18A,
957 CMD0_NPU_SET_IFM2_HEIGHT0_M1 = 0x18B,
958 CMD0_NPU_SET_IFM2_HEIGHT1_M1 = 0x18C,
959 CMD0_NPU_SET_IFM2_IB_START = 0x18D,
960 CMD0_NPU_SET_IFM2_REGION = 0x18F,
961};
962
963enum cmd1
964{
965 CMD1_NPU_SET_IFM_BASE0 = 0x000,
966 CMD1_NPU_SET_IFM_BASE1 = 0x001,
967 CMD1_NPU_SET_IFM_BASE2 = 0x002,
968 CMD1_NPU_SET_IFM_BASE3 = 0x003,
969 CMD1_NPU_SET_IFM_STRIDE_X = 0x004,
970 CMD1_NPU_SET_IFM_STRIDE_Y = 0x005,
971 CMD1_NPU_SET_IFM_STRIDE_C = 0x006,
972 CMD1_NPU_SET_OFM_BASE0 = 0x010,
973 CMD1_NPU_SET_OFM_BASE1 = 0x011,
974 CMD1_NPU_SET_OFM_BASE2 = 0x012,
975 CMD1_NPU_SET_OFM_BASE3 = 0x013,
976 CMD1_NPU_SET_OFM_STRIDE_X = 0x014,
977 CMD1_NPU_SET_OFM_STRIDE_Y = 0x015,
978 CMD1_NPU_SET_OFM_STRIDE_C = 0x016,
979 CMD1_NPU_SET_WEIGHT_BASE = 0x020,
980 CMD1_NPU_SET_WEIGHT_LENGTH = 0x021,
981 CMD1_NPU_SET_SCALE_BASE = 0x022,
982 CMD1_NPU_SET_SCALE_LENGTH = 0x023,
983 CMD1_NPU_SET_OFM_SCALE = 0x024,
984 CMD1_NPU_SET_OPA_SCALE = 0x025,
985 CMD1_NPU_SET_OPB_SCALE = 0x026,
986 CMD1_NPU_SET_DMA0_SRC = 0x030,
987 CMD1_NPU_SET_DMA0_DST = 0x031,
988 CMD1_NPU_SET_DMA0_LEN = 0x032,
989 CMD1_NPU_SET_DMA0_SKIP0 = 0x033,
990 CMD1_NPU_SET_DMA0_SKIP1 = 0x034,
991 CMD1_NPU_SET_IFM2_BASE0 = 0x080,
992 CMD1_NPU_SET_IFM2_BASE1 = 0x081,
993 CMD1_NPU_SET_IFM2_BASE2 = 0x082,
994 CMD1_NPU_SET_IFM2_BASE3 = 0x083,
995 CMD1_NPU_SET_IFM2_STRIDE_X = 0x084,
996 CMD1_NPU_SET_IFM2_STRIDE_Y = 0x085,
997 CMD1_NPU_SET_IFM2_STRIDE_C = 0x086,
998 CMD1_NPU_SET_WEIGHT1_BASE = 0x090,
999 CMD1_NPU_SET_WEIGHT1_LENGTH = 0x091,
1000 CMD1_NPU_SET_SCALE1_BASE = 0x092,
1001 CMD1_NPU_SET_SCALE1_LENGTH = 0x093,
1002};
1003
1004enum data_format
1005{
1006 DATA_FORMAT_NHWC = 0,
1007 DATA_FORMAT_NHCWB16 = 1,
1008};
1009
1010enum elementwise_mode
1011{
1012 ELEMENTWISE_MODE_MUL = 0,
1013 ELEMENTWISE_MODE_ADD = 1,
1014 ELEMENTWISE_MODE_SUB = 2,
1015 ELEMENTWISE_MODE_MIN = 3,
1016 ELEMENTWISE_MODE_MAX = 4,
1017 ELEMENTWISE_MODE_LRELU = 5,
1018 ELEMENTWISE_MODE_ABS = 6,
1019 ELEMENTWISE_MODE_CLZ = 7,
1020 ELEMENTWISE_MODE_SHR = 8,
1021 ELEMENTWISE_MODE_SHL = 9,
1022};
1023
1024enum ifm_precision
1025{
1026 IFM_PRECISION_W8_U8 = 0,
1027 IFM_PRECISION_W8_S8 = 1,
1028 IFM_PRECISION_W8_U16 = 4,
1029 IFM_PRECISION_W8_S16 = 5,
1030 IFM_PRECISION_W8_S32 = 9,
1031};
1032
1033enum ifm_scale_mode
1034{
1035 IFM_SCALE_MODE_SCALE_16BIT = 0,
1036 IFM_SCALE_MODE_SCALE_OPA_32BIT = 1,
1037 IFM_SCALE_MODE_SCALE_OPB_32BIT = 2,
1038};
1039
1040enum memory_type
1041{
1042 MEMORY_TYPE_AXI0_OUTSTANDING_COUNTER0 = 0,
1043 MEMORY_TYPE_AXI0_OUTSTANDING_COUNTER1 = 1,
1044 MEMORY_TYPE_AXI1_OUTSTANDING_COUNTER2 = 2,
1045 MEMORY_TYPE_AXI1_OUTSTANDING_COUNTER3 = 3,
1046};
1047
1048enum ofm_precision
1049{
1050 OFM_PRECISION_U8 = 0,
1051 OFM_PRECISION_S8 = 1,
1052 OFM_PRECISION_U16 = 2,
1053 OFM_PRECISION_S16 = 3,
1054 OFM_PRECISION_S32 = 5,
1055};
1056
1057enum pmu_event_type
1058{
1059 PMU_EVENT_TYPE_CYCLE = 0x11,
1060 PMU_EVENT_TYPE_NPU_IDLE = 0x20,
1061 PMU_EVENT_TYPE_MAC_ACTIVE = 0x30,
1062 PMU_EVENT_TYPE_MAC_ACTIVE_8BIT = 0x31,
1063 PMU_EVENT_TYPE_MAC_ACTIVE_16BIT = 0x32,
1064 PMU_EVENT_TYPE_MAC_DPU_ACTIVE = 0x33,
1065 PMU_EVENT_TYPE_MAC_STALLED_BY_WD_ACC = 0x34,
1066 PMU_EVENT_TYPE_MAC_STALLED_BY_WD = 0x35,
1067 PMU_EVENT_TYPE_MAC_STALLED_BY_ACC = 0x36,
1068 PMU_EVENT_TYPE_MAC_STALLED_BY_IB = 0x37,
1069 PMU_EVENT_TYPE_AO_ACTIVE = 0x40,
1070 PMU_EVENT_TYPE_AO_ACTIVE_8BIT = 0x41,
1071 PMU_EVENT_TYPE_AO_ACTIVE_16BIT = 0x42,
1072 PMU_EVENT_TYPE_AO_STALLED_BY_OFMP_OB = 0x43,
1073 PMU_EVENT_TYPE_AO_STALLED_BY_OFMP = 0x44,
1074 PMU_EVENT_TYPE_AO_STALLED_BY_OB = 0x45,
1075 PMU_EVENT_TYPE_AO_STALLED_BY_ACC_IB = 0x46,
1076 PMU_EVENT_TYPE_AO_STALLED_BY_ACC = 0x47,
1077 PMU_EVENT_TYPE_AO_STALLED_BY_IB = 0x48,
1078 PMU_EVENT_TYPE_WD_ACTIVE = 0x50,
1079 PMU_EVENT_TYPE_WD_STALLED = 0x51,
1080 PMU_EVENT_TYPE_WD_STALLED_BY_WS = 0x52,
1081 PMU_EVENT_TYPE_WD_STALLED_BY_WD_BUF = 0x53,
1082 PMU_EVENT_TYPE_WD_PARSE_ACTIVE = 0x54,
1083 PMU_EVENT_TYPE_WD_PARSE_STALLED = 0x55,
1084 PMU_EVENT_TYPE_WD_PARSE_STALLED_IN = 0x56,
1085 PMU_EVENT_TYPE_WD_PARSE_STALLED_OUT = 0x57,
1086 PMU_EVENT_TYPE_AXI0_RD_TRANS_ACCEPTED = 0x80,
1087 PMU_EVENT_TYPE_AXI0_RD_TRANS_COMPLETED = 0x81,
1088 PMU_EVENT_TYPE_AXI0_RD_DATA_BEAT_RECEIVED = 0x82,
1089 PMU_EVENT_TYPE_AXI0_RD_TRAN_REQ_STALLED = 0x83,
1090 PMU_EVENT_TYPE_AXI0_WR_TRANS_ACCEPTED = 0x84,
1091 PMU_EVENT_TYPE_AXI0_WR_TRANS_COMPLETED_M = 0x85,
1092 PMU_EVENT_TYPE_AXI0_WR_TRANS_COMPLETED_S = 0x86,
1093 PMU_EVENT_TYPE_AXI0_WR_DATA_BEAT_WRITTEN = 0x87,
1094 PMU_EVENT_TYPE_AXI0_WR_TRAN_REQ_STALLED = 0x88,
1095 PMU_EVENT_TYPE_AXI0_WR_DATA_BEAT_STALLED = 0x89,
1096 PMU_EVENT_TYPE_AXI0_ENABLED_CYCLES = 0x8c,
1097 PMU_EVENT_TYPE_AXI0_RD_STALL_LIMIT = 0x8e,
1098 PMU_EVENT_TYPE_AXI0_WR_STALL_LIMIT = 0x8f,
1099 PMU_EVENT_TYPE_AXI1_RD_TRANS_ACCEPTED = 0x180,
1100 PMU_EVENT_TYPE_AXI1_RD_TRANS_COMPLETED = 0x181,
1101 PMU_EVENT_TYPE_AXI1_RD_DATA_BEAT_RECEIVED = 0x182,
1102 PMU_EVENT_TYPE_AXI1_RD_TRAN_REQ_STALLED = 0x183,
1103 PMU_EVENT_TYPE_AXI1_WR_TRANS_ACCEPTED = 0x184,
1104 PMU_EVENT_TYPE_AXI1_WR_TRANS_COMPLETED_M = 0x185,
1105 PMU_EVENT_TYPE_AXI1_WR_TRANS_COMPLETED_S = 0x186,
1106 PMU_EVENT_TYPE_AXI1_WR_DATA_BEAT_WRITTEN = 0x187,
1107 PMU_EVENT_TYPE_AXI1_WR_TRAN_REQ_STALLED = 0x188,
1108 PMU_EVENT_TYPE_AXI1_WR_DATA_BEAT_STALLED = 0x189,
1109 PMU_EVENT_TYPE_AXI1_ENABLED_CYCLES = 0x18c,
1110 PMU_EVENT_TYPE_AXI1_RD_STALL_LIMIT = 0x18e,
1111 PMU_EVENT_TYPE_AXI1_WR_STALL_LIMIT = 0x18f,
1112 PMU_EVENT_TYPE_AXI_LATENCY_ANY = 0xa0,
1113 PMU_EVENT_TYPE_AXI_LATENCY_32 = 0xa1,
1114 PMU_EVENT_TYPE_AXI_LATENCY_64 = 0xa2,
1115 PMU_EVENT_TYPE_AXI_LATENCY_128 = 0xa3,
1116 PMU_EVENT_TYPE_AXI_LATENCY_256 = 0xa4,
1117 PMU_EVENT_TYPE_AXI_LATENCY_512 = 0xa5,
1118 PMU_EVENT_TYPE_AXI_LATENCY_1024 = 0xa6,
1119};
1120
1121enum pooling_mode
1122{
1123 POOLING_MODE_MAX = 0,
1124 POOLING_MODE_AVERAGE = 1,
1125 POOLING_MODE_REDUCE_SUM = 2,
1126};
1127
1128enum privilege_level
1129{
1130 PRIVILEGE_LEVEL_USER = 0,
1131 PRIVILEGE_LEVEL_PRIVILEGED = 1,
1132};
1133
1134enum product
1135{
1136 PRODUCT_ETHOS_U55 = 0,
1137};
1138
1139enum resampling_mode
1140{
1141 RESAMPLING_MODE_NONE = 0,
1142 RESAMPLING_MODE_NEAREST = 1,
1143 RESAMPLING_MODE_TRANSPOSE = 2,
1144};
1145
1146enum rounding
1147{
1148 ROUNDING_TFL = 0,
1149 ROUNDING_TRUNCATE = 1,
1150 ROUNDING_NATURAL = 2,
1151};
1152
1153enum security_level
1154{
1155 SECURITY_LEVEL_SECURE = 0,
1156 SECURITY_LEVEL_NON_SECURE = 1,
1157};
1158
1159enum state
1160{
1161 STATE_STOPPED = 0,
1162 STATE_RUNNING = 1,
1163};
1164
1165enum stride_mode
1166{
1167 STRIDE_MODE_STRIDE_MODE_1D = 0,
1168 STRIDE_MODE_STRIDE_MODE_2D = 1,
1169 STRIDE_MODE_STRIDE_MODE_3D = 2,
1170};
1171
1172#endif
1173
1174// clkforce_r - Force clocks on for clock gating
1175struct clkforce_r
1176{
1177#ifdef __cplusplus
1178 private:
1179#endif //__cplusplus
1180#ifdef MODEL_REGS
1181 ::core::dt::uint_t<1> top_level_clk; // set to 1 to force on TOP level clock
1182 ::core::dt::uint_t<1> cc_clk; // set to 1 to force on CC clock
1183 ::core::dt::uint_t<1> dma_clk; // set to 1 to force on DMA clock
1184 ::core::dt::uint_t<1> mac_clk; // set to 1 to force on MAC clock
1185 ::core::dt::uint_t<1> ao_clk; // set to 1 to force on AO clock
1186 ::core::dt::uint_t<1> wd_clk; // set to 1 to force on WD clock
1187#else
1188 union
1189 {
1190 struct
1191 {
1192 uint32_t top_level_clk : 1; // set to 1 to force on TOP level clock
1193 uint32_t cc_clk : 1; // set to 1 to force on CC clock
1194 uint32_t dma_clk : 1; // set to 1 to force on DMA clock
1195 uint32_t mac_clk : 1; // set to 1 to force on MAC clock
1196 uint32_t ao_clk : 1; // set to 1 to force on AO clock
1197 uint32_t wd_clk : 1; // set to 1 to force on WD clock
1198 uint32_t reserved0 : 26;
1199 };
1200 uint32_t word;
1201 };
1202#endif
1203#ifdef __cplusplus
1204 public:
1205#ifdef MODEL_REGS
1206 CONSTEXPR clkforce_r() :
1207 top_level_clk(static_cast<uint32_t>(0)), cc_clk(static_cast<uint32_t>(0)), dma_clk(static_cast<uint32_t>(0)),
1208 mac_clk(static_cast<uint32_t>(0)), ao_clk(static_cast<uint32_t>(0)), wd_clk(static_cast<uint32_t>(0))
1209 {
1210 }
1211 CONSTEXPR clkforce_r(uint32_t value) :
1212 top_level_clk(value >> 0), cc_clk(value >> 1), dma_clk(value >> 2), mac_clk(value >> 3), ao_clk(value >> 4),
1213 wd_clk(value >> 5)
1214 {
1215 }
1216 CONSTEXPR void operator=(uint32_t value)
1217 {
1218 top_level_clk = value >> 0;
1219 cc_clk = value >> 1;
1220 dma_clk = value >> 2;
1221 mac_clk = value >> 3;
1222 ao_clk = value >> 4;
1223 wd_clk = value >> 5;
1224 }
1225 CONSTEXPR operator uint32_t() const
1226 {
1227 return (top_level_clk << 0) | (cc_clk << 1) | (dma_clk << 2) | (mac_clk << 3) | (ao_clk << 4) | (wd_clk << 5);
1228 }
1229 clkforce_r copy()
1230 {
1231 return *this;
1232 }
1233#else
1234 CONSTEXPR clkforce_r() :
1235 top_level_clk(static_cast<uint32_t>(0)), cc_clk(static_cast<uint32_t>(0)), dma_clk(static_cast<uint32_t>(0)),
1236 mac_clk(static_cast<uint32_t>(0)), ao_clk(static_cast<uint32_t>(0)), wd_clk(static_cast<uint32_t>(0)),
1237 reserved0(static_cast<uint32_t>(0))
1238 {
1239 }
1240 CONSTEXPR clkforce_r(uint32_t init) : word(init) {}
1241 CONSTEXPR void operator=(uint32_t value)
1242 {
1243 word = value;
1244 }
1245 void operator=(uint32_t value) volatile
1246 {
1247 word = value;
1248 }
1249 CONSTEXPR operator uint32_t()
1250 {
1251 return word;
1252 }
1253 operator uint32_t() volatile
1254 {
1255 return word;
1256 }
1257 clkforce_r copy() volatile
1258 {
1259 return *this;
1260 }
1261#endif
1262 CONSTEXPR uint32_t get_top_level_clk() const
1263 {
1264 uint32_t value = static_cast<uint32_t>(top_level_clk);
1265 return value;
1266 }
1267#ifndef MODEL_REGS
1268 uint32_t get_top_level_clk() const volatile
1269 {
1270 uint32_t value = static_cast<uint32_t>(top_level_clk);
1271 return value;
1272 }
1273#endif
1274 CONSTEXPR clkforce_r &set_top_level_clk(uint32_t value)
1275 {
1276 top_level_clk = ((1u << 1) - 1) & static_cast<uint32_t>(value);
1277 return *this;
1278 }
1279 CONSTEXPR uint32_t get_cc_clk() const
1280 {
1281 uint32_t value = static_cast<uint32_t>(cc_clk);
1282 return value;
1283 }
1284#ifndef MODEL_REGS
1285 uint32_t get_cc_clk() const volatile
1286 {
1287 uint32_t value = static_cast<uint32_t>(cc_clk);
1288 return value;
1289 }
1290#endif
1291 CONSTEXPR clkforce_r &set_cc_clk(uint32_t value)
1292 {
1293 cc_clk = ((1u << 1) - 1) & static_cast<uint32_t>(value);
1294 return *this;
1295 }
1296 CONSTEXPR uint32_t get_dma_clk() const
1297 {
1298 uint32_t value = static_cast<uint32_t>(dma_clk);
1299 return value;
1300 }
1301#ifndef MODEL_REGS
1302 uint32_t get_dma_clk() const volatile
1303 {
1304 uint32_t value = static_cast<uint32_t>(dma_clk);
1305 return value;
1306 }
1307#endif
1308 CONSTEXPR clkforce_r &set_dma_clk(uint32_t value)
1309 {
1310 dma_clk = ((1u << 1) - 1) & static_cast<uint32_t>(value);
1311 return *this;
1312 }
1313 CONSTEXPR uint32_t get_mac_clk() const
1314 {
1315 uint32_t value = static_cast<uint32_t>(mac_clk);
1316 return value;
1317 }
1318#ifndef MODEL_REGS
1319 uint32_t get_mac_clk() const volatile
1320 {
1321 uint32_t value = static_cast<uint32_t>(mac_clk);
1322 return value;
1323 }
1324#endif
1325 CONSTEXPR clkforce_r &set_mac_clk(uint32_t value)
1326 {
1327 mac_clk = ((1u << 1) - 1) & static_cast<uint32_t>(value);
1328 return *this;
1329 }
1330 CONSTEXPR uint32_t get_ao_clk() const
1331 {
1332 uint32_t value = static_cast<uint32_t>(ao_clk);
1333 return value;
1334 }
1335#ifndef MODEL_REGS
1336 uint32_t get_ao_clk() const volatile
1337 {
1338 uint32_t value = static_cast<uint32_t>(ao_clk);
1339 return value;
1340 }
1341#endif
1342 CONSTEXPR clkforce_r &set_ao_clk(uint32_t value)
1343 {
1344 ao_clk = ((1u << 1) - 1) & static_cast<uint32_t>(value);
1345 return *this;
1346 }
1347 CONSTEXPR uint32_t get_wd_clk() const
1348 {
1349 uint32_t value = static_cast<uint32_t>(wd_clk);
1350 return value;
1351 }
1352#ifndef MODEL_REGS
1353 uint32_t get_wd_clk() const volatile
1354 {
1355 uint32_t value = static_cast<uint32_t>(wd_clk);
1356 return value;
1357 }
1358#endif
1359 CONSTEXPR clkforce_r &set_wd_clk(uint32_t value)
1360 {
1361 wd_clk = ((1u << 1) - 1) & static_cast<uint32_t>(value);
1362 return *this;
1363 }
1364#endif //__cplusplus
1365};
1366
1367// basep0_r - Lower 32 bits of the Base pointer for region index 0
1368struct basep0_r
1369{
1370#ifdef __cplusplus
1371 private:
1372#endif //__cplusplus
1373#ifdef MODEL_REGS
1374 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
1375#else
1376 union
1377 {
1378 uint32_t addr_word; // The low word of the 64-bit address
1379 uint32_t word;
1380 };
1381#endif
1382#ifdef __cplusplus
1383 public:
1384#ifdef MODEL_REGS
1385 CONSTEXPR basep0_r() : addr_word(static_cast<uint32_t>(0)) {}
1386 CONSTEXPR basep0_r(uint32_t value) : addr_word(value >> 0) {}
1387 CONSTEXPR void operator=(uint32_t value)
1388 {
1389 addr_word = value >> 0;
1390 }
1391 CONSTEXPR operator uint32_t() const
1392 {
1393 return (addr_word << 0);
1394 }
1395 basep0_r copy()
1396 {
1397 return *this;
1398 }
1399#else
1400 CONSTEXPR basep0_r() : addr_word(static_cast<uint32_t>(0)) {}
1401 CONSTEXPR basep0_r(uint32_t init) : word(init) {}
1402 CONSTEXPR void operator=(uint32_t value)
1403 {
1404 word = value;
1405 }
1406 void operator=(uint32_t value) volatile
1407 {
1408 word = value;
1409 }
1410 CONSTEXPR operator uint32_t()
1411 {
1412 return word;
1413 }
1414 operator uint32_t() volatile
1415 {
1416 return word;
1417 }
1418 basep0_r copy() volatile
1419 {
1420 return *this;
1421 }
1422#endif
1423 CONSTEXPR uint32_t get_addr_word() const
1424 {
1425 uint32_t value = static_cast<uint32_t>(addr_word);
1426 return value;
1427 }
1428#ifndef MODEL_REGS
1429 uint32_t get_addr_word() const volatile
1430 {
1431 uint32_t value = static_cast<uint32_t>(addr_word);
1432 return value;
1433 }
1434#endif
1435 CONSTEXPR basep0_r &set_addr_word(uint32_t value)
1436 {
1437 addr_word = static_cast<uint32_t>(value);
1438 return *this;
1439 }
1440#endif //__cplusplus
1441};
1442
1443// basep1_r - Upper 32 bits of the Base pointer for region index 0
1444struct basep1_r
1445{
1446#ifdef __cplusplus
1447 private:
1448#endif //__cplusplus
1449#ifdef MODEL_REGS
1450 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
1451#else
1452 union
1453 {
1454 uint32_t addr_word; // The high word of the 64-bit address
1455 uint32_t word;
1456 };
1457#endif
1458#ifdef __cplusplus
1459 public:
1460#ifdef MODEL_REGS
1461 CONSTEXPR basep1_r() : addr_word(static_cast<uint32_t>(0)) {}
1462 CONSTEXPR basep1_r(uint32_t value) : addr_word(value >> 0) {}
1463 CONSTEXPR void operator=(uint32_t value)
1464 {
1465 addr_word = value >> 0;
1466 }
1467 CONSTEXPR operator uint32_t() const
1468 {
1469 return (addr_word << 0);
1470 }
1471 basep1_r copy()
1472 {
1473 return *this;
1474 }
1475#else
1476 CONSTEXPR basep1_r() : addr_word(static_cast<uint32_t>(0)) {}
1477 CONSTEXPR basep1_r(uint32_t init) : word(init) {}
1478 CONSTEXPR void operator=(uint32_t value)
1479 {
1480 word = value;
1481 }
1482 void operator=(uint32_t value) volatile
1483 {
1484 word = value;
1485 }
1486 CONSTEXPR operator uint32_t()
1487 {
1488 return word;
1489 }
1490 operator uint32_t() volatile
1491 {
1492 return word;
1493 }
1494 basep1_r copy() volatile
1495 {
1496 return *this;
1497 }
1498#endif
1499 CONSTEXPR uint32_t get_addr_word() const
1500 {
1501 uint32_t value = static_cast<uint32_t>(addr_word);
1502 return value;
1503 }
1504#ifndef MODEL_REGS
1505 uint32_t get_addr_word() const volatile
1506 {
1507 uint32_t value = static_cast<uint32_t>(addr_word);
1508 return value;
1509 }
1510#endif
1511 CONSTEXPR basep1_r &set_addr_word(uint32_t value)
1512 {
1513 addr_word = static_cast<uint32_t>(value);
1514 return *this;
1515 }
1516#endif //__cplusplus
1517};
1518
1519// basep2_r - Lower 32 bits of the Base pointer for region index 1
1520struct basep2_r
1521{
1522#ifdef __cplusplus
1523 private:
1524#endif //__cplusplus
1525#ifdef MODEL_REGS
1526 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
1527#else
1528 union
1529 {
1530 uint32_t addr_word; // The low word of the 64-bit address
1531 uint32_t word;
1532 };
1533#endif
1534#ifdef __cplusplus
1535 public:
1536#ifdef MODEL_REGS
1537 CONSTEXPR basep2_r() : addr_word(static_cast<uint32_t>(0)) {}
1538 CONSTEXPR basep2_r(uint32_t value) : addr_word(value >> 0) {}
1539 CONSTEXPR void operator=(uint32_t value)
1540 {
1541 addr_word = value >> 0;
1542 }
1543 CONSTEXPR operator uint32_t() const
1544 {
1545 return (addr_word << 0);
1546 }
1547 basep2_r copy()
1548 {
1549 return *this;
1550 }
1551#else
1552 CONSTEXPR basep2_r() : addr_word(static_cast<uint32_t>(0)) {}
1553 CONSTEXPR basep2_r(uint32_t init) : word(init) {}
1554 CONSTEXPR void operator=(uint32_t value)
1555 {
1556 word = value;
1557 }
1558 void operator=(uint32_t value) volatile
1559 {
1560 word = value;
1561 }
1562 CONSTEXPR operator uint32_t()
1563 {
1564 return word;
1565 }
1566 operator uint32_t() volatile
1567 {
1568 return word;
1569 }
1570 basep2_r copy() volatile
1571 {
1572 return *this;
1573 }
1574#endif
1575 CONSTEXPR uint32_t get_addr_word() const
1576 {
1577 uint32_t value = static_cast<uint32_t>(addr_word);
1578 return value;
1579 }
1580#ifndef MODEL_REGS
1581 uint32_t get_addr_word() const volatile
1582 {
1583 uint32_t value = static_cast<uint32_t>(addr_word);
1584 return value;
1585 }
1586#endif
1587 CONSTEXPR basep2_r &set_addr_word(uint32_t value)
1588 {
1589 addr_word = static_cast<uint32_t>(value);
1590 return *this;
1591 }
1592#endif //__cplusplus
1593};
1594
1595// basep3_r - Upper 32 bits of the Base pointer for region index 1
1596struct basep3_r
1597{
1598#ifdef __cplusplus
1599 private:
1600#endif //__cplusplus
1601#ifdef MODEL_REGS
1602 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
1603#else
1604 union
1605 {
1606 uint32_t addr_word; // The high word of the 64-bit address
1607 uint32_t word;
1608 };
1609#endif
1610#ifdef __cplusplus
1611 public:
1612#ifdef MODEL_REGS
1613 CONSTEXPR basep3_r() : addr_word(static_cast<uint32_t>(0)) {}
1614 CONSTEXPR basep3_r(uint32_t value) : addr_word(value >> 0) {}
1615 CONSTEXPR void operator=(uint32_t value)
1616 {
1617 addr_word = value >> 0;
1618 }
1619 CONSTEXPR operator uint32_t() const
1620 {
1621 return (addr_word << 0);
1622 }
1623 basep3_r copy()
1624 {
1625 return *this;
1626 }
1627#else
1628 CONSTEXPR basep3_r() : addr_word(static_cast<uint32_t>(0)) {}
1629 CONSTEXPR basep3_r(uint32_t init) : word(init) {}
1630 CONSTEXPR void operator=(uint32_t value)
1631 {
1632 word = value;
1633 }
1634 void operator=(uint32_t value) volatile
1635 {
1636 word = value;
1637 }
1638 CONSTEXPR operator uint32_t()
1639 {
1640 return word;
1641 }
1642 operator uint32_t() volatile
1643 {
1644 return word;
1645 }
1646 basep3_r copy() volatile
1647 {
1648 return *this;
1649 }
1650#endif
1651 CONSTEXPR uint32_t get_addr_word() const
1652 {
1653 uint32_t value = static_cast<uint32_t>(addr_word);
1654 return value;
1655 }
1656#ifndef MODEL_REGS
1657 uint32_t get_addr_word() const volatile
1658 {
1659 uint32_t value = static_cast<uint32_t>(addr_word);
1660 return value;
1661 }
1662#endif
1663 CONSTEXPR basep3_r &set_addr_word(uint32_t value)
1664 {
1665 addr_word = static_cast<uint32_t>(value);
1666 return *this;
1667 }
1668#endif //__cplusplus
1669};
1670
1671// basep4_r - Lower 32 bits of the Base pointer for region index 2
1672struct basep4_r
1673{
1674#ifdef __cplusplus
1675 private:
1676#endif //__cplusplus
1677#ifdef MODEL_REGS
1678 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
1679#else
1680 union
1681 {
1682 uint32_t addr_word; // The low word of the 64-bit address
1683 uint32_t word;
1684 };
1685#endif
1686#ifdef __cplusplus
1687 public:
1688#ifdef MODEL_REGS
1689 CONSTEXPR basep4_r() : addr_word(static_cast<uint32_t>(0)) {}
1690 CONSTEXPR basep4_r(uint32_t value) : addr_word(value >> 0) {}
1691 CONSTEXPR void operator=(uint32_t value)
1692 {
1693 addr_word = value >> 0;
1694 }
1695 CONSTEXPR operator uint32_t() const
1696 {
1697 return (addr_word << 0);
1698 }
1699 basep4_r copy()
1700 {
1701 return *this;
1702 }
1703#else
1704 CONSTEXPR basep4_r() : addr_word(static_cast<uint32_t>(0)) {}
1705 CONSTEXPR basep4_r(uint32_t init) : word(init) {}
1706 CONSTEXPR void operator=(uint32_t value)
1707 {
1708 word = value;
1709 }
1710 void operator=(uint32_t value) volatile
1711 {
1712 word = value;
1713 }
1714 CONSTEXPR operator uint32_t()
1715 {
1716 return word;
1717 }
1718 operator uint32_t() volatile
1719 {
1720 return word;
1721 }
1722 basep4_r copy() volatile
1723 {
1724 return *this;
1725 }
1726#endif
1727 CONSTEXPR uint32_t get_addr_word() const
1728 {
1729 uint32_t value = static_cast<uint32_t>(addr_word);
1730 return value;
1731 }
1732#ifndef MODEL_REGS
1733 uint32_t get_addr_word() const volatile
1734 {
1735 uint32_t value = static_cast<uint32_t>(addr_word);
1736 return value;
1737 }
1738#endif
1739 CONSTEXPR basep4_r &set_addr_word(uint32_t value)
1740 {
1741 addr_word = static_cast<uint32_t>(value);
1742 return *this;
1743 }
1744#endif //__cplusplus
1745};
1746
1747// basep5_r - Upper 32 bits of the Base pointer for region index 2
1748struct basep5_r
1749{
1750#ifdef __cplusplus
1751 private:
1752#endif //__cplusplus
1753#ifdef MODEL_REGS
1754 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
1755#else
1756 union
1757 {
1758 uint32_t addr_word; // The high word of the 64-bit address
1759 uint32_t word;
1760 };
1761#endif
1762#ifdef __cplusplus
1763 public:
1764#ifdef MODEL_REGS
1765 CONSTEXPR basep5_r() : addr_word(static_cast<uint32_t>(0)) {}
1766 CONSTEXPR basep5_r(uint32_t value) : addr_word(value >> 0) {}
1767 CONSTEXPR void operator=(uint32_t value)
1768 {
1769 addr_word = value >> 0;
1770 }
1771 CONSTEXPR operator uint32_t() const
1772 {
1773 return (addr_word << 0);
1774 }
1775 basep5_r copy()
1776 {
1777 return *this;
1778 }
1779#else
1780 CONSTEXPR basep5_r() : addr_word(static_cast<uint32_t>(0)) {}
1781 CONSTEXPR basep5_r(uint32_t init) : word(init) {}
1782 CONSTEXPR void operator=(uint32_t value)
1783 {
1784 word = value;
1785 }
1786 void operator=(uint32_t value) volatile
1787 {
1788 word = value;
1789 }
1790 CONSTEXPR operator uint32_t()
1791 {
1792 return word;
1793 }
1794 operator uint32_t() volatile
1795 {
1796 return word;
1797 }
1798 basep5_r copy() volatile
1799 {
1800 return *this;
1801 }
1802#endif
1803 CONSTEXPR uint32_t get_addr_word() const
1804 {
1805 uint32_t value = static_cast<uint32_t>(addr_word);
1806 return value;
1807 }
1808#ifndef MODEL_REGS
1809 uint32_t get_addr_word() const volatile
1810 {
1811 uint32_t value = static_cast<uint32_t>(addr_word);
1812 return value;
1813 }
1814#endif
1815 CONSTEXPR basep5_r &set_addr_word(uint32_t value)
1816 {
1817 addr_word = static_cast<uint32_t>(value);
1818 return *this;
1819 }
1820#endif //__cplusplus
1821};
1822
1823// basep6_r - Lower 32 bits of the Base pointer for region index 3
1824struct basep6_r
1825{
1826#ifdef __cplusplus
1827 private:
1828#endif //__cplusplus
1829#ifdef MODEL_REGS
1830 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
1831#else
1832 union
1833 {
1834 uint32_t addr_word; // The low word of the 64-bit address
1835 uint32_t word;
1836 };
1837#endif
1838#ifdef __cplusplus
1839 public:
1840#ifdef MODEL_REGS
1841 CONSTEXPR basep6_r() : addr_word(static_cast<uint32_t>(0)) {}
1842 CONSTEXPR basep6_r(uint32_t value) : addr_word(value >> 0) {}
1843 CONSTEXPR void operator=(uint32_t value)
1844 {
1845 addr_word = value >> 0;
1846 }
1847 CONSTEXPR operator uint32_t() const
1848 {
1849 return (addr_word << 0);
1850 }
1851 basep6_r copy()
1852 {
1853 return *this;
1854 }
1855#else
1856 CONSTEXPR basep6_r() : addr_word(static_cast<uint32_t>(0)) {}
1857 CONSTEXPR basep6_r(uint32_t init) : word(init) {}
1858 CONSTEXPR void operator=(uint32_t value)
1859 {
1860 word = value;
1861 }
1862 void operator=(uint32_t value) volatile
1863 {
1864 word = value;
1865 }
1866 CONSTEXPR operator uint32_t()
1867 {
1868 return word;
1869 }
1870 operator uint32_t() volatile
1871 {
1872 return word;
1873 }
1874 basep6_r copy() volatile
1875 {
1876 return *this;
1877 }
1878#endif
1879 CONSTEXPR uint32_t get_addr_word() const
1880 {
1881 uint32_t value = static_cast<uint32_t>(addr_word);
1882 return value;
1883 }
1884#ifndef MODEL_REGS
1885 uint32_t get_addr_word() const volatile
1886 {
1887 uint32_t value = static_cast<uint32_t>(addr_word);
1888 return value;
1889 }
1890#endif
1891 CONSTEXPR basep6_r &set_addr_word(uint32_t value)
1892 {
1893 addr_word = static_cast<uint32_t>(value);
1894 return *this;
1895 }
1896#endif //__cplusplus
1897};
1898
1899// basep7_r - Upper 32 bits of the Base pointer for region index 3
1900struct basep7_r
1901{
1902#ifdef __cplusplus
1903 private:
1904#endif //__cplusplus
1905#ifdef MODEL_REGS
1906 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
1907#else
1908 union
1909 {
1910 uint32_t addr_word; // The high word of the 64-bit address
1911 uint32_t word;
1912 };
1913#endif
1914#ifdef __cplusplus
1915 public:
1916#ifdef MODEL_REGS
1917 CONSTEXPR basep7_r() : addr_word(static_cast<uint32_t>(0)) {}
1918 CONSTEXPR basep7_r(uint32_t value) : addr_word(value >> 0) {}
1919 CONSTEXPR void operator=(uint32_t value)
1920 {
1921 addr_word = value >> 0;
1922 }
1923 CONSTEXPR operator uint32_t() const
1924 {
1925 return (addr_word << 0);
1926 }
1927 basep7_r copy()
1928 {
1929 return *this;
1930 }
1931#else
1932 CONSTEXPR basep7_r() : addr_word(static_cast<uint32_t>(0)) {}
1933 CONSTEXPR basep7_r(uint32_t init) : word(init) {}
1934 CONSTEXPR void operator=(uint32_t value)
1935 {
1936 word = value;
1937 }
1938 void operator=(uint32_t value) volatile
1939 {
1940 word = value;
1941 }
1942 CONSTEXPR operator uint32_t()
1943 {
1944 return word;
1945 }
1946 operator uint32_t() volatile
1947 {
1948 return word;
1949 }
1950 basep7_r copy() volatile
1951 {
1952 return *this;
1953 }
1954#endif
1955 CONSTEXPR uint32_t get_addr_word() const
1956 {
1957 uint32_t value = static_cast<uint32_t>(addr_word);
1958 return value;
1959 }
1960#ifndef MODEL_REGS
1961 uint32_t get_addr_word() const volatile
1962 {
1963 uint32_t value = static_cast<uint32_t>(addr_word);
1964 return value;
1965 }
1966#endif
1967 CONSTEXPR basep7_r &set_addr_word(uint32_t value)
1968 {
1969 addr_word = static_cast<uint32_t>(value);
1970 return *this;
1971 }
1972#endif //__cplusplus
1973};
1974
1975// basep8_r - Lower 32 bits of the Base pointer for region index 4
1976struct basep8_r
1977{
1978#ifdef __cplusplus
1979 private:
1980#endif //__cplusplus
1981#ifdef MODEL_REGS
1982 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
1983#else
1984 union
1985 {
1986 uint32_t addr_word; // The low word of the 64-bit address
1987 uint32_t word;
1988 };
1989#endif
1990#ifdef __cplusplus
1991 public:
1992#ifdef MODEL_REGS
1993 CONSTEXPR basep8_r() : addr_word(static_cast<uint32_t>(0)) {}
1994 CONSTEXPR basep8_r(uint32_t value) : addr_word(value >> 0) {}
1995 CONSTEXPR void operator=(uint32_t value)
1996 {
1997 addr_word = value >> 0;
1998 }
1999 CONSTEXPR operator uint32_t() const
2000 {
2001 return (addr_word << 0);
2002 }
2003 basep8_r copy()
2004 {
2005 return *this;
2006 }
2007#else
2008 CONSTEXPR basep8_r() : addr_word(static_cast<uint32_t>(0)) {}
2009 CONSTEXPR basep8_r(uint32_t init) : word(init) {}
2010 CONSTEXPR void operator=(uint32_t value)
2011 {
2012 word = value;
2013 }
2014 void operator=(uint32_t value) volatile
2015 {
2016 word = value;
2017 }
2018 CONSTEXPR operator uint32_t()
2019 {
2020 return word;
2021 }
2022 operator uint32_t() volatile
2023 {
2024 return word;
2025 }
2026 basep8_r copy() volatile
2027 {
2028 return *this;
2029 }
2030#endif
2031 CONSTEXPR uint32_t get_addr_word() const
2032 {
2033 uint32_t value = static_cast<uint32_t>(addr_word);
2034 return value;
2035 }
2036#ifndef MODEL_REGS
2037 uint32_t get_addr_word() const volatile
2038 {
2039 uint32_t value = static_cast<uint32_t>(addr_word);
2040 return value;
2041 }
2042#endif
2043 CONSTEXPR basep8_r &set_addr_word(uint32_t value)
2044 {
2045 addr_word = static_cast<uint32_t>(value);
2046 return *this;
2047 }
2048#endif //__cplusplus
2049};
2050
2051// basep9_r - Upper 32 bits of the Base pointer for region index 4
2052struct basep9_r
2053{
2054#ifdef __cplusplus
2055 private:
2056#endif //__cplusplus
2057#ifdef MODEL_REGS
2058 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
2059#else
2060 union
2061 {
2062 uint32_t addr_word; // The high word of the 64-bit address
2063 uint32_t word;
2064 };
2065#endif
2066#ifdef __cplusplus
2067 public:
2068#ifdef MODEL_REGS
2069 CONSTEXPR basep9_r() : addr_word(static_cast<uint32_t>(0)) {}
2070 CONSTEXPR basep9_r(uint32_t value) : addr_word(value >> 0) {}
2071 CONSTEXPR void operator=(uint32_t value)
2072 {
2073 addr_word = value >> 0;
2074 }
2075 CONSTEXPR operator uint32_t() const
2076 {
2077 return (addr_word << 0);
2078 }
2079 basep9_r copy()
2080 {
2081 return *this;
2082 }
2083#else
2084 CONSTEXPR basep9_r() : addr_word(static_cast<uint32_t>(0)) {}
2085 CONSTEXPR basep9_r(uint32_t init) : word(init) {}
2086 CONSTEXPR void operator=(uint32_t value)
2087 {
2088 word = value;
2089 }
2090 void operator=(uint32_t value) volatile
2091 {
2092 word = value;
2093 }
2094 CONSTEXPR operator uint32_t()
2095 {
2096 return word;
2097 }
2098 operator uint32_t() volatile
2099 {
2100 return word;
2101 }
2102 basep9_r copy() volatile
2103 {
2104 return *this;
2105 }
2106#endif
2107 CONSTEXPR uint32_t get_addr_word() const
2108 {
2109 uint32_t value = static_cast<uint32_t>(addr_word);
2110 return value;
2111 }
2112#ifndef MODEL_REGS
2113 uint32_t get_addr_word() const volatile
2114 {
2115 uint32_t value = static_cast<uint32_t>(addr_word);
2116 return value;
2117 }
2118#endif
2119 CONSTEXPR basep9_r &set_addr_word(uint32_t value)
2120 {
2121 addr_word = static_cast<uint32_t>(value);
2122 return *this;
2123 }
2124#endif //__cplusplus
2125};
2126
2127// basep10_r - Lower 32 bits of the Base pointer for region index 5
2128struct basep10_r
2129{
2130#ifdef __cplusplus
2131 private:
2132#endif //__cplusplus
2133#ifdef MODEL_REGS
2134 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
2135#else
2136 union
2137 {
2138 uint32_t addr_word; // The low word of the 64-bit address
2139 uint32_t word;
2140 };
2141#endif
2142#ifdef __cplusplus
2143 public:
2144#ifdef MODEL_REGS
2145 CONSTEXPR basep10_r() : addr_word(static_cast<uint32_t>(0)) {}
2146 CONSTEXPR basep10_r(uint32_t value) : addr_word(value >> 0) {}
2147 CONSTEXPR void operator=(uint32_t value)
2148 {
2149 addr_word = value >> 0;
2150 }
2151 CONSTEXPR operator uint32_t() const
2152 {
2153 return (addr_word << 0);
2154 }
2155 basep10_r copy()
2156 {
2157 return *this;
2158 }
2159#else
2160 CONSTEXPR basep10_r() : addr_word(static_cast<uint32_t>(0)) {}
2161 CONSTEXPR basep10_r(uint32_t init) : word(init) {}
2162 CONSTEXPR void operator=(uint32_t value)
2163 {
2164 word = value;
2165 }
2166 void operator=(uint32_t value) volatile
2167 {
2168 word = value;
2169 }
2170 CONSTEXPR operator uint32_t()
2171 {
2172 return word;
2173 }
2174 operator uint32_t() volatile
2175 {
2176 return word;
2177 }
2178 basep10_r copy() volatile
2179 {
2180 return *this;
2181 }
2182#endif
2183 CONSTEXPR uint32_t get_addr_word() const
2184 {
2185 uint32_t value = static_cast<uint32_t>(addr_word);
2186 return value;
2187 }
2188#ifndef MODEL_REGS
2189 uint32_t get_addr_word() const volatile
2190 {
2191 uint32_t value = static_cast<uint32_t>(addr_word);
2192 return value;
2193 }
2194#endif
2195 CONSTEXPR basep10_r &set_addr_word(uint32_t value)
2196 {
2197 addr_word = static_cast<uint32_t>(value);
2198 return *this;
2199 }
2200#endif //__cplusplus
2201};
2202
2203// basep11_r - Upper 32 bits of the Base pointer for region index 5
2204struct basep11_r
2205{
2206#ifdef __cplusplus
2207 private:
2208#endif //__cplusplus
2209#ifdef MODEL_REGS
2210 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
2211#else
2212 union
2213 {
2214 uint32_t addr_word; // The high word of the 64-bit address
2215 uint32_t word;
2216 };
2217#endif
2218#ifdef __cplusplus
2219 public:
2220#ifdef MODEL_REGS
2221 CONSTEXPR basep11_r() : addr_word(static_cast<uint32_t>(0)) {}
2222 CONSTEXPR basep11_r(uint32_t value) : addr_word(value >> 0) {}
2223 CONSTEXPR void operator=(uint32_t value)
2224 {
2225 addr_word = value >> 0;
2226 }
2227 CONSTEXPR operator uint32_t() const
2228 {
2229 return (addr_word << 0);
2230 }
2231 basep11_r copy()
2232 {
2233 return *this;
2234 }
2235#else
2236 CONSTEXPR basep11_r() : addr_word(static_cast<uint32_t>(0)) {}
2237 CONSTEXPR basep11_r(uint32_t init) : word(init) {}
2238 CONSTEXPR void operator=(uint32_t value)
2239 {
2240 word = value;
2241 }
2242 void operator=(uint32_t value) volatile
2243 {
2244 word = value;
2245 }
2246 CONSTEXPR operator uint32_t()
2247 {
2248 return word;
2249 }
2250 operator uint32_t() volatile
2251 {
2252 return word;
2253 }
2254 basep11_r copy() volatile
2255 {
2256 return *this;
2257 }
2258#endif
2259 CONSTEXPR uint32_t get_addr_word() const
2260 {
2261 uint32_t value = static_cast<uint32_t>(addr_word);
2262 return value;
2263 }
2264#ifndef MODEL_REGS
2265 uint32_t get_addr_word() const volatile
2266 {
2267 uint32_t value = static_cast<uint32_t>(addr_word);
2268 return value;
2269 }
2270#endif
2271 CONSTEXPR basep11_r &set_addr_word(uint32_t value)
2272 {
2273 addr_word = static_cast<uint32_t>(value);
2274 return *this;
2275 }
2276#endif //__cplusplus
2277};
2278
2279// basep12_r - Lower 32 bits of the Base pointer for region index 6
2280struct basep12_r
2281{
2282#ifdef __cplusplus
2283 private:
2284#endif //__cplusplus
2285#ifdef MODEL_REGS
2286 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
2287#else
2288 union
2289 {
2290 uint32_t addr_word; // The low word of the 64-bit address
2291 uint32_t word;
2292 };
2293#endif
2294#ifdef __cplusplus
2295 public:
2296#ifdef MODEL_REGS
2297 CONSTEXPR basep12_r() : addr_word(static_cast<uint32_t>(0)) {}
2298 CONSTEXPR basep12_r(uint32_t value) : addr_word(value >> 0) {}
2299 CONSTEXPR void operator=(uint32_t value)
2300 {
2301 addr_word = value >> 0;
2302 }
2303 CONSTEXPR operator uint32_t() const
2304 {
2305 return (addr_word << 0);
2306 }
2307 basep12_r copy()
2308 {
2309 return *this;
2310 }
2311#else
2312 CONSTEXPR basep12_r() : addr_word(static_cast<uint32_t>(0)) {}
2313 CONSTEXPR basep12_r(uint32_t init) : word(init) {}
2314 CONSTEXPR void operator=(uint32_t value)
2315 {
2316 word = value;
2317 }
2318 void operator=(uint32_t value) volatile
2319 {
2320 word = value;
2321 }
2322 CONSTEXPR operator uint32_t()
2323 {
2324 return word;
2325 }
2326 operator uint32_t() volatile
2327 {
2328 return word;
2329 }
2330 basep12_r copy() volatile
2331 {
2332 return *this;
2333 }
2334#endif
2335 CONSTEXPR uint32_t get_addr_word() const
2336 {
2337 uint32_t value = static_cast<uint32_t>(addr_word);
2338 return value;
2339 }
2340#ifndef MODEL_REGS
2341 uint32_t get_addr_word() const volatile
2342 {
2343 uint32_t value = static_cast<uint32_t>(addr_word);
2344 return value;
2345 }
2346#endif
2347 CONSTEXPR basep12_r &set_addr_word(uint32_t value)
2348 {
2349 addr_word = static_cast<uint32_t>(value);
2350 return *this;
2351 }
2352#endif //__cplusplus
2353};
2354
2355// basep13_r - Upper 32 bits of the Base pointer for region index 6
2356struct basep13_r
2357{
2358#ifdef __cplusplus
2359 private:
2360#endif //__cplusplus
2361#ifdef MODEL_REGS
2362 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
2363#else
2364 union
2365 {
2366 uint32_t addr_word; // The high word of the 64-bit address
2367 uint32_t word;
2368 };
2369#endif
2370#ifdef __cplusplus
2371 public:
2372#ifdef MODEL_REGS
2373 CONSTEXPR basep13_r() : addr_word(static_cast<uint32_t>(0)) {}
2374 CONSTEXPR basep13_r(uint32_t value) : addr_word(value >> 0) {}
2375 CONSTEXPR void operator=(uint32_t value)
2376 {
2377 addr_word = value >> 0;
2378 }
2379 CONSTEXPR operator uint32_t() const
2380 {
2381 return (addr_word << 0);
2382 }
2383 basep13_r copy()
2384 {
2385 return *this;
2386 }
2387#else
2388 CONSTEXPR basep13_r() : addr_word(static_cast<uint32_t>(0)) {}
2389 CONSTEXPR basep13_r(uint32_t init) : word(init) {}
2390 CONSTEXPR void operator=(uint32_t value)
2391 {
2392 word = value;
2393 }
2394 void operator=(uint32_t value) volatile
2395 {
2396 word = value;
2397 }
2398 CONSTEXPR operator uint32_t()
2399 {
2400 return word;
2401 }
2402 operator uint32_t() volatile
2403 {
2404 return word;
2405 }
2406 basep13_r copy() volatile
2407 {
2408 return *this;
2409 }
2410#endif
2411 CONSTEXPR uint32_t get_addr_word() const
2412 {
2413 uint32_t value = static_cast<uint32_t>(addr_word);
2414 return value;
2415 }
2416#ifndef MODEL_REGS
2417 uint32_t get_addr_word() const volatile
2418 {
2419 uint32_t value = static_cast<uint32_t>(addr_word);
2420 return value;
2421 }
2422#endif
2423 CONSTEXPR basep13_r &set_addr_word(uint32_t value)
2424 {
2425 addr_word = static_cast<uint32_t>(value);
2426 return *this;
2427 }
2428#endif //__cplusplus
2429};
2430
2431// basep14_r - Lower 32 bits of the Base pointer for region index 7
2432struct basep14_r
2433{
2434#ifdef __cplusplus
2435 private:
2436#endif //__cplusplus
2437#ifdef MODEL_REGS
2438 ::core::dt::uint_t<32> addr_word; // The low word of the 64-bit address
2439#else
2440 union
2441 {
2442 uint32_t addr_word; // The low word of the 64-bit address
2443 uint32_t word;
2444 };
2445#endif
2446#ifdef __cplusplus
2447 public:
2448#ifdef MODEL_REGS
2449 CONSTEXPR basep14_r() : addr_word(static_cast<uint32_t>(0)) {}
2450 CONSTEXPR basep14_r(uint32_t value) : addr_word(value >> 0) {}
2451 CONSTEXPR void operator=(uint32_t value)
2452 {
2453 addr_word = value >> 0;
2454 }
2455 CONSTEXPR operator uint32_t() const
2456 {
2457 return (addr_word << 0);
2458 }
2459 basep14_r copy()
2460 {
2461 return *this;
2462 }
2463#else
2464 CONSTEXPR basep14_r() : addr_word(static_cast<uint32_t>(0)) {}
2465 CONSTEXPR basep14_r(uint32_t init) : word(init) {}
2466 CONSTEXPR void operator=(uint32_t value)
2467 {
2468 word = value;
2469 }
2470 void operator=(uint32_t value) volatile
2471 {
2472 word = value;
2473 }
2474 CONSTEXPR operator uint32_t()
2475 {
2476 return word;
2477 }
2478 operator uint32_t() volatile
2479 {
2480 return word;
2481 }
2482 basep14_r copy() volatile
2483 {
2484 return *this;
2485 }
2486#endif
2487 CONSTEXPR uint32_t get_addr_word() const
2488 {
2489 uint32_t value = static_cast<uint32_t>(addr_word);
2490 return value;
2491 }
2492#ifndef MODEL_REGS
2493 uint32_t get_addr_word() const volatile
2494 {
2495 uint32_t value = static_cast<uint32_t>(addr_word);
2496 return value;
2497 }
2498#endif
2499 CONSTEXPR basep14_r &set_addr_word(uint32_t value)
2500 {
2501 addr_word = static_cast<uint32_t>(value);
2502 return *this;
2503 }
2504#endif //__cplusplus
2505};
2506
2507// basep15_r - Upper 32 bits of the Base pointer for region index 7
2508struct basep15_r
2509{
2510#ifdef __cplusplus
2511 private:
2512#endif //__cplusplus
2513#ifdef MODEL_REGS
2514 ::core::dt::uint_t<32> addr_word; // The high word of the 64-bit address
2515#else
2516 union
2517 {
2518 uint32_t addr_word; // The high word of the 64-bit address
2519 uint32_t word;
2520 };
2521#endif
2522#ifdef __cplusplus
2523 public:
2524#ifdef MODEL_REGS
2525 CONSTEXPR basep15_r() : addr_word(static_cast<uint32_t>(0)) {}
2526 CONSTEXPR basep15_r(uint32_t value) : addr_word(value >> 0) {}
2527 CONSTEXPR void operator=(uint32_t value)
2528 {
2529 addr_word = value >> 0;
2530 }
2531 CONSTEXPR operator uint32_t() const
2532 {
2533 return (addr_word << 0);
2534 }
2535 basep15_r copy()
2536 {
2537 return *this;
2538 }
2539#else
2540 CONSTEXPR basep15_r() : addr_word(static_cast<uint32_t>(0)) {}
2541 CONSTEXPR basep15_r(uint32_t init) : word(init) {}
2542 CONSTEXPR void operator=(uint32_t value)
2543 {
2544 word = value;
2545 }
2546 void operator=(uint32_t value) volatile
2547 {
2548 word = value;
2549 }
2550 CONSTEXPR operator uint32_t()
2551 {
2552 return word;
2553 }
2554 operator uint32_t() volatile
2555 {
2556 return word;
2557 }
2558 basep15_r copy() volatile
2559 {
2560 return *this;
2561 }
2562#endif
2563 CONSTEXPR uint32_t get_addr_word() const
2564 {
2565 uint32_t value = static_cast<uint32_t>(addr_word);
2566 return value;
2567 }
2568#ifndef MODEL_REGS
2569 uint32_t get_addr_word() const volatile
2570 {
2571 uint32_t value = static_cast<uint32_t>(addr_word);
2572 return value;
2573 }
2574#endif
2575 CONSTEXPR basep15_r &set_addr_word(uint32_t value)
2576 {
2577 addr_word = static_cast<uint32_t>(value);
2578 return *this;
2579 }
2580#endif //__cplusplus
2581};
2582
2583// pid4_r - Peripheral ID byte 4 (Arm=code 4)
2584struct pid4_r
2585{
2586#ifdef __cplusplus
2587 private:
2588#endif //__cplusplus
2589#ifdef MODEL_REGS
2590 ::core::dt::uint_t<32> PID4; // Byte 4 of Peripheral ID (Lower 8 bits valid)
2591#else
2592 union
2593 {
2594 uint32_t PID4; // Byte 4 of Peripheral ID (Lower 8 bits valid)
2595 uint32_t word;
2596 };
2597#endif
2598#ifdef __cplusplus
2599 public:
2600#ifdef MODEL_REGS
2601 CONSTEXPR pid4_r() : PID4(static_cast<uint32_t>(0x04)) {}
2602 CONSTEXPR pid4_r(uint32_t value) : PID4(value >> 0) {}
2603 CONSTEXPR void operator=(uint32_t value)
2604 {
2605 PID4 = value >> 0;
2606 }
2607 CONSTEXPR operator uint32_t() const
2608 {
2609 return (PID4 << 0);
2610 }
2611 pid4_r copy()
2612 {
2613 return *this;
2614 }
2615#else
2616 CONSTEXPR pid4_r() : PID4(static_cast<uint32_t>(0x04)) {}
2617 CONSTEXPR pid4_r(uint32_t init) : word(init) {}
2618 CONSTEXPR void operator=(uint32_t value)
2619 {
2620 word = value;
2621 }
2622 void operator=(uint32_t value) volatile
2623 {
2624 word = value;
2625 }
2626 CONSTEXPR operator uint32_t()
2627 {
2628 return word;
2629 }
2630 operator uint32_t() volatile
2631 {
2632 return word;
2633 }
2634 pid4_r copy() volatile
2635 {
2636 return *this;
2637 }
2638#endif
2639 CONSTEXPR uint32_t get_PID4() const
2640 {
2641 uint32_t value = static_cast<uint32_t>(PID4);
2642 return value;
2643 }
2644#ifndef MODEL_REGS
2645 uint32_t get_PID4() const volatile
2646 {
2647 uint32_t value = static_cast<uint32_t>(PID4);
2648 return value;
2649 }
2650#endif
2651 CONSTEXPR pid4_r &set_PID4(uint32_t value)
2652 {
2653 PID4 = static_cast<uint32_t>(value);
2654 return *this;
2655 }
2656#endif //__cplusplus
2657};
2658
2659// pid5_r - Peripheral ID byte 5 (reserved)
2660struct pid5_r
2661{
2662#ifdef __cplusplus
2663 private:
2664#endif //__cplusplus
2665#ifdef MODEL_REGS
2666 ::core::dt::uint_t<32> PID5; // Byte 5 of Peripheral ID (Lower 8 bits valid)
2667#else
2668 union
2669 {
2670 uint32_t PID5; // Byte 5 of Peripheral ID (Lower 8 bits valid)
2671 uint32_t word;
2672 };
2673#endif
2674#ifdef __cplusplus
2675 public:
2676#ifdef MODEL_REGS
2677 CONSTEXPR pid5_r() : PID5(static_cast<uint32_t>(0x00)) {}
2678 CONSTEXPR pid5_r(uint32_t value) : PID5(value >> 0) {}
2679 CONSTEXPR void operator=(uint32_t value)
2680 {
2681 PID5 = value >> 0;
2682 }
2683 CONSTEXPR operator uint32_t() const
2684 {
2685 return (PID5 << 0);
2686 }
2687 pid5_r copy()
2688 {
2689 return *this;
2690 }
2691#else
2692 CONSTEXPR pid5_r() : PID5(static_cast<uint32_t>(0x00)) {}
2693 CONSTEXPR pid5_r(uint32_t init) : word(init) {}
2694 CONSTEXPR void operator=(uint32_t value)
2695 {
2696 word = value;
2697 }
2698 void operator=(uint32_t value) volatile
2699 {
2700 word = value;
2701 }
2702 CONSTEXPR operator uint32_t()
2703 {
2704 return word;
2705 }
2706 operator uint32_t() volatile
2707 {
2708 return word;
2709 }
2710 pid5_r copy() volatile
2711 {
2712 return *this;
2713 }
2714#endif
2715 CONSTEXPR uint32_t get_PID5() const
2716 {
2717 uint32_t value = static_cast<uint32_t>(PID5);
2718 return value;
2719 }
2720#ifndef MODEL_REGS
2721 uint32_t get_PID5() const volatile
2722 {
2723 uint32_t value = static_cast<uint32_t>(PID5);
2724 return value;
2725 }
2726#endif
2727 CONSTEXPR pid5_r &set_PID5(uint32_t value)
2728 {
2729 PID5 = static_cast<uint32_t>(value);
2730 return *this;
2731 }
2732#endif //__cplusplus
2733};
2734
2735// pid6_r - Peripheral ID byte 6 (reserved)
2736struct pid6_r
2737{
2738#ifdef __cplusplus
2739 private:
2740#endif //__cplusplus
2741#ifdef MODEL_REGS
2742 ::core::dt::uint_t<32> PID6; // Byte 6 of Peripheral ID (Lower 8 bits valid)
2743#else
2744 union
2745 {
2746 uint32_t PID6; // Byte 6 of Peripheral ID (Lower 8 bits valid)
2747 uint32_t word;
2748 };
2749#endif
2750#ifdef __cplusplus
2751 public:
2752#ifdef MODEL_REGS
2753 CONSTEXPR pid6_r() : PID6(static_cast<uint32_t>(0x00)) {}
2754 CONSTEXPR pid6_r(uint32_t value) : PID6(value >> 0) {}
2755 CONSTEXPR void operator=(uint32_t value)
2756 {
2757 PID6 = value >> 0;
2758 }
2759 CONSTEXPR operator uint32_t() const
2760 {
2761 return (PID6 << 0);
2762 }
2763 pid6_r copy()
2764 {
2765 return *this;
2766 }
2767#else
2768 CONSTEXPR pid6_r() : PID6(static_cast<uint32_t>(0x00)) {}
2769 CONSTEXPR pid6_r(uint32_t init) : word(init) {}
2770 CONSTEXPR void operator=(uint32_t value)
2771 {
2772 word = value;
2773 }
2774 void operator=(uint32_t value) volatile
2775 {
2776 word = value;
2777 }
2778 CONSTEXPR operator uint32_t()
2779 {
2780 return word;
2781 }
2782 operator uint32_t() volatile
2783 {
2784 return word;
2785 }
2786 pid6_r copy() volatile
2787 {
2788 return *this;
2789 }
2790#endif
2791 CONSTEXPR uint32_t get_PID6() const
2792 {
2793 uint32_t value = static_cast<uint32_t>(PID6);
2794 return value;
2795 }
2796#ifndef MODEL_REGS
2797 uint32_t get_PID6() const volatile
2798 {
2799 uint32_t value = static_cast<uint32_t>(PID6);
2800 return value;
2801 }
2802#endif
2803 CONSTEXPR pid6_r &set_PID6(uint32_t value)
2804 {
2805 PID6 = static_cast<uint32_t>(value);
2806 return *this;
2807 }
2808#endif //__cplusplus
2809};
2810
2811// pid7_r - Peripheral ID byte 7 (reserved)
2812struct pid7_r
2813{
2814#ifdef __cplusplus
2815 private:
2816#endif //__cplusplus
2817#ifdef MODEL_REGS
2818 ::core::dt::uint_t<32> PID7; // Byte 7 of Peripheral ID (Lower 8 bits valid)
2819#else
2820 union
2821 {
2822 uint32_t PID7; // Byte 7 of Peripheral ID (Lower 8 bits valid)
2823 uint32_t word;
2824 };
2825#endif
2826#ifdef __cplusplus
2827 public:
2828#ifdef MODEL_REGS
2829 CONSTEXPR pid7_r() : PID7(static_cast<uint32_t>(0x00)) {}
2830 CONSTEXPR pid7_r(uint32_t value) : PID7(value >> 0) {}
2831 CONSTEXPR void operator=(uint32_t value)
2832 {
2833 PID7 = value >> 0;
2834 }
2835 CONSTEXPR operator uint32_t() const
2836 {
2837 return (PID7 << 0);
2838 }
2839 pid7_r copy()
2840 {
2841 return *this;
2842 }
2843#else
2844 CONSTEXPR pid7_r() : PID7(static_cast<uint32_t>(0x00)) {}
2845 CONSTEXPR pid7_r(uint32_t init) : word(init) {}
2846 CONSTEXPR void operator=(uint32_t value)
2847 {
2848 word = value;
2849 }
2850 void operator=(uint32_t value) volatile
2851 {
2852 word = value;
2853 }
2854 CONSTEXPR operator uint32_t()
2855 {
2856 return word;
2857 }
2858 operator uint32_t() volatile
2859 {
2860 return word;
2861 }
2862 pid7_r copy() volatile
2863 {
2864 return *this;
2865 }
2866#endif
2867 CONSTEXPR uint32_t get_PID7() const
2868 {
2869 uint32_t value = static_cast<uint32_t>(PID7);
2870 return value;
2871 }
2872#ifndef MODEL_REGS
2873 uint32_t get_PID7() const volatile
2874 {
2875 uint32_t value = static_cast<uint32_t>(PID7);
2876 return value;
2877 }
2878#endif
2879 CONSTEXPR pid7_r &set_PID7(uint32_t value)
2880 {
2881 PID7 = static_cast<uint32_t>(value);
2882 return *this;
2883 }
2884#endif //__cplusplus
2885};
2886
2887// pid0_r - Peripheral ID byte 0. This is bits[7:0] of the part number.
2888struct pid0_r
2889{
2890#ifdef __cplusplus
2891 private:
2892#endif //__cplusplus
2893#ifdef MODEL_REGS
2894 ::core::dt::uint_t<32> PID0; // Byte 0 of Peripheral ID (Lower 8 bits valid)
2895#else
2896 union
2897 {
2898 uint32_t PID0; // Byte 0 of Peripheral ID (Lower 8 bits valid)
2899 uint32_t word;
2900 };
2901#endif
2902#ifdef __cplusplus
2903 public:
2904#ifdef MODEL_REGS
2905 CONSTEXPR pid0_r() : PID0(static_cast<uint32_t>(0x80)) {}
2906 CONSTEXPR pid0_r(uint32_t value) : PID0(value >> 0) {}
2907 CONSTEXPR void operator=(uint32_t value)
2908 {
2909 PID0 = value >> 0;
2910 }
2911 CONSTEXPR operator uint32_t() const
2912 {
2913 return (PID0 << 0);
2914 }
2915 pid0_r copy()
2916 {
2917 return *this;
2918 }
2919#else
2920 CONSTEXPR pid0_r() : PID0(static_cast<uint32_t>(0x80)) {}
2921 CONSTEXPR pid0_r(uint32_t init) : word(init) {}
2922 CONSTEXPR void operator=(uint32_t value)
2923 {
2924 word = value;
2925 }
2926 void operator=(uint32_t value) volatile
2927 {
2928 word = value;
2929 }
2930 CONSTEXPR operator uint32_t()
2931 {
2932 return word;
2933 }
2934 operator uint32_t() volatile
2935 {
2936 return word;
2937 }
2938 pid0_r copy() volatile
2939 {
2940 return *this;
2941 }
2942#endif
2943 CONSTEXPR uint32_t get_PID0() const
2944 {
2945 uint32_t value = static_cast<uint32_t>(PID0);
2946 return value;
2947 }
2948#ifndef MODEL_REGS
2949 uint32_t get_PID0() const volatile
2950 {
2951 uint32_t value = static_cast<uint32_t>(PID0);
2952 return value;
2953 }
2954#endif
2955 CONSTEXPR pid0_r &set_PID0(uint32_t value)
2956 {
2957 PID0 = static_cast<uint32_t>(value);
2958 return *this;
2959 }
2960#endif //__cplusplus
2961};
2962
2963// pid1_r - Peripheral ID byte 1. This is bits[11:8] of the part number in bits[3:0], and bits[3:0] of the Arm ID in
2964// bits[7:4].
2965struct pid1_r
2966{
2967#ifdef __cplusplus
2968 private:
2969#endif //__cplusplus
2970#ifdef MODEL_REGS
2971 ::core::dt::uint_t<32> PID1; // Byte 1 of Peripheral ID (Lower 8 bits valid)
2972#else
2973 union
2974 {
2975 uint32_t PID1; // Byte 1 of Peripheral ID (Lower 8 bits valid)
2976 uint32_t word;
2977 };
2978#endif
2979#ifdef __cplusplus
2980 public:
2981#ifdef MODEL_REGS
2982 CONSTEXPR pid1_r() : PID1(static_cast<uint32_t>(0xB5)) {}
2983 CONSTEXPR pid1_r(uint32_t value) : PID1(value >> 0) {}
2984 CONSTEXPR void operator=(uint32_t value)
2985 {
2986 PID1 = value >> 0;
2987 }
2988 CONSTEXPR operator uint32_t() const
2989 {
2990 return (PID1 << 0);
2991 }
2992 pid1_r copy()
2993 {
2994 return *this;
2995 }
2996#else
2997 CONSTEXPR pid1_r() : PID1(static_cast<uint32_t>(0xB5)) {}
2998 CONSTEXPR pid1_r(uint32_t init) : word(init) {}
2999 CONSTEXPR void operator=(uint32_t value)
3000 {
3001 word = value;
3002 }
3003 void operator=(uint32_t value) volatile
3004 {
3005 word = value;
3006 }
3007 CONSTEXPR operator uint32_t()
3008 {
3009 return word;
3010 }
3011 operator uint32_t() volatile
3012 {
3013 return word;
3014 }
3015 pid1_r copy() volatile
3016 {
3017 return *this;
3018 }
3019#endif
3020 CONSTEXPR uint32_t get_PID1() const
3021 {
3022 uint32_t value = static_cast<uint32_t>(PID1);
3023 return value;
3024 }
3025#ifndef MODEL_REGS
3026 uint32_t get_PID1() const volatile
3027 {
3028 uint32_t value = static_cast<uint32_t>(PID1);
3029 return value;
3030 }
3031#endif
3032 CONSTEXPR pid1_r &set_PID1(uint32_t value)
3033 {
3034 PID1 = static_cast<uint32_t>(value);
3035 return *this;
3036 }
3037#endif //__cplusplus
3038};
3039
3040// pid2_r - Peripheral ID byte 2. This is bits[6:4] of the Arm ID in bits[2:0], and bit 3 indicates format B.
3041struct pid2_r
3042{
3043#ifdef __cplusplus
3044 private:
3045#endif //__cplusplus
3046#ifdef MODEL_REGS
3047 ::core::dt::uint_t<32> PID2; // Byte 2 of Peripheral ID (Lower 8 bits valid)
3048#else
3049 union
3050 {
3051 uint32_t PID2; // Byte 2 of Peripheral ID (Lower 8 bits valid)
3052 uint32_t word;
3053 };
3054#endif
3055#ifdef __cplusplus
3056 public:
3057#ifdef MODEL_REGS
3058 CONSTEXPR pid2_r() : PID2(static_cast<uint32_t>(0x0B)) {}
3059 CONSTEXPR pid2_r(uint32_t value) : PID2(value >> 0) {}
3060 CONSTEXPR void operator=(uint32_t value)
3061 {
3062 PID2 = value >> 0;
3063 }
3064 CONSTEXPR operator uint32_t() const
3065 {
3066 return (PID2 << 0);
3067 }
3068 pid2_r copy()
3069 {
3070 return *this;
3071 }
3072#else
3073 CONSTEXPR pid2_r() : PID2(static_cast<uint32_t>(0x0B)) {}
3074 CONSTEXPR pid2_r(uint32_t init) : word(init) {}
3075 CONSTEXPR void operator=(uint32_t value)
3076 {
3077 word = value;
3078 }
3079 void operator=(uint32_t value) volatile
3080 {
3081 word = value;
3082 }
3083 CONSTEXPR operator uint32_t()
3084 {
3085 return word;
3086 }
3087 operator uint32_t() volatile
3088 {
3089 return word;
3090 }
3091 pid2_r copy() volatile
3092 {
3093 return *this;
3094 }
3095#endif
3096 CONSTEXPR uint32_t get_PID2() const
3097 {
3098 uint32_t value = static_cast<uint32_t>(PID2);
3099 return value;
3100 }
3101#ifndef MODEL_REGS
3102 uint32_t get_PID2() const volatile
3103 {
3104 uint32_t value = static_cast<uint32_t>(PID2);
3105 return value;
3106 }
3107#endif
3108 CONSTEXPR pid2_r &set_PID2(uint32_t value)
3109 {
3110 PID2 = static_cast<uint32_t>(value);
3111 return *this;
3112 }
3113#endif //__cplusplus
3114};
3115
3116// pid3_r - Peripheral ID byte 3.
3117struct pid3_r
3118{
3119#ifdef __cplusplus
3120 private:
3121#endif //__cplusplus
3122#ifdef MODEL_REGS
3123 ::core::dt::uint_t<32> PID3; // Byte 1 of Peripheral ID (Lower 8 bits valid)
3124#else
3125 union
3126 {
3127 uint32_t PID3; // Byte 1 of Peripheral ID (Lower 8 bits valid)
3128 uint32_t word;
3129 };
3130#endif
3131#ifdef __cplusplus
3132 public:
3133#ifdef MODEL_REGS
3134 CONSTEXPR pid3_r() : PID3(static_cast<uint32_t>(0x0)) {}
3135 CONSTEXPR pid3_r(uint32_t value) : PID3(value >> 0) {}
3136 CONSTEXPR void operator=(uint32_t value)
3137 {
3138 PID3 = value >> 0;
3139 }
3140 CONSTEXPR operator uint32_t() const
3141 {
3142 return (PID3 << 0);
3143 }
3144 pid3_r copy()
3145 {
3146 return *this;
3147 }
3148#else
3149 CONSTEXPR pid3_r() : PID3(static_cast<uint32_t>(0x0)) {}
3150 CONSTEXPR pid3_r(uint32_t init) : word(init) {}
3151 CONSTEXPR void operator=(uint32_t value)
3152 {
3153 word = value;
3154 }
3155 void operator=(uint32_t value) volatile
3156 {
3157 word = value;
3158 }
3159 CONSTEXPR operator uint32_t()
3160 {
3161 return word;
3162 }
3163 operator uint32_t() volatile
3164 {
3165 return word;
3166 }
3167 pid3_r copy() volatile
3168 {
3169 return *this;
3170 }
3171#endif
3172 CONSTEXPR uint32_t get_PID3() const
3173 {
3174 uint32_t value = static_cast<uint32_t>(PID3);
3175 return value;
3176 }
3177#ifndef MODEL_REGS
3178 uint32_t get_PID3() const volatile
3179 {
3180 uint32_t value = static_cast<uint32_t>(PID3);
3181 return value;
3182 }
3183#endif
3184 CONSTEXPR pid3_r &set_PID3(uint32_t value)
3185 {
3186 PID3 = static_cast<uint32_t>(value);
3187 return *this;
3188 }
3189#endif //__cplusplus
3190};
3191
3192// cid0_r - Component ID byte 0.
3193struct cid0_r
3194{
3195#ifdef __cplusplus
3196 private:
3197#endif //__cplusplus
3198#ifdef MODEL_REGS
3199 ::core::dt::uint_t<32> CID0; // Byte 0 of Component ID (Lower 8 bits valid)
3200#else
3201 union
3202 {
3203 uint32_t CID0; // Byte 0 of Component ID (Lower 8 bits valid)
3204 uint32_t word;
3205 };
3206#endif
3207#ifdef __cplusplus
3208 public:
3209#ifdef MODEL_REGS
3210 CONSTEXPR cid0_r() : CID0(static_cast<uint32_t>(0x0D)) {}
3211 CONSTEXPR cid0_r(uint32_t value) : CID0(value >> 0) {}
3212 CONSTEXPR void operator=(uint32_t value)
3213 {
3214 CID0 = value >> 0;
3215 }
3216 CONSTEXPR operator uint32_t() const
3217 {
3218 return (CID0 << 0);
3219 }
3220 cid0_r copy()
3221 {
3222 return *this;
3223 }
3224#else
3225 CONSTEXPR cid0_r() : CID0(static_cast<uint32_t>(0x0D)) {}
3226 CONSTEXPR cid0_r(uint32_t init) : word(init) {}
3227 CONSTEXPR void operator=(uint32_t value)
3228 {
3229 word = value;
3230 }
3231 void operator=(uint32_t value) volatile
3232 {
3233 word = value;
3234 }
3235 CONSTEXPR operator uint32_t()
3236 {
3237 return word;
3238 }
3239 operator uint32_t() volatile
3240 {
3241 return word;
3242 }
3243 cid0_r copy() volatile
3244 {
3245 return *this;
3246 }
3247#endif
3248 CONSTEXPR uint32_t get_CID0() const
3249 {
3250 uint32_t value = static_cast<uint32_t>(CID0);
3251 return value;
3252 }
3253#ifndef MODEL_REGS
3254 uint32_t get_CID0() const volatile
3255 {
3256 uint32_t value = static_cast<uint32_t>(CID0);
3257 return value;
3258 }
3259#endif
3260 CONSTEXPR cid0_r &set_CID0(uint32_t value)
3261 {
3262 CID0 = static_cast<uint32_t>(value);
3263 return *this;
3264 }
3265#endif //__cplusplus
3266};
3267
3268// cid1_r - Component ID byte 1.
3269struct cid1_r
3270{
3271#ifdef __cplusplus
3272 private:
3273#endif //__cplusplus
3274#ifdef MODEL_REGS
3275 ::core::dt::uint_t<32> CID1; // Byte 1 of Component ID (Lower 8 bits valid)
3276#else
3277 union
3278 {
3279 uint32_t CID1; // Byte 1 of Component ID (Lower 8 bits valid)
3280 uint32_t word;
3281 };
3282#endif
3283#ifdef __cplusplus
3284 public:
3285#ifdef MODEL_REGS
3286 CONSTEXPR cid1_r() : CID1(static_cast<uint32_t>(0xF0)) {}
3287 CONSTEXPR cid1_r(uint32_t value) : CID1(value >> 0) {}
3288 CONSTEXPR void operator=(uint32_t value)
3289 {
3290 CID1 = value >> 0;
3291 }
3292 CONSTEXPR operator uint32_t() const
3293 {
3294 return (CID1 << 0);
3295 }
3296 cid1_r copy()
3297 {
3298 return *this;
3299 }
3300#else
3301 CONSTEXPR cid1_r() : CID1(static_cast<uint32_t>(0xF0)) {}
3302 CONSTEXPR cid1_r(uint32_t init) : word(init) {}
3303 CONSTEXPR void operator=(uint32_t value)
3304 {
3305 word = value;
3306 }
3307 void operator=(uint32_t value) volatile
3308 {
3309 word = value;
3310 }
3311 CONSTEXPR operator uint32_t()
3312 {
3313 return word;
3314 }
3315 operator uint32_t() volatile
3316 {
3317 return word;
3318 }
3319 cid1_r copy() volatile
3320 {
3321 return *this;
3322 }
3323#endif
3324 CONSTEXPR uint32_t get_CID1() const
3325 {
3326 uint32_t value = static_cast<uint32_t>(CID1);
3327 return value;
3328 }
3329#ifndef MODEL_REGS
3330 uint32_t get_CID1() const volatile
3331 {
3332 uint32_t value = static_cast<uint32_t>(CID1);
3333 return value;
3334 }
3335#endif
3336 CONSTEXPR cid1_r &set_CID1(uint32_t value)
3337 {
3338 CID1 = static_cast<uint32_t>(value);
3339 return *this;
3340 }
3341#endif //__cplusplus
3342};
3343
3344// cid2_r - Component ID byte 2.
3345struct cid2_r
3346{
3347#ifdef __cplusplus
3348 private:
3349#endif //__cplusplus
3350#ifdef MODEL_REGS
3351 ::core::dt::uint_t<32> CID2; // Byte 2 of Component ID (Lower 8 bits valid)
3352#else
3353 union
3354 {
3355 uint32_t CID2; // Byte 2 of Component ID (Lower 8 bits valid)
3356 uint32_t word;
3357 };
3358#endif
3359#ifdef __cplusplus
3360 public:
3361#ifdef MODEL_REGS
3362 CONSTEXPR cid2_r() : CID2(static_cast<uint32_t>(0x05)) {}
3363 CONSTEXPR cid2_r(uint32_t value) : CID2(value >> 0) {}
3364 CONSTEXPR void operator=(uint32_t value)
3365 {
3366 CID2 = value >> 0;
3367 }
3368 CONSTEXPR operator uint32_t() const
3369 {
3370 return (CID2 << 0);
3371 }
3372 cid2_r copy()
3373 {
3374 return *this;
3375 }
3376#else
3377 CONSTEXPR cid2_r() : CID2(static_cast<uint32_t>(0x05)) {}
3378 CONSTEXPR cid2_r(uint32_t init) : word(init) {}
3379 CONSTEXPR void operator=(uint32_t value)
3380 {
3381 word = value;
3382 }
3383 void operator=(uint32_t value) volatile
3384 {
3385 word = value;
3386 }
3387 CONSTEXPR operator uint32_t()
3388 {
3389 return word;
3390 }
3391 operator uint32_t() volatile
3392 {
3393 return word;
3394 }
3395 cid2_r copy() volatile
3396 {
3397 return *this;
3398 }
3399#endif
3400 CONSTEXPR uint32_t get_CID2() const
3401 {
3402 uint32_t value = static_cast<uint32_t>(CID2);
3403 return value;
3404 }
3405#ifndef MODEL_REGS
3406 uint32_t get_CID2() const volatile
3407 {
3408 uint32_t value = static_cast<uint32_t>(CID2);
3409 return value;
3410 }
3411#endif
3412 CONSTEXPR cid2_r &set_CID2(uint32_t value)
3413 {
3414 CID2 = static_cast<uint32_t>(value);
3415 return *this;
3416 }
3417#endif //__cplusplus
3418};
3419
3420// cid3_r - Component ID byte 3.
3421struct cid3_r
3422{
3423#ifdef __cplusplus
3424 private:
3425#endif //__cplusplus
3426#ifdef MODEL_REGS
3427 ::core::dt::uint_t<32> CID3; // Byte 3 of Component ID (Lower 8 bits valid)
3428#else
3429 union
3430 {
3431 uint32_t CID3; // Byte 3 of Component ID (Lower 8 bits valid)
3432 uint32_t word;
3433 };
3434#endif
3435#ifdef __cplusplus
3436 public:
3437#ifdef MODEL_REGS
3438 CONSTEXPR cid3_r() : CID3(static_cast<uint32_t>(0xB1)) {}
3439 CONSTEXPR cid3_r(uint32_t value) : CID3(value >> 0) {}
3440 CONSTEXPR void operator=(uint32_t value)
3441 {
3442 CID3 = value >> 0;
3443 }
3444 CONSTEXPR operator uint32_t() const
3445 {
3446 return (CID3 << 0);
3447 }
3448 cid3_r copy()
3449 {
3450 return *this;
3451 }
3452#else
3453 CONSTEXPR cid3_r() : CID3(static_cast<uint32_t>(0xB1)) {}
3454 CONSTEXPR cid3_r(uint32_t init) : word(init) {}
3455 CONSTEXPR void operator=(uint32_t value)
3456 {
3457 word = value;
3458 }
3459 void operator=(uint32_t value) volatile
3460 {
3461 word = value;
3462 }
3463 CONSTEXPR operator uint32_t()
3464 {
3465 return word;
3466 }
3467 operator uint32_t() volatile
3468 {
3469 return word;
3470 }
3471 cid3_r copy() volatile
3472 {
3473 return *this;
3474 }
3475#endif
3476 CONSTEXPR uint32_t get_CID3() const
3477 {
3478 uint32_t value = static_cast<uint32_t>(CID3);
3479 return value;
3480 }
3481#ifndef MODEL_REGS
3482 uint32_t get_CID3() const volatile
3483 {
3484 uint32_t value = static_cast<uint32_t>(CID3);
3485 return value;
3486 }
3487#endif
3488 CONSTEXPR cid3_r &set_CID3(uint32_t value)
3489 {
3490 CID3 = static_cast<uint32_t>(value);
3491 return *this;
3492 }
3493#endif //__cplusplus
3494};
3495
3496// id_r - ID register
3497struct id_r
3498{
3499#ifdef __cplusplus
3500 private:
3501#endif //__cplusplus
3502#ifdef MODEL_REGS
3503 ::core::dt::uint_t<4> version_status; // 0 for now
3504 ::core::dt::uint_t<4> version_minor; // This is the n for the P part of an RnPn release number
3505 ::core::dt::uint_t<4> version_major; // This is the n for the R part of an RnPn release number
3506 ::core::dt::uint_t<4> product_major; // 0 for now
3507 ::core::dt::uint_t<4> arch_patch_rev; // This is the patch number of the architecture version a.b
3508 ::core::dt::uint_t<8>
3509 arch_minor_rev; // This is the minor architecture version number, b in the architecture version a.b
3510 ::core::dt::uint_t<4>
3511 arch_major_rev; // This is the major architecture version number, a in the architecture version a.b
3512#else
3513 union
3514 {
3515 struct
3516 {
3517 uint32_t version_status : 4; // 0 for now
3518 uint32_t version_minor : 4; // This is the n for the P part of an RnPn release number
3519 uint32_t version_major : 4; // This is the n for the R part of an RnPn release number
3520 uint32_t product_major : 4; // 0 for now
3521 uint32_t arch_patch_rev : 4; // This is the patch number of the architecture version a.b
3522 uint32_t
3523 arch_minor_rev : 8; // This is the minor architecture version number, b in the architecture version a.b
3524 uint32_t
3525 arch_major_rev : 4; // This is the major architecture version number, a in the architecture version a.b
3526 };
3527 uint32_t word;
3528 };
3529#endif
3530#ifdef __cplusplus
3531 public:
3532#ifdef MODEL_REGS
3533 CONSTEXPR id_r() :
3534 version_status(static_cast<uint32_t>(0x0)), version_minor(static_cast<uint32_t>(0x0)),
3535 version_major(static_cast<uint32_t>(0x0)), product_major(static_cast<uint32_t>(0x0)),
3536 arch_patch_rev(static_cast<uint32_t>(0)), arch_minor_rev(static_cast<uint32_t>(154)),
3537 arch_major_rev(static_cast<uint32_t>(0))
3538 {
3539 }
3540 CONSTEXPR id_r(uint32_t value) :
3541 version_status(value >> 0), version_minor(value >> 4), version_major(value >> 8), product_major(value >> 12),
3542 arch_patch_rev(value >> 16), arch_minor_rev(value >> 20), arch_major_rev(value >> 28)
3543 {
3544 }
3545 CONSTEXPR void operator=(uint32_t value)
3546 {
3547 version_status = value >> 0;
3548 version_minor = value >> 4;
3549 version_major = value >> 8;
3550 product_major = value >> 12;
3551 arch_patch_rev = value >> 16;
3552 arch_minor_rev = value >> 20;
3553 arch_major_rev = value >> 28;
3554 }
3555 CONSTEXPR operator uint32_t() const
3556 {
3557 return (version_status << 0) | (version_minor << 4) | (version_major << 8) | (product_major << 12) |
3558 (arch_patch_rev << 16) | (arch_minor_rev << 20) | (arch_major_rev << 28);
3559 }
3560 id_r copy()
3561 {
3562 return *this;
3563 }
3564#else
3565 CONSTEXPR id_r() :
3566 version_status(static_cast<uint32_t>(0x0)), version_minor(static_cast<uint32_t>(0x0)),
3567 version_major(static_cast<uint32_t>(0x0)), product_major(static_cast<uint32_t>(0x0)),
3568 arch_patch_rev(static_cast<uint32_t>(0)), arch_minor_rev(static_cast<uint32_t>(154)),
3569 arch_major_rev(static_cast<uint32_t>(0))
3570 {
3571 }
3572 CONSTEXPR id_r(uint32_t init) : word(init) {}
3573 CONSTEXPR void operator=(uint32_t value)
3574 {
3575 word = value;
3576 }
3577 void operator=(uint32_t value) volatile
3578 {
3579 word = value;
3580 }
3581 CONSTEXPR operator uint32_t()
3582 {
3583 return word;
3584 }
3585 operator uint32_t() volatile
3586 {
3587 return word;
3588 }
3589 id_r copy() volatile
3590 {
3591 return *this;
3592 }
3593#endif
3594 CONSTEXPR uint32_t get_version_status() const
3595 {
3596 uint32_t value = static_cast<uint32_t>(version_status);
3597 return value;
3598 }
3599#ifndef MODEL_REGS
3600 uint32_t get_version_status() const volatile
3601 {
3602 uint32_t value = static_cast<uint32_t>(version_status);
3603 return value;
3604 }
3605#endif
3606 CONSTEXPR id_r &set_version_status(uint32_t value)
3607 {
3608 version_status = ((1u << 4) - 1) & static_cast<uint32_t>(value);
3609 return *this;
3610 }
3611 CONSTEXPR uint32_t get_version_minor() const
3612 {
3613 uint32_t value = static_cast<uint32_t>(version_minor);
3614 return value;
3615 }
3616#ifndef MODEL_REGS
3617 uint32_t get_version_minor() const volatile
3618 {
3619 uint32_t value = static_cast<uint32_t>(version_minor);
3620 return value;
3621 }
3622#endif
3623 CONSTEXPR id_r &set_version_minor(uint32_t value)
3624 {
3625 version_minor = ((1u << 4) - 1) & static_cast<uint32_t>(value);
3626 return *this;
3627 }
3628 CONSTEXPR uint32_t get_version_major() const
3629 {
3630 uint32_t value = static_cast<uint32_t>(version_major);
3631 return value;
3632 }
3633#ifndef MODEL_REGS
3634 uint32_t get_version_major() const volatile
3635 {
3636 uint32_t value = static_cast<uint32_t>(version_major);
3637 return value;
3638 }
3639#endif
3640 CONSTEXPR id_r &set_version_major(uint32_t value)
3641 {
3642 version_major = ((1u << 4) - 1) & static_cast<uint32_t>(value);
3643 return *this;
3644 }
3645 CONSTEXPR uint32_t get_product_major() const
3646 {
3647 uint32_t value = static_cast<uint32_t>(product_major);
3648 return value;
3649 }
3650#ifndef MODEL_REGS
3651 uint32_t get_product_major() const volatile
3652 {
3653 uint32_t value = static_cast<uint32_t>(product_major);
3654 return value;
3655 }
3656#endif
3657 CONSTEXPR id_r &set_product_major(uint32_t value)
3658 {
3659 product_major = ((1u << 4) - 1) & static_cast<uint32_t>(value);
3660 return *this;
3661 }
3662 CONSTEXPR uint32_t get_arch_patch_rev() const
3663 {
3664 uint32_t value = static_cast<uint32_t>(arch_patch_rev);
3665 return value;
3666 }
3667#ifndef MODEL_REGS
3668 uint32_t get_arch_patch_rev() const volatile
3669 {
3670 uint32_t value = static_cast<uint32_t>(arch_patch_rev);
3671 return value;
3672 }
3673#endif
3674 CONSTEXPR id_r &set_arch_patch_rev(uint32_t value)
3675 {
3676 arch_patch_rev = ((1u << 4) - 1) & static_cast<uint32_t>(value);
3677 return *this;
3678 }
3679 CONSTEXPR uint32_t get_arch_minor_rev() const
3680 {
3681 uint32_t value = static_cast<uint32_t>(arch_minor_rev);
3682 return value;
3683 }
3684#ifndef MODEL_REGS
3685 uint32_t get_arch_minor_rev() const volatile
3686 {
3687 uint32_t value = static_cast<uint32_t>(arch_minor_rev);
3688 return value;
3689 }
3690#endif
3691 CONSTEXPR id_r &set_arch_minor_rev(uint32_t value)
3692 {
3693 arch_minor_rev = ((1u << 8) - 1) & static_cast<uint32_t>(value);
3694 return *this;
3695 }
3696 CONSTEXPR uint32_t get_arch_major_rev() const
3697 {
3698 uint32_t value = static_cast<uint32_t>(arch_major_rev);
3699 return value;
3700 }
3701#ifndef MODEL_REGS
3702 uint32_t get_arch_major_rev() const volatile
3703 {
3704 uint32_t value = static_cast<uint32_t>(arch_major_rev);
3705 return value;
3706 }
3707#endif
3708 CONSTEXPR id_r &set_arch_major_rev(uint32_t value)
3709 {
3710 arch_major_rev = ((1u << 4) - 1) & static_cast<uint32_t>(value);
3711 return *this;
3712 }
3713#endif //__cplusplus
3714};
3715
3716// status_r - Register describes the current operating status of the NPU
3717struct status_r
3718{
3719#ifdef __cplusplus
3720 private:
3721#endif //__cplusplus
3722#ifdef MODEL_REGS
3723 ::core::dt::uint_t<1> state; // NPU state, 0 = Stopped, 1 = Running
3724 ::core::dt::uint_t<1>
3725 irq_raised; // Raw IRQ status, 0 = IRQ not raised, 1 = IRQ raised. IRQ is cleared using command register bit 1
3726 ::core::dt::uint_t<1>
3727 bus_status; // 0=OK, 1=Bus abort detected and processing halted (NPU will reach IDLE state and not to start
3728 // process any more commands/AXI transactions). Can only be cleared by a reset
3729 ::core::dt::uint_t<1>
3730 reset_status; // Reset is ongoing and only this register can be read (other registers read as 0 and writes are
3731 // ignored.) A value of 0 means NPU is not being reset and can be accessed as normal
3732 ::core::dt::uint_t<1>
3733 cmd_parse_error; // 0=No error 1=Command stream parsing error detected. Can only be cleared by reset
3734 ::core::dt::uint_t<1>
3735 cmd_end_reached; // 0=Not reached, 1=Reached. Cleared by writing QBASE or QSIZE when NPU is in stopped state
3736 ::core::dt::uint_t<1> pmu_irq_raised; // 0=No PMU IRQ, 1=PMU IRQ raised. Cleared by using command register bit 1
3737 ::core::dt::uint_t<1>
3738 wd_fault; // Weight decoder state: 0=no fault 1=weight decoder decompression fault. Can only be cleared by reset
3739 ::core::dt::uint_t<1> faulting_interface; // Faulting interface on bus abort. 0=AXI-M0 1=AXI-M1
3740 ::core::dt::uint_t<4> faulting_channel; // Faulting channel on a bus abort. Read: 0=Cmd 1=IFM 2=Weights 3=Scale+Bias
3741 // 4=Mem2Mem; Write: 8=OFM 9=Mem2Mem
3742 ::core::dt::uint_t<16> irq_history_mask; // IRQ History mask
3743#else
3744 union
3745 {
3746 struct
3747 {
3748 uint32_t state : 1; // NPU state, 0 = Stopped, 1 = Running
3749 uint32_t irq_raised : 1; // Raw IRQ status, 0 = IRQ not raised, 1 = IRQ raised. IRQ is cleared using command
3750 // register bit 1
3751 uint32_t
3752 bus_status : 1; // 0=OK, 1=Bus abort detected and processing halted (NPU will reach IDLE state and not
3753 // to start process any more commands/AXI transactions). Can only be cleared by a reset
3754 uint32_t reset_status : 1; // Reset is ongoing and only this register can be read (other registers read as 0
3755 // and writes are ignored.) A value of 0 means NPU is not being reset and can be
3756 // accessed as normal
3757 uint32_t
3758 cmd_parse_error : 1; // 0=No error 1=Command stream parsing error detected. Can only be cleared by reset
3759 uint32_t cmd_end_reached : 1; // 0=Not reached, 1=Reached. Cleared by writing QBASE or QSIZE when NPU is in
3760 // stopped state
3761 uint32_t pmu_irq_raised : 1; // 0=No PMU IRQ, 1=PMU IRQ raised. Cleared by using command register bit 1
3762 uint32_t wd_fault : 1; // Weight decoder state: 0=no fault 1=weight decoder decompression fault. Can only be
3763 // cleared by reset
3764 uint32_t reserved0 : 3;
3765 uint32_t faulting_interface : 1; // Faulting interface on bus abort. 0=AXI-M0 1=AXI-M1
3766 uint32_t faulting_channel : 4; // Faulting channel on a bus abort. Read: 0=Cmd 1=IFM 2=Weights 3=Scale+Bias
3767 // 4=Mem2Mem; Write: 8=OFM 9=Mem2Mem
3768 uint32_t irq_history_mask : 16; // IRQ History mask
3769 };
3770 uint32_t word;
3771 };
3772#endif
3773#ifdef __cplusplus
3774 public:
3775#ifdef MODEL_REGS
3776 CONSTEXPR status_r() :
3777 state(static_cast<uint32_t>(::state::STOPPED)), irq_raised(static_cast<uint32_t>(0x0)),
3778 bus_status(static_cast<uint32_t>(0x0)), reset_status(static_cast<uint32_t>(0x1)),
3779 cmd_parse_error(static_cast<uint32_t>(0x0)), cmd_end_reached(static_cast<uint32_t>(0x0)),
3780 pmu_irq_raised(static_cast<uint32_t>(0x0)), wd_fault(static_cast<uint32_t>(0x0)),
3781 faulting_interface(static_cast<uint32_t>(0x0)), faulting_channel(static_cast<uint32_t>(0x0)),
3782 irq_history_mask(static_cast<uint32_t>(0x0))
3783 {
3784 }
3785 CONSTEXPR status_r(uint32_t value) :
3786 state(value >> 0), irq_raised(value >> 1), bus_status(value >> 2), reset_status(value >> 3),
3787 cmd_parse_error(value >> 4), cmd_end_reached(value >> 5), pmu_irq_raised(value >> 6), wd_fault(value >> 7),
3788 faulting_interface(value >> 11), faulting_channel(value >> 12), irq_history_mask(value >> 16)
3789 {
3790 }
3791 CONSTEXPR void operator=(uint32_t value)
3792 {
3793 state = value >> 0;
3794 irq_raised = value >> 1;
3795 bus_status = value >> 2;
3796 reset_status = value >> 3;
3797 cmd_parse_error = value >> 4;
3798 cmd_end_reached = value >> 5;
3799 pmu_irq_raised = value >> 6;
3800 wd_fault = value >> 7;
3801 faulting_interface = value >> 11;
3802 faulting_channel = value >> 12;
3803 irq_history_mask = value >> 16;
3804 }
3805 CONSTEXPR operator uint32_t() const
3806 {
3807 return (state << 0) | (irq_raised << 1) | (bus_status << 2) | (reset_status << 3) | (cmd_parse_error << 4) |
3808 (cmd_end_reached << 5) | (pmu_irq_raised << 6) | (wd_fault << 7) | (faulting_interface << 11) |
3809 (faulting_channel << 12) | (irq_history_mask << 16);
3810 }
3811 status_r copy()
3812 {
3813 return *this;
3814 }
3815#else
3816 CONSTEXPR status_r() :
3817 state(static_cast<uint32_t>(::state::STOPPED)), irq_raised(static_cast<uint32_t>(0x0)),
3818 bus_status(static_cast<uint32_t>(0x0)), reset_status(static_cast<uint32_t>(0x1)),
3819 cmd_parse_error(static_cast<uint32_t>(0x0)), cmd_end_reached(static_cast<uint32_t>(0x0)),
3820 pmu_irq_raised(static_cast<uint32_t>(0x0)), wd_fault(static_cast<uint32_t>(0x0)),
3821 reserved0(static_cast<uint32_t>(0)), faulting_interface(static_cast<uint32_t>(0x0)),
3822 faulting_channel(static_cast<uint32_t>(0x0)), irq_history_mask(static_cast<uint32_t>(0x0))
3823 {
3824 }
3825 CONSTEXPR status_r(uint32_t init) : word(init) {}
3826 CONSTEXPR void operator=(uint32_t value)
3827 {
3828 word = value;
3829 }
3830 void operator=(uint32_t value) volatile
3831 {
3832 word = value;
3833 }
3834 CONSTEXPR operator uint32_t()
3835 {
3836 return word;
3837 }
3838 operator uint32_t() volatile
3839 {
3840 return word;
3841 }
3842 status_r copy() volatile
3843 {
3844 return *this;
3845 }
3846#endif
3847 CONSTEXPR ::state get_state() const
3848 {
3849 ::state value = static_cast<::state>(state);
3850 return value;
3851 }
3852#ifndef MODEL_REGS
3853 ::state get_state() const volatile
3854 {
3855 ::state value = static_cast<::state>(state);
3856 return value;
3857 }
3858#endif
3859 CONSTEXPR status_r &set_state(::state value)
3860 {
3861 state = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3862 return *this;
3863 }
3864 CONSTEXPR uint32_t get_irq_raised() const
3865 {
3866 uint32_t value = static_cast<uint32_t>(irq_raised);
3867 return value;
3868 }
3869#ifndef MODEL_REGS
3870 uint32_t get_irq_raised() const volatile
3871 {
3872 uint32_t value = static_cast<uint32_t>(irq_raised);
3873 return value;
3874 }
3875#endif
3876 CONSTEXPR status_r &set_irq_raised(uint32_t value)
3877 {
3878 irq_raised = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3879 return *this;
3880 }
3881 CONSTEXPR uint32_t get_bus_status() const
3882 {
3883 uint32_t value = static_cast<uint32_t>(bus_status);
3884 return value;
3885 }
3886#ifndef MODEL_REGS
3887 uint32_t get_bus_status() const volatile
3888 {
3889 uint32_t value = static_cast<uint32_t>(bus_status);
3890 return value;
3891 }
3892#endif
3893 CONSTEXPR status_r &set_bus_status(uint32_t value)
3894 {
3895 bus_status = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3896 return *this;
3897 }
3898 CONSTEXPR uint32_t get_reset_status() const
3899 {
3900 uint32_t value = static_cast<uint32_t>(reset_status);
3901 return value;
3902 }
3903#ifndef MODEL_REGS
3904 uint32_t get_reset_status() const volatile
3905 {
3906 uint32_t value = static_cast<uint32_t>(reset_status);
3907 return value;
3908 }
3909#endif
3910 CONSTEXPR status_r &set_reset_status(uint32_t value)
3911 {
3912 reset_status = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3913 return *this;
3914 }
3915 CONSTEXPR uint32_t get_cmd_parse_error() const
3916 {
3917 uint32_t value = static_cast<uint32_t>(cmd_parse_error);
3918 return value;
3919 }
3920#ifndef MODEL_REGS
3921 uint32_t get_cmd_parse_error() const volatile
3922 {
3923 uint32_t value = static_cast<uint32_t>(cmd_parse_error);
3924 return value;
3925 }
3926#endif
3927 CONSTEXPR status_r &set_cmd_parse_error(uint32_t value)
3928 {
3929 cmd_parse_error = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3930 return *this;
3931 }
3932 CONSTEXPR uint32_t get_cmd_end_reached() const
3933 {
3934 uint32_t value = static_cast<uint32_t>(cmd_end_reached);
3935 return value;
3936 }
3937#ifndef MODEL_REGS
3938 uint32_t get_cmd_end_reached() const volatile
3939 {
3940 uint32_t value = static_cast<uint32_t>(cmd_end_reached);
3941 return value;
3942 }
3943#endif
3944 CONSTEXPR status_r &set_cmd_end_reached(uint32_t value)
3945 {
3946 cmd_end_reached = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3947 return *this;
3948 }
3949 CONSTEXPR uint32_t get_pmu_irq_raised() const
3950 {
3951 uint32_t value = static_cast<uint32_t>(pmu_irq_raised);
3952 return value;
3953 }
3954#ifndef MODEL_REGS
3955 uint32_t get_pmu_irq_raised() const volatile
3956 {
3957 uint32_t value = static_cast<uint32_t>(pmu_irq_raised);
3958 return value;
3959 }
3960#endif
3961 CONSTEXPR status_r &set_pmu_irq_raised(uint32_t value)
3962 {
3963 pmu_irq_raised = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3964 return *this;
3965 }
3966 CONSTEXPR uint32_t get_wd_fault() const
3967 {
3968 uint32_t value = static_cast<uint32_t>(wd_fault);
3969 return value;
3970 }
3971#ifndef MODEL_REGS
3972 uint32_t get_wd_fault() const volatile
3973 {
3974 uint32_t value = static_cast<uint32_t>(wd_fault);
3975 return value;
3976 }
3977#endif
3978 CONSTEXPR status_r &set_wd_fault(uint32_t value)
3979 {
3980 wd_fault = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3981 return *this;
3982 }
3983 CONSTEXPR uint32_t get_faulting_interface() const
3984 {
3985 uint32_t value = static_cast<uint32_t>(faulting_interface);
3986 return value;
3987 }
3988#ifndef MODEL_REGS
3989 uint32_t get_faulting_interface() const volatile
3990 {
3991 uint32_t value = static_cast<uint32_t>(faulting_interface);
3992 return value;
3993 }
3994#endif
3995 CONSTEXPR status_r &set_faulting_interface(uint32_t value)
3996 {
3997 faulting_interface = ((1u << 1) - 1) & static_cast<uint32_t>(value);
3998 return *this;
3999 }
4000 CONSTEXPR uint32_t get_faulting_channel() const
4001 {
4002 uint32_t value = static_cast<uint32_t>(faulting_channel);
4003 return value;
4004 }
4005#ifndef MODEL_REGS
4006 uint32_t get_faulting_channel() const volatile
4007 {
4008 uint32_t value = static_cast<uint32_t>(faulting_channel);
4009 return value;
4010 }
4011#endif
4012 CONSTEXPR status_r &set_faulting_channel(uint32_t value)
4013 {
4014 faulting_channel = ((1u << 4) - 1) & static_cast<uint32_t>(value);
4015 return *this;
4016 }
4017 CONSTEXPR uint32_t get_irq_history_mask() const
4018 {
4019 uint32_t value = static_cast<uint32_t>(irq_history_mask);
4020 return value;
4021 }
4022#ifndef MODEL_REGS
4023 uint32_t get_irq_history_mask() const volatile
4024 {
4025 uint32_t value = static_cast<uint32_t>(irq_history_mask);
4026 return value;
4027 }
4028#endif
4029 CONSTEXPR status_r &set_irq_history_mask(uint32_t value)
4030 {
4031 irq_history_mask = ((1u << 16) - 1) & static_cast<uint32_t>(value);
4032 return *this;
4033 }
4034#endif //__cplusplus
4035};
4036
4037// cmd_r - Command register, reads as last written command
4038struct cmd_r
4039{
4040#ifdef __cplusplus
4041 private:
4042#endif //__cplusplus
4043#ifdef MODEL_REGS
4044 ::core::dt::uint_t<1>
4045 transition_to_running_state; // Write 1 to transition the NPU to running state. Writing 0 has no effect
4046 ::core::dt::uint_t<1> clear_irq; // Write 1 to clear the IRQ status in the STATUS register. Writing 0 has no effect
4047 ::core::dt::uint_t<1> clock_q_enable; // Write 1 to this bit to enable clock off using clock q-interface and enable
4048 // the master clock gate
4049 ::core::dt::uint_t<1> power_q_enable; // Write 1 to this bit to enable power off using power q-interface
4050 ::core::dt::uint_t<1>
4051 stop_request; // Write 1 to this bit to request STOP after completing any already-started commands
4052 ::core::dt::uint_t<16> clear_irq_history; // Clears the IRQ history mask
4053#else
4054 union
4055 {
4056 struct
4057 {
4058 uint32_t transition_to_running_state : 1; // Write 1 to transition the NPU to running state. Writing 0 has
4059 // no effect
4060 uint32_t clear_irq : 1; // Write 1 to clear the IRQ status in the STATUS register. Writing 0 has no effect
4061 uint32_t clock_q_enable : 1; // Write 1 to this bit to enable clock off using clock q-interface and enable
4062 // the master clock gate
4063 uint32_t power_q_enable : 1; // Write 1 to this bit to enable power off using power q-interface
4064 uint32_t
4065 stop_request : 1; // Write 1 to this bit to request STOP after completing any already-started commands
4066 uint32_t reserved0 : 11;
4067 uint32_t clear_irq_history : 16; // Clears the IRQ history mask
4068 };
4069 uint32_t word;
4070 };
4071#endif
4072#ifdef __cplusplus
4073 public:
4074#ifdef MODEL_REGS
4075 CONSTEXPR cmd_r() :
4076 transition_to_running_state(static_cast<uint32_t>(0x0)), clear_irq(static_cast<uint32_t>(0x0)),
4077 clock_q_enable(static_cast<uint32_t>(0x0)), power_q_enable(static_cast<uint32_t>(0x0)),
4078 stop_request(static_cast<uint32_t>(0x0)), clear_irq_history(static_cast<uint32_t>(0x0))
4079 {
4080 }
4081 CONSTEXPR cmd_r(uint32_t value) :
4082 transition_to_running_state(value >> 0), clear_irq(value >> 1), clock_q_enable(value >> 2),
4083 power_q_enable(value >> 3), stop_request(value >> 4), clear_irq_history(value >> 16)
4084 {
4085 }
4086 CONSTEXPR void operator=(uint32_t value)
4087 {
4088 transition_to_running_state = value >> 0;
4089 clear_irq = value >> 1;
4090 clock_q_enable = value >> 2;
4091 power_q_enable = value >> 3;
4092 stop_request = value >> 4;
4093 clear_irq_history = value >> 16;
4094 }
4095 CONSTEXPR operator uint32_t() const
4096 {
4097 return (transition_to_running_state << 0) | (clear_irq << 1) | (clock_q_enable << 2) | (power_q_enable << 3) |
4098 (stop_request << 4) | (clear_irq_history << 16);
4099 }
4100 cmd_r copy()
4101 {
4102 return *this;
4103 }
4104#else
4105 CONSTEXPR cmd_r() :
4106 transition_to_running_state(static_cast<uint32_t>(0x0)), clear_irq(static_cast<uint32_t>(0x0)),
4107 clock_q_enable(static_cast<uint32_t>(0x0)), power_q_enable(static_cast<uint32_t>(0x0)),
4108 stop_request(static_cast<uint32_t>(0x0)), reserved0(static_cast<uint32_t>(0)),
4109 clear_irq_history(static_cast<uint32_t>(0x0))
4110 {
4111 }
4112 CONSTEXPR cmd_r(uint32_t init) : word(init) {}
4113 CONSTEXPR void operator=(uint32_t value)
4114 {
4115 word = value;
4116 }
4117 void operator=(uint32_t value) volatile
4118 {
4119 word = value;
4120 }
4121 CONSTEXPR operator uint32_t()
4122 {
4123 return word;
4124 }
4125 operator uint32_t() volatile
4126 {
4127 return word;
4128 }
4129 cmd_r copy() volatile
4130 {
4131 return *this;
4132 }
4133#endif
4134 CONSTEXPR uint32_t get_transition_to_running_state() const
4135 {
4136 uint32_t value = static_cast<uint32_t>(transition_to_running_state);
4137 return value;
4138 }
4139#ifndef MODEL_REGS
4140 uint32_t get_transition_to_running_state() const volatile
4141 {
4142 uint32_t value = static_cast<uint32_t>(transition_to_running_state);
4143 return value;
4144 }
4145#endif
4146 CONSTEXPR cmd_r &set_transition_to_running_state(uint32_t value)
4147 {
4148 transition_to_running_state = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4149 return *this;
4150 }
4151 CONSTEXPR uint32_t get_clear_irq() const
4152 {
4153 uint32_t value = static_cast<uint32_t>(clear_irq);
4154 return value;
4155 }
4156#ifndef MODEL_REGS
4157 uint32_t get_clear_irq() const volatile
4158 {
4159 uint32_t value = static_cast<uint32_t>(clear_irq);
4160 return value;
4161 }
4162#endif
4163 CONSTEXPR cmd_r &set_clear_irq(uint32_t value)
4164 {
4165 clear_irq = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4166 return *this;
4167 }
4168 CONSTEXPR uint32_t get_clock_q_enable() const
4169 {
4170 uint32_t value = static_cast<uint32_t>(clock_q_enable);
4171 return value;
4172 }
4173#ifndef MODEL_REGS
4174 uint32_t get_clock_q_enable() const volatile
4175 {
4176 uint32_t value = static_cast<uint32_t>(clock_q_enable);
4177 return value;
4178 }
4179#endif
4180 CONSTEXPR cmd_r &set_clock_q_enable(uint32_t value)
4181 {
4182 clock_q_enable = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4183 return *this;
4184 }
4185 CONSTEXPR uint32_t get_power_q_enable() const
4186 {
4187 uint32_t value = static_cast<uint32_t>(power_q_enable);
4188 return value;
4189 }
4190#ifndef MODEL_REGS
4191 uint32_t get_power_q_enable() const volatile
4192 {
4193 uint32_t value = static_cast<uint32_t>(power_q_enable);
4194 return value;
4195 }
4196#endif
4197 CONSTEXPR cmd_r &set_power_q_enable(uint32_t value)
4198 {
4199 power_q_enable = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4200 return *this;
4201 }
4202 CONSTEXPR uint32_t get_stop_request() const
4203 {
4204 uint32_t value = static_cast<uint32_t>(stop_request);
4205 return value;
4206 }
4207#ifndef MODEL_REGS
4208 uint32_t get_stop_request() const volatile
4209 {
4210 uint32_t value = static_cast<uint32_t>(stop_request);
4211 return value;
4212 }
4213#endif
4214 CONSTEXPR cmd_r &set_stop_request(uint32_t value)
4215 {
4216 stop_request = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4217 return *this;
4218 }
4219 CONSTEXPR uint32_t get_clear_irq_history() const
4220 {
4221 uint32_t value = static_cast<uint32_t>(clear_irq_history);
4222 return value;
4223 }
4224#ifndef MODEL_REGS
4225 uint32_t get_clear_irq_history() const volatile
4226 {
4227 uint32_t value = static_cast<uint32_t>(clear_irq_history);
4228 return value;
4229 }
4230#endif
4231 CONSTEXPR cmd_r &set_clear_irq_history(uint32_t value)
4232 {
4233 clear_irq_history = ((1u << 16) - 1) & static_cast<uint32_t>(value);
4234 return *this;
4235 }
4236#endif //__cplusplus
4237};
4238
4239// reset_r - Request Reset and new security mode
4240struct reset_r
4241{
4242#ifdef __cplusplus
4243 private:
4244#endif //__cplusplus
4245#ifdef MODEL_REGS
4246 ::core::dt::uint_t<1> pending_CPL; // Current privilege level 0=User 1=Privileged
4247 ::core::dt::uint_t<1> pending_CSL; // Current security level 0=Secure 1=Non secure
4248#else
4249 union
4250 {
4251 struct
4252 {
4253 uint32_t pending_CPL : 1; // Current privilege level 0=User 1=Privileged
4254 uint32_t pending_CSL : 1; // Current security level 0=Secure 1=Non secure
4255 uint32_t reserved0 : 30;
4256 };
4257 uint32_t word;
4258 };
4259#endif
4260#ifdef __cplusplus
4261 public:
4262#ifdef MODEL_REGS
4263 CONSTEXPR reset_r() :
4264 pending_CPL(static_cast<uint32_t>(::privilege_level::USER)),
4265 pending_CSL(static_cast<uint32_t>(::security_level::SECURE))
4266 {
4267 }
4268 CONSTEXPR reset_r(uint32_t value) : pending_CPL(value >> 0), pending_CSL(value >> 1) {}
4269 CONSTEXPR void operator=(uint32_t value)
4270 {
4271 pending_CPL = value >> 0;
4272 pending_CSL = value >> 1;
4273 }
4274 CONSTEXPR operator uint32_t() const
4275 {
4276 return (pending_CPL << 0) | (pending_CSL << 1);
4277 }
4278 reset_r copy()
4279 {
4280 return *this;
4281 }
4282#else
4283 CONSTEXPR reset_r() :
4284 pending_CPL(static_cast<uint32_t>(::privilege_level::USER)),
4285 pending_CSL(static_cast<uint32_t>(::security_level::SECURE)), reserved0(static_cast<uint32_t>(0))
4286 {
4287 }
4288 CONSTEXPR reset_r(uint32_t init) : word(init) {}
4289 CONSTEXPR void operator=(uint32_t value)
4290 {
4291 word = value;
4292 }
4293 void operator=(uint32_t value) volatile
4294 {
4295 word = value;
4296 }
4297 CONSTEXPR operator uint32_t()
4298 {
4299 return word;
4300 }
4301 operator uint32_t() volatile
4302 {
4303 return word;
4304 }
4305 reset_r copy() volatile
4306 {
4307 return *this;
4308 }
4309#endif
4310 CONSTEXPR ::privilege_level get_pending_CPL() const
4311 {
4312 ::privilege_level value = static_cast<::privilege_level>(pending_CPL);
4313 return value;
4314 }
4315#ifndef MODEL_REGS
4316 ::privilege_level get_pending_CPL() const volatile
4317 {
4318 ::privilege_level value = static_cast<::privilege_level>(pending_CPL);
4319 return value;
4320 }
4321#endif
4322 CONSTEXPR reset_r &set_pending_CPL(::privilege_level value)
4323 {
4324 pending_CPL = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4325 return *this;
4326 }
4327 CONSTEXPR ::security_level get_pending_CSL() const
4328 {
4329 ::security_level value = static_cast<::security_level>(pending_CSL);
4330 return value;
4331 }
4332#ifndef MODEL_REGS
4333 ::security_level get_pending_CSL() const volatile
4334 {
4335 ::security_level value = static_cast<::security_level>(pending_CSL);
4336 return value;
4337 }
4338#endif
4339 CONSTEXPR reset_r &set_pending_CSL(::security_level value)
4340 {
4341 pending_CSL = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4342 return *this;
4343 }
4344#endif //__cplusplus
4345};
4346
4347// qbase0_r - Base address of command queue bits [31:0]. The address is 4 byte aligned
4348struct qbase0_r
4349{
4350#ifdef __cplusplus
4351 private:
4352#endif //__cplusplus
4353#ifdef MODEL_REGS
4354 ::core::dt::uint_t<32> QBASE0; // The 4 byte aligned lower bytes of the base address value for the command stream
4355#else
4356 union
4357 {
4358 uint32_t QBASE0; // The 4 byte aligned lower bytes of the base address value for the command stream
4359 uint32_t word;
4360 };
4361#endif
4362#ifdef __cplusplus
4363 public:
4364#ifdef MODEL_REGS
4365 CONSTEXPR qbase0_r() : QBASE0(static_cast<uint32_t>(0x00000000)) {}
4366 CONSTEXPR qbase0_r(uint32_t value) : QBASE0(value >> 0) {}
4367 CONSTEXPR void operator=(uint32_t value)
4368 {
4369 QBASE0 = value >> 0;
4370 }
4371 CONSTEXPR operator uint32_t() const
4372 {
4373 return (QBASE0 << 0);
4374 }
4375 qbase0_r copy()
4376 {
4377 return *this;
4378 }
4379#else
4380 CONSTEXPR qbase0_r() : QBASE0(static_cast<uint32_t>(0x00000000)) {}
4381 CONSTEXPR qbase0_r(uint32_t init) : word(init) {}
4382 CONSTEXPR void operator=(uint32_t value)
4383 {
4384 word = value;
4385 }
4386 void operator=(uint32_t value) volatile
4387 {
4388 word = value;
4389 }
4390 CONSTEXPR operator uint32_t()
4391 {
4392 return word;
4393 }
4394 operator uint32_t() volatile
4395 {
4396 return word;
4397 }
4398 qbase0_r copy() volatile
4399 {
4400 return *this;
4401 }
4402#endif
4403 CONSTEXPR uint32_t get_QBASE0() const
4404 {
4405 uint32_t value = static_cast<uint32_t>(QBASE0);
4406 return value;
4407 }
4408#ifndef MODEL_REGS
4409 uint32_t get_QBASE0() const volatile
4410 {
4411 uint32_t value = static_cast<uint32_t>(QBASE0);
4412 return value;
4413 }
4414#endif
4415 CONSTEXPR qbase0_r &set_QBASE0(uint32_t value)
4416 {
4417 QBASE0 = static_cast<uint32_t>(value);
4418 return *this;
4419 }
4420#endif //__cplusplus
4421};
4422
4423// qbase1_r - Address extension bits [47:32] bits for queue base
4424struct qbase1_r
4425{
4426#ifdef __cplusplus
4427 private:
4428#endif //__cplusplus
4429#ifdef MODEL_REGS
4430 ::core::dt::uint_t<32> QBASE1; // The 4 byte aligned upper bytes of the base address value for the command stream
4431#else
4432 union
4433 {
4434 uint32_t QBASE1; // The 4 byte aligned upper bytes of the base address value for the command stream
4435 uint32_t word;
4436 };
4437#endif
4438#ifdef __cplusplus
4439 public:
4440#ifdef MODEL_REGS
4441 CONSTEXPR qbase1_r() : QBASE1(static_cast<uint32_t>(0x00000000)) {}
4442 CONSTEXPR qbase1_r(uint32_t value) : QBASE1(value >> 0) {}
4443 CONSTEXPR void operator=(uint32_t value)
4444 {
4445 QBASE1 = value >> 0;
4446 }
4447 CONSTEXPR operator uint32_t() const
4448 {
4449 return (QBASE1 << 0);
4450 }
4451 qbase1_r copy()
4452 {
4453 return *this;
4454 }
4455#else
4456 CONSTEXPR qbase1_r() : QBASE1(static_cast<uint32_t>(0x00000000)) {}
4457 CONSTEXPR qbase1_r(uint32_t init) : word(init) {}
4458 CONSTEXPR void operator=(uint32_t value)
4459 {
4460 word = value;
4461 }
4462 void operator=(uint32_t value) volatile
4463 {
4464 word = value;
4465 }
4466 CONSTEXPR operator uint32_t()
4467 {
4468 return word;
4469 }
4470 operator uint32_t() volatile
4471 {
4472 return word;
4473 }
4474 qbase1_r copy() volatile
4475 {
4476 return *this;
4477 }
4478#endif
4479 CONSTEXPR uint32_t get_QBASE1() const
4480 {
4481 uint32_t value = static_cast<uint32_t>(QBASE1);
4482 return value;
4483 }
4484#ifndef MODEL_REGS
4485 uint32_t get_QBASE1() const volatile
4486 {
4487 uint32_t value = static_cast<uint32_t>(QBASE1);
4488 return value;
4489 }
4490#endif
4491 CONSTEXPR qbase1_r &set_QBASE1(uint32_t value)
4492 {
4493 QBASE1 = static_cast<uint32_t>(value);
4494 return *this;
4495 }
4496#endif //__cplusplus
4497};
4498
4499// qread_r - Read offset in the command stream in bytes. Multiple of 4 in the range 0 to 16 MB
4500struct qread_r
4501{
4502#ifdef __cplusplus
4503 private:
4504#endif //__cplusplus
4505#ifdef MODEL_REGS
4506 ::core::dt::uint_t<32> QREAD; // The read offset of the current command under execution
4507#else
4508 union
4509 {
4510 uint32_t QREAD; // The read offset of the current command under execution
4511 uint32_t word;
4512 };
4513#endif
4514#ifdef __cplusplus
4515 public:
4516#ifdef MODEL_REGS
4517 CONSTEXPR qread_r() : QREAD(static_cast<uint32_t>(0x00000000)) {}
4518 CONSTEXPR qread_r(uint32_t value) : QREAD(value >> 0) {}
4519 CONSTEXPR void operator=(uint32_t value)
4520 {
4521 QREAD = value >> 0;
4522 }
4523 CONSTEXPR operator uint32_t() const
4524 {
4525 return (QREAD << 0);
4526 }
4527 qread_r copy()
4528 {
4529 return *this;
4530 }
4531#else
4532 CONSTEXPR qread_r() : QREAD(static_cast<uint32_t>(0x00000000)) {}
4533 CONSTEXPR qread_r(uint32_t init) : word(init) {}
4534 CONSTEXPR void operator=(uint32_t value)
4535 {
4536 word = value;
4537 }
4538 void operator=(uint32_t value) volatile
4539 {
4540 word = value;
4541 }
4542 CONSTEXPR operator uint32_t()
4543 {
4544 return word;
4545 }
4546 operator uint32_t() volatile
4547 {
4548 return word;
4549 }
4550 qread_r copy() volatile
4551 {
4552 return *this;
4553 }
4554#endif
4555 CONSTEXPR uint32_t get_QREAD() const
4556 {
4557 uint32_t value = static_cast<uint32_t>(QREAD);
4558 return value;
4559 }
4560#ifndef MODEL_REGS
4561 uint32_t get_QREAD() const volatile
4562 {
4563 uint32_t value = static_cast<uint32_t>(QREAD);
4564 return value;
4565 }
4566#endif
4567 CONSTEXPR qread_r &set_QREAD(uint32_t value)
4568 {
4569 QREAD = static_cast<uint32_t>(value);
4570 return *this;
4571 }
4572#endif //__cplusplus
4573};
4574
4575// qconfig_r - AXI configuration for the command stream in the range 0-3. Same encoding as for REGIONCFG
4576struct qconfig_r
4577{
4578#ifdef __cplusplus
4579 private:
4580#endif //__cplusplus
4581#ifdef MODEL_REGS
4582 ::core::dt::uint_t<32> QCONFIG; // AXI configuration for the command stream in the range 0-3
4583#else
4584 union
4585 {
4586 uint32_t QCONFIG; // AXI configuration for the command stream in the range 0-3
4587 uint32_t word;
4588 };
4589#endif
4590#ifdef __cplusplus
4591 public:
4592#ifdef MODEL_REGS
4593 CONSTEXPR qconfig_r() : QCONFIG(static_cast<uint32_t>(0x00000000)) {}
4594 CONSTEXPR qconfig_r(uint32_t value) : QCONFIG(value >> 0) {}
4595 CONSTEXPR void operator=(uint32_t value)
4596 {
4597 QCONFIG = value >> 0;
4598 }
4599 CONSTEXPR operator uint32_t() const
4600 {
4601 return (QCONFIG << 0);
4602 }
4603 qconfig_r copy()
4604 {
4605 return *this;
4606 }
4607#else
4608 CONSTEXPR qconfig_r() : QCONFIG(static_cast<uint32_t>(0x00000000)) {}
4609 CONSTEXPR qconfig_r(uint32_t init) : word(init) {}
4610 CONSTEXPR void operator=(uint32_t value)
4611 {
4612 word = value;
4613 }
4614 void operator=(uint32_t value) volatile
4615 {
4616 word = value;
4617 }
4618 CONSTEXPR operator uint32_t()
4619 {
4620 return word;
4621 }
4622 operator uint32_t() volatile
4623 {
4624 return word;
4625 }
4626 qconfig_r copy() volatile
4627 {
4628 return *this;
4629 }
4630#endif
4631 CONSTEXPR uint32_t get_QCONFIG() const
4632 {
4633 uint32_t value = static_cast<uint32_t>(QCONFIG);
4634 return value;
4635 }
4636#ifndef MODEL_REGS
4637 uint32_t get_QCONFIG() const volatile
4638 {
4639 uint32_t value = static_cast<uint32_t>(QCONFIG);
4640 return value;
4641 }
4642#endif
4643 CONSTEXPR qconfig_r &set_QCONFIG(uint32_t value)
4644 {
4645 QCONFIG = static_cast<uint32_t>(value);
4646 return *this;
4647 }
4648#endif //__cplusplus
4649};
4650
4651// qsize_r - Size of the command stream in bytes. Multiple of 4 in the range 0 to 16 MB
4652struct qsize_r
4653{
4654#ifdef __cplusplus
4655 private:
4656#endif //__cplusplus
4657#ifdef MODEL_REGS
4658 ::core::dt::uint_t<32> QSIZE; // Size of the next command stream to be executed by the NPU
4659#else
4660 union
4661 {
4662 uint32_t QSIZE; // Size of the next command stream to be executed by the NPU
4663 uint32_t word;
4664 };
4665#endif
4666#ifdef __cplusplus
4667 public:
4668#ifdef MODEL_REGS
4669 CONSTEXPR qsize_r() : QSIZE(static_cast<uint32_t>(0x00000000)) {}
4670 CONSTEXPR qsize_r(uint32_t value) : QSIZE(value >> 0) {}
4671 CONSTEXPR void operator=(uint32_t value)
4672 {
4673 QSIZE = value >> 0;
4674 }
4675 CONSTEXPR operator uint32_t() const
4676 {
4677 return (QSIZE << 0);
4678 }
4679 qsize_r copy()
4680 {
4681 return *this;
4682 }
4683#else
4684 CONSTEXPR qsize_r() : QSIZE(static_cast<uint32_t>(0x00000000)) {}
4685 CONSTEXPR qsize_r(uint32_t init) : word(init) {}
4686 CONSTEXPR void operator=(uint32_t value)
4687 {
4688 word = value;
4689 }
4690 void operator=(uint32_t value) volatile
4691 {
4692 word = value;
4693 }
4694 CONSTEXPR operator uint32_t()
4695 {
4696 return word;
4697 }
4698 operator uint32_t() volatile
4699 {
4700 return word;
4701 }
4702 qsize_r copy() volatile
4703 {
4704 return *this;
4705 }
4706#endif
4707 CONSTEXPR uint32_t get_QSIZE() const
4708 {
4709 uint32_t value = static_cast<uint32_t>(QSIZE);
4710 return value;
4711 }
4712#ifndef MODEL_REGS
4713 uint32_t get_QSIZE() const volatile
4714 {
4715 uint32_t value = static_cast<uint32_t>(QSIZE);
4716 return value;
4717 }
4718#endif
4719 CONSTEXPR qsize_r &set_QSIZE(uint32_t value)
4720 {
4721 QSIZE = static_cast<uint32_t>(value);
4722 return *this;
4723 }
4724#endif //__cplusplus
4725};
4726
4727// prot_r - Protection level configured for the NPU when acting as an AXI master
4728struct prot_r
4729{
4730#ifdef __cplusplus
4731 private:
4732#endif //__cplusplus
4733#ifdef MODEL_REGS
4734 ::core::dt::uint_t<1> active_CPL; // Current privilege level 0=User 1=Privileged
4735 ::core::dt::uint_t<1> active_CSL; // Current security level 0=Secure 1=Non secure
4736#else
4737 union
4738 {
4739 struct
4740 {
4741 uint32_t active_CPL : 1; // Current privilege level 0=User 1=Privileged
4742 uint32_t active_CSL : 1; // Current security level 0=Secure 1=Non secure
4743 uint32_t reserved0 : 30;
4744 };
4745 uint32_t word;
4746 };
4747#endif
4748#ifdef __cplusplus
4749 public:
4750#ifdef MODEL_REGS
4751 CONSTEXPR prot_r() :
4752 active_CPL(static_cast<uint32_t>(::privilege_level::USER)),
4753 active_CSL(static_cast<uint32_t>(::security_level::SECURE))
4754 {
4755 }
4756 CONSTEXPR prot_r(uint32_t value) : active_CPL(value >> 0), active_CSL(value >> 1) {}
4757 CONSTEXPR void operator=(uint32_t value)
4758 {
4759 active_CPL = value >> 0;
4760 active_CSL = value >> 1;
4761 }
4762 CONSTEXPR operator uint32_t() const
4763 {
4764 return (active_CPL << 0) | (active_CSL << 1);
4765 }
4766 prot_r copy()
4767 {
4768 return *this;
4769 }
4770#else
4771 CONSTEXPR prot_r() :
4772 active_CPL(static_cast<uint32_t>(::privilege_level::USER)),
4773 active_CSL(static_cast<uint32_t>(::security_level::SECURE)), reserved0(static_cast<uint32_t>(0))
4774 {
4775 }
4776 CONSTEXPR prot_r(uint32_t init) : word(init) {}
4777 CONSTEXPR void operator=(uint32_t value)
4778 {
4779 word = value;
4780 }
4781 void operator=(uint32_t value) volatile
4782 {
4783 word = value;
4784 }
4785 CONSTEXPR operator uint32_t()
4786 {
4787 return word;
4788 }
4789 operator uint32_t() volatile
4790 {
4791 return word;
4792 }
4793 prot_r copy() volatile
4794 {
4795 return *this;
4796 }
4797#endif
4798 CONSTEXPR ::privilege_level get_active_CPL() const
4799 {
4800 ::privilege_level value = static_cast<::privilege_level>(active_CPL);
4801 return value;
4802 }
4803#ifndef MODEL_REGS
4804 ::privilege_level get_active_CPL() const volatile
4805 {
4806 ::privilege_level value = static_cast<::privilege_level>(active_CPL);
4807 return value;
4808 }
4809#endif
4810 CONSTEXPR prot_r &set_active_CPL(::privilege_level value)
4811 {
4812 active_CPL = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4813 return *this;
4814 }
4815 CONSTEXPR ::security_level get_active_CSL() const
4816 {
4817 ::security_level value = static_cast<::security_level>(active_CSL);
4818 return value;
4819 }
4820#ifndef MODEL_REGS
4821 ::security_level get_active_CSL() const volatile
4822 {
4823 ::security_level value = static_cast<::security_level>(active_CSL);
4824 return value;
4825 }
4826#endif
4827 CONSTEXPR prot_r &set_active_CSL(::security_level value)
4828 {
4829 active_CSL = ((1u << 1) - 1) & static_cast<uint32_t>(value);
4830 return *this;
4831 }
4832#endif //__cplusplus
4833};
4834
4835// config_r - RTL configuration
4836struct config_r
4837{
4838#ifdef __cplusplus
4839 private:
4840#endif //__cplusplus
4841#ifdef MODEL_REGS
4842 ::core::dt::uint_t<4>
4843 macs_per_cc; // The log2(macs/clock cycle). Valid encoding range is 5 to 8 for 32 to 256 MACs/clock cycle.
4844 ::core::dt::uint_t<4>
4845 cmd_stream_version; // command stream version accepted by this NPU. Set to 0 for Ethos-U55 EAC.
4846 ::core::dt::uint_t<8> shram_size; // Size in KB of SHRAM in the range 8 to 48.
4847 ::core::dt::uint_t<4> product; // Product configuration
4848#else
4849 union
4850 {
4851 struct
4852 {
4853 uint32_t macs_per_cc : 4; // The log2(macs/clock cycle). Valid encoding range is 5 to 8 for 32 to 256
4854 // MACs/clock cycle.
4855 uint32_t cmd_stream_version : 4; // command stream version accepted by this NPU. Set to 0 for Ethos-U55 EAC.
4856 uint32_t shram_size : 8; // Size in KB of SHRAM in the range 8 to 48.
4857 uint32_t reserved0 : 12;
4858 uint32_t product : 4; // Product configuration
4859 };
4860 uint32_t word;
4861 };
4862#endif
4863#ifdef __cplusplus
4864 public:
4865#ifdef MODEL_REGS
4866 CONSTEXPR config_r() :
4867 macs_per_cc(static_cast<uint32_t>(0x0)), cmd_stream_version(static_cast<uint32_t>(0x0)),
4868 shram_size(static_cast<uint32_t>(0x0)), product(static_cast<uint32_t>(::product::ETHOS_U55))
4869 {
4870 }
4871 CONSTEXPR config_r(uint32_t value) :
4872 macs_per_cc(value >> 0), cmd_stream_version(value >> 4), shram_size(value >> 8), product(value >> 28)
4873 {
4874 }
4875 CONSTEXPR void operator=(uint32_t value)
4876 {
4877 macs_per_cc = value >> 0;
4878 cmd_stream_version = value >> 4;
4879 shram_size = value >> 8;
4880 product = value >> 28;
4881 }
4882 CONSTEXPR operator uint32_t() const
4883 {
4884 return (macs_per_cc << 0) | (cmd_stream_version << 4) | (shram_size << 8) | (product << 28);
4885 }
4886 config_r copy()
4887 {
4888 return *this;
4889 }
4890#else
4891 CONSTEXPR config_r() :
4892 macs_per_cc(static_cast<uint32_t>(0x0)), cmd_stream_version(static_cast<uint32_t>(0x0)),
4893 shram_size(static_cast<uint32_t>(0x0)), reserved0(static_cast<uint32_t>(0)),
4894 product(static_cast<uint32_t>(::product::ETHOS_U55))
4895 {
4896 }
4897 CONSTEXPR config_r(uint32_t init) : word(init) {}
4898 CONSTEXPR void operator=(uint32_t value)
4899 {
4900 word = value;
4901 }
4902 void operator=(uint32_t value) volatile
4903 {
4904 word = value;
4905 }
4906 CONSTEXPR operator uint32_t()
4907 {
4908 return word;
4909 }
4910 operator uint32_t() volatile
4911 {
4912 return word;
4913 }
4914 config_r copy() volatile
4915 {
4916 return *this;
4917 }
4918#endif
4919 CONSTEXPR uint32_t get_macs_per_cc() const
4920 {
4921 uint32_t value = static_cast<uint32_t>(macs_per_cc);
4922 return value;
4923 }
4924#ifndef MODEL_REGS
4925 uint32_t get_macs_per_cc() const volatile
4926 {
4927 uint32_t value = static_cast<uint32_t>(macs_per_cc);
4928 return value;
4929 }
4930#endif
4931 CONSTEXPR config_r &set_macs_per_cc(uint32_t value)
4932 {
4933 macs_per_cc = ((1u << 4) - 1) & static_cast<uint32_t>(value);
4934 return *this;
4935 }
4936 CONSTEXPR uint32_t get_cmd_stream_version() const
4937 {
4938 uint32_t value = static_cast<uint32_t>(cmd_stream_version);
4939 return value;
4940 }
4941#ifndef MODEL_REGS
4942 uint32_t get_cmd_stream_version() const volatile
4943 {
4944 uint32_t value = static_cast<uint32_t>(cmd_stream_version);
4945 return value;
4946 }
4947#endif
4948 CONSTEXPR config_r &set_cmd_stream_version(uint32_t value)
4949 {
4950 cmd_stream_version = ((1u << 4) - 1) & static_cast<uint32_t>(value);
4951 return *this;
4952 }
4953 CONSTEXPR uint32_t get_shram_size() const
4954 {
4955 uint32_t value = static_cast<uint32_t>(shram_size);
4956 return value;
4957 }
4958#ifndef MODEL_REGS
4959 uint32_t get_shram_size() const volatile
4960 {
4961 uint32_t value = static_cast<uint32_t>(shram_size);
4962 return value;
4963 }
4964#endif
4965 CONSTEXPR config_r &set_shram_size(uint32_t value)
4966 {
4967 shram_size = ((1u << 8) - 1) & static_cast<uint32_t>(value);
4968 return *this;
4969 }
4970 CONSTEXPR ::product get_product() const
4971 {
4972 ::product value = static_cast<::product>(product);
4973 return value;
4974 }
4975#ifndef MODEL_REGS
4976 ::product get_product() const volatile
4977 {
4978 ::product value = static_cast<::product>(product);
4979 return value;
4980 }
4981#endif
4982 CONSTEXPR config_r &set_product(::product value)
4983 {
4984 product = ((1u << 4) - 1) & static_cast<uint32_t>(value);
4985 return *this;
4986 }
4987#endif //__cplusplus
4988};
4989
4990// lock_r - Lock register. This register is designed for driver use and does not affect NPU functionality
4991struct lock_r
4992{
4993#ifdef __cplusplus
4994 private:
4995#endif //__cplusplus
4996#ifdef MODEL_REGS
4997 ::core::dt::uint_t<32> LOCK; // 32 bit value for LOCK configuration
4998#else
4999 union
5000 {
5001 uint32_t LOCK; // 32 bit value for LOCK configuration
5002 uint32_t word;
5003 };
5004#endif
5005#ifdef __cplusplus
5006 public:
5007#ifdef MODEL_REGS
5008 CONSTEXPR lock_r() : LOCK(static_cast<uint32_t>(0x00000000)) {}
5009 CONSTEXPR lock_r(uint32_t value) : LOCK(value >> 0) {}
5010 CONSTEXPR void operator=(uint32_t value)
5011 {
5012 LOCK = value >> 0;
5013 }
5014 CONSTEXPR operator uint32_t() const
5015 {
5016 return (LOCK << 0);
5017 }
5018 lock_r copy()
5019 {
5020 return *this;
5021 }
5022#else
5023 CONSTEXPR lock_r() : LOCK(static_cast<uint32_t>(0x00000000)) {}
5024 CONSTEXPR lock_r(uint32_t init) : word(init) {}
5025 CONSTEXPR void operator=(uint32_t value)
5026 {
5027 word = value;
5028 }
5029 void operator=(uint32_t value) volatile
5030 {
5031 word = value;
5032 }
5033 CONSTEXPR operator uint32_t()
5034 {
5035 return word;
5036 }
5037 operator uint32_t() volatile
5038 {
5039 return word;
5040 }
5041 lock_r copy() volatile
5042 {
5043 return *this;
5044 }
5045#endif
5046 CONSTEXPR uint32_t get_LOCK() const
5047 {
5048 uint32_t value = static_cast<uint32_t>(LOCK);
5049 return value;
5050 }
5051#ifndef MODEL_REGS
5052 uint32_t get_LOCK() const volatile
5053 {
5054 uint32_t value = static_cast<uint32_t>(LOCK);
5055 return value;
5056 }
5057#endif
5058 CONSTEXPR lock_r &set_LOCK(uint32_t value)
5059 {
5060 LOCK = static_cast<uint32_t>(value);
5061 return *this;
5062 }
5063#endif //__cplusplus
5064};
5065
5066// regioncfg_r - Base pointer configuration. Bits[2*k+1:2*k] give the memory type for REGION[k]
5067struct regioncfg_r
5068{
5069#ifdef __cplusplus
5070 private:
5071#endif //__cplusplus
5072#ifdef MODEL_REGS
5073 ::core::dt::uint_t<2> region0; // Bits for Region0 Configurion
5074 ::core::dt::uint_t<2> region1; // Bits for Region1 Configurion
5075 ::core::dt::uint_t<2> region2; // Bits for Region2 Configurion
5076 ::core::dt::uint_t<2> region3; // Bits for Region3 Configurion
5077 ::core::dt::uint_t<2> region4; // Bits for Region4 Configurion
5078 ::core::dt::uint_t<2> region5; // Bits for Region5 Configurion
5079 ::core::dt::uint_t<2> region6; // Bits for Region6 Configurion
5080 ::core::dt::uint_t<2> region7; // Bits for Region7 Configurion
5081#else
5082 union
5083 {
5084 struct
5085 {
5086 uint32_t region0 : 2; // Bits for Region0 Configurion
5087 uint32_t region1 : 2; // Bits for Region1 Configurion
5088 uint32_t region2 : 2; // Bits for Region2 Configurion
5089 uint32_t region3 : 2; // Bits for Region3 Configurion
5090 uint32_t region4 : 2; // Bits for Region4 Configurion
5091 uint32_t region5 : 2; // Bits for Region5 Configurion
5092 uint32_t region6 : 2; // Bits for Region6 Configurion
5093 uint32_t region7 : 2; // Bits for Region7 Configurion
5094 uint32_t reserved0 : 16;
5095 };
5096 uint32_t word;
5097 };
5098#endif
5099#ifdef __cplusplus
5100 public:
5101#ifdef MODEL_REGS
5102 CONSTEXPR regioncfg_r() :
5103 region0(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5104 region1(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5105 region2(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5106 region3(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5107 region4(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5108 region5(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5109 region6(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5110 region7(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0))
5111 {
5112 }
5113 CONSTEXPR regioncfg_r(uint32_t value) :
5114 region0(value >> 0), region1(value >> 2), region2(value >> 4), region3(value >> 6), region4(value >> 8),
5115 region5(value >> 10), region6(value >> 12), region7(value >> 14)
5116 {
5117 }
5118 CONSTEXPR void operator=(uint32_t value)
5119 {
5120 region0 = value >> 0;
5121 region1 = value >> 2;
5122 region2 = value >> 4;
5123 region3 = value >> 6;
5124 region4 = value >> 8;
5125 region5 = value >> 10;
5126 region6 = value >> 12;
5127 region7 = value >> 14;
5128 }
5129 CONSTEXPR operator uint32_t() const
5130 {
5131 return (region0 << 0) | (region1 << 2) | (region2 << 4) | (region3 << 6) | (region4 << 8) | (region5 << 10) |
5132 (region6 << 12) | (region7 << 14);
5133 }
5134 regioncfg_r copy()
5135 {
5136 return *this;
5137 }
5138#else
5139 CONSTEXPR regioncfg_r() :
5140 region0(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5141 region1(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5142 region2(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5143 region3(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5144 region4(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5145 region5(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5146 region6(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)),
5147 region7(static_cast<uint32_t>(::memory_type::AXI0_OUTSTANDING_COUNTER0)), reserved0(static_cast<uint32_t>(0))
5148 {
5149 }
5150 CONSTEXPR regioncfg_r(uint32_t init) : word(init) {}
5151 CONSTEXPR void operator=(uint32_t value)
5152 {
5153 word = value;
5154 }
5155 void operator=(uint32_t value) volatile
5156 {
5157 word = value;
5158 }
5159 CONSTEXPR operator uint32_t()
5160 {
5161 return word;
5162 }
5163 operator uint32_t() volatile
5164 {
5165 return word;
5166 }
5167 regioncfg_r copy() volatile
5168 {
5169 return *this;
5170 }
5171#endif
5172 CONSTEXPR ::memory_type get_region0() const
5173 {
5174 ::memory_type value = static_cast<::memory_type>(region0);
5175 return value;
5176 }
5177#ifndef MODEL_REGS
5178 ::memory_type get_region0() const volatile
5179 {
5180 ::memory_type value = static_cast<::memory_type>(region0);
5181 return value;
5182 }
5183#endif
5184 CONSTEXPR regioncfg_r &set_region0(::memory_type value)
5185 {
5186 region0 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5187 return *this;
5188 }
5189 CONSTEXPR ::memory_type get_region1() const
5190 {
5191 ::memory_type value = static_cast<::memory_type>(region1);
5192 return value;
5193 }
5194#ifndef MODEL_REGS
5195 ::memory_type get_region1() const volatile
5196 {
5197 ::memory_type value = static_cast<::memory_type>(region1);
5198 return value;
5199 }
5200#endif
5201 CONSTEXPR regioncfg_r &set_region1(::memory_type value)
5202 {
5203 region1 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5204 return *this;
5205 }
5206 CONSTEXPR ::memory_type get_region2() const
5207 {
5208 ::memory_type value = static_cast<::memory_type>(region2);
5209 return value;
5210 }
5211#ifndef MODEL_REGS
5212 ::memory_type get_region2() const volatile
5213 {
5214 ::memory_type value = static_cast<::memory_type>(region2);
5215 return value;
5216 }
5217#endif
5218 CONSTEXPR regioncfg_r &set_region2(::memory_type value)
5219 {
5220 region2 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5221 return *this;
5222 }
5223 CONSTEXPR ::memory_type get_region3() const
5224 {
5225 ::memory_type value = static_cast<::memory_type>(region3);
5226 return value;
5227 }
5228#ifndef MODEL_REGS
5229 ::memory_type get_region3() const volatile
5230 {
5231 ::memory_type value = static_cast<::memory_type>(region3);
5232 return value;
5233 }
5234#endif
5235 CONSTEXPR regioncfg_r &set_region3(::memory_type value)
5236 {
5237 region3 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5238 return *this;
5239 }
5240 CONSTEXPR ::memory_type get_region4() const
5241 {
5242 ::memory_type value = static_cast<::memory_type>(region4);
5243 return value;
5244 }
5245#ifndef MODEL_REGS
5246 ::memory_type get_region4() const volatile
5247 {
5248 ::memory_type value = static_cast<::memory_type>(region4);
5249 return value;
5250 }
5251#endif
5252 CONSTEXPR regioncfg_r &set_region4(::memory_type value)
5253 {
5254 region4 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5255 return *this;
5256 }
5257 CONSTEXPR ::memory_type get_region5() const
5258 {
5259 ::memory_type value = static_cast<::memory_type>(region5);
5260 return value;
5261 }
5262#ifndef MODEL_REGS
5263 ::memory_type get_region5() const volatile
5264 {
5265 ::memory_type value = static_cast<::memory_type>(region5);
5266 return value;
5267 }
5268#endif
5269 CONSTEXPR regioncfg_r &set_region5(::memory_type value)
5270 {
5271 region5 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5272 return *this;
5273 }
5274 CONSTEXPR ::memory_type get_region6() const
5275 {
5276 ::memory_type value = static_cast<::memory_type>(region6);
5277 return value;
5278 }
5279#ifndef MODEL_REGS
5280 ::memory_type get_region6() const volatile
5281 {
5282 ::memory_type value = static_cast<::memory_type>(region6);
5283 return value;
5284 }
5285#endif
5286 CONSTEXPR regioncfg_r &set_region6(::memory_type value)
5287 {
5288 region6 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5289 return *this;
5290 }
5291 CONSTEXPR ::memory_type get_region7() const
5292 {
5293 ::memory_type value = static_cast<::memory_type>(region7);
5294 return value;
5295 }
5296#ifndef MODEL_REGS
5297 ::memory_type get_region7() const volatile
5298 {
5299 ::memory_type value = static_cast<::memory_type>(region7);
5300 return value;
5301 }
5302#endif
5303 CONSTEXPR regioncfg_r &set_region7(::memory_type value)
5304 {
5305 region7 = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5306 return *this;
5307 }
5308#endif //__cplusplus
5309};
5310
5311// axi_limit0_r - AXI limits for port 0 counter 0
5312struct axi_limit0_r
5313{
5314#ifdef __cplusplus
5315 private:
5316#endif //__cplusplus
5317#ifdef MODEL_REGS
5318 ::core::dt::uint_t<2> max_beats; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5319 ::core::dt::uint_t<4> memtype; // Memtype
5320 ::core::dt::uint_t<8>
5321 max_outstanding_read_m1; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5322 ::core::dt::uint_t<8>
5323 max_outstanding_write_m1; // Maximum number of outstanding AXI write transactions - 1 in range 0 to 15
5324#else
5325 union
5326 {
5327 struct
5328 {
5329 uint32_t max_beats : 2; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5330 uint32_t reserved0 : 2;
5331 uint32_t memtype : 4; // Memtype
5332 uint32_t reserved1 : 8;
5333 uint32_t
5334 max_outstanding_read_m1 : 8; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5335 uint32_t max_outstanding_write_m1 : 8; // Maximum number of outstanding AXI write transactions - 1 in range
5336 // 0 to 15
5337 };
5338 uint32_t word;
5339 };
5340#endif
5341#ifdef __cplusplus
5342 public:
5343#ifdef MODEL_REGS
5344 CONSTEXPR axi_limit0_r() :
5345 max_beats(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5346 max_outstanding_read_m1(static_cast<uint32_t>(0x00)), max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5347 {
5348 }
5349 CONSTEXPR axi_limit0_r(uint32_t value) :
5350 max_beats(value >> 0), memtype(value >> 4), max_outstanding_read_m1(value >> 16),
5351 max_outstanding_write_m1(value >> 24)
5352 {
5353 }
5354 CONSTEXPR void operator=(uint32_t value)
5355 {
5356 max_beats = value >> 0;
5357 memtype = value >> 4;
5358 max_outstanding_read_m1 = value >> 16;
5359 max_outstanding_write_m1 = value >> 24;
5360 }
5361 CONSTEXPR operator uint32_t() const
5362 {
5363 return (max_beats << 0) | (memtype << 4) | (max_outstanding_read_m1 << 16) | (max_outstanding_write_m1 << 24);
5364 }
5365 axi_limit0_r copy()
5366 {
5367 return *this;
5368 }
5369#else
5370 CONSTEXPR axi_limit0_r() :
5371 max_beats(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5372 reserved1(static_cast<uint32_t>(0)), max_outstanding_read_m1(static_cast<uint32_t>(0x00)),
5373 max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5374 {
5375 }
5376 CONSTEXPR axi_limit0_r(uint32_t init) : word(init) {}
5377 CONSTEXPR void operator=(uint32_t value)
5378 {
5379 word = value;
5380 }
5381 void operator=(uint32_t value) volatile
5382 {
5383 word = value;
5384 }
5385 CONSTEXPR operator uint32_t()
5386 {
5387 return word;
5388 }
5389 operator uint32_t() volatile
5390 {
5391 return word;
5392 }
5393 axi_limit0_r copy() volatile
5394 {
5395 return *this;
5396 }
5397#endif
5398 CONSTEXPR uint32_t get_max_beats() const
5399 {
5400 uint32_t value = static_cast<uint32_t>(max_beats);
5401 return value;
5402 }
5403#ifndef MODEL_REGS
5404 uint32_t get_max_beats() const volatile
5405 {
5406 uint32_t value = static_cast<uint32_t>(max_beats);
5407 return value;
5408 }
5409#endif
5410 CONSTEXPR axi_limit0_r &set_max_beats(uint32_t value)
5411 {
5412 max_beats = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5413 return *this;
5414 }
5415 CONSTEXPR uint32_t get_memtype() const
5416 {
5417 uint32_t value = static_cast<uint32_t>(memtype);
5418 return value;
5419 }
5420#ifndef MODEL_REGS
5421 uint32_t get_memtype() const volatile
5422 {
5423 uint32_t value = static_cast<uint32_t>(memtype);
5424 return value;
5425 }
5426#endif
5427 CONSTEXPR axi_limit0_r &set_memtype(uint32_t value)
5428 {
5429 memtype = ((1u << 4) - 1) & static_cast<uint32_t>(value);
5430 return *this;
5431 }
5432 CONSTEXPR uint32_t get_max_outstanding_read_m1() const
5433 {
5434 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5435 return value;
5436 }
5437#ifndef MODEL_REGS
5438 uint32_t get_max_outstanding_read_m1() const volatile
5439 {
5440 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5441 return value;
5442 }
5443#endif
5444 CONSTEXPR axi_limit0_r &set_max_outstanding_read_m1(uint32_t value)
5445 {
5446 max_outstanding_read_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5447 return *this;
5448 }
5449 CONSTEXPR uint32_t get_max_outstanding_write_m1() const
5450 {
5451 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5452 return value;
5453 }
5454#ifndef MODEL_REGS
5455 uint32_t get_max_outstanding_write_m1() const volatile
5456 {
5457 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5458 return value;
5459 }
5460#endif
5461 CONSTEXPR axi_limit0_r &set_max_outstanding_write_m1(uint32_t value)
5462 {
5463 max_outstanding_write_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5464 return *this;
5465 }
5466#endif //__cplusplus
5467};
5468
5469// axi_limit1_r - AXI limits for port 0 counter 1
5470struct axi_limit1_r
5471{
5472#ifdef __cplusplus
5473 private:
5474#endif //__cplusplus
5475#ifdef MODEL_REGS
5476 ::core::dt::uint_t<2> max_beats; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5477 ::core::dt::uint_t<4> memtype; // Memtype
5478 ::core::dt::uint_t<8>
5479 max_outstanding_read_m1; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5480 ::core::dt::uint_t<8>
5481 max_outstanding_write_m1; // Maximum number of outstanding AXI write transactions - 1 in range 0 to 15
5482#else
5483 union
5484 {
5485 struct
5486 {
5487 uint32_t max_beats : 2; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5488 uint32_t reserved0 : 2;
5489 uint32_t memtype : 4; // Memtype
5490 uint32_t reserved1 : 8;
5491 uint32_t
5492 max_outstanding_read_m1 : 8; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5493 uint32_t max_outstanding_write_m1 : 8; // Maximum number of outstanding AXI write transactions - 1 in range
5494 // 0 to 15
5495 };
5496 uint32_t word;
5497 };
5498#endif
5499#ifdef __cplusplus
5500 public:
5501#ifdef MODEL_REGS
5502 CONSTEXPR axi_limit1_r() :
5503 max_beats(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5504 max_outstanding_read_m1(static_cast<uint32_t>(0x00)), max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5505 {
5506 }
5507 CONSTEXPR axi_limit1_r(uint32_t value) :
5508 max_beats(value >> 0), memtype(value >> 4), max_outstanding_read_m1(value >> 16),
5509 max_outstanding_write_m1(value >> 24)
5510 {
5511 }
5512 CONSTEXPR void operator=(uint32_t value)
5513 {
5514 max_beats = value >> 0;
5515 memtype = value >> 4;
5516 max_outstanding_read_m1 = value >> 16;
5517 max_outstanding_write_m1 = value >> 24;
5518 }
5519 CONSTEXPR operator uint32_t() const
5520 {
5521 return (max_beats << 0) | (memtype << 4) | (max_outstanding_read_m1 << 16) | (max_outstanding_write_m1 << 24);
5522 }
5523 axi_limit1_r copy()
5524 {
5525 return *this;
5526 }
5527#else
5528 CONSTEXPR axi_limit1_r() :
5529 max_beats(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5530 reserved1(static_cast<uint32_t>(0)), max_outstanding_read_m1(static_cast<uint32_t>(0x00)),
5531 max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5532 {
5533 }
5534 CONSTEXPR axi_limit1_r(uint32_t init) : word(init) {}
5535 CONSTEXPR void operator=(uint32_t value)
5536 {
5537 word = value;
5538 }
5539 void operator=(uint32_t value) volatile
5540 {
5541 word = value;
5542 }
5543 CONSTEXPR operator uint32_t()
5544 {
5545 return word;
5546 }
5547 operator uint32_t() volatile
5548 {
5549 return word;
5550 }
5551 axi_limit1_r copy() volatile
5552 {
5553 return *this;
5554 }
5555#endif
5556 CONSTEXPR uint32_t get_max_beats() const
5557 {
5558 uint32_t value = static_cast<uint32_t>(max_beats);
5559 return value;
5560 }
5561#ifndef MODEL_REGS
5562 uint32_t get_max_beats() const volatile
5563 {
5564 uint32_t value = static_cast<uint32_t>(max_beats);
5565 return value;
5566 }
5567#endif
5568 CONSTEXPR axi_limit1_r &set_max_beats(uint32_t value)
5569 {
5570 max_beats = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5571 return *this;
5572 }
5573 CONSTEXPR uint32_t get_memtype() const
5574 {
5575 uint32_t value = static_cast<uint32_t>(memtype);
5576 return value;
5577 }
5578#ifndef MODEL_REGS
5579 uint32_t get_memtype() const volatile
5580 {
5581 uint32_t value = static_cast<uint32_t>(memtype);
5582 return value;
5583 }
5584#endif
5585 CONSTEXPR axi_limit1_r &set_memtype(uint32_t value)
5586 {
5587 memtype = ((1u << 4) - 1) & static_cast<uint32_t>(value);
5588 return *this;
5589 }
5590 CONSTEXPR uint32_t get_max_outstanding_read_m1() const
5591 {
5592 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5593 return value;
5594 }
5595#ifndef MODEL_REGS
5596 uint32_t get_max_outstanding_read_m1() const volatile
5597 {
5598 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5599 return value;
5600 }
5601#endif
5602 CONSTEXPR axi_limit1_r &set_max_outstanding_read_m1(uint32_t value)
5603 {
5604 max_outstanding_read_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5605 return *this;
5606 }
5607 CONSTEXPR uint32_t get_max_outstanding_write_m1() const
5608 {
5609 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5610 return value;
5611 }
5612#ifndef MODEL_REGS
5613 uint32_t get_max_outstanding_write_m1() const volatile
5614 {
5615 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5616 return value;
5617 }
5618#endif
5619 CONSTEXPR axi_limit1_r &set_max_outstanding_write_m1(uint32_t value)
5620 {
5621 max_outstanding_write_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5622 return *this;
5623 }
5624#endif //__cplusplus
5625};
5626
5627// axi_limit2_r - AXI limits for port 1 counter 2
5628struct axi_limit2_r
5629{
5630#ifdef __cplusplus
5631 private:
5632#endif //__cplusplus
5633#ifdef MODEL_REGS
5634 ::core::dt::uint_t<2> max_beats; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5635 ::core::dt::uint_t<4> memtype; // Memtype
5636 ::core::dt::uint_t<8>
5637 max_outstanding_read_m1; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5638 ::core::dt::uint_t<8>
5639 max_outstanding_write_m1; // Maximum number of outstanding AXI write transactions - 1 in range 0 to 15
5640#else
5641 union
5642 {
5643 struct
5644 {
5645 uint32_t max_beats : 2; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5646 uint32_t reserved0 : 2;
5647 uint32_t memtype : 4; // Memtype
5648 uint32_t reserved1 : 8;
5649 uint32_t
5650 max_outstanding_read_m1 : 8; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5651 uint32_t max_outstanding_write_m1 : 8; // Maximum number of outstanding AXI write transactions - 1 in range
5652 // 0 to 15
5653 };
5654 uint32_t word;
5655 };
5656#endif
5657#ifdef __cplusplus
5658 public:
5659#ifdef MODEL_REGS
5660 CONSTEXPR axi_limit2_r() :
5661 max_beats(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5662 max_outstanding_read_m1(static_cast<uint32_t>(0x00)), max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5663 {
5664 }
5665 CONSTEXPR axi_limit2_r(uint32_t value) :
5666 max_beats(value >> 0), memtype(value >> 4), max_outstanding_read_m1(value >> 16),
5667 max_outstanding_write_m1(value >> 24)
5668 {
5669 }
5670 CONSTEXPR void operator=(uint32_t value)
5671 {
5672 max_beats = value >> 0;
5673 memtype = value >> 4;
5674 max_outstanding_read_m1 = value >> 16;
5675 max_outstanding_write_m1 = value >> 24;
5676 }
5677 CONSTEXPR operator uint32_t() const
5678 {
5679 return (max_beats << 0) | (memtype << 4) | (max_outstanding_read_m1 << 16) | (max_outstanding_write_m1 << 24);
5680 }
5681 axi_limit2_r copy()
5682 {
5683 return *this;
5684 }
5685#else
5686 CONSTEXPR axi_limit2_r() :
5687 max_beats(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5688 reserved1(static_cast<uint32_t>(0)), max_outstanding_read_m1(static_cast<uint32_t>(0x00)),
5689 max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5690 {
5691 }
5692 CONSTEXPR axi_limit2_r(uint32_t init) : word(init) {}
5693 CONSTEXPR void operator=(uint32_t value)
5694 {
5695 word = value;
5696 }
5697 void operator=(uint32_t value) volatile
5698 {
5699 word = value;
5700 }
5701 CONSTEXPR operator uint32_t()
5702 {
5703 return word;
5704 }
5705 operator uint32_t() volatile
5706 {
5707 return word;
5708 }
5709 axi_limit2_r copy() volatile
5710 {
5711 return *this;
5712 }
5713#endif
5714 CONSTEXPR uint32_t get_max_beats() const
5715 {
5716 uint32_t value = static_cast<uint32_t>(max_beats);
5717 return value;
5718 }
5719#ifndef MODEL_REGS
5720 uint32_t get_max_beats() const volatile
5721 {
5722 uint32_t value = static_cast<uint32_t>(max_beats);
5723 return value;
5724 }
5725#endif
5726 CONSTEXPR axi_limit2_r &set_max_beats(uint32_t value)
5727 {
5728 max_beats = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5729 return *this;
5730 }
5731 CONSTEXPR uint32_t get_memtype() const
5732 {
5733 uint32_t value = static_cast<uint32_t>(memtype);
5734 return value;
5735 }
5736#ifndef MODEL_REGS
5737 uint32_t get_memtype() const volatile
5738 {
5739 uint32_t value = static_cast<uint32_t>(memtype);
5740 return value;
5741 }
5742#endif
5743 CONSTEXPR axi_limit2_r &set_memtype(uint32_t value)
5744 {
5745 memtype = ((1u << 4) - 1) & static_cast<uint32_t>(value);
5746 return *this;
5747 }
5748 CONSTEXPR uint32_t get_max_outstanding_read_m1() const
5749 {
5750 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5751 return value;
5752 }
5753#ifndef MODEL_REGS
5754 uint32_t get_max_outstanding_read_m1() const volatile
5755 {
5756 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5757 return value;
5758 }
5759#endif
5760 CONSTEXPR axi_limit2_r &set_max_outstanding_read_m1(uint32_t value)
5761 {
5762 max_outstanding_read_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5763 return *this;
5764 }
5765 CONSTEXPR uint32_t get_max_outstanding_write_m1() const
5766 {
5767 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5768 return value;
5769 }
5770#ifndef MODEL_REGS
5771 uint32_t get_max_outstanding_write_m1() const volatile
5772 {
5773 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5774 return value;
5775 }
5776#endif
5777 CONSTEXPR axi_limit2_r &set_max_outstanding_write_m1(uint32_t value)
5778 {
5779 max_outstanding_write_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5780 return *this;
5781 }
5782#endif //__cplusplus
5783};
5784
5785// axi_limit3_r - AXI limits for port 1 counter 3
5786struct axi_limit3_r
5787{
5788#ifdef __cplusplus
5789 private:
5790#endif //__cplusplus
5791#ifdef MODEL_REGS
5792 ::core::dt::uint_t<2> max_beats; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5793 ::core::dt::uint_t<4> memtype; // Memtype
5794 ::core::dt::uint_t<8>
5795 max_outstanding_read_m1; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5796 ::core::dt::uint_t<8>
5797 max_outstanding_write_m1; // Maximum number of outstanding AXI write transactions - 1 in range 0 to 15
5798#else
5799 union
5800 {
5801 struct
5802 {
5803 uint32_t max_beats : 2; // Burst split alignment: 0=64 bytes, 1=128 bytes, 2=256 bytes, 3=reserved
5804 uint32_t reserved0 : 2;
5805 uint32_t memtype : 4; // Memtype
5806 uint32_t reserved1 : 8;
5807 uint32_t
5808 max_outstanding_read_m1 : 8; // Maximum number of outstanding AXI read transactions - 1 in range 0 to 31
5809 uint32_t max_outstanding_write_m1 : 8; // Maximum number of outstanding AXI write transactions - 1 in range
5810 // 0 to 15
5811 };
5812 uint32_t word;
5813 };
5814#endif
5815#ifdef __cplusplus
5816 public:
5817#ifdef MODEL_REGS
5818 CONSTEXPR axi_limit3_r() :
5819 max_beats(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5820 max_outstanding_read_m1(static_cast<uint32_t>(0x00)), max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5821 {
5822 }
5823 CONSTEXPR axi_limit3_r(uint32_t value) :
5824 max_beats(value >> 0), memtype(value >> 4), max_outstanding_read_m1(value >> 16),
5825 max_outstanding_write_m1(value >> 24)
5826 {
5827 }
5828 CONSTEXPR void operator=(uint32_t value)
5829 {
5830 max_beats = value >> 0;
5831 memtype = value >> 4;
5832 max_outstanding_read_m1 = value >> 16;
5833 max_outstanding_write_m1 = value >> 24;
5834 }
5835 CONSTEXPR operator uint32_t() const
5836 {
5837 return (max_beats << 0) | (memtype << 4) | (max_outstanding_read_m1 << 16) | (max_outstanding_write_m1 << 24);
5838 }
5839 axi_limit3_r copy()
5840 {
5841 return *this;
5842 }
5843#else
5844 CONSTEXPR axi_limit3_r() :
5845 max_beats(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)), memtype(static_cast<uint32_t>(0)),
5846 reserved1(static_cast<uint32_t>(0)), max_outstanding_read_m1(static_cast<uint32_t>(0x00)),
5847 max_outstanding_write_m1(static_cast<uint32_t>(0x000000))
5848 {
5849 }
5850 CONSTEXPR axi_limit3_r(uint32_t init) : word(init) {}
5851 CONSTEXPR void operator=(uint32_t value)
5852 {
5853 word = value;
5854 }
5855 void operator=(uint32_t value) volatile
5856 {
5857 word = value;
5858 }
5859 CONSTEXPR operator uint32_t()
5860 {
5861 return word;
5862 }
5863 operator uint32_t() volatile
5864 {
5865 return word;
5866 }
5867 axi_limit3_r copy() volatile
5868 {
5869 return *this;
5870 }
5871#endif
5872 CONSTEXPR uint32_t get_max_beats() const
5873 {
5874 uint32_t value = static_cast<uint32_t>(max_beats);
5875 return value;
5876 }
5877#ifndef MODEL_REGS
5878 uint32_t get_max_beats() const volatile
5879 {
5880 uint32_t value = static_cast<uint32_t>(max_beats);
5881 return value;
5882 }
5883#endif
5884 CONSTEXPR axi_limit3_r &set_max_beats(uint32_t value)
5885 {
5886 max_beats = ((1u << 2) - 1) & static_cast<uint32_t>(value);
5887 return *this;
5888 }
5889 CONSTEXPR uint32_t get_memtype() const
5890 {
5891 uint32_t value = static_cast<uint32_t>(memtype);
5892 return value;
5893 }
5894#ifndef MODEL_REGS
5895 uint32_t get_memtype() const volatile
5896 {
5897 uint32_t value = static_cast<uint32_t>(memtype);
5898 return value;
5899 }
5900#endif
5901 CONSTEXPR axi_limit3_r &set_memtype(uint32_t value)
5902 {
5903 memtype = ((1u << 4) - 1) & static_cast<uint32_t>(value);
5904 return *this;
5905 }
5906 CONSTEXPR uint32_t get_max_outstanding_read_m1() const
5907 {
5908 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5909 return value;
5910 }
5911#ifndef MODEL_REGS
5912 uint32_t get_max_outstanding_read_m1() const volatile
5913 {
5914 uint32_t value = static_cast<uint32_t>(max_outstanding_read_m1);
5915 return value;
5916 }
5917#endif
5918 CONSTEXPR axi_limit3_r &set_max_outstanding_read_m1(uint32_t value)
5919 {
5920 max_outstanding_read_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5921 return *this;
5922 }
5923 CONSTEXPR uint32_t get_max_outstanding_write_m1() const
5924 {
5925 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5926 return value;
5927 }
5928#ifndef MODEL_REGS
5929 uint32_t get_max_outstanding_write_m1() const volatile
5930 {
5931 uint32_t value = static_cast<uint32_t>(max_outstanding_write_m1);
5932 return value;
5933 }
5934#endif
5935 CONSTEXPR axi_limit3_r &set_max_outstanding_write_m1(uint32_t value)
5936 {
5937 max_outstanding_write_m1 = ((1u << 8) - 1) & static_cast<uint32_t>(value);
5938 return *this;
5939 }
5940#endif //__cplusplus
5941};
5942
5943// pmcr_r - PMU Register control
5944struct pmcr_r
5945{
5946#ifdef __cplusplus
5947 private:
5948#endif //__cplusplus
5949#ifdef MODEL_REGS
5950 ::core::dt::uint_t<1> cnt_en; // Enable counters (RW)
5951 ::core::dt::uint_t<1> event_cnt_rst; // Reset event counters (WO)
5952 ::core::dt::uint_t<1> cycle_cnt_rst; // Reset cycle counter (WO)
5953 ::core::dt::uint_t<1> mask_en; // PMU can be enabled/disabled by command stream operation NPU_OP_PMU_MASK
5954 ::core::dt::uint_t<5> num_event_cnt; // Number of event counters (RO)
5955#else
5956 union
5957 {
5958 struct
5959 {
5960 uint32_t cnt_en : 1; // Enable counters (RW)
5961 uint32_t event_cnt_rst : 1; // Reset event counters (WO)
5962 uint32_t cycle_cnt_rst : 1; // Reset cycle counter (WO)
5963 uint32_t mask_en : 1; // PMU can be enabled/disabled by command stream operation NPU_OP_PMU_MASK
5964 uint32_t reserved0 : 7;
5965 uint32_t num_event_cnt : 5; // Number of event counters (RO)
5966 uint32_t reserved1 : 16;
5967 };
5968 uint32_t word;
5969 };
5970#endif
5971#ifdef __cplusplus
5972 public:
5973#ifdef MODEL_REGS
5974 CONSTEXPR pmcr_r() :
5975 cnt_en(static_cast<uint32_t>(0)), event_cnt_rst(static_cast<uint32_t>(0)),
5976 cycle_cnt_rst(static_cast<uint32_t>(0)), mask_en(static_cast<uint32_t>(0)),
5977 num_event_cnt(static_cast<uint32_t>(4))
5978 {
5979 }
5980 CONSTEXPR pmcr_r(uint32_t value) :
5981 cnt_en(value >> 0), event_cnt_rst(value >> 1), cycle_cnt_rst(value >> 2), mask_en(value >> 3),
5982 num_event_cnt(value >> 11)
5983 {
5984 }
5985 CONSTEXPR void operator=(uint32_t value)
5986 {
5987 cnt_en = value >> 0;
5988 event_cnt_rst = value >> 1;
5989 cycle_cnt_rst = value >> 2;
5990 mask_en = value >> 3;
5991 num_event_cnt = value >> 11;
5992 }
5993 CONSTEXPR operator uint32_t() const
5994 {
5995 return (cnt_en << 0) | (event_cnt_rst << 1) | (cycle_cnt_rst << 2) | (mask_en << 3) | (num_event_cnt << 11);
5996 }
5997 pmcr_r copy()
5998 {
5999 return *this;
6000 }
6001#else
6002 CONSTEXPR pmcr_r() :
6003 cnt_en(static_cast<uint32_t>(0)), event_cnt_rst(static_cast<uint32_t>(0)),
6004 cycle_cnt_rst(static_cast<uint32_t>(0)), mask_en(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)),
6005 num_event_cnt(static_cast<uint32_t>(4)), reserved1(static_cast<uint32_t>(0))
6006 {
6007 }
6008 CONSTEXPR pmcr_r(uint32_t init) : word(init) {}
6009 CONSTEXPR void operator=(uint32_t value)
6010 {
6011 word = value;
6012 }
6013 void operator=(uint32_t value) volatile
6014 {
6015 word = value;
6016 }
6017 CONSTEXPR operator uint32_t()
6018 {
6019 return word;
6020 }
6021 operator uint32_t() volatile
6022 {
6023 return word;
6024 }
6025 pmcr_r copy() volatile
6026 {
6027 return *this;
6028 }
6029#endif
6030 CONSTEXPR uint32_t get_cnt_en() const
6031 {
6032 uint32_t value = static_cast<uint32_t>(cnt_en);
6033 return value;
6034 }
6035#ifndef MODEL_REGS
6036 uint32_t get_cnt_en() const volatile
6037 {
6038 uint32_t value = static_cast<uint32_t>(cnt_en);
6039 return value;
6040 }
6041#endif
6042 CONSTEXPR pmcr_r &set_cnt_en(uint32_t value)
6043 {
6044 cnt_en = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6045 return *this;
6046 }
6047 CONSTEXPR uint32_t get_event_cnt_rst() const
6048 {
6049 uint32_t value = static_cast<uint32_t>(event_cnt_rst);
6050 return value;
6051 }
6052#ifndef MODEL_REGS
6053 uint32_t get_event_cnt_rst() const volatile
6054 {
6055 uint32_t value = static_cast<uint32_t>(event_cnt_rst);
6056 return value;
6057 }
6058#endif
6059 CONSTEXPR pmcr_r &set_event_cnt_rst(uint32_t value)
6060 {
6061 event_cnt_rst = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6062 return *this;
6063 }
6064 CONSTEXPR uint32_t get_cycle_cnt_rst() const
6065 {
6066 uint32_t value = static_cast<uint32_t>(cycle_cnt_rst);
6067 return value;
6068 }
6069#ifndef MODEL_REGS
6070 uint32_t get_cycle_cnt_rst() const volatile
6071 {
6072 uint32_t value = static_cast<uint32_t>(cycle_cnt_rst);
6073 return value;
6074 }
6075#endif
6076 CONSTEXPR pmcr_r &set_cycle_cnt_rst(uint32_t value)
6077 {
6078 cycle_cnt_rst = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6079 return *this;
6080 }
6081 CONSTEXPR uint32_t get_mask_en() const
6082 {
6083 uint32_t value = static_cast<uint32_t>(mask_en);
6084 return value;
6085 }
6086#ifndef MODEL_REGS
6087 uint32_t get_mask_en() const volatile
6088 {
6089 uint32_t value = static_cast<uint32_t>(mask_en);
6090 return value;
6091 }
6092#endif
6093 CONSTEXPR pmcr_r &set_mask_en(uint32_t value)
6094 {
6095 mask_en = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6096 return *this;
6097 }
6098 CONSTEXPR uint32_t get_num_event_cnt() const
6099 {
6100 uint32_t value = static_cast<uint32_t>(num_event_cnt);
6101 return value;
6102 }
6103#ifndef MODEL_REGS
6104 uint32_t get_num_event_cnt() const volatile
6105 {
6106 uint32_t value = static_cast<uint32_t>(num_event_cnt);
6107 return value;
6108 }
6109#endif
6110 CONSTEXPR pmcr_r &set_num_event_cnt(uint32_t value)
6111 {
6112 num_event_cnt = ((1u << 5) - 1) & static_cast<uint32_t>(value);
6113 return *this;
6114 }
6115#endif //__cplusplus
6116};
6117
6118// pmcntenset_r - Count enable set register
6119struct pmcntenset_r
6120{
6121#ifdef __cplusplus
6122 private:
6123#endif //__cplusplus
6124#ifdef MODEL_REGS
6125 ::core::dt::uint_t<1> EVENT_CNT_0; // Event counter enable bit for PMEVCNTR0
6126 ::core::dt::uint_t<1> EVENT_CNT_1; // Event counter enable bit for PMEVCNTR1
6127 ::core::dt::uint_t<1> EVENT_CNT_2; // Event counter enable bit for PMEVCNTR2
6128 ::core::dt::uint_t<1> EVENT_CNT_3; // Event counter enable bit for PMEVCNTR3
6129 ::core::dt::uint_t<1> CYCLE_CNT; // PMCCNTR enable bit
6130#else
6131 union
6132 {
6133 struct
6134 {
6135 uint32_t EVENT_CNT_0 : 1; // Event counter enable bit for PMEVCNTR0
6136 uint32_t EVENT_CNT_1 : 1; // Event counter enable bit for PMEVCNTR1
6137 uint32_t EVENT_CNT_2 : 1; // Event counter enable bit for PMEVCNTR2
6138 uint32_t EVENT_CNT_3 : 1; // Event counter enable bit for PMEVCNTR3
6139 uint32_t reserved0 : 27;
6140 uint32_t CYCLE_CNT : 1; // PMCCNTR enable bit
6141 };
6142 uint32_t word;
6143 };
6144#endif
6145#ifdef __cplusplus
6146 public:
6147#ifdef MODEL_REGS
6148 CONSTEXPR pmcntenset_r() :
6149 EVENT_CNT_0(static_cast<uint32_t>(0)), EVENT_CNT_1(static_cast<uint32_t>(0)),
6150 EVENT_CNT_2(static_cast<uint32_t>(0)), EVENT_CNT_3(static_cast<uint32_t>(0)),
6151 CYCLE_CNT(static_cast<uint32_t>(0))
6152 {
6153 }
6154 CONSTEXPR pmcntenset_r(uint32_t value) :
6155 EVENT_CNT_0(value >> 0), EVENT_CNT_1(value >> 1), EVENT_CNT_2(value >> 2), EVENT_CNT_3(value >> 3),
6156 CYCLE_CNT(value >> 31)
6157 {
6158 }
6159 CONSTEXPR void operator=(uint32_t value)
6160 {
6161 EVENT_CNT_0 = value >> 0;
6162 EVENT_CNT_1 = value >> 1;
6163 EVENT_CNT_2 = value >> 2;
6164 EVENT_CNT_3 = value >> 3;
6165 CYCLE_CNT = value >> 31;
6166 }
6167 CONSTEXPR operator uint32_t() const
6168 {
6169 return (EVENT_CNT_0 << 0) | (EVENT_CNT_1 << 1) | (EVENT_CNT_2 << 2) | (EVENT_CNT_3 << 3) | (CYCLE_CNT << 31);
6170 }
6171 pmcntenset_r copy()
6172 {
6173 return *this;
6174 }
6175#else
6176 CONSTEXPR pmcntenset_r() :
6177 EVENT_CNT_0(static_cast<uint32_t>(0)), EVENT_CNT_1(static_cast<uint32_t>(0)),
6178 EVENT_CNT_2(static_cast<uint32_t>(0)), EVENT_CNT_3(static_cast<uint32_t>(0)),
6179 reserved0(static_cast<uint32_t>(0)), CYCLE_CNT(static_cast<uint32_t>(0))
6180 {
6181 }
6182 CONSTEXPR pmcntenset_r(uint32_t init) : word(init) {}
6183 CONSTEXPR void operator=(uint32_t value)
6184 {
6185 word = value;
6186 }
6187 void operator=(uint32_t value) volatile
6188 {
6189 word = value;
6190 }
6191 CONSTEXPR operator uint32_t()
6192 {
6193 return word;
6194 }
6195 operator uint32_t() volatile
6196 {
6197 return word;
6198 }
6199 pmcntenset_r copy() volatile
6200 {
6201 return *this;
6202 }
6203#endif
6204 CONSTEXPR uint32_t get_EVENT_CNT_0() const
6205 {
6206 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0);
6207 return value;
6208 }
6209#ifndef MODEL_REGS
6210 uint32_t get_EVENT_CNT_0() const volatile
6211 {
6212 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0);
6213 return value;
6214 }
6215#endif
6216 CONSTEXPR pmcntenset_r &set_EVENT_CNT_0(uint32_t value)
6217 {
6218 EVENT_CNT_0 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6219 return *this;
6220 }
6221 CONSTEXPR uint32_t get_EVENT_CNT_1() const
6222 {
6223 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1);
6224 return value;
6225 }
6226#ifndef MODEL_REGS
6227 uint32_t get_EVENT_CNT_1() const volatile
6228 {
6229 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1);
6230 return value;
6231 }
6232#endif
6233 CONSTEXPR pmcntenset_r &set_EVENT_CNT_1(uint32_t value)
6234 {
6235 EVENT_CNT_1 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6236 return *this;
6237 }
6238 CONSTEXPR uint32_t get_EVENT_CNT_2() const
6239 {
6240 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2);
6241 return value;
6242 }
6243#ifndef MODEL_REGS
6244 uint32_t get_EVENT_CNT_2() const volatile
6245 {
6246 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2);
6247 return value;
6248 }
6249#endif
6250 CONSTEXPR pmcntenset_r &set_EVENT_CNT_2(uint32_t value)
6251 {
6252 EVENT_CNT_2 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6253 return *this;
6254 }
6255 CONSTEXPR uint32_t get_EVENT_CNT_3() const
6256 {
6257 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3);
6258 return value;
6259 }
6260#ifndef MODEL_REGS
6261 uint32_t get_EVENT_CNT_3() const volatile
6262 {
6263 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3);
6264 return value;
6265 }
6266#endif
6267 CONSTEXPR pmcntenset_r &set_EVENT_CNT_3(uint32_t value)
6268 {
6269 EVENT_CNT_3 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6270 return *this;
6271 }
6272 CONSTEXPR uint32_t get_CYCLE_CNT() const
6273 {
6274 uint32_t value = static_cast<uint32_t>(CYCLE_CNT);
6275 return value;
6276 }
6277#ifndef MODEL_REGS
6278 uint32_t get_CYCLE_CNT() const volatile
6279 {
6280 uint32_t value = static_cast<uint32_t>(CYCLE_CNT);
6281 return value;
6282 }
6283#endif
6284 CONSTEXPR pmcntenset_r &set_CYCLE_CNT(uint32_t value)
6285 {
6286 CYCLE_CNT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6287 return *this;
6288 }
6289#endif //__cplusplus
6290};
6291
6292// pmcntenclr_r - Count enable clear register
6293struct pmcntenclr_r
6294{
6295#ifdef __cplusplus
6296 private:
6297#endif //__cplusplus
6298#ifdef MODEL_REGS
6299 ::core::dt::uint_t<1> EVENT_CNT_0; // Event counter disable bit for PMEVCNTR0
6300 ::core::dt::uint_t<1> EVENT_CNT_1; // Event counter disable bit for PMEVCNTR1
6301 ::core::dt::uint_t<1> EVENT_CNT_2; // Event counter disable bit for PMEVCNTR2
6302 ::core::dt::uint_t<1> EVENT_CNT_3; // Event counter disable bit for PMEVCNTR3
6303 ::core::dt::uint_t<1> CYCLE_CNT; // PMCCNTR disable bit
6304#else
6305 union
6306 {
6307 struct
6308 {
6309 uint32_t EVENT_CNT_0 : 1; // Event counter disable bit for PMEVCNTR0
6310 uint32_t EVENT_CNT_1 : 1; // Event counter disable bit for PMEVCNTR1
6311 uint32_t EVENT_CNT_2 : 1; // Event counter disable bit for PMEVCNTR2
6312 uint32_t EVENT_CNT_3 : 1; // Event counter disable bit for PMEVCNTR3
6313 uint32_t reserved0 : 27;
6314 uint32_t CYCLE_CNT : 1; // PMCCNTR disable bit
6315 };
6316 uint32_t word;
6317 };
6318#endif
6319#ifdef __cplusplus
6320 public:
6321#ifdef MODEL_REGS
6322 CONSTEXPR pmcntenclr_r() :
6323 EVENT_CNT_0(static_cast<uint32_t>(0)), EVENT_CNT_1(static_cast<uint32_t>(0)),
6324 EVENT_CNT_2(static_cast<uint32_t>(0)), EVENT_CNT_3(static_cast<uint32_t>(0)),
6325 CYCLE_CNT(static_cast<uint32_t>(0))
6326 {
6327 }
6328 CONSTEXPR pmcntenclr_r(uint32_t value) :
6329 EVENT_CNT_0(value >> 0), EVENT_CNT_1(value >> 1), EVENT_CNT_2(value >> 2), EVENT_CNT_3(value >> 3),
6330 CYCLE_CNT(value >> 31)
6331 {
6332 }
6333 CONSTEXPR void operator=(uint32_t value)
6334 {
6335 EVENT_CNT_0 = value >> 0;
6336 EVENT_CNT_1 = value >> 1;
6337 EVENT_CNT_2 = value >> 2;
6338 EVENT_CNT_3 = value >> 3;
6339 CYCLE_CNT = value >> 31;
6340 }
6341 CONSTEXPR operator uint32_t() const
6342 {
6343 return (EVENT_CNT_0 << 0) | (EVENT_CNT_1 << 1) | (EVENT_CNT_2 << 2) | (EVENT_CNT_3 << 3) | (CYCLE_CNT << 31);
6344 }
6345 pmcntenclr_r copy()
6346 {
6347 return *this;
6348 }
6349#else
6350 CONSTEXPR pmcntenclr_r() :
6351 EVENT_CNT_0(static_cast<uint32_t>(0)), EVENT_CNT_1(static_cast<uint32_t>(0)),
6352 EVENT_CNT_2(static_cast<uint32_t>(0)), EVENT_CNT_3(static_cast<uint32_t>(0)),
6353 reserved0(static_cast<uint32_t>(0)), CYCLE_CNT(static_cast<uint32_t>(0))
6354 {
6355 }
6356 CONSTEXPR pmcntenclr_r(uint32_t init) : word(init) {}
6357 CONSTEXPR void operator=(uint32_t value)
6358 {
6359 word = value;
6360 }
6361 void operator=(uint32_t value) volatile
6362 {
6363 word = value;
6364 }
6365 CONSTEXPR operator uint32_t()
6366 {
6367 return word;
6368 }
6369 operator uint32_t() volatile
6370 {
6371 return word;
6372 }
6373 pmcntenclr_r copy() volatile
6374 {
6375 return *this;
6376 }
6377#endif
6378 CONSTEXPR uint32_t get_EVENT_CNT_0() const
6379 {
6380 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0);
6381 return value;
6382 }
6383#ifndef MODEL_REGS
6384 uint32_t get_EVENT_CNT_0() const volatile
6385 {
6386 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0);
6387 return value;
6388 }
6389#endif
6390 CONSTEXPR pmcntenclr_r &set_EVENT_CNT_0(uint32_t value)
6391 {
6392 EVENT_CNT_0 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6393 return *this;
6394 }
6395 CONSTEXPR uint32_t get_EVENT_CNT_1() const
6396 {
6397 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1);
6398 return value;
6399 }
6400#ifndef MODEL_REGS
6401 uint32_t get_EVENT_CNT_1() const volatile
6402 {
6403 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1);
6404 return value;
6405 }
6406#endif
6407 CONSTEXPR pmcntenclr_r &set_EVENT_CNT_1(uint32_t value)
6408 {
6409 EVENT_CNT_1 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6410 return *this;
6411 }
6412 CONSTEXPR uint32_t get_EVENT_CNT_2() const
6413 {
6414 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2);
6415 return value;
6416 }
6417#ifndef MODEL_REGS
6418 uint32_t get_EVENT_CNT_2() const volatile
6419 {
6420 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2);
6421 return value;
6422 }
6423#endif
6424 CONSTEXPR pmcntenclr_r &set_EVENT_CNT_2(uint32_t value)
6425 {
6426 EVENT_CNT_2 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6427 return *this;
6428 }
6429 CONSTEXPR uint32_t get_EVENT_CNT_3() const
6430 {
6431 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3);
6432 return value;
6433 }
6434#ifndef MODEL_REGS
6435 uint32_t get_EVENT_CNT_3() const volatile
6436 {
6437 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3);
6438 return value;
6439 }
6440#endif
6441 CONSTEXPR pmcntenclr_r &set_EVENT_CNT_3(uint32_t value)
6442 {
6443 EVENT_CNT_3 = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6444 return *this;
6445 }
6446 CONSTEXPR uint32_t get_CYCLE_CNT() const
6447 {
6448 uint32_t value = static_cast<uint32_t>(CYCLE_CNT);
6449 return value;
6450 }
6451#ifndef MODEL_REGS
6452 uint32_t get_CYCLE_CNT() const volatile
6453 {
6454 uint32_t value = static_cast<uint32_t>(CYCLE_CNT);
6455 return value;
6456 }
6457#endif
6458 CONSTEXPR pmcntenclr_r &set_CYCLE_CNT(uint32_t value)
6459 {
6460 CYCLE_CNT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6461 return *this;
6462 }
6463#endif //__cplusplus
6464};
6465
6466// pmovsset_r - Overflow flag status set register
6467struct pmovsset_r
6468{
6469#ifdef __cplusplus
6470 private:
6471#endif //__cplusplus
6472#ifdef MODEL_REGS
6473 ::core::dt::uint_t<1> EVENT_CNT_0_OVF; // Event counter overflow set bit for PMEVCNTR0
6474 ::core::dt::uint_t<1> EVENT_CNT_1_OVF; // Event counter overflow set bit for PMEVCNTR1
6475 ::core::dt::uint_t<1> EVENT_CNT_2_OVF; // Event counter overflow set bit for PMEVCNTR2
6476 ::core::dt::uint_t<1> EVENT_CNT_3_OVF; // Event counter overflow set bit for PMEVCNTR3
6477 ::core::dt::uint_t<1> CYCLE_CNT_OVF; // PMCCNTR overflow set bit
6478#else
6479 union
6480 {
6481 struct
6482 {
6483 uint32_t EVENT_CNT_0_OVF : 1; // Event counter overflow set bit for PMEVCNTR0
6484 uint32_t EVENT_CNT_1_OVF : 1; // Event counter overflow set bit for PMEVCNTR1
6485 uint32_t EVENT_CNT_2_OVF : 1; // Event counter overflow set bit for PMEVCNTR2
6486 uint32_t EVENT_CNT_3_OVF : 1; // Event counter overflow set bit for PMEVCNTR3
6487 uint32_t reserved0 : 27;
6488 uint32_t CYCLE_CNT_OVF : 1; // PMCCNTR overflow set bit
6489 };
6490 uint32_t word;
6491 };
6492#endif
6493#ifdef __cplusplus
6494 public:
6495#ifdef MODEL_REGS
6496 CONSTEXPR pmovsset_r() :
6497 EVENT_CNT_0_OVF(static_cast<uint32_t>(0)), EVENT_CNT_1_OVF(static_cast<uint32_t>(0)),
6498 EVENT_CNT_2_OVF(static_cast<uint32_t>(0)), EVENT_CNT_3_OVF(static_cast<uint32_t>(0)),
6499 CYCLE_CNT_OVF(static_cast<uint32_t>(0))
6500 {
6501 }
6502 CONSTEXPR pmovsset_r(uint32_t value) :
6503 EVENT_CNT_0_OVF(value >> 0), EVENT_CNT_1_OVF(value >> 1), EVENT_CNT_2_OVF(value >> 2),
6504 EVENT_CNT_3_OVF(value >> 3), CYCLE_CNT_OVF(value >> 31)
6505 {
6506 }
6507 CONSTEXPR void operator=(uint32_t value)
6508 {
6509 EVENT_CNT_0_OVF = value >> 0;
6510 EVENT_CNT_1_OVF = value >> 1;
6511 EVENT_CNT_2_OVF = value >> 2;
6512 EVENT_CNT_3_OVF = value >> 3;
6513 CYCLE_CNT_OVF = value >> 31;
6514 }
6515 CONSTEXPR operator uint32_t() const
6516 {
6517 return (EVENT_CNT_0_OVF << 0) | (EVENT_CNT_1_OVF << 1) | (EVENT_CNT_2_OVF << 2) | (EVENT_CNT_3_OVF << 3) |
6518 (CYCLE_CNT_OVF << 31);
6519 }
6520 pmovsset_r copy()
6521 {
6522 return *this;
6523 }
6524#else
6525 CONSTEXPR pmovsset_r() :
6526 EVENT_CNT_0_OVF(static_cast<uint32_t>(0)), EVENT_CNT_1_OVF(static_cast<uint32_t>(0)),
6527 EVENT_CNT_2_OVF(static_cast<uint32_t>(0)), EVENT_CNT_3_OVF(static_cast<uint32_t>(0)),
6528 reserved0(static_cast<uint32_t>(0)), CYCLE_CNT_OVF(static_cast<uint32_t>(0))
6529 {
6530 }
6531 CONSTEXPR pmovsset_r(uint32_t init) : word(init) {}
6532 CONSTEXPR void operator=(uint32_t value)
6533 {
6534 word = value;
6535 }
6536 void operator=(uint32_t value) volatile
6537 {
6538 word = value;
6539 }
6540 CONSTEXPR operator uint32_t()
6541 {
6542 return word;
6543 }
6544 operator uint32_t() volatile
6545 {
6546 return word;
6547 }
6548 pmovsset_r copy() volatile
6549 {
6550 return *this;
6551 }
6552#endif
6553 CONSTEXPR uint32_t get_EVENT_CNT_0_OVF() const
6554 {
6555 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_OVF);
6556 return value;
6557 }
6558#ifndef MODEL_REGS
6559 uint32_t get_EVENT_CNT_0_OVF() const volatile
6560 {
6561 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_OVF);
6562 return value;
6563 }
6564#endif
6565 CONSTEXPR pmovsset_r &set_EVENT_CNT_0_OVF(uint32_t value)
6566 {
6567 EVENT_CNT_0_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6568 return *this;
6569 }
6570 CONSTEXPR uint32_t get_EVENT_CNT_1_OVF() const
6571 {
6572 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_OVF);
6573 return value;
6574 }
6575#ifndef MODEL_REGS
6576 uint32_t get_EVENT_CNT_1_OVF() const volatile
6577 {
6578 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_OVF);
6579 return value;
6580 }
6581#endif
6582 CONSTEXPR pmovsset_r &set_EVENT_CNT_1_OVF(uint32_t value)
6583 {
6584 EVENT_CNT_1_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6585 return *this;
6586 }
6587 CONSTEXPR uint32_t get_EVENT_CNT_2_OVF() const
6588 {
6589 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_OVF);
6590 return value;
6591 }
6592#ifndef MODEL_REGS
6593 uint32_t get_EVENT_CNT_2_OVF() const volatile
6594 {
6595 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_OVF);
6596 return value;
6597 }
6598#endif
6599 CONSTEXPR pmovsset_r &set_EVENT_CNT_2_OVF(uint32_t value)
6600 {
6601 EVENT_CNT_2_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6602 return *this;
6603 }
6604 CONSTEXPR uint32_t get_EVENT_CNT_3_OVF() const
6605 {
6606 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_OVF);
6607 return value;
6608 }
6609#ifndef MODEL_REGS
6610 uint32_t get_EVENT_CNT_3_OVF() const volatile
6611 {
6612 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_OVF);
6613 return value;
6614 }
6615#endif
6616 CONSTEXPR pmovsset_r &set_EVENT_CNT_3_OVF(uint32_t value)
6617 {
6618 EVENT_CNT_3_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6619 return *this;
6620 }
6621 CONSTEXPR uint32_t get_CYCLE_CNT_OVF() const
6622 {
6623 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_OVF);
6624 return value;
6625 }
6626#ifndef MODEL_REGS
6627 uint32_t get_CYCLE_CNT_OVF() const volatile
6628 {
6629 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_OVF);
6630 return value;
6631 }
6632#endif
6633 CONSTEXPR pmovsset_r &set_CYCLE_CNT_OVF(uint32_t value)
6634 {
6635 CYCLE_CNT_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6636 return *this;
6637 }
6638#endif //__cplusplus
6639};
6640
6641// pmovsclr_r - Overflow flag status clear register
6642struct pmovsclr_r
6643{
6644#ifdef __cplusplus
6645 private:
6646#endif //__cplusplus
6647#ifdef MODEL_REGS
6648 ::core::dt::uint_t<1> EVENT_CNT_0_OVF; // Event counter overflow clear bit for PMEVCNTR0
6649 ::core::dt::uint_t<1> EVENT_CNT_1_OVF; // Event counter overflow clear bit for PMEVCNTR1
6650 ::core::dt::uint_t<1> EVENT_CNT_2_OVF; // Event counter overflow clear bit for PMEVCNTR2
6651 ::core::dt::uint_t<1> EVENT_CNT_3_OVF; // Event counter overflow clear bit for PMEVCNTR3
6652 ::core::dt::uint_t<1> CYCLE_CNT_OVF; // PMCCNTR overflow clear bit
6653#else
6654 union
6655 {
6656 struct
6657 {
6658 uint32_t EVENT_CNT_0_OVF : 1; // Event counter overflow clear bit for PMEVCNTR0
6659 uint32_t EVENT_CNT_1_OVF : 1; // Event counter overflow clear bit for PMEVCNTR1
6660 uint32_t EVENT_CNT_2_OVF : 1; // Event counter overflow clear bit for PMEVCNTR2
6661 uint32_t EVENT_CNT_3_OVF : 1; // Event counter overflow clear bit for PMEVCNTR3
6662 uint32_t reserved0 : 27;
6663 uint32_t CYCLE_CNT_OVF : 1; // PMCCNTR overflow clear bit
6664 };
6665 uint32_t word;
6666 };
6667#endif
6668#ifdef __cplusplus
6669 public:
6670#ifdef MODEL_REGS
6671 CONSTEXPR pmovsclr_r() :
6672 EVENT_CNT_0_OVF(static_cast<uint32_t>(0)), EVENT_CNT_1_OVF(static_cast<uint32_t>(0)),
6673 EVENT_CNT_2_OVF(static_cast<uint32_t>(0)), EVENT_CNT_3_OVF(static_cast<uint32_t>(0)),
6674 CYCLE_CNT_OVF(static_cast<uint32_t>(0))
6675 {
6676 }
6677 CONSTEXPR pmovsclr_r(uint32_t value) :
6678 EVENT_CNT_0_OVF(value >> 0), EVENT_CNT_1_OVF(value >> 1), EVENT_CNT_2_OVF(value >> 2),
6679 EVENT_CNT_3_OVF(value >> 3), CYCLE_CNT_OVF(value >> 31)
6680 {
6681 }
6682 CONSTEXPR void operator=(uint32_t value)
6683 {
6684 EVENT_CNT_0_OVF = value >> 0;
6685 EVENT_CNT_1_OVF = value >> 1;
6686 EVENT_CNT_2_OVF = value >> 2;
6687 EVENT_CNT_3_OVF = value >> 3;
6688 CYCLE_CNT_OVF = value >> 31;
6689 }
6690 CONSTEXPR operator uint32_t() const
6691 {
6692 return (EVENT_CNT_0_OVF << 0) | (EVENT_CNT_1_OVF << 1) | (EVENT_CNT_2_OVF << 2) | (EVENT_CNT_3_OVF << 3) |
6693 (CYCLE_CNT_OVF << 31);
6694 }
6695 pmovsclr_r copy()
6696 {
6697 return *this;
6698 }
6699#else
6700 CONSTEXPR pmovsclr_r() :
6701 EVENT_CNT_0_OVF(static_cast<uint32_t>(0)), EVENT_CNT_1_OVF(static_cast<uint32_t>(0)),
6702 EVENT_CNT_2_OVF(static_cast<uint32_t>(0)), EVENT_CNT_3_OVF(static_cast<uint32_t>(0)),
6703 reserved0(static_cast<uint32_t>(0)), CYCLE_CNT_OVF(static_cast<uint32_t>(0))
6704 {
6705 }
6706 CONSTEXPR pmovsclr_r(uint32_t init) : word(init) {}
6707 CONSTEXPR void operator=(uint32_t value)
6708 {
6709 word = value;
6710 }
6711 void operator=(uint32_t value) volatile
6712 {
6713 word = value;
6714 }
6715 CONSTEXPR operator uint32_t()
6716 {
6717 return word;
6718 }
6719 operator uint32_t() volatile
6720 {
6721 return word;
6722 }
6723 pmovsclr_r copy() volatile
6724 {
6725 return *this;
6726 }
6727#endif
6728 CONSTEXPR uint32_t get_EVENT_CNT_0_OVF() const
6729 {
6730 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_OVF);
6731 return value;
6732 }
6733#ifndef MODEL_REGS
6734 uint32_t get_EVENT_CNT_0_OVF() const volatile
6735 {
6736 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_OVF);
6737 return value;
6738 }
6739#endif
6740 CONSTEXPR pmovsclr_r &set_EVENT_CNT_0_OVF(uint32_t value)
6741 {
6742 EVENT_CNT_0_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6743 return *this;
6744 }
6745 CONSTEXPR uint32_t get_EVENT_CNT_1_OVF() const
6746 {
6747 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_OVF);
6748 return value;
6749 }
6750#ifndef MODEL_REGS
6751 uint32_t get_EVENT_CNT_1_OVF() const volatile
6752 {
6753 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_OVF);
6754 return value;
6755 }
6756#endif
6757 CONSTEXPR pmovsclr_r &set_EVENT_CNT_1_OVF(uint32_t value)
6758 {
6759 EVENT_CNT_1_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6760 return *this;
6761 }
6762 CONSTEXPR uint32_t get_EVENT_CNT_2_OVF() const
6763 {
6764 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_OVF);
6765 return value;
6766 }
6767#ifndef MODEL_REGS
6768 uint32_t get_EVENT_CNT_2_OVF() const volatile
6769 {
6770 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_OVF);
6771 return value;
6772 }
6773#endif
6774 CONSTEXPR pmovsclr_r &set_EVENT_CNT_2_OVF(uint32_t value)
6775 {
6776 EVENT_CNT_2_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6777 return *this;
6778 }
6779 CONSTEXPR uint32_t get_EVENT_CNT_3_OVF() const
6780 {
6781 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_OVF);
6782 return value;
6783 }
6784#ifndef MODEL_REGS
6785 uint32_t get_EVENT_CNT_3_OVF() const volatile
6786 {
6787 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_OVF);
6788 return value;
6789 }
6790#endif
6791 CONSTEXPR pmovsclr_r &set_EVENT_CNT_3_OVF(uint32_t value)
6792 {
6793 EVENT_CNT_3_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6794 return *this;
6795 }
6796 CONSTEXPR uint32_t get_CYCLE_CNT_OVF() const
6797 {
6798 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_OVF);
6799 return value;
6800 }
6801#ifndef MODEL_REGS
6802 uint32_t get_CYCLE_CNT_OVF() const volatile
6803 {
6804 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_OVF);
6805 return value;
6806 }
6807#endif
6808 CONSTEXPR pmovsclr_r &set_CYCLE_CNT_OVF(uint32_t value)
6809 {
6810 CYCLE_CNT_OVF = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6811 return *this;
6812 }
6813#endif //__cplusplus
6814};
6815
6816// pmintset_r - Interrupt enable set register
6817struct pmintset_r
6818{
6819#ifdef __cplusplus
6820 private:
6821#endif //__cplusplus
6822#ifdef MODEL_REGS
6823 ::core::dt::uint_t<1> EVENT_CNT_0_INT; // Event counter overflow interrupt request enable bit for PMEVCNTR0
6824 ::core::dt::uint_t<1> EVENT_CNT_1_INT; // Event counter overflow interrupt request enable bit for PMEVCNTR1
6825 ::core::dt::uint_t<1> EVENT_CNT_2_INT; // Event counter overflow interrupt request enable bit for PMEVCNTR2
6826 ::core::dt::uint_t<1> EVENT_CNT_3_INT; // Event counter overflow interrupt request enable bit for PMEVCNTR3
6827 ::core::dt::uint_t<1> CYCLE_CNT_INT; // PMCCNTR overflow interrupt request enable bit
6828#else
6829 union
6830 {
6831 struct
6832 {
6833 uint32_t EVENT_CNT_0_INT : 1; // Event counter overflow interrupt request enable bit for PMEVCNTR0
6834 uint32_t EVENT_CNT_1_INT : 1; // Event counter overflow interrupt request enable bit for PMEVCNTR1
6835 uint32_t EVENT_CNT_2_INT : 1; // Event counter overflow interrupt request enable bit for PMEVCNTR2
6836 uint32_t EVENT_CNT_3_INT : 1; // Event counter overflow interrupt request enable bit for PMEVCNTR3
6837 uint32_t reserved0 : 27;
6838 uint32_t CYCLE_CNT_INT : 1; // PMCCNTR overflow interrupt request enable bit
6839 };
6840 uint32_t word;
6841 };
6842#endif
6843#ifdef __cplusplus
6844 public:
6845#ifdef MODEL_REGS
6846 CONSTEXPR pmintset_r() :
6847 EVENT_CNT_0_INT(static_cast<uint32_t>(0)), EVENT_CNT_1_INT(static_cast<uint32_t>(0)),
6848 EVENT_CNT_2_INT(static_cast<uint32_t>(0)), EVENT_CNT_3_INT(static_cast<uint32_t>(0)),
6849 CYCLE_CNT_INT(static_cast<uint32_t>(0))
6850 {
6851 }
6852 CONSTEXPR pmintset_r(uint32_t value) :
6853 EVENT_CNT_0_INT(value >> 0), EVENT_CNT_1_INT(value >> 1), EVENT_CNT_2_INT(value >> 2),
6854 EVENT_CNT_3_INT(value >> 3), CYCLE_CNT_INT(value >> 31)
6855 {
6856 }
6857 CONSTEXPR void operator=(uint32_t value)
6858 {
6859 EVENT_CNT_0_INT = value >> 0;
6860 EVENT_CNT_1_INT = value >> 1;
6861 EVENT_CNT_2_INT = value >> 2;
6862 EVENT_CNT_3_INT = value >> 3;
6863 CYCLE_CNT_INT = value >> 31;
6864 }
6865 CONSTEXPR operator uint32_t() const
6866 {
6867 return (EVENT_CNT_0_INT << 0) | (EVENT_CNT_1_INT << 1) | (EVENT_CNT_2_INT << 2) | (EVENT_CNT_3_INT << 3) |
6868 (CYCLE_CNT_INT << 31);
6869 }
6870 pmintset_r copy()
6871 {
6872 return *this;
6873 }
6874#else
6875 CONSTEXPR pmintset_r() :
6876 EVENT_CNT_0_INT(static_cast<uint32_t>(0)), EVENT_CNT_1_INT(static_cast<uint32_t>(0)),
6877 EVENT_CNT_2_INT(static_cast<uint32_t>(0)), EVENT_CNT_3_INT(static_cast<uint32_t>(0)),
6878 reserved0(static_cast<uint32_t>(0)), CYCLE_CNT_INT(static_cast<uint32_t>(0))
6879 {
6880 }
6881 CONSTEXPR pmintset_r(uint32_t init) : word(init) {}
6882 CONSTEXPR void operator=(uint32_t value)
6883 {
6884 word = value;
6885 }
6886 void operator=(uint32_t value) volatile
6887 {
6888 word = value;
6889 }
6890 CONSTEXPR operator uint32_t()
6891 {
6892 return word;
6893 }
6894 operator uint32_t() volatile
6895 {
6896 return word;
6897 }
6898 pmintset_r copy() volatile
6899 {
6900 return *this;
6901 }
6902#endif
6903 CONSTEXPR uint32_t get_EVENT_CNT_0_INT() const
6904 {
6905 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_INT);
6906 return value;
6907 }
6908#ifndef MODEL_REGS
6909 uint32_t get_EVENT_CNT_0_INT() const volatile
6910 {
6911 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_INT);
6912 return value;
6913 }
6914#endif
6915 CONSTEXPR pmintset_r &set_EVENT_CNT_0_INT(uint32_t value)
6916 {
6917 EVENT_CNT_0_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6918 return *this;
6919 }
6920 CONSTEXPR uint32_t get_EVENT_CNT_1_INT() const
6921 {
6922 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_INT);
6923 return value;
6924 }
6925#ifndef MODEL_REGS
6926 uint32_t get_EVENT_CNT_1_INT() const volatile
6927 {
6928 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_INT);
6929 return value;
6930 }
6931#endif
6932 CONSTEXPR pmintset_r &set_EVENT_CNT_1_INT(uint32_t value)
6933 {
6934 EVENT_CNT_1_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6935 return *this;
6936 }
6937 CONSTEXPR uint32_t get_EVENT_CNT_2_INT() const
6938 {
6939 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_INT);
6940 return value;
6941 }
6942#ifndef MODEL_REGS
6943 uint32_t get_EVENT_CNT_2_INT() const volatile
6944 {
6945 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_INT);
6946 return value;
6947 }
6948#endif
6949 CONSTEXPR pmintset_r &set_EVENT_CNT_2_INT(uint32_t value)
6950 {
6951 EVENT_CNT_2_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6952 return *this;
6953 }
6954 CONSTEXPR uint32_t get_EVENT_CNT_3_INT() const
6955 {
6956 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_INT);
6957 return value;
6958 }
6959#ifndef MODEL_REGS
6960 uint32_t get_EVENT_CNT_3_INT() const volatile
6961 {
6962 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_INT);
6963 return value;
6964 }
6965#endif
6966 CONSTEXPR pmintset_r &set_EVENT_CNT_3_INT(uint32_t value)
6967 {
6968 EVENT_CNT_3_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6969 return *this;
6970 }
6971 CONSTEXPR uint32_t get_CYCLE_CNT_INT() const
6972 {
6973 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_INT);
6974 return value;
6975 }
6976#ifndef MODEL_REGS
6977 uint32_t get_CYCLE_CNT_INT() const volatile
6978 {
6979 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_INT);
6980 return value;
6981 }
6982#endif
6983 CONSTEXPR pmintset_r &set_CYCLE_CNT_INT(uint32_t value)
6984 {
6985 CYCLE_CNT_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
6986 return *this;
6987 }
6988#endif //__cplusplus
6989};
6990
6991// pmintclr_r - Interrupt enable clear register
6992struct pmintclr_r
6993{
6994#ifdef __cplusplus
6995 private:
6996#endif //__cplusplus
6997#ifdef MODEL_REGS
6998 ::core::dt::uint_t<1> EVENT_CNT_0_INT; // Event counter overflow interrupt request disable bit for PMEVCNTR0
6999 ::core::dt::uint_t<1> EVENT_CNT_1_INT; // Event counter overflow interrupt request disable bit for PMEVCNTR1
7000 ::core::dt::uint_t<1> EVENT_CNT_2_INT; // Event counter overflow interrupt request disable bit for PMEVCNTR2
7001 ::core::dt::uint_t<1> EVENT_CNT_3_INT; // Event counter overflow interrupt request disable bit for PMEVCNTR3
7002 ::core::dt::uint_t<1> CYCLE_CNT_INT; // PMCCNTR overflow interrupt request disable bit
7003#else
7004 union
7005 {
7006 struct
7007 {
7008 uint32_t EVENT_CNT_0_INT : 1; // Event counter overflow interrupt request disable bit for PMEVCNTR0
7009 uint32_t EVENT_CNT_1_INT : 1; // Event counter overflow interrupt request disable bit for PMEVCNTR1
7010 uint32_t EVENT_CNT_2_INT : 1; // Event counter overflow interrupt request disable bit for PMEVCNTR2
7011 uint32_t EVENT_CNT_3_INT : 1; // Event counter overflow interrupt request disable bit for PMEVCNTR3
7012 uint32_t reserved0 : 27;
7013 uint32_t CYCLE_CNT_INT : 1; // PMCCNTR overflow interrupt request disable bit
7014 };
7015 uint32_t word;
7016 };
7017#endif
7018#ifdef __cplusplus
7019 public:
7020#ifdef MODEL_REGS
7021 CONSTEXPR pmintclr_r() :
7022 EVENT_CNT_0_INT(static_cast<uint32_t>(0)), EVENT_CNT_1_INT(static_cast<uint32_t>(0)),
7023 EVENT_CNT_2_INT(static_cast<uint32_t>(0)), EVENT_CNT_3_INT(static_cast<uint32_t>(0)),
7024 CYCLE_CNT_INT(static_cast<uint32_t>(0))
7025 {
7026 }
7027 CONSTEXPR pmintclr_r(uint32_t value) :
7028 EVENT_CNT_0_INT(value >> 0), EVENT_CNT_1_INT(value >> 1), EVENT_CNT_2_INT(value >> 2),
7029 EVENT_CNT_3_INT(value >> 3), CYCLE_CNT_INT(value >> 31)
7030 {
7031 }
7032 CONSTEXPR void operator=(uint32_t value)
7033 {
7034 EVENT_CNT_0_INT = value >> 0;
7035 EVENT_CNT_1_INT = value >> 1;
7036 EVENT_CNT_2_INT = value >> 2;
7037 EVENT_CNT_3_INT = value >> 3;
7038 CYCLE_CNT_INT = value >> 31;
7039 }
7040 CONSTEXPR operator uint32_t() const
7041 {
7042 return (EVENT_CNT_0_INT << 0) | (EVENT_CNT_1_INT << 1) | (EVENT_CNT_2_INT << 2) | (EVENT_CNT_3_INT << 3) |
7043 (CYCLE_CNT_INT << 31);
7044 }
7045 pmintclr_r copy()
7046 {
7047 return *this;
7048 }
7049#else
7050 CONSTEXPR pmintclr_r() :
7051 EVENT_CNT_0_INT(static_cast<uint32_t>(0)), EVENT_CNT_1_INT(static_cast<uint32_t>(0)),
7052 EVENT_CNT_2_INT(static_cast<uint32_t>(0)), EVENT_CNT_3_INT(static_cast<uint32_t>(0)),
7053 reserved0(static_cast<uint32_t>(0)), CYCLE_CNT_INT(static_cast<uint32_t>(0))
7054 {
7055 }
7056 CONSTEXPR pmintclr_r(uint32_t init) : word(init) {}
7057 CONSTEXPR void operator=(uint32_t value)
7058 {
7059 word = value;
7060 }
7061 void operator=(uint32_t value) volatile
7062 {
7063 word = value;
7064 }
7065 CONSTEXPR operator uint32_t()
7066 {
7067 return word;
7068 }
7069 operator uint32_t() volatile
7070 {
7071 return word;
7072 }
7073 pmintclr_r copy() volatile
7074 {
7075 return *this;
7076 }
7077#endif
7078 CONSTEXPR uint32_t get_EVENT_CNT_0_INT() const
7079 {
7080 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_INT);
7081 return value;
7082 }
7083#ifndef MODEL_REGS
7084 uint32_t get_EVENT_CNT_0_INT() const volatile
7085 {
7086 uint32_t value = static_cast<uint32_t>(EVENT_CNT_0_INT);
7087 return value;
7088 }
7089#endif
7090 CONSTEXPR pmintclr_r &set_EVENT_CNT_0_INT(uint32_t value)
7091 {
7092 EVENT_CNT_0_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
7093 return *this;
7094 }
7095 CONSTEXPR uint32_t get_EVENT_CNT_1_INT() const
7096 {
7097 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_INT);
7098 return value;
7099 }
7100#ifndef MODEL_REGS
7101 uint32_t get_EVENT_CNT_1_INT() const volatile
7102 {
7103 uint32_t value = static_cast<uint32_t>(EVENT_CNT_1_INT);
7104 return value;
7105 }
7106#endif
7107 CONSTEXPR pmintclr_r &set_EVENT_CNT_1_INT(uint32_t value)
7108 {
7109 EVENT_CNT_1_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
7110 return *this;
7111 }
7112 CONSTEXPR uint32_t get_EVENT_CNT_2_INT() const
7113 {
7114 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_INT);
7115 return value;
7116 }
7117#ifndef MODEL_REGS
7118 uint32_t get_EVENT_CNT_2_INT() const volatile
7119 {
7120 uint32_t value = static_cast<uint32_t>(EVENT_CNT_2_INT);
7121 return value;
7122 }
7123#endif
7124 CONSTEXPR pmintclr_r &set_EVENT_CNT_2_INT(uint32_t value)
7125 {
7126 EVENT_CNT_2_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
7127 return *this;
7128 }
7129 CONSTEXPR uint32_t get_EVENT_CNT_3_INT() const
7130 {
7131 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_INT);
7132 return value;
7133 }
7134#ifndef MODEL_REGS
7135 uint32_t get_EVENT_CNT_3_INT() const volatile
7136 {
7137 uint32_t value = static_cast<uint32_t>(EVENT_CNT_3_INT);
7138 return value;
7139 }
7140#endif
7141 CONSTEXPR pmintclr_r &set_EVENT_CNT_3_INT(uint32_t value)
7142 {
7143 EVENT_CNT_3_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
7144 return *this;
7145 }
7146 CONSTEXPR uint32_t get_CYCLE_CNT_INT() const
7147 {
7148 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_INT);
7149 return value;
7150 }
7151#ifndef MODEL_REGS
7152 uint32_t get_CYCLE_CNT_INT() const volatile
7153 {
7154 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_INT);
7155 return value;
7156 }
7157#endif
7158 CONSTEXPR pmintclr_r &set_CYCLE_CNT_INT(uint32_t value)
7159 {
7160 CYCLE_CNT_INT = ((1u << 1) - 1) & static_cast<uint32_t>(value);
7161 return *this;
7162 }
7163#endif //__cplusplus
7164};
7165
7166// pmccntr_lo_r - Performance monitor cycle count low register
7167struct pmccntr_lo_r
7168{
7169#ifdef __cplusplus
7170 private:
7171#endif //__cplusplus
7172#ifdef MODEL_REGS
7173 ::core::dt::uint_t<32> CYCLE_CNT_LO; // Cycle count low
7174#else
7175 union
7176 {
7177 uint32_t CYCLE_CNT_LO; // Cycle count low
7178 uint32_t word;
7179 };
7180#endif
7181#ifdef __cplusplus
7182 public:
7183#ifdef MODEL_REGS
7184 CONSTEXPR pmccntr_lo_r() : CYCLE_CNT_LO(static_cast<uint32_t>(0)) {}
7185 CONSTEXPR pmccntr_lo_r(uint32_t value) : CYCLE_CNT_LO(value >> 0) {}
7186 CONSTEXPR void operator=(uint32_t value)
7187 {
7188 CYCLE_CNT_LO = value >> 0;
7189 }
7190 CONSTEXPR operator uint32_t() const
7191 {
7192 return (CYCLE_CNT_LO << 0);
7193 }
7194 pmccntr_lo_r copy()
7195 {
7196 return *this;
7197 }
7198#else
7199 CONSTEXPR pmccntr_lo_r() : CYCLE_CNT_LO(static_cast<uint32_t>(0)) {}
7200 CONSTEXPR pmccntr_lo_r(uint32_t init) : word(init) {}
7201 CONSTEXPR void operator=(uint32_t value)
7202 {
7203 word = value;
7204 }
7205 void operator=(uint32_t value) volatile
7206 {
7207 word = value;
7208 }
7209 CONSTEXPR operator uint32_t()
7210 {
7211 return word;
7212 }
7213 operator uint32_t() volatile
7214 {
7215 return word;
7216 }
7217 pmccntr_lo_r copy() volatile
7218 {
7219 return *this;
7220 }
7221#endif
7222 CONSTEXPR uint32_t get_CYCLE_CNT_LO() const
7223 {
7224 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_LO);
7225 return value;
7226 }
7227#ifndef MODEL_REGS
7228 uint32_t get_CYCLE_CNT_LO() const volatile
7229 {
7230 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_LO);
7231 return value;
7232 }
7233#endif
7234 CONSTEXPR pmccntr_lo_r &set_CYCLE_CNT_LO(uint32_t value)
7235 {
7236 CYCLE_CNT_LO = static_cast<uint32_t>(value);
7237 return *this;
7238 }
7239#endif //__cplusplus
7240};
7241
7242// pmccntr_hi_r - Performance monitor cycle count high register
7243struct pmccntr_hi_r
7244{
7245#ifdef __cplusplus
7246 private:
7247#endif //__cplusplus
7248#ifdef MODEL_REGS
7249 ::core::dt::uint_t<16> CYCLE_CNT_HI; // Cycle count high
7250#else
7251 union
7252 {
7253 struct
7254 {
7255 uint32_t CYCLE_CNT_HI : 16; // Cycle count high
7256 uint32_t reserved0 : 16;
7257 };
7258 uint32_t word;
7259 };
7260#endif
7261#ifdef __cplusplus
7262 public:
7263#ifdef MODEL_REGS
7264 CONSTEXPR pmccntr_hi_r() : CYCLE_CNT_HI(static_cast<uint32_t>(0)) {}
7265 CONSTEXPR pmccntr_hi_r(uint32_t value) : CYCLE_CNT_HI(value >> 0) {}
7266 CONSTEXPR void operator=(uint32_t value)
7267 {
7268 CYCLE_CNT_HI = value >> 0;
7269 }
7270 CONSTEXPR operator uint32_t() const
7271 {
7272 return (CYCLE_CNT_HI << 0);
7273 }
7274 pmccntr_hi_r copy()
7275 {
7276 return *this;
7277 }
7278#else
7279 CONSTEXPR pmccntr_hi_r() : CYCLE_CNT_HI(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)) {}
7280 CONSTEXPR pmccntr_hi_r(uint32_t init) : word(init) {}
7281 CONSTEXPR void operator=(uint32_t value)
7282 {
7283 word = value;
7284 }
7285 void operator=(uint32_t value) volatile
7286 {
7287 word = value;
7288 }
7289 CONSTEXPR operator uint32_t()
7290 {
7291 return word;
7292 }
7293 operator uint32_t() volatile
7294 {
7295 return word;
7296 }
7297 pmccntr_hi_r copy() volatile
7298 {
7299 return *this;
7300 }
7301#endif
7302 CONSTEXPR uint32_t get_CYCLE_CNT_HI() const
7303 {
7304 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_HI);
7305 return value;
7306 }
7307#ifndef MODEL_REGS
7308 uint32_t get_CYCLE_CNT_HI() const volatile
7309 {
7310 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_HI);
7311 return value;
7312 }
7313#endif
7314 CONSTEXPR pmccntr_hi_r &set_CYCLE_CNT_HI(uint32_t value)
7315 {
7316 CYCLE_CNT_HI = ((1u << 16) - 1) & static_cast<uint32_t>(value);
7317 return *this;
7318 }
7319#endif //__cplusplus
7320};
7321
7322// pmccntr_cfg_r - Set start/stop event on the cycle counter
7323struct pmccntr_cfg_r
7324{
7325#ifdef __cplusplus
7326 private:
7327#endif //__cplusplus
7328#ifdef MODEL_REGS
7329 ::core::dt::uint_t<10> CYCLE_CNT_CFG_START; // Cycle counter start event
7330 ::core::dt::uint_t<10> CYCLE_CNT_CFG_STOP; // Cycle counter stop event
7331#else
7332 union
7333 {
7334 struct
7335 {
7336 uint32_t CYCLE_CNT_CFG_START : 10; // Cycle counter start event
7337 uint32_t reserved0 : 6;
7338 uint32_t CYCLE_CNT_CFG_STOP : 10; // Cycle counter stop event
7339 uint32_t reserved1 : 6;
7340 };
7341 uint32_t word;
7342 };
7343#endif
7344#ifdef __cplusplus
7345 public:
7346#ifdef MODEL_REGS
7347 CONSTEXPR pmccntr_cfg_r() :
7348 CYCLE_CNT_CFG_START(static_cast<uint32_t>(0)), CYCLE_CNT_CFG_STOP(static_cast<uint32_t>(0))
7349 {
7350 }
7351 CONSTEXPR pmccntr_cfg_r(uint32_t value) : CYCLE_CNT_CFG_START(value >> 0), CYCLE_CNT_CFG_STOP(value >> 16) {}
7352 CONSTEXPR void operator=(uint32_t value)
7353 {
7354 CYCLE_CNT_CFG_START = value >> 0;
7355 CYCLE_CNT_CFG_STOP = value >> 16;
7356 }
7357 CONSTEXPR operator uint32_t() const
7358 {
7359 return (CYCLE_CNT_CFG_START << 0) | (CYCLE_CNT_CFG_STOP << 16);
7360 }
7361 pmccntr_cfg_r copy()
7362 {
7363 return *this;
7364 }
7365#else
7366 CONSTEXPR pmccntr_cfg_r() :
7367 CYCLE_CNT_CFG_START(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)),
7368 CYCLE_CNT_CFG_STOP(static_cast<uint32_t>(0)), reserved1(static_cast<uint32_t>(0))
7369 {
7370 }
7371 CONSTEXPR pmccntr_cfg_r(uint32_t init) : word(init) {}
7372 CONSTEXPR void operator=(uint32_t value)
7373 {
7374 word = value;
7375 }
7376 void operator=(uint32_t value) volatile
7377 {
7378 word = value;
7379 }
7380 CONSTEXPR operator uint32_t()
7381 {
7382 return word;
7383 }
7384 operator uint32_t() volatile
7385 {
7386 return word;
7387 }
7388 pmccntr_cfg_r copy() volatile
7389 {
7390 return *this;
7391 }
7392#endif
7393 CONSTEXPR uint32_t get_CYCLE_CNT_CFG_START() const
7394 {
7395 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_CFG_START);
7396 return value;
7397 }
7398#ifndef MODEL_REGS
7399 uint32_t get_CYCLE_CNT_CFG_START() const volatile
7400 {
7401 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_CFG_START);
7402 return value;
7403 }
7404#endif
7405 CONSTEXPR pmccntr_cfg_r &set_CYCLE_CNT_CFG_START(uint32_t value)
7406 {
7407 CYCLE_CNT_CFG_START = ((1u << 10) - 1) & static_cast<uint32_t>(value);
7408 return *this;
7409 }
7410 CONSTEXPR uint32_t get_CYCLE_CNT_CFG_STOP() const
7411 {
7412 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_CFG_STOP);
7413 return value;
7414 }
7415#ifndef MODEL_REGS
7416 uint32_t get_CYCLE_CNT_CFG_STOP() const volatile
7417 {
7418 uint32_t value = static_cast<uint32_t>(CYCLE_CNT_CFG_STOP);
7419 return value;
7420 }
7421#endif
7422 CONSTEXPR pmccntr_cfg_r &set_CYCLE_CNT_CFG_STOP(uint32_t value)
7423 {
7424 CYCLE_CNT_CFG_STOP = ((1u << 10) - 1) & static_cast<uint32_t>(value);
7425 return *this;
7426 }
7427#endif //__cplusplus
7428};
7429
7430// pmcaxi_chan_r - Set which AXI channel to monitor in PMU
7431struct pmcaxi_chan_r
7432{
7433#ifdef __cplusplus
7434 private:
7435#endif //__cplusplus
7436#ifdef MODEL_REGS
7437 ::core::dt::uint_t<4> AXI_CHAN; // Channel number to monitor (Read: 0=Cmd 1=IFM 2=Weights 3=Scale+Bias 4=Mem2Mem;
7438 // Write: 8=OFM 9=Mem2Mem)
7439 ::core::dt::uint_t<1> RW; // 0 for read, 1 for write
7440 ::core::dt::uint_t<2>
7441 AXI_CNT; // AXI counter to monitor (0=AXI0 counter0, 1=AXI0 counter1, 2=AXI1 counter 2, 3=AXI counter3)
7442#else
7443 union
7444 {
7445 struct
7446 {
7447 uint32_t AXI_CHAN : 4; // Channel number to monitor (Read: 0=Cmd 1=IFM 2=Weights 3=Scale+Bias 4=Mem2Mem;
7448 // Write: 8=OFM 9=Mem2Mem)
7449 uint32_t reserved0 : 3;
7450 uint32_t RW : 1; // 0 for read, 1 for write
7451 uint32_t AXI_CNT : 2; // AXI counter to monitor (0=AXI0 counter0, 1=AXI0 counter1, 2=AXI1 counter 2, 3=AXI
7452 // counter3)
7453 uint32_t reserved1 : 22;
7454 };
7455 uint32_t word;
7456 };
7457#endif
7458#ifdef __cplusplus
7459 public:
7460#ifdef MODEL_REGS
7461 CONSTEXPR pmcaxi_chan_r() :
7462 AXI_CHAN(static_cast<uint32_t>(0)), RW(static_cast<uint32_t>(0)), AXI_CNT(static_cast<uint32_t>(0))
7463 {
7464 }
7465 CONSTEXPR pmcaxi_chan_r(uint32_t value) : AXI_CHAN(value >> 0), RW(value >> 7), AXI_CNT(value >> 8) {}
7466 CONSTEXPR void operator=(uint32_t value)
7467 {
7468 AXI_CHAN = value >> 0;
7469 RW = value >> 7;
7470 AXI_CNT = value >> 8;
7471 }
7472 CONSTEXPR operator uint32_t() const
7473 {
7474 return (AXI_CHAN << 0) | (RW << 7) | (AXI_CNT << 8);
7475 }
7476 pmcaxi_chan_r copy()
7477 {
7478 return *this;
7479 }
7480#else
7481 CONSTEXPR pmcaxi_chan_r() :
7482 AXI_CHAN(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)), RW(static_cast<uint32_t>(0)),
7483 AXI_CNT(static_cast<uint32_t>(0)), reserved1(static_cast<uint32_t>(0))
7484 {
7485 }
7486 CONSTEXPR pmcaxi_chan_r(uint32_t init) : word(init) {}
7487 CONSTEXPR void operator=(uint32_t value)
7488 {
7489 word = value;
7490 }
7491 void operator=(uint32_t value) volatile
7492 {
7493 word = value;
7494 }
7495 CONSTEXPR operator uint32_t()
7496 {
7497 return word;
7498 }
7499 operator uint32_t() volatile
7500 {
7501 return word;
7502 }
7503 pmcaxi_chan_r copy() volatile
7504 {
7505 return *this;
7506 }
7507#endif
7508 CONSTEXPR uint32_t get_AXI_CHAN() const
7509 {
7510 uint32_t value = static_cast<uint32_t>(AXI_CHAN);
7511 return value;
7512 }
7513#ifndef MODEL_REGS
7514 uint32_t get_AXI_CHAN() const volatile
7515 {
7516 uint32_t value = static_cast<uint32_t>(AXI_CHAN);
7517 return value;
7518 }
7519#endif
7520 CONSTEXPR pmcaxi_chan_r &set_AXI_CHAN(uint32_t value)
7521 {
7522 AXI_CHAN = ((1u << 4) - 1) & static_cast<uint32_t>(value);
7523 return *this;
7524 }
7525 CONSTEXPR uint32_t get_RW() const
7526 {
7527 uint32_t value = static_cast<uint32_t>(RW);
7528 return value;
7529 }
7530#ifndef MODEL_REGS
7531 uint32_t get_RW() const volatile
7532 {
7533 uint32_t value = static_cast<uint32_t>(RW);
7534 return value;
7535 }
7536#endif
7537 CONSTEXPR pmcaxi_chan_r &set_RW(uint32_t value)
7538 {
7539 RW = ((1u << 1) - 1) & static_cast<uint32_t>(value);
7540 return *this;
7541 }
7542 CONSTEXPR uint32_t get_AXI_CNT() const
7543 {
7544 uint32_t value = static_cast<uint32_t>(AXI_CNT);
7545 return value;
7546 }
7547#ifndef MODEL_REGS
7548 uint32_t get_AXI_CNT() const volatile
7549 {
7550 uint32_t value = static_cast<uint32_t>(AXI_CNT);
7551 return value;
7552 }
7553#endif
7554 CONSTEXPR pmcaxi_chan_r &set_AXI_CNT(uint32_t value)
7555 {
7556 AXI_CNT = ((1u << 2) - 1) & static_cast<uint32_t>(value);
7557 return *this;
7558 }
7559#endif //__cplusplus
7560};
7561
7562// pmevtyper0_r - Performance monitor event type register 0
7563struct pmevtyper0_r
7564{
7565#ifdef __cplusplus
7566 private:
7567#endif //__cplusplus
7568#ifdef MODEL_REGS
7569 ::core::dt::uint_t<10> EV_TYPE; // Event Type
7570#else
7571 union
7572 {
7573 struct
7574 {
7575 uint32_t EV_TYPE : 10; // Event Type
7576 uint32_t reserved0 : 22;
7577 };
7578 uint32_t word;
7579 };
7580#endif
7581#ifdef __cplusplus
7582 public:
7583#ifdef MODEL_REGS
7584 CONSTEXPR pmevtyper0_r() : EV_TYPE(static_cast<uint32_t>(0)) {}
7585 CONSTEXPR pmevtyper0_r(uint32_t value) : EV_TYPE(value >> 0) {}
7586 CONSTEXPR void operator=(uint32_t value)
7587 {
7588 EV_TYPE = value >> 0;
7589 }
7590 CONSTEXPR operator uint32_t() const
7591 {
7592 return (EV_TYPE << 0);
7593 }
7594 pmevtyper0_r copy()
7595 {
7596 return *this;
7597 }
7598#else
7599 CONSTEXPR pmevtyper0_r() : EV_TYPE(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)) {}
7600 CONSTEXPR pmevtyper0_r(uint32_t init) : word(init) {}
7601 CONSTEXPR void operator=(uint32_t value)
7602 {
7603 word = value;
7604 }
7605 void operator=(uint32_t value) volatile
7606 {
7607 word = value;
7608 }
7609 CONSTEXPR operator uint32_t()
7610 {
7611 return word;
7612 }
7613 operator uint32_t() volatile
7614 {
7615 return word;
7616 }
7617 pmevtyper0_r copy() volatile
7618 {
7619 return *this;
7620 }
7621#endif
7622 CONSTEXPR ::pmu_event_type get_EV_TYPE() const
7623 {
7624 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7625 return value;
7626 }
7627#ifndef MODEL_REGS
7628 ::pmu_event_type get_EV_TYPE() const volatile
7629 {
7630 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7631 return value;
7632 }
7633#endif
7634 CONSTEXPR pmevtyper0_r &set_EV_TYPE(::pmu_event_type value)
7635 {
7636 EV_TYPE = ((1u << 10) - 1) & static_cast<uint32_t>(value);
7637 return *this;
7638 }
7639#endif //__cplusplus
7640};
7641
7642// pmevtyper1_r - Performance monitor event type register 1
7643struct pmevtyper1_r
7644{
7645#ifdef __cplusplus
7646 private:
7647#endif //__cplusplus
7648#ifdef MODEL_REGS
7649 ::core::dt::uint_t<10> EV_TYPE; // Event Type
7650#else
7651 union
7652 {
7653 struct
7654 {
7655 uint32_t EV_TYPE : 10; // Event Type
7656 uint32_t reserved0 : 22;
7657 };
7658 uint32_t word;
7659 };
7660#endif
7661#ifdef __cplusplus
7662 public:
7663#ifdef MODEL_REGS
7664 CONSTEXPR pmevtyper1_r() : EV_TYPE(static_cast<uint32_t>(0)) {}
7665 CONSTEXPR pmevtyper1_r(uint32_t value) : EV_TYPE(value >> 0) {}
7666 CONSTEXPR void operator=(uint32_t value)
7667 {
7668 EV_TYPE = value >> 0;
7669 }
7670 CONSTEXPR operator uint32_t() const
7671 {
7672 return (EV_TYPE << 0);
7673 }
7674 pmevtyper1_r copy()
7675 {
7676 return *this;
7677 }
7678#else
7679 CONSTEXPR pmevtyper1_r() : EV_TYPE(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)) {}
7680 CONSTEXPR pmevtyper1_r(uint32_t init) : word(init) {}
7681 CONSTEXPR void operator=(uint32_t value)
7682 {
7683 word = value;
7684 }
7685 void operator=(uint32_t value) volatile
7686 {
7687 word = value;
7688 }
7689 CONSTEXPR operator uint32_t()
7690 {
7691 return word;
7692 }
7693 operator uint32_t() volatile
7694 {
7695 return word;
7696 }
7697 pmevtyper1_r copy() volatile
7698 {
7699 return *this;
7700 }
7701#endif
7702 CONSTEXPR ::pmu_event_type get_EV_TYPE() const
7703 {
7704 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7705 return value;
7706 }
7707#ifndef MODEL_REGS
7708 ::pmu_event_type get_EV_TYPE() const volatile
7709 {
7710 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7711 return value;
7712 }
7713#endif
7714 CONSTEXPR pmevtyper1_r &set_EV_TYPE(::pmu_event_type value)
7715 {
7716 EV_TYPE = ((1u << 10) - 1) & static_cast<uint32_t>(value);
7717 return *this;
7718 }
7719#endif //__cplusplus
7720};
7721
7722// pmevtyper2_r - Performance monitor event type register 2
7723struct pmevtyper2_r
7724{
7725#ifdef __cplusplus
7726 private:
7727#endif //__cplusplus
7728#ifdef MODEL_REGS
7729 ::core::dt::uint_t<10> EV_TYPE; // Event Type
7730#else
7731 union
7732 {
7733 struct
7734 {
7735 uint32_t EV_TYPE : 10; // Event Type
7736 uint32_t reserved0 : 22;
7737 };
7738 uint32_t word;
7739 };
7740#endif
7741#ifdef __cplusplus
7742 public:
7743#ifdef MODEL_REGS
7744 CONSTEXPR pmevtyper2_r() : EV_TYPE(static_cast<uint32_t>(0)) {}
7745 CONSTEXPR pmevtyper2_r(uint32_t value) : EV_TYPE(value >> 0) {}
7746 CONSTEXPR void operator=(uint32_t value)
7747 {
7748 EV_TYPE = value >> 0;
7749 }
7750 CONSTEXPR operator uint32_t() const
7751 {
7752 return (EV_TYPE << 0);
7753 }
7754 pmevtyper2_r copy()
7755 {
7756 return *this;
7757 }
7758#else
7759 CONSTEXPR pmevtyper2_r() : EV_TYPE(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)) {}
7760 CONSTEXPR pmevtyper2_r(uint32_t init) : word(init) {}
7761 CONSTEXPR void operator=(uint32_t value)
7762 {
7763 word = value;
7764 }
7765 void operator=(uint32_t value) volatile
7766 {
7767 word = value;
7768 }
7769 CONSTEXPR operator uint32_t()
7770 {
7771 return word;
7772 }
7773 operator uint32_t() volatile
7774 {
7775 return word;
7776 }
7777 pmevtyper2_r copy() volatile
7778 {
7779 return *this;
7780 }
7781#endif
7782 CONSTEXPR ::pmu_event_type get_EV_TYPE() const
7783 {
7784 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7785 return value;
7786 }
7787#ifndef MODEL_REGS
7788 ::pmu_event_type get_EV_TYPE() const volatile
7789 {
7790 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7791 return value;
7792 }
7793#endif
7794 CONSTEXPR pmevtyper2_r &set_EV_TYPE(::pmu_event_type value)
7795 {
7796 EV_TYPE = ((1u << 10) - 1) & static_cast<uint32_t>(value);
7797 return *this;
7798 }
7799#endif //__cplusplus
7800};
7801
7802// pmevtyper3_r - Performance monitor event type register 3
7803struct pmevtyper3_r
7804{
7805#ifdef __cplusplus
7806 private:
7807#endif //__cplusplus
7808#ifdef MODEL_REGS
7809 ::core::dt::uint_t<10> EV_TYPE; // Event Type
7810#else
7811 union
7812 {
7813 struct
7814 {
7815 uint32_t EV_TYPE : 10; // Event Type
7816 uint32_t reserved0 : 22;
7817 };
7818 uint32_t word;
7819 };
7820#endif
7821#ifdef __cplusplus
7822 public:
7823#ifdef MODEL_REGS
7824 CONSTEXPR pmevtyper3_r() : EV_TYPE(static_cast<uint32_t>(0)) {}
7825 CONSTEXPR pmevtyper3_r(uint32_t value) : EV_TYPE(value >> 0) {}
7826 CONSTEXPR void operator=(uint32_t value)
7827 {
7828 EV_TYPE = value >> 0;
7829 }
7830 CONSTEXPR operator uint32_t() const
7831 {
7832 return (EV_TYPE << 0);
7833 }
7834 pmevtyper3_r copy()
7835 {
7836 return *this;
7837 }
7838#else
7839 CONSTEXPR pmevtyper3_r() : EV_TYPE(static_cast<uint32_t>(0)), reserved0(static_cast<uint32_t>(0)) {}
7840 CONSTEXPR pmevtyper3_r(uint32_t init) : word(init) {}
7841 CONSTEXPR void operator=(uint32_t value)
7842 {
7843 word = value;
7844 }
7845 void operator=(uint32_t value) volatile
7846 {
7847 word = value;
7848 }
7849 CONSTEXPR operator uint32_t()
7850 {
7851 return word;
7852 }
7853 operator uint32_t() volatile
7854 {
7855 return word;
7856 }
7857 pmevtyper3_r copy() volatile
7858 {
7859 return *this;
7860 }
7861#endif
7862 CONSTEXPR ::pmu_event_type get_EV_TYPE() const
7863 {
7864 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7865 return value;
7866 }
7867#ifndef MODEL_REGS
7868 ::pmu_event_type get_EV_TYPE() const volatile
7869 {
7870 ::pmu_event_type value = static_cast<::pmu_event_type>(EV_TYPE);
7871 return value;
7872 }
7873#endif
7874 CONSTEXPR pmevtyper3_r &set_EV_TYPE(::pmu_event_type value)
7875 {
7876 EV_TYPE = ((1u << 10) - 1) & static_cast<uint32_t>(value);
7877 return *this;
7878 }
7879#endif //__cplusplus
7880};
7881
7882struct NPU_REG
7883{
7884 STRUCT id_r ID; // 0x0
7885 STRUCT status_r STATUS; // 0x4
7886 STRUCT cmd_r CMD; // 0x8
7887 STRUCT reset_r RESET; // 0xc
7888 STRUCT qbase0_r QBASE0; // 0x10
7889 STRUCT qbase1_r QBASE1; // 0x14
7890 STRUCT qread_r QREAD; // 0x18
7891 STRUCT qconfig_r QCONFIG; // 0x1c
7892 STRUCT qsize_r QSIZE; // 0x20
7893 STRUCT prot_r PROT; // 0x24
7894 STRUCT config_r CONFIG; // 0x28
7895 STRUCT lock_r LOCK; // 0x2c
7896#ifndef MODEL_REGS
7897 uint32_t unused0[3];
7898#endif
7899 STRUCT regioncfg_r REGIONCFG; // 0x3c
7900 STRUCT axi_limit0_r AXI_LIMIT0; // 0x40
7901 STRUCT axi_limit1_r AXI_LIMIT1; // 0x44
7902 STRUCT axi_limit2_r AXI_LIMIT2; // 0x48
7903 STRUCT axi_limit3_r AXI_LIMIT3; // 0x4c
7904#ifndef MODEL_REGS
7905 uint32_t unused1[12];
7906#endif
7907 STRUCT basep0_r BASEP0; // 0x80
7908 STRUCT basep1_r BASEP1; // 0x84
7909 STRUCT basep2_r BASEP2; // 0x88
7910 STRUCT basep3_r BASEP3; // 0x8c
7911 STRUCT basep4_r BASEP4; // 0x90
7912 STRUCT basep5_r BASEP5; // 0x94
7913 STRUCT basep6_r BASEP6; // 0x98
7914 STRUCT basep7_r BASEP7; // 0x9c
7915 STRUCT basep8_r BASEP8; // 0xa0
7916 STRUCT basep9_r BASEP9; // 0xa4
7917 STRUCT basep10_r BASEP10; // 0xa8
7918 STRUCT basep11_r BASEP11; // 0xac
7919 STRUCT basep12_r BASEP12; // 0xb0
7920 STRUCT basep13_r BASEP13; // 0xb4
7921 STRUCT basep14_r BASEP14; // 0xb8
7922 STRUCT basep15_r BASEP15; // 0xbc
7923#ifndef MODEL_REGS
7924 uint32_t unused2[32];
7925#endif
7926 STRUCT clkforce_r CLKFORCE; // 0x140
7927 uint32_t DEBUG; // 0x144
7928 uint32_t DEBUG2; // 0x148
7929 uint32_t DEBUGCORE; // 0x14c
7930#ifndef MODEL_REGS
7931 uint32_t unused3[12];
7932#endif
7933 STRUCT pmcr_r PMCR; // 0x180
7934 STRUCT pmcntenset_r PMCNTENSET; // 0x184
7935 STRUCT pmcntenclr_r PMCNTENCLR; // 0x188
7936 STRUCT pmovsset_r PMOVSSET; // 0x18c
7937 STRUCT pmovsclr_r PMOVSCLR; // 0x190
7938 STRUCT pmintset_r PMINTSET; // 0x194
7939 STRUCT pmintclr_r PMINTCLR; // 0x198
7940#ifndef MODEL_REGS
7941 uint32_t unused4[1];
7942#endif
7943 STRUCT pmccntr_lo_r PMCCNTR_LO; // 0x1a0
7944 STRUCT pmccntr_hi_r PMCCNTR_HI; // 0x1a4
7945 STRUCT pmccntr_cfg_r PMCCNTR_CFG; // 0x1a8
7946 STRUCT pmcaxi_chan_r PMCAXI_CHAN; // 0x1ac
7947#ifndef MODEL_REGS
7948 uint32_t unused5[20];
7949#endif
7950 uint32_t KERNEL_X; // 0x200
7951 uint32_t KERNEL_Y; // 0x204
7952 uint32_t KERNEL_W_M1; // 0x208
7953 uint32_t KERNEL_H_M1; // 0x20c
7954 uint32_t OFM_CBLK_WIDTH_M1; // 0x210
7955 uint32_t OFM_CBLK_HEIGHT_M1; // 0x214
7956 uint32_t OFM_CBLK_DEPTH_M1; // 0x218
7957 uint32_t IFM_CBLK_DEPTH_M1; // 0x21c
7958 uint32_t OFM_X; // 0x220
7959 uint32_t OFM_Y; // 0x224
7960 uint32_t OFM_Z; // 0x228
7961 uint32_t IFM_Z; // 0x22c
7962 uint32_t PAD_TOP; // 0x230
7963 uint32_t PAD_LEFT; // 0x234
7964 uint32_t IFM_CBLK_WIDTH; // 0x238
7965 uint32_t IFM_CBLK_HEIGHT; // 0x23c
7966 uint32_t DMA_IFM_SRC; // 0x240
7967 uint32_t DMA_IFM_SRC_HI; // 0x244
7968 uint32_t DMA_IFM_DST; // 0x248
7969 uint32_t DMA_OFM_SRC; // 0x24c
7970 uint32_t DMA_OFM_DST; // 0x250
7971 uint32_t DMA_OFM_DST_HI; // 0x254
7972 uint32_t DMA_WEIGHT_SRC; // 0x258
7973 uint32_t DMA_WEIGHT_SRC_HI; // 0x25c
7974 uint32_t DMA_CMD_SRC; // 0x260
7975 uint32_t DMA_CMD_SRC_HI; // 0x264
7976 uint32_t DMA_CMD_SIZE; // 0x268
7977 uint32_t DMA_M2M_SRC; // 0x26c
7978 uint32_t DMA_M2M_SRC_HI; // 0x270
7979 uint32_t DMA_M2M_DST; // 0x274
7980 uint32_t DMA_M2M_DST_HI; // 0x278
7981 uint32_t CURRENT_QREAD; // 0x27c
7982 uint32_t DMA_SCALE_SRC; // 0x280
7983 uint32_t DMA_SCALE_SRC_HI; // 0x284
7984#ifndef MODEL_REGS
7985 uint32_t unused6[13];
7986#endif
7987 uint32_t CURRENT_CMD; // 0x2bc
7988#ifndef MODEL_REGS
7989 uint32_t unused7[16];
7990#endif
7991 uint32_t PMEVCNTR[4]; // 0x300
7992#ifndef MODEL_REGS
7993 uint32_t unused8[28];
7994#endif
7995 STRUCT pmevtyper0_r PMEVTYPER[4]; // 0x380
7996#ifndef MODEL_REGS
7997 uint32_t unused9[28];
7998#endif
7999 uint32_t SHARED_BUFFER[256]; // 0x400
8000 uint32_t IFM_PAD_TOP; // 0x800
8001 uint32_t IFM_PAD_LEFT; // 0x804
8002 uint32_t IFM_PAD_RIGHT; // 0x808
8003 uint32_t IFM_PAD_BOTTOM; // 0x80c
8004 uint32_t IFM_DEPTH_M1; // 0x810
8005 uint32_t IFM_PRECISION; // 0x814
8006#ifndef MODEL_REGS
8007 uint32_t unused10[1];
8008#endif
8009 uint32_t IFM_UPSCALE; // 0x81c
8010#ifndef MODEL_REGS
8011 uint32_t unused11[1];
8012#endif
8013 uint32_t IFM_ZERO_POINT; // 0x824
8014 uint32_t IFM_WIDTH0_M1; // 0x828
8015 uint32_t IFM_HEIGHT0_M1; // 0x82c
8016 uint32_t IFM_HEIGHT1_M1; // 0x830
8017 uint32_t IFM_IB_END; // 0x834
8018#ifndef MODEL_REGS
8019 uint32_t unused12[1];
8020#endif
8021 uint32_t IFM_REGION; // 0x83c
8022#ifndef MODEL_REGS
8023 uint32_t unused13[1];
8024#endif
8025 uint32_t OFM_WIDTH_M1; // 0x844
8026 uint32_t OFM_HEIGHT_M1; // 0x848
8027 uint32_t OFM_DEPTH_M1; // 0x84c
8028 uint32_t OFM_PRECISION; // 0x850
8029 uint32_t OFM_BLK_WIDTH_M1; // 0x854
8030 uint32_t OFM_BLK_HEIGHT_M1; // 0x858
8031 uint32_t OFM_BLK_DEPTH_M1; // 0x85c
8032 uint32_t OFM_ZERO_POINT; // 0x860
8033#ifndef MODEL_REGS
8034 uint32_t unused14[1];
8035#endif
8036 uint32_t OFM_WIDTH0_M1; // 0x868
8037 uint32_t OFM_HEIGHT0_M1; // 0x86c
8038 uint32_t OFM_HEIGHT1_M1; // 0x870
8039#ifndef MODEL_REGS
8040 uint32_t unused15[2];
8041#endif
8042 uint32_t OFM_REGION; // 0x87c
8043 uint32_t KERNEL_WIDTH_M1; // 0x880
8044 uint32_t KERNEL_HEIGHT_M1; // 0x884
8045 uint32_t KERNEL_STRIDE; // 0x888
8046 uint32_t PARALLEL_MODE; // 0x88c
8047 uint32_t ACC_FORMAT; // 0x890
8048 uint32_t ACTIVATION; // 0x894
8049 uint32_t ACTIVATION_MIN; // 0x898
8050 uint32_t ACTIVATION_MAX; // 0x89c
8051 uint32_t WEIGHT_REGION; // 0x8a0
8052 uint32_t SCALE_REGION; // 0x8a4
8053#ifndef MODEL_REGS
8054 uint32_t unused16[3];
8055#endif
8056 uint32_t AB_START; // 0x8b4
8057#ifndef MODEL_REGS
8058 uint32_t unused17[1];
8059#endif
8060 uint32_t BLOCKDEP; // 0x8bc
8061 uint32_t DMA0_SRC_REGION; // 0x8c0
8062 uint32_t DMA0_DST_REGION; // 0x8c4
8063 uint32_t DMA0_SIZE0; // 0x8c8
8064 uint32_t DMA0_SIZE1; // 0x8cc
8065#ifndef MODEL_REGS
8066 uint32_t unused18[12];
8067#endif
8068 uint32_t IFM2_BROADCAST; // 0x900
8069 uint32_t IFM2_SCALAR; // 0x904
8070#ifndef MODEL_REGS
8071 uint32_t unused19[3];
8072#endif
8073 uint32_t IFM2_PRECISION; // 0x914
8074#ifndef MODEL_REGS
8075 uint32_t unused20[3];
8076#endif
8077 uint32_t IFM2_ZERO_POINT; // 0x924
8078 uint32_t IFM2_WIDTH0_M1; // 0x928
8079 uint32_t IFM2_HEIGHT0_M1; // 0x92c
8080 uint32_t IFM2_HEIGHT1_M1; // 0x930
8081 uint32_t IFM2_IB_START; // 0x934
8082#ifndef MODEL_REGS
8083 uint32_t unused21[1];
8084#endif
8085 uint32_t IFM2_REGION; // 0x93c
8086#ifndef MODEL_REGS
8087 uint32_t unused22[48];
8088#endif
8089 uint32_t IFM_BASE0; // 0xa00
8090 uint32_t IFM_BASE0_HI; // 0xa04
8091 uint32_t IFM_BASE1; // 0xa08
8092 uint32_t IFM_BASE1_HI; // 0xa0c
8093 uint32_t IFM_BASE2; // 0xa10
8094 uint32_t IFM_BASE2_HI; // 0xa14
8095 uint32_t IFM_BASE3; // 0xa18
8096 uint32_t IFM_BASE3_HI; // 0xa1c
8097 uint32_t IFM_STRIDE_X; // 0xa20
8098 uint32_t IFM_STRIDE_X_HI; // 0xa24
8099 uint32_t IFM_STRIDE_Y; // 0xa28
8100 uint32_t IFM_STRIDE_Y_HI; // 0xa2c
8101 uint32_t IFM_STRIDE_C; // 0xa30
8102 uint32_t IFM_STRIDE_C_HI; // 0xa34
8103#ifndef MODEL_REGS
8104 uint32_t unused23[2];
8105#endif
8106 uint32_t OFM_BASE0; // 0xa40
8107 uint32_t OFM_BASE0_HI; // 0xa44
8108 uint32_t OFM_BASE1; // 0xa48
8109 uint32_t OFM_BASE1_HI; // 0xa4c
8110 uint32_t OFM_BASE2; // 0xa50
8111 uint32_t OFM_BASE2_HI; // 0xa54
8112 uint32_t OFM_BASE3; // 0xa58
8113 uint32_t OFM_BASE3_HI; // 0xa5c
8114 uint32_t OFM_STRIDE_X; // 0xa60
8115 uint32_t OFM_STRIDE_X_HI; // 0xa64
8116 uint32_t OFM_STRIDE_Y; // 0xa68
8117 uint32_t OFM_STRIDE_Y_HI; // 0xa6c
8118 uint32_t OFM_STRIDE_C; // 0xa70
8119 uint32_t OFM_STRIDE_C_HI; // 0xa74
8120#ifndef MODEL_REGS
8121 uint32_t unused24[2];
8122#endif
8123 uint32_t WEIGHT_BASE; // 0xa80
8124 uint32_t WEIGHT_BASE_HI; // 0xa84
8125 uint32_t WEIGHT_LENGTH; // 0xa88
8126 uint32_t WEIGHT_LENGTH_HI; // 0xa8c
8127 uint32_t SCALE_BASE; // 0xa90
8128 uint32_t SCALE_BASE_HI; // 0xa94
8129 uint32_t SCALE_LENGTH; // 0xa98
8130#ifndef MODEL_REGS
8131 uint32_t unused25[1];
8132#endif
8133 uint32_t OFM_SCALE; // 0xaa0
8134 uint32_t OFM_SCALE_SHIFT; // 0xaa4
8135 uint32_t OPA_SCALE; // 0xaa8
8136 uint32_t OPA_SCALE_SHIFT; // 0xaac
8137 uint32_t OPB_SCALE; // 0xab0
8138#ifndef MODEL_REGS
8139 uint32_t unused26[3];
8140#endif
8141 uint32_t DMA0_SRC; // 0xac0
8142 uint32_t DMA0_SRC_HI; // 0xac4
8143 uint32_t DMA0_DST; // 0xac8
8144 uint32_t DMA0_DST_HI; // 0xacc
8145 uint32_t DMA0_LEN; // 0xad0
8146 uint32_t DMA0_LEN_HI; // 0xad4
8147 uint32_t DMA0_SKIP0; // 0xad8
8148 uint32_t DMA0_SKIP0_HI; // 0xadc
8149 uint32_t DMA0_SKIP1; // 0xae0
8150 uint32_t DMA0_SKIP1_HI; // 0xae4
8151#ifndef MODEL_REGS
8152 uint32_t unused27[6];
8153#endif
8154 uint32_t IFM2_BASE0; // 0xb00
8155 uint32_t IFM2_BASE0_HI; // 0xb04
8156 uint32_t IFM2_BASE1; // 0xb08
8157 uint32_t IFM2_BASE1_HI; // 0xb0c
8158 uint32_t IFM2_BASE2; // 0xb10
8159 uint32_t IFM2_BASE2_HI; // 0xb14
8160 uint32_t IFM2_BASE3; // 0xb18
8161 uint32_t IFM2_BASE3_HI; // 0xb1c
8162 uint32_t IFM2_STRIDE_X; // 0xb20
8163 uint32_t IFM2_STRIDE_X_HI; // 0xb24
8164 uint32_t IFM2_STRIDE_Y; // 0xb28
8165 uint32_t IFM2_STRIDE_Y_HI; // 0xb2c
8166 uint32_t IFM2_STRIDE_C; // 0xb30
8167 uint32_t IFM2_STRIDE_C_HI; // 0xb34
8168#ifndef MODEL_REGS
8169 uint32_t unused28[2];
8170#endif
8171 uint32_t WEIGHT1_BASE; // 0xb40
8172 uint32_t WEIGHT1_BASE_HI; // 0xb44
8173 uint32_t WEIGHT1_LENGTH; // 0xb48
8174 uint32_t WEIGHT1_LENGTH_HI; // 0xb4c
8175 uint32_t SCALE1_BASE; // 0xb50
8176 uint32_t SCALE1_BASE_HI; // 0xb54
8177 uint32_t SCALE1_LENGTH; // 0xb58
8178#ifndef MODEL_REGS
8179 uint32_t unused29[281];
8180#endif
8181 uint32_t REVISION; // 0xfc0
8182#ifndef MODEL_REGS
8183 uint32_t unused30[3];
8184#endif
8185 STRUCT pid4_r PID4; // 0xfd0
8186 STRUCT pid5_r PID5; // 0xfd4
8187 STRUCT pid6_r PID6; // 0xfd8
8188 STRUCT pid7_r PID7; // 0xfdc
8189 STRUCT pid0_r PID0; // 0xfe0
8190 STRUCT pid1_r PID1; // 0xfe4
8191 STRUCT pid2_r PID2; // 0xfe8
8192 STRUCT pid3_r PID3; // 0xfec
8193 STRUCT cid0_r CID0; // 0xff0
8194 STRUCT cid1_r CID1; // 0xff4
8195 STRUCT cid2_r CID2; // 0xff8
8196 STRUCT cid3_r CID3; // 0xffc
8197#ifdef __cplusplus
8198 NPU_REG()
8199 {
8200 reset();
8201 }
8202 void reset()
8203 {
8204 ID = 161480704;
8205 STATUS = 8;
8206 CMD = 0;
8207 RESET = 0;
8208 QBASE0 = 0;
8209 QBASE1 = 0;
8210 QREAD = 0;
8211 QCONFIG = 0;
8212 QSIZE = 0;
8213 PROT = 0;
8214 CONFIG = 0;
8215 LOCK = 0;
8216 REGIONCFG = 0;
8217 AXI_LIMIT0 = 0;
8218 AXI_LIMIT1 = 0;
8219 AXI_LIMIT2 = 0;
8220 AXI_LIMIT3 = 0;
8221 BASEP0 = 0;
8222 BASEP1 = 0;
8223 BASEP2 = 0;
8224 BASEP3 = 0;
8225 BASEP4 = 0;
8226 BASEP5 = 0;
8227 BASEP6 = 0;
8228 BASEP7 = 0;
8229 BASEP8 = 0;
8230 BASEP9 = 0;
8231 BASEP10 = 0;
8232 BASEP11 = 0;
8233 BASEP12 = 0;
8234 BASEP13 = 0;
8235 BASEP14 = 0;
8236 BASEP15 = 0;
8237 REVISION = 0;
8238 PID4 = 4;
8239 PID5 = 0;
8240 PID6 = 0;
8241 PID7 = 0;
8242 PID0 = 128;
8243 PID1 = 181;
8244 PID2 = 11;
8245 PID3 = 0;
8246 CID0 = 13;
8247 CID1 = 240;
8248 CID2 = 5;
8249 CID3 = 177;
8250 CLKFORCE = 0;
8251 DEBUG = 0;
8252 DEBUG2 = 0;
8253 DEBUGCORE = 0;
8254 KERNEL_X = 0;
8255 KERNEL_Y = 0;
8256 KERNEL_W_M1 = 0;
8257 KERNEL_H_M1 = 0;
8258 OFM_CBLK_WIDTH_M1 = 0;
8259 OFM_CBLK_HEIGHT_M1 = 0;
8260 OFM_CBLK_DEPTH_M1 = 0;
8261 IFM_CBLK_DEPTH_M1 = 0;
8262 OFM_X = 0;
8263 OFM_Y = 0;
8264 OFM_Z = 0;
8265 IFM_Z = 0;
8266 PAD_TOP = 0;
8267 PAD_LEFT = 0;
8268 IFM_CBLK_WIDTH = 0;
8269 IFM_CBLK_HEIGHT = 0;
8270 DMA_IFM_SRC = 0;
8271 DMA_IFM_SRC_HI = 0;
8272 DMA_IFM_DST = 0;
8273 DMA_OFM_SRC = 0;
8274 DMA_OFM_DST = 0;
8275 DMA_OFM_DST_HI = 0;
8276 DMA_WEIGHT_SRC = 0;
8277 DMA_WEIGHT_SRC_HI = 0;
8278 DMA_CMD_SRC = 0;
8279 DMA_CMD_SRC_HI = 0;
8280 DMA_CMD_SIZE = 0;
8281 DMA_M2M_SRC = 0;
8282 DMA_M2M_SRC_HI = 0;
8283 DMA_M2M_DST = 0;
8284 DMA_M2M_DST_HI = 0;
8285 CURRENT_QREAD = 0;
8286 DMA_SCALE_SRC = 0;
8287 DMA_SCALE_SRC_HI = 0;
8288 CURRENT_CMD = 0;
8289 IFM_PAD_TOP = 0;
8290 IFM_PAD_LEFT = 0;
8291 IFM_PAD_RIGHT = 0;
8292 IFM_PAD_BOTTOM = 0;
8293 IFM_DEPTH_M1 = 0;
8294 IFM_PRECISION = 0;
8295 IFM_UPSCALE = 0;
8296 IFM_ZERO_POINT = 0;
8297 IFM_WIDTH0_M1 = 0;
8298 IFM_HEIGHT0_M1 = 0;
8299 IFM_HEIGHT1_M1 = 0;
8300 IFM_IB_END = 0;
8301 IFM_REGION = 0;
8302 OFM_WIDTH_M1 = 0;
8303 OFM_HEIGHT_M1 = 0;
8304 OFM_DEPTH_M1 = 0;
8305 OFM_PRECISION = 0;
8306 OFM_BLK_WIDTH_M1 = 0;
8307 OFM_BLK_HEIGHT_M1 = 0;
8308 OFM_BLK_DEPTH_M1 = 0;
8309 OFM_ZERO_POINT = 0;
8310 OFM_WIDTH0_M1 = 0;
8311 OFM_HEIGHT0_M1 = 0;
8312 OFM_HEIGHT1_M1 = 0;
8313 OFM_REGION = 0;
8314 KERNEL_WIDTH_M1 = 0;
8315 KERNEL_HEIGHT_M1 = 0;
8316 KERNEL_STRIDE = 0;
8317 PARALLEL_MODE = 0;
8318 ACC_FORMAT = 0;
8319 ACTIVATION = 0;
8320 ACTIVATION_MIN = 0;
8321 ACTIVATION_MAX = 0;
8322 WEIGHT_REGION = 0;
8323 SCALE_REGION = 0;
8324 AB_START = 0;
8325 BLOCKDEP = 0;
8326 DMA0_SRC_REGION = 0;
8327 DMA0_DST_REGION = 0;
8328 DMA0_SIZE0 = 0;
8329 DMA0_SIZE1 = 0;
8330 IFM2_BROADCAST = 0;
8331 IFM2_SCALAR = 0;
8332 IFM2_PRECISION = 0;
8333 IFM2_ZERO_POINT = 0;
8334 IFM2_WIDTH0_M1 = 0;
8335 IFM2_HEIGHT0_M1 = 0;
8336 IFM2_HEIGHT1_M1 = 0;
8337 IFM2_IB_START = 0;
8338 IFM2_REGION = 0;
8339 IFM_BASE0 = 0;
8340 IFM_BASE0_HI = 0;
8341 IFM_BASE1 = 0;
8342 IFM_BASE1_HI = 0;
8343 IFM_BASE2 = 0;
8344 IFM_BASE2_HI = 0;
8345 IFM_BASE3 = 0;
8346 IFM_BASE3_HI = 0;
8347 IFM_STRIDE_X = 0;
8348 IFM_STRIDE_X_HI = 0;
8349 IFM_STRIDE_Y = 0;
8350 IFM_STRIDE_Y_HI = 0;
8351 IFM_STRIDE_C = 0;
8352 IFM_STRIDE_C_HI = 0;
8353 OFM_BASE0 = 0;
8354 OFM_BASE0_HI = 0;
8355 OFM_BASE1 = 0;
8356 OFM_BASE1_HI = 0;
8357 OFM_BASE2 = 0;
8358 OFM_BASE2_HI = 0;
8359 OFM_BASE3 = 0;
8360 OFM_BASE3_HI = 0;
8361 OFM_STRIDE_X = 0;
8362 OFM_STRIDE_X_HI = 0;
8363 OFM_STRIDE_Y = 0;
8364 OFM_STRIDE_Y_HI = 0;
8365 OFM_STRIDE_C = 0;
8366 OFM_STRIDE_C_HI = 0;
8367 WEIGHT_BASE = 0;
8368 WEIGHT_BASE_HI = 0;
8369 WEIGHT_LENGTH = 0;
8370 WEIGHT_LENGTH_HI = 0;
8371 SCALE_BASE = 0;
8372 SCALE_BASE_HI = 0;
8373 SCALE_LENGTH = 0;
8374 OFM_SCALE = 0;
8375 OFM_SCALE_SHIFT = 0;
8376 OPA_SCALE = 0;
8377 OPA_SCALE_SHIFT = 0;
8378 OPB_SCALE = 0;
8379 DMA0_SRC = 0;
8380 DMA0_SRC_HI = 0;
8381 DMA0_DST = 0;
8382 DMA0_DST_HI = 0;
8383 DMA0_LEN = 0;
8384 DMA0_LEN_HI = 0;
8385 DMA0_SKIP0 = 0;
8386 DMA0_SKIP0_HI = 0;
8387 DMA0_SKIP1 = 0;
8388 DMA0_SKIP1_HI = 0;
8389 IFM2_BASE0 = 0;
8390 IFM2_BASE0_HI = 0;
8391 IFM2_BASE1 = 0;
8392 IFM2_BASE1_HI = 0;
8393 IFM2_BASE2 = 0;
8394 IFM2_BASE2_HI = 0;
8395 IFM2_BASE3 = 0;
8396 IFM2_BASE3_HI = 0;
8397 IFM2_STRIDE_X = 0;
8398 IFM2_STRIDE_X_HI = 0;
8399 IFM2_STRIDE_Y = 0;
8400 IFM2_STRIDE_Y_HI = 0;
8401 IFM2_STRIDE_C = 0;
8402 IFM2_STRIDE_C_HI = 0;
8403 WEIGHT1_BASE = 0;
8404 WEIGHT1_BASE_HI = 0;
8405 WEIGHT1_LENGTH = 0;
8406 WEIGHT1_LENGTH_HI = 0;
8407 SCALE1_BASE = 0;
8408 SCALE1_BASE_HI = 0;
8409 SCALE1_LENGTH = 0;
8410 PMCR = 8192;
8411 PMCNTENSET = 0;
8412 PMCNTENCLR = 0;
8413 PMOVSSET = 0;
8414 PMOVSCLR = 0;
8415 PMINTSET = 0;
8416 PMINTCLR = 0;
8417 PMCCNTR_LO = 0;
8418 PMCCNTR_HI = 0;
8419 PMCCNTR_CFG = 0;
8420 PMCAXI_CHAN = 0;
8421 for (size_t i = 0; i < (sizeof(PMEVCNTR) / sizeof(PMEVCNTR[0])); ++i)
8422 PMEVCNTR[i] = 0;
8423 for (size_t i = 0; i < (sizeof(PMEVTYPER) / sizeof(PMEVTYPER[0])); ++i)
8424 PMEVTYPER[i] = 0;
8425 for (size_t i = 0; i < (sizeof(SHARED_BUFFER) / sizeof(SHARED_BUFFER[0])); ++i)
8426 SHARED_BUFFER[i] = 0;
8427 }
8428#ifdef MODEL_REGS
8429 uint32_t get(size_t offset) const
8430 {
8431 switch (offset)
8432 {
8433 case 0:
8434 return ID;
8435 case 4:
8436 return STATUS;
8437 case 8:
8438 return CMD;
8439 case 12:
8440 return RESET;
8441 case 16:
8442 return QBASE0;
8443 case 20:
8444 return QBASE1;
8445 case 24:
8446 return QREAD;
8447 case 28:
8448 return QCONFIG;
8449 case 32:
8450 return QSIZE;
8451 case 36:
8452 return PROT;
8453 case 40:
8454 return CONFIG;
8455 case 44:
8456 return LOCK;
8457 case 60:
8458 return REGIONCFG;
8459 case 64:
8460 return AXI_LIMIT0;
8461 case 68:
8462 return AXI_LIMIT1;
8463 case 72:
8464 return AXI_LIMIT2;
8465 case 76:
8466 return AXI_LIMIT3;
8467 case 128:
8468 return BASEP0;
8469 case 132:
8470 return BASEP1;
8471 case 136:
8472 return BASEP2;
8473 case 140:
8474 return BASEP3;
8475 case 144:
8476 return BASEP4;
8477 case 148:
8478 return BASEP5;
8479 case 152:
8480 return BASEP6;
8481 case 156:
8482 return BASEP7;
8483 case 160:
8484 return BASEP8;
8485 case 164:
8486 return BASEP9;
8487 case 168:
8488 return BASEP10;
8489 case 172:
8490 return BASEP11;
8491 case 176:
8492 return BASEP12;
8493 case 180:
8494 return BASEP13;
8495 case 184:
8496 return BASEP14;
8497 case 188:
8498 return BASEP15;
8499 case 4032:
8500 return REVISION;
8501 case 4048:
8502 return PID4;
8503 case 4052:
8504 return PID5;
8505 case 4056:
8506 return PID6;
8507 case 4060:
8508 return PID7;
8509 case 4064:
8510 return PID0;
8511 case 4068:
8512 return PID1;
8513 case 4072:
8514 return PID2;
8515 case 4076:
8516 return PID3;
8517 case 4080:
8518 return CID0;
8519 case 4084:
8520 return CID1;
8521 case 4088:
8522 return CID2;
8523 case 4092:
8524 return CID3;
8525 case 320:
8526 return CLKFORCE;
8527 case 324:
8528 return DEBUG;
8529 case 328:
8530 return DEBUG2;
8531 case 332:
8532 return DEBUGCORE;
8533 case 512:
8534 return KERNEL_X;
8535 case 516:
8536 return KERNEL_Y;
8537 case 520:
8538 return KERNEL_W_M1;
8539 case 524:
8540 return KERNEL_H_M1;
8541 case 528:
8542 return OFM_CBLK_WIDTH_M1;
8543 case 532:
8544 return OFM_CBLK_HEIGHT_M1;
8545 case 536:
8546 return OFM_CBLK_DEPTH_M1;
8547 case 540:
8548 return IFM_CBLK_DEPTH_M1;
8549 case 544:
8550 return OFM_X;
8551 case 548:
8552 return OFM_Y;
8553 case 552:
8554 return OFM_Z;
8555 case 556:
8556 return IFM_Z;
8557 case 560:
8558 return PAD_TOP;
8559 case 564:
8560 return PAD_LEFT;
8561 case 568:
8562 return IFM_CBLK_WIDTH;
8563 case 572:
8564 return IFM_CBLK_HEIGHT;
8565 case 576:
8566 return DMA_IFM_SRC;
8567 case 580:
8568 return DMA_IFM_SRC_HI;
8569 case 584:
8570 return DMA_IFM_DST;
8571 case 588:
8572 return DMA_OFM_SRC;
8573 case 592:
8574 return DMA_OFM_DST;
8575 case 596:
8576 return DMA_OFM_DST_HI;
8577 case 600:
8578 return DMA_WEIGHT_SRC;
8579 case 604:
8580 return DMA_WEIGHT_SRC_HI;
8581 case 608:
8582 return DMA_CMD_SRC;
8583 case 612:
8584 return DMA_CMD_SRC_HI;
8585 case 616:
8586 return DMA_CMD_SIZE;
8587 case 620:
8588 return DMA_M2M_SRC;
8589 case 624:
8590 return DMA_M2M_SRC_HI;
8591 case 628:
8592 return DMA_M2M_DST;
8593 case 632:
8594 return DMA_M2M_DST_HI;
8595 case 636:
8596 return CURRENT_QREAD;
8597 case 640:
8598 return DMA_SCALE_SRC;
8599 case 644:
8600 return DMA_SCALE_SRC_HI;
8601 case 700:
8602 return CURRENT_CMD;
8603 case 2048:
8604 return IFM_PAD_TOP;
8605 case 2052:
8606 return IFM_PAD_LEFT;
8607 case 2056:
8608 return IFM_PAD_RIGHT;
8609 case 2060:
8610 return IFM_PAD_BOTTOM;
8611 case 2064:
8612 return IFM_DEPTH_M1;
8613 case 2068:
8614 return IFM_PRECISION;
8615 case 2076:
8616 return IFM_UPSCALE;
8617 case 2084:
8618 return IFM_ZERO_POINT;
8619 case 2088:
8620 return IFM_WIDTH0_M1;
8621 case 2092:
8622 return IFM_HEIGHT0_M1;
8623 case 2096:
8624 return IFM_HEIGHT1_M1;
8625 case 2100:
8626 return IFM_IB_END;
8627 case 2108:
8628 return IFM_REGION;
8629 case 2116:
8630 return OFM_WIDTH_M1;
8631 case 2120:
8632 return OFM_HEIGHT_M1;
8633 case 2124:
8634 return OFM_DEPTH_M1;
8635 case 2128:
8636 return OFM_PRECISION;
8637 case 2132:
8638 return OFM_BLK_WIDTH_M1;
8639 case 2136:
8640 return OFM_BLK_HEIGHT_M1;
8641 case 2140:
8642 return OFM_BLK_DEPTH_M1;
8643 case 2144:
8644 return OFM_ZERO_POINT;
8645 case 2152:
8646 return OFM_WIDTH0_M1;
8647 case 2156:
8648 return OFM_HEIGHT0_M1;
8649 case 2160:
8650 return OFM_HEIGHT1_M1;
8651 case 2172:
8652 return OFM_REGION;
8653 case 2176:
8654 return KERNEL_WIDTH_M1;
8655 case 2180:
8656 return KERNEL_HEIGHT_M1;
8657 case 2184:
8658 return KERNEL_STRIDE;
8659 case 2188:
8660 return PARALLEL_MODE;
8661 case 2192:
8662 return ACC_FORMAT;
8663 case 2196:
8664 return ACTIVATION;
8665 case 2200:
8666 return ACTIVATION_MIN;
8667 case 2204:
8668 return ACTIVATION_MAX;
8669 case 2208:
8670 return WEIGHT_REGION;
8671 case 2212:
8672 return SCALE_REGION;
8673 case 2228:
8674 return AB_START;
8675 case 2236:
8676 return BLOCKDEP;
8677 case 2240:
8678 return DMA0_SRC_REGION;
8679 case 2244:
8680 return DMA0_DST_REGION;
8681 case 2248:
8682 return DMA0_SIZE0;
8683 case 2252:
8684 return DMA0_SIZE1;
8685 case 2304:
8686 return IFM2_BROADCAST;
8687 case 2308:
8688 return IFM2_SCALAR;
8689 case 2324:
8690 return IFM2_PRECISION;
8691 case 2340:
8692 return IFM2_ZERO_POINT;
8693 case 2344:
8694 return IFM2_WIDTH0_M1;
8695 case 2348:
8696 return IFM2_HEIGHT0_M1;
8697 case 2352:
8698 return IFM2_HEIGHT1_M1;
8699 case 2356:
8700 return IFM2_IB_START;
8701 case 2364:
8702 return IFM2_REGION;
8703 case 2560:
8704 return IFM_BASE0;
8705 case 2564:
8706 return IFM_BASE0_HI;
8707 case 2568:
8708 return IFM_BASE1;
8709 case 2572:
8710 return IFM_BASE1_HI;
8711 case 2576:
8712 return IFM_BASE2;
8713 case 2580:
8714 return IFM_BASE2_HI;
8715 case 2584:
8716 return IFM_BASE3;
8717 case 2588:
8718 return IFM_BASE3_HI;
8719 case 2592:
8720 return IFM_STRIDE_X;
8721 case 2596:
8722 return IFM_STRIDE_X_HI;
8723 case 2600:
8724 return IFM_STRIDE_Y;
8725 case 2604:
8726 return IFM_STRIDE_Y_HI;
8727 case 2608:
8728 return IFM_STRIDE_C;
8729 case 2612:
8730 return IFM_STRIDE_C_HI;
8731 case 2624:
8732 return OFM_BASE0;
8733 case 2628:
8734 return OFM_BASE0_HI;
8735 case 2632:
8736 return OFM_BASE1;
8737 case 2636:
8738 return OFM_BASE1_HI;
8739 case 2640:
8740 return OFM_BASE2;
8741 case 2644:
8742 return OFM_BASE2_HI;
8743 case 2648:
8744 return OFM_BASE3;
8745 case 2652:
8746 return OFM_BASE3_HI;
8747 case 2656:
8748 return OFM_STRIDE_X;
8749 case 2660:
8750 return OFM_STRIDE_X_HI;
8751 case 2664:
8752 return OFM_STRIDE_Y;
8753 case 2668:
8754 return OFM_STRIDE_Y_HI;
8755 case 2672:
8756 return OFM_STRIDE_C;
8757 case 2676:
8758 return OFM_STRIDE_C_HI;
8759 case 2688:
8760 return WEIGHT_BASE;
8761 case 2692:
8762 return WEIGHT_BASE_HI;
8763 case 2696:
8764 return WEIGHT_LENGTH;
8765 case 2700:
8766 return WEIGHT_LENGTH_HI;
8767 case 2704:
8768 return SCALE_BASE;
8769 case 2708:
8770 return SCALE_BASE_HI;
8771 case 2712:
8772 return SCALE_LENGTH;
8773 case 2720:
8774 return OFM_SCALE;
8775 case 2724:
8776 return OFM_SCALE_SHIFT;
8777 case 2728:
8778 return OPA_SCALE;
8779 case 2732:
8780 return OPA_SCALE_SHIFT;
8781 case 2736:
8782 return OPB_SCALE;
8783 case 2752:
8784 return DMA0_SRC;
8785 case 2756:
8786 return DMA0_SRC_HI;
8787 case 2760:
8788 return DMA0_DST;
8789 case 2764:
8790 return DMA0_DST_HI;
8791 case 2768:
8792 return DMA0_LEN;
8793 case 2772:
8794 return DMA0_LEN_HI;
8795 case 2776:
8796 return DMA0_SKIP0;
8797 case 2780:
8798 return DMA0_SKIP0_HI;
8799 case 2784:
8800 return DMA0_SKIP1;
8801 case 2788:
8802 return DMA0_SKIP1_HI;
8803 case 2816:
8804 return IFM2_BASE0;
8805 case 2820:
8806 return IFM2_BASE0_HI;
8807 case 2824:
8808 return IFM2_BASE1;
8809 case 2828:
8810 return IFM2_BASE1_HI;
8811 case 2832:
8812 return IFM2_BASE2;
8813 case 2836:
8814 return IFM2_BASE2_HI;
8815 case 2840:
8816 return IFM2_BASE3;
8817 case 2844:
8818 return IFM2_BASE3_HI;
8819 case 2848:
8820 return IFM2_STRIDE_X;
8821 case 2852:
8822 return IFM2_STRIDE_X_HI;
8823 case 2856:
8824 return IFM2_STRIDE_Y;
8825 case 2860:
8826 return IFM2_STRIDE_Y_HI;
8827 case 2864:
8828 return IFM2_STRIDE_C;
8829 case 2868:
8830 return IFM2_STRIDE_C_HI;
8831 case 2880:
8832 return WEIGHT1_BASE;
8833 case 2884:
8834 return WEIGHT1_BASE_HI;
8835 case 2888:
8836 return WEIGHT1_LENGTH;
8837 case 2892:
8838 return WEIGHT1_LENGTH_HI;
8839 case 2896:
8840 return SCALE1_BASE;
8841 case 2900:
8842 return SCALE1_BASE_HI;
8843 case 2904:
8844 return SCALE1_LENGTH;
8845 case 384:
8846 return PMCR;
8847 case 388:
8848 return PMCNTENSET;
8849 case 392:
8850 return PMCNTENCLR;
8851 case 396:
8852 return PMOVSSET;
8853 case 400:
8854 return PMOVSCLR;
8855 case 404:
8856 return PMINTSET;
8857 case 408:
8858 return PMINTCLR;
8859 case 416:
8860 return PMCCNTR_LO;
8861 case 420:
8862 return PMCCNTR_HI;
8863 case 424:
8864 return PMCCNTR_CFG;
8865 case 428:
8866 return PMCAXI_CHAN;
8867 case 768:
8868 return PMEVCNTR[0];
8869 case 772:
8870 return PMEVCNTR[1];
8871 case 776:
8872 return PMEVCNTR[2];
8873 case 780:
8874 return PMEVCNTR[3];
8875 case 896:
8876 return PMEVTYPER[0];
8877 case 900:
8878 return PMEVTYPER[1];
8879 case 904:
8880 return PMEVTYPER[2];
8881 case 908:
8882 return PMEVTYPER[3];
8883 case 1024:
8884 return SHARED_BUFFER[0];
8885 case 1028:
8886 return SHARED_BUFFER[1];
8887 case 1032:
8888 return SHARED_BUFFER[2];
8889 case 1036:
8890 return SHARED_BUFFER[3];
8891 case 1040:
8892 return SHARED_BUFFER[4];
8893 case 1044:
8894 return SHARED_BUFFER[5];
8895 case 1048:
8896 return SHARED_BUFFER[6];
8897 case 1052:
8898 return SHARED_BUFFER[7];
8899 case 1056:
8900 return SHARED_BUFFER[8];
8901 case 1060:
8902 return SHARED_BUFFER[9];
8903 case 1064:
8904 return SHARED_BUFFER[10];
8905 case 1068:
8906 return SHARED_BUFFER[11];
8907 case 1072:
8908 return SHARED_BUFFER[12];
8909 case 1076:
8910 return SHARED_BUFFER[13];
8911 case 1080:
8912 return SHARED_BUFFER[14];
8913 case 1084:
8914 return SHARED_BUFFER[15];
8915 case 1088:
8916 return SHARED_BUFFER[16];
8917 case 1092:
8918 return SHARED_BUFFER[17];
8919 case 1096:
8920 return SHARED_BUFFER[18];
8921 case 1100:
8922 return SHARED_BUFFER[19];
8923 case 1104:
8924 return SHARED_BUFFER[20];
8925 case 1108:
8926 return SHARED_BUFFER[21];
8927 case 1112:
8928 return SHARED_BUFFER[22];
8929 case 1116:
8930 return SHARED_BUFFER[23];
8931 case 1120:
8932 return SHARED_BUFFER[24];
8933 case 1124:
8934 return SHARED_BUFFER[25];
8935 case 1128:
8936 return SHARED_BUFFER[26];
8937 case 1132:
8938 return SHARED_BUFFER[27];
8939 case 1136:
8940 return SHARED_BUFFER[28];
8941 case 1140:
8942 return SHARED_BUFFER[29];
8943 case 1144:
8944 return SHARED_BUFFER[30];
8945 case 1148:
8946 return SHARED_BUFFER[31];
8947 case 1152:
8948 return SHARED_BUFFER[32];
8949 case 1156:
8950 return SHARED_BUFFER[33];
8951 case 1160:
8952 return SHARED_BUFFER[34];
8953 case 1164:
8954 return SHARED_BUFFER[35];
8955 case 1168:
8956 return SHARED_BUFFER[36];
8957 case 1172:
8958 return SHARED_BUFFER[37];
8959 case 1176:
8960 return SHARED_BUFFER[38];
8961 case 1180:
8962 return SHARED_BUFFER[39];
8963 case 1184:
8964 return SHARED_BUFFER[40];
8965 case 1188:
8966 return SHARED_BUFFER[41];
8967 case 1192:
8968 return SHARED_BUFFER[42];
8969 case 1196:
8970 return SHARED_BUFFER[43];
8971 case 1200:
8972 return SHARED_BUFFER[44];
8973 case 1204:
8974 return SHARED_BUFFER[45];
8975 case 1208:
8976 return SHARED_BUFFER[46];
8977 case 1212:
8978 return SHARED_BUFFER[47];
8979 case 1216:
8980 return SHARED_BUFFER[48];
8981 case 1220:
8982 return SHARED_BUFFER[49];
8983 case 1224:
8984 return SHARED_BUFFER[50];
8985 case 1228:
8986 return SHARED_BUFFER[51];
8987 case 1232:
8988 return SHARED_BUFFER[52];
8989 case 1236:
8990 return SHARED_BUFFER[53];
8991 case 1240:
8992 return SHARED_BUFFER[54];
8993 case 1244:
8994 return SHARED_BUFFER[55];
8995 case 1248:
8996 return SHARED_BUFFER[56];
8997 case 1252:
8998 return SHARED_BUFFER[57];
8999 case 1256:
9000 return SHARED_BUFFER[58];
9001 case 1260:
9002 return SHARED_BUFFER[59];
9003 case 1264:
9004 return SHARED_BUFFER[60];
9005 case 1268:
9006 return SHARED_BUFFER[61];
9007 case 1272:
9008 return SHARED_BUFFER[62];
9009 case 1276:
9010 return SHARED_BUFFER[63];
9011 case 1280:
9012 return SHARED_BUFFER[64];
9013 case 1284:
9014 return SHARED_BUFFER[65];
9015 case 1288:
9016 return SHARED_BUFFER[66];
9017 case 1292:
9018 return SHARED_BUFFER[67];
9019 case 1296:
9020 return SHARED_BUFFER[68];
9021 case 1300:
9022 return SHARED_BUFFER[69];
9023 case 1304:
9024 return SHARED_BUFFER[70];
9025 case 1308:
9026 return SHARED_BUFFER[71];
9027 case 1312:
9028 return SHARED_BUFFER[72];
9029 case 1316:
9030 return SHARED_BUFFER[73];
9031 case 1320:
9032 return SHARED_BUFFER[74];
9033 case 1324:
9034 return SHARED_BUFFER[75];
9035 case 1328:
9036 return SHARED_BUFFER[76];
9037 case 1332:
9038 return SHARED_BUFFER[77];
9039 case 1336:
9040 return SHARED_BUFFER[78];
9041 case 1340:
9042 return SHARED_BUFFER[79];
9043 case 1344:
9044 return SHARED_BUFFER[80];
9045 case 1348:
9046 return SHARED_BUFFER[81];
9047 case 1352:
9048 return SHARED_BUFFER[82];
9049 case 1356:
9050 return SHARED_BUFFER[83];
9051 case 1360:
9052 return SHARED_BUFFER[84];
9053 case 1364:
9054 return SHARED_BUFFER[85];
9055 case 1368:
9056 return SHARED_BUFFER[86];
9057 case 1372:
9058 return SHARED_BUFFER[87];
9059 case 1376:
9060 return SHARED_BUFFER[88];
9061 case 1380:
9062 return SHARED_BUFFER[89];
9063 case 1384:
9064 return SHARED_BUFFER[90];
9065 case 1388:
9066 return SHARED_BUFFER[91];
9067 case 1392:
9068 return SHARED_BUFFER[92];
9069 case 1396:
9070 return SHARED_BUFFER[93];
9071 case 1400:
9072 return SHARED_BUFFER[94];
9073 case 1404:
9074 return SHARED_BUFFER[95];
9075 case 1408:
9076 return SHARED_BUFFER[96];
9077 case 1412:
9078 return SHARED_BUFFER[97];
9079 case 1416:
9080 return SHARED_BUFFER[98];
9081 case 1420:
9082 return SHARED_BUFFER[99];
9083 case 1424:
9084 return SHARED_BUFFER[100];
9085 case 1428:
9086 return SHARED_BUFFER[101];
9087 case 1432:
9088 return SHARED_BUFFER[102];
9089 case 1436:
9090 return SHARED_BUFFER[103];
9091 case 1440:
9092 return SHARED_BUFFER[104];
9093 case 1444:
9094 return SHARED_BUFFER[105];
9095 case 1448:
9096 return SHARED_BUFFER[106];
9097 case 1452:
9098 return SHARED_BUFFER[107];
9099 case 1456:
9100 return SHARED_BUFFER[108];
9101 case 1460:
9102 return SHARED_BUFFER[109];
9103 case 1464:
9104 return SHARED_BUFFER[110];
9105 case 1468:
9106 return SHARED_BUFFER[111];
9107 case 1472:
9108 return SHARED_BUFFER[112];
9109 case 1476:
9110 return SHARED_BUFFER[113];
9111 case 1480:
9112 return SHARED_BUFFER[114];
9113 case 1484:
9114 return SHARED_BUFFER[115];
9115 case 1488:
9116 return SHARED_BUFFER[116];
9117 case 1492:
9118 return SHARED_BUFFER[117];
9119 case 1496:
9120 return SHARED_BUFFER[118];
9121 case 1500:
9122 return SHARED_BUFFER[119];
9123 case 1504:
9124 return SHARED_BUFFER[120];
9125 case 1508:
9126 return SHARED_BUFFER[121];
9127 case 1512:
9128 return SHARED_BUFFER[122];
9129 case 1516:
9130 return SHARED_BUFFER[123];
9131 case 1520:
9132 return SHARED_BUFFER[124];
9133 case 1524:
9134 return SHARED_BUFFER[125];
9135 case 1528:
9136 return SHARED_BUFFER[126];
9137 case 1532:
9138 return SHARED_BUFFER[127];
9139 case 1536:
9140 return SHARED_BUFFER[128];
9141 case 1540:
9142 return SHARED_BUFFER[129];
9143 case 1544:
9144 return SHARED_BUFFER[130];
9145 case 1548:
9146 return SHARED_BUFFER[131];
9147 case 1552:
9148 return SHARED_BUFFER[132];
9149 case 1556:
9150 return SHARED_BUFFER[133];
9151 case 1560:
9152 return SHARED_BUFFER[134];
9153 case 1564:
9154 return SHARED_BUFFER[135];
9155 case 1568:
9156 return SHARED_BUFFER[136];
9157 case 1572:
9158 return SHARED_BUFFER[137];
9159 case 1576:
9160 return SHARED_BUFFER[138];
9161 case 1580:
9162 return SHARED_BUFFER[139];
9163 case 1584:
9164 return SHARED_BUFFER[140];
9165 case 1588:
9166 return SHARED_BUFFER[141];
9167 case 1592:
9168 return SHARED_BUFFER[142];
9169 case 1596:
9170 return SHARED_BUFFER[143];
9171 case 1600:
9172 return SHARED_BUFFER[144];
9173 case 1604:
9174 return SHARED_BUFFER[145];
9175 case 1608:
9176 return SHARED_BUFFER[146];
9177 case 1612:
9178 return SHARED_BUFFER[147];
9179 case 1616:
9180 return SHARED_BUFFER[148];
9181 case 1620:
9182 return SHARED_BUFFER[149];
9183 case 1624:
9184 return SHARED_BUFFER[150];
9185 case 1628:
9186 return SHARED_BUFFER[151];
9187 case 1632:
9188 return SHARED_BUFFER[152];
9189 case 1636:
9190 return SHARED_BUFFER[153];
9191 case 1640:
9192 return SHARED_BUFFER[154];
9193 case 1644:
9194 return SHARED_BUFFER[155];
9195 case 1648:
9196 return SHARED_BUFFER[156];
9197 case 1652:
9198 return SHARED_BUFFER[157];
9199 case 1656:
9200 return SHARED_BUFFER[158];
9201 case 1660:
9202 return SHARED_BUFFER[159];
9203 case 1664:
9204 return SHARED_BUFFER[160];
9205 case 1668:
9206 return SHARED_BUFFER[161];
9207 case 1672:
9208 return SHARED_BUFFER[162];
9209 case 1676:
9210 return SHARED_BUFFER[163];
9211 case 1680:
9212 return SHARED_BUFFER[164];
9213 case 1684:
9214 return SHARED_BUFFER[165];
9215 case 1688:
9216 return SHARED_BUFFER[166];
9217 case 1692:
9218 return SHARED_BUFFER[167];
9219 case 1696:
9220 return SHARED_BUFFER[168];
9221 case 1700:
9222 return SHARED_BUFFER[169];
9223 case 1704:
9224 return SHARED_BUFFER[170];
9225 case 1708:
9226 return SHARED_BUFFER[171];
9227 case 1712:
9228 return SHARED_BUFFER[172];
9229 case 1716:
9230 return SHARED_BUFFER[173];
9231 case 1720:
9232 return SHARED_BUFFER[174];
9233 case 1724:
9234 return SHARED_BUFFER[175];
9235 case 1728:
9236 return SHARED_BUFFER[176];
9237 case 1732:
9238 return SHARED_BUFFER[177];
9239 case 1736:
9240 return SHARED_BUFFER[178];
9241 case 1740:
9242 return SHARED_BUFFER[179];
9243 case 1744:
9244 return SHARED_BUFFER[180];
9245 case 1748:
9246 return SHARED_BUFFER[181];
9247 case 1752:
9248 return SHARED_BUFFER[182];
9249 case 1756:
9250 return SHARED_BUFFER[183];
9251 case 1760:
9252 return SHARED_BUFFER[184];
9253 case 1764:
9254 return SHARED_BUFFER[185];
9255 case 1768:
9256 return SHARED_BUFFER[186];
9257 case 1772:
9258 return SHARED_BUFFER[187];
9259 case 1776:
9260 return SHARED_BUFFER[188];
9261 case 1780:
9262 return SHARED_BUFFER[189];
9263 case 1784:
9264 return SHARED_BUFFER[190];
9265 case 1788:
9266 return SHARED_BUFFER[191];
9267 case 1792:
9268 return SHARED_BUFFER[192];
9269 case 1796:
9270 return SHARED_BUFFER[193];
9271 case 1800:
9272 return SHARED_BUFFER[194];
9273 case 1804:
9274 return SHARED_BUFFER[195];
9275 case 1808:
9276 return SHARED_BUFFER[196];
9277 case 1812:
9278 return SHARED_BUFFER[197];
9279 case 1816:
9280 return SHARED_BUFFER[198];
9281 case 1820:
9282 return SHARED_BUFFER[199];
9283 case 1824:
9284 return SHARED_BUFFER[200];
9285 case 1828:
9286 return SHARED_BUFFER[201];
9287 case 1832:
9288 return SHARED_BUFFER[202];
9289 case 1836:
9290 return SHARED_BUFFER[203];
9291 case 1840:
9292 return SHARED_BUFFER[204];
9293 case 1844:
9294 return SHARED_BUFFER[205];
9295 case 1848:
9296 return SHARED_BUFFER[206];
9297 case 1852:
9298 return SHARED_BUFFER[207];
9299 case 1856:
9300 return SHARED_BUFFER[208];
9301 case 1860:
9302 return SHARED_BUFFER[209];
9303 case 1864:
9304 return SHARED_BUFFER[210];
9305 case 1868:
9306 return SHARED_BUFFER[211];
9307 case 1872:
9308 return SHARED_BUFFER[212];
9309 case 1876:
9310 return SHARED_BUFFER[213];
9311 case 1880:
9312 return SHARED_BUFFER[214];
9313 case 1884:
9314 return SHARED_BUFFER[215];
9315 case 1888:
9316 return SHARED_BUFFER[216];
9317 case 1892:
9318 return SHARED_BUFFER[217];
9319 case 1896:
9320 return SHARED_BUFFER[218];
9321 case 1900:
9322 return SHARED_BUFFER[219];
9323 case 1904:
9324 return SHARED_BUFFER[220];
9325 case 1908:
9326 return SHARED_BUFFER[221];
9327 case 1912:
9328 return SHARED_BUFFER[222];
9329 case 1916:
9330 return SHARED_BUFFER[223];
9331 case 1920:
9332 return SHARED_BUFFER[224];
9333 case 1924:
9334 return SHARED_BUFFER[225];
9335 case 1928:
9336 return SHARED_BUFFER[226];
9337 case 1932:
9338 return SHARED_BUFFER[227];
9339 case 1936:
9340 return SHARED_BUFFER[228];
9341 case 1940:
9342 return SHARED_BUFFER[229];
9343 case 1944:
9344 return SHARED_BUFFER[230];
9345 case 1948:
9346 return SHARED_BUFFER[231];
9347 case 1952:
9348 return SHARED_BUFFER[232];
9349 case 1956:
9350 return SHARED_BUFFER[233];
9351 case 1960:
9352 return SHARED_BUFFER[234];
9353 case 1964:
9354 return SHARED_BUFFER[235];
9355 case 1968:
9356 return SHARED_BUFFER[236];
9357 case 1972:
9358 return SHARED_BUFFER[237];
9359 case 1976:
9360 return SHARED_BUFFER[238];
9361 case 1980:
9362 return SHARED_BUFFER[239];
9363 case 1984:
9364 return SHARED_BUFFER[240];
9365 case 1988:
9366 return SHARED_BUFFER[241];
9367 case 1992:
9368 return SHARED_BUFFER[242];
9369 case 1996:
9370 return SHARED_BUFFER[243];
9371 case 2000:
9372 return SHARED_BUFFER[244];
9373 case 2004:
9374 return SHARED_BUFFER[245];
9375 case 2008:
9376 return SHARED_BUFFER[246];
9377 case 2012:
9378 return SHARED_BUFFER[247];
9379 case 2016:
9380 return SHARED_BUFFER[248];
9381 case 2020:
9382 return SHARED_BUFFER[249];
9383 case 2024:
9384 return SHARED_BUFFER[250];
9385 case 2028:
9386 return SHARED_BUFFER[251];
9387 case 2032:
9388 return SHARED_BUFFER[252];
9389 case 2036:
9390 return SHARED_BUFFER[253];
9391 case 2040:
9392 return SHARED_BUFFER[254];
9393 case 2044:
9394 return SHARED_BUFFER[255];
9395 default:
9396 throw std::runtime_error("invalid register address");
9397 }
9398 }
9399 void set(size_t offset, uint32_t value)
9400 {
9401 switch (offset)
9402 {
9403 case 0:
9404 ID = value;
9405 return;
9406 case 4:
9407 STATUS = value;
9408 return;
9409 case 8:
9410 CMD = value;
9411 return;
9412 case 12:
9413 RESET = value;
9414 return;
9415 case 16:
9416 QBASE0 = value;
9417 return;
9418 case 20:
9419 QBASE1 = value;
9420 return;
9421 case 24:
9422 QREAD = value;
9423 return;
9424 case 28:
9425 QCONFIG = value;
9426 return;
9427 case 32:
9428 QSIZE = value;
9429 return;
9430 case 36:
9431 PROT = value;
9432 return;
9433 case 40:
9434 CONFIG = value;
9435 return;
9436 case 44:
9437 LOCK = value;
9438 return;
9439 case 60:
9440 REGIONCFG = value;
9441 return;
9442 case 64:
9443 AXI_LIMIT0 = value;
9444 return;
9445 case 68:
9446 AXI_LIMIT1 = value;
9447 return;
9448 case 72:
9449 AXI_LIMIT2 = value;
9450 return;
9451 case 76:
9452 AXI_LIMIT3 = value;
9453 return;
9454 case 128:
9455 BASEP0 = value;
9456 return;
9457 case 132:
9458 BASEP1 = value;
9459 return;
9460 case 136:
9461 BASEP2 = value;
9462 return;
9463 case 140:
9464 BASEP3 = value;
9465 return;
9466 case 144:
9467 BASEP4 = value;
9468 return;
9469 case 148:
9470 BASEP5 = value;
9471 return;
9472 case 152:
9473 BASEP6 = value;
9474 return;
9475 case 156:
9476 BASEP7 = value;
9477 return;
9478 case 160:
9479 BASEP8 = value;
9480 return;
9481 case 164:
9482 BASEP9 = value;
9483 return;
9484 case 168:
9485 BASEP10 = value;
9486 return;
9487 case 172:
9488 BASEP11 = value;
9489 return;
9490 case 176:
9491 BASEP12 = value;
9492 return;
9493 case 180:
9494 BASEP13 = value;
9495 return;
9496 case 184:
9497 BASEP14 = value;
9498 return;
9499 case 188:
9500 BASEP15 = value;
9501 return;
9502 case 4032:
9503 REVISION = value;
9504 return;
9505 case 4048:
9506 PID4 = value;
9507 return;
9508 case 4052:
9509 PID5 = value;
9510 return;
9511 case 4056:
9512 PID6 = value;
9513 return;
9514 case 4060:
9515 PID7 = value;
9516 return;
9517 case 4064:
9518 PID0 = value;
9519 return;
9520 case 4068:
9521 PID1 = value;
9522 return;
9523 case 4072:
9524 PID2 = value;
9525 return;
9526 case 4076:
9527 PID3 = value;
9528 return;
9529 case 4080:
9530 CID0 = value;
9531 return;
9532 case 4084:
9533 CID1 = value;
9534 return;
9535 case 4088:
9536 CID2 = value;
9537 return;
9538 case 4092:
9539 CID3 = value;
9540 return;
9541 case 320:
9542 CLKFORCE = value;
9543 return;
9544 case 324:
9545 DEBUG = value;
9546 return;
9547 case 328:
9548 DEBUG2 = value;
9549 return;
9550 case 332:
9551 DEBUGCORE = value;
9552 return;
9553 case 512:
9554 KERNEL_X = value;
9555 return;
9556 case 516:
9557 KERNEL_Y = value;
9558 return;
9559 case 520:
9560 KERNEL_W_M1 = value;
9561 return;
9562 case 524:
9563 KERNEL_H_M1 = value;
9564 return;
9565 case 528:
9566 OFM_CBLK_WIDTH_M1 = value;
9567 return;
9568 case 532:
9569 OFM_CBLK_HEIGHT_M1 = value;
9570 return;
9571 case 536:
9572 OFM_CBLK_DEPTH_M1 = value;
9573 return;
9574 case 540:
9575 IFM_CBLK_DEPTH_M1 = value;
9576 return;
9577 case 544:
9578 OFM_X = value;
9579 return;
9580 case 548:
9581 OFM_Y = value;
9582 return;
9583 case 552:
9584 OFM_Z = value;
9585 return;
9586 case 556:
9587 IFM_Z = value;
9588 return;
9589 case 560:
9590 PAD_TOP = value;
9591 return;
9592 case 564:
9593 PAD_LEFT = value;
9594 return;
9595 case 568:
9596 IFM_CBLK_WIDTH = value;
9597 return;
9598 case 572:
9599 IFM_CBLK_HEIGHT = value;
9600 return;
9601 case 576:
9602 DMA_IFM_SRC = value;
9603 return;
9604 case 580:
9605 DMA_IFM_SRC_HI = value;
9606 return;
9607 case 584:
9608 DMA_IFM_DST = value;
9609 return;
9610 case 588:
9611 DMA_OFM_SRC = value;
9612 return;
9613 case 592:
9614 DMA_OFM_DST = value;
9615 return;
9616 case 596:
9617 DMA_OFM_DST_HI = value;
9618 return;
9619 case 600:
9620 DMA_WEIGHT_SRC = value;
9621 return;
9622 case 604:
9623 DMA_WEIGHT_SRC_HI = value;
9624 return;
9625 case 608:
9626 DMA_CMD_SRC = value;
9627 return;
9628 case 612:
9629 DMA_CMD_SRC_HI = value;
9630 return;
9631 case 616:
9632 DMA_CMD_SIZE = value;
9633 return;
9634 case 620:
9635 DMA_M2M_SRC = value;
9636 return;
9637 case 624:
9638 DMA_M2M_SRC_HI = value;
9639 return;
9640 case 628:
9641 DMA_M2M_DST = value;
9642 return;
9643 case 632:
9644 DMA_M2M_DST_HI = value;
9645 return;
9646 case 636:
9647 CURRENT_QREAD = value;
9648 return;
9649 case 640:
9650 DMA_SCALE_SRC = value;
9651 return;
9652 case 644:
9653 DMA_SCALE_SRC_HI = value;
9654 return;
9655 case 700:
9656 CURRENT_CMD = value;
9657 return;
9658 case 2048:
9659 IFM_PAD_TOP = value;
9660 return;
9661 case 2052:
9662 IFM_PAD_LEFT = value;
9663 return;
9664 case 2056:
9665 IFM_PAD_RIGHT = value;
9666 return;
9667 case 2060:
9668 IFM_PAD_BOTTOM = value;
9669 return;
9670 case 2064:
9671 IFM_DEPTH_M1 = value;
9672 return;
9673 case 2068:
9674 IFM_PRECISION = value;
9675 return;
9676 case 2076:
9677 IFM_UPSCALE = value;
9678 return;
9679 case 2084:
9680 IFM_ZERO_POINT = value;
9681 return;
9682 case 2088:
9683 IFM_WIDTH0_M1 = value;
9684 return;
9685 case 2092:
9686 IFM_HEIGHT0_M1 = value;
9687 return;
9688 case 2096:
9689 IFM_HEIGHT1_M1 = value;
9690 return;
9691 case 2100:
9692 IFM_IB_END = value;
9693 return;
9694 case 2108:
9695 IFM_REGION = value;
9696 return;
9697 case 2116:
9698 OFM_WIDTH_M1 = value;
9699 return;
9700 case 2120:
9701 OFM_HEIGHT_M1 = value;
9702 return;
9703 case 2124:
9704 OFM_DEPTH_M1 = value;
9705 return;
9706 case 2128:
9707 OFM_PRECISION = value;
9708 return;
9709 case 2132:
9710 OFM_BLK_WIDTH_M1 = value;
9711 return;
9712 case 2136:
9713 OFM_BLK_HEIGHT_M1 = value;
9714 return;
9715 case 2140:
9716 OFM_BLK_DEPTH_M1 = value;
9717 return;
9718 case 2144:
9719 OFM_ZERO_POINT = value;
9720 return;
9721 case 2152:
9722 OFM_WIDTH0_M1 = value;
9723 return;
9724 case 2156:
9725 OFM_HEIGHT0_M1 = value;
9726 return;
9727 case 2160:
9728 OFM_HEIGHT1_M1 = value;
9729 return;
9730 case 2172:
9731 OFM_REGION = value;
9732 return;
9733 case 2176:
9734 KERNEL_WIDTH_M1 = value;
9735 return;
9736 case 2180:
9737 KERNEL_HEIGHT_M1 = value;
9738 return;
9739 case 2184:
9740 KERNEL_STRIDE = value;
9741 return;
9742 case 2188:
9743 PARALLEL_MODE = value;
9744 return;
9745 case 2192:
9746 ACC_FORMAT = value;
9747 return;
9748 case 2196:
9749 ACTIVATION = value;
9750 return;
9751 case 2200:
9752 ACTIVATION_MIN = value;
9753 return;
9754 case 2204:
9755 ACTIVATION_MAX = value;
9756 return;
9757 case 2208:
9758 WEIGHT_REGION = value;
9759 return;
9760 case 2212:
9761 SCALE_REGION = value;
9762 return;
9763 case 2228:
9764 AB_START = value;
9765 return;
9766 case 2236:
9767 BLOCKDEP = value;
9768 return;
9769 case 2240:
9770 DMA0_SRC_REGION = value;
9771 return;
9772 case 2244:
9773 DMA0_DST_REGION = value;
9774 return;
9775 case 2248:
9776 DMA0_SIZE0 = value;
9777 return;
9778 case 2252:
9779 DMA0_SIZE1 = value;
9780 return;
9781 case 2304:
9782 IFM2_BROADCAST = value;
9783 return;
9784 case 2308:
9785 IFM2_SCALAR = value;
9786 return;
9787 case 2324:
9788 IFM2_PRECISION = value;
9789 return;
9790 case 2340:
9791 IFM2_ZERO_POINT = value;
9792 return;
9793 case 2344:
9794 IFM2_WIDTH0_M1 = value;
9795 return;
9796 case 2348:
9797 IFM2_HEIGHT0_M1 = value;
9798 return;
9799 case 2352:
9800 IFM2_HEIGHT1_M1 = value;
9801 return;
9802 case 2356:
9803 IFM2_IB_START = value;
9804 return;
9805 case 2364:
9806 IFM2_REGION = value;
9807 return;
9808 case 2560:
9809 IFM_BASE0 = value;
9810 return;
9811 case 2564:
9812 IFM_BASE0_HI = value;
9813 return;
9814 case 2568:
9815 IFM_BASE1 = value;
9816 return;
9817 case 2572:
9818 IFM_BASE1_HI = value;
9819 return;
9820 case 2576:
9821 IFM_BASE2 = value;
9822 return;
9823 case 2580:
9824 IFM_BASE2_HI = value;
9825 return;
9826 case 2584:
9827 IFM_BASE3 = value;
9828 return;
9829 case 2588:
9830 IFM_BASE3_HI = value;
9831 return;
9832 case 2592:
9833 IFM_STRIDE_X = value;
9834 return;
9835 case 2596:
9836 IFM_STRIDE_X_HI = value;
9837 return;
9838 case 2600:
9839 IFM_STRIDE_Y = value;
9840 return;
9841 case 2604:
9842 IFM_STRIDE_Y_HI = value;
9843 return;
9844 case 2608:
9845 IFM_STRIDE_C = value;
9846 return;
9847 case 2612:
9848 IFM_STRIDE_C_HI = value;
9849 return;
9850 case 2624:
9851 OFM_BASE0 = value;
9852 return;
9853 case 2628:
9854 OFM_BASE0_HI = value;
9855 return;
9856 case 2632:
9857 OFM_BASE1 = value;
9858 return;
9859 case 2636:
9860 OFM_BASE1_HI = value;
9861 return;
9862 case 2640:
9863 OFM_BASE2 = value;
9864 return;
9865 case 2644:
9866 OFM_BASE2_HI = value;
9867 return;
9868 case 2648:
9869 OFM_BASE3 = value;
9870 return;
9871 case 2652:
9872 OFM_BASE3_HI = value;
9873 return;
9874 case 2656:
9875 OFM_STRIDE_X = value;
9876 return;
9877 case 2660:
9878 OFM_STRIDE_X_HI = value;
9879 return;
9880 case 2664:
9881 OFM_STRIDE_Y = value;
9882 return;
9883 case 2668:
9884 OFM_STRIDE_Y_HI = value;
9885 return;
9886 case 2672:
9887 OFM_STRIDE_C = value;
9888 return;
9889 case 2676:
9890 OFM_STRIDE_C_HI = value;
9891 return;
9892 case 2688:
9893 WEIGHT_BASE = value;
9894 return;
9895 case 2692:
9896 WEIGHT_BASE_HI = value;
9897 return;
9898 case 2696:
9899 WEIGHT_LENGTH = value;
9900 return;
9901 case 2700:
9902 WEIGHT_LENGTH_HI = value;
9903 return;
9904 case 2704:
9905 SCALE_BASE = value;
9906 return;
9907 case 2708:
9908 SCALE_BASE_HI = value;
9909 return;
9910 case 2712:
9911 SCALE_LENGTH = value;
9912 return;
9913 case 2720:
9914 OFM_SCALE = value;
9915 return;
9916 case 2724:
9917 OFM_SCALE_SHIFT = value;
9918 return;
9919 case 2728:
9920 OPA_SCALE = value;
9921 return;
9922 case 2732:
9923 OPA_SCALE_SHIFT = value;
9924 return;
9925 case 2736:
9926 OPB_SCALE = value;
9927 return;
9928 case 2752:
9929 DMA0_SRC = value;
9930 return;
9931 case 2756:
9932 DMA0_SRC_HI = value;
9933 return;
9934 case 2760:
9935 DMA0_DST = value;
9936 return;
9937 case 2764:
9938 DMA0_DST_HI = value;
9939 return;
9940 case 2768:
9941 DMA0_LEN = value;
9942 return;
9943 case 2772:
9944 DMA0_LEN_HI = value;
9945 return;
9946 case 2776:
9947 DMA0_SKIP0 = value;
9948 return;
9949 case 2780:
9950 DMA0_SKIP0_HI = value;
9951 return;
9952 case 2784:
9953 DMA0_SKIP1 = value;
9954 return;
9955 case 2788:
9956 DMA0_SKIP1_HI = value;
9957 return;
9958 case 2816:
9959 IFM2_BASE0 = value;
9960 return;
9961 case 2820:
9962 IFM2_BASE0_HI = value;
9963 return;
9964 case 2824:
9965 IFM2_BASE1 = value;
9966 return;
9967 case 2828:
9968 IFM2_BASE1_HI = value;
9969 return;
9970 case 2832:
9971 IFM2_BASE2 = value;
9972 return;
9973 case 2836:
9974 IFM2_BASE2_HI = value;
9975 return;
9976 case 2840:
9977 IFM2_BASE3 = value;
9978 return;
9979 case 2844:
9980 IFM2_BASE3_HI = value;
9981 return;
9982 case 2848:
9983 IFM2_STRIDE_X = value;
9984 return;
9985 case 2852:
9986 IFM2_STRIDE_X_HI = value;
9987 return;
9988 case 2856:
9989 IFM2_STRIDE_Y = value;
9990 return;
9991 case 2860:
9992 IFM2_STRIDE_Y_HI = value;
9993 return;
9994 case 2864:
9995 IFM2_STRIDE_C = value;
9996 return;
9997 case 2868:
9998 IFM2_STRIDE_C_HI = value;
9999 return;
10000 case 2880:
10001 WEIGHT1_BASE = value;
10002 return;
10003 case 2884:
10004 WEIGHT1_BASE_HI = value;
10005 return;
10006 case 2888:
10007 WEIGHT1_LENGTH = value;
10008 return;
10009 case 2892:
10010 WEIGHT1_LENGTH_HI = value;
10011 return;
10012 case 2896:
10013 SCALE1_BASE = value;
10014 return;
10015 case 2900:
10016 SCALE1_BASE_HI = value;
10017 return;
10018 case 2904:
10019 SCALE1_LENGTH = value;
10020 return;
10021 case 384:
10022 PMCR = value;
10023 return;
10024 case 388:
10025 PMCNTENSET = value;
10026 return;
10027 case 392:
10028 PMCNTENCLR = value;
10029 return;
10030 case 396:
10031 PMOVSSET = value;
10032 return;
10033 case 400:
10034 PMOVSCLR = value;
10035 return;
10036 case 404:
10037 PMINTSET = value;
10038 return;
10039 case 408:
10040 PMINTCLR = value;
10041 return;
10042 case 416:
10043 PMCCNTR_LO = value;
10044 return;
10045 case 420:
10046 PMCCNTR_HI = value;
10047 return;
10048 case 424:
10049 PMCCNTR_CFG = value;
10050 return;
10051 case 428:
10052 PMCAXI_CHAN = value;
10053 return;
10054 case 768:
10055 PMEVCNTR[0] = value;
10056 return;
10057 case 772:
10058 PMEVCNTR[1] = value;
10059 return;
10060 case 776:
10061 PMEVCNTR[2] = value;
10062 return;
10063 case 780:
10064 PMEVCNTR[3] = value;
10065 return;
10066 case 896:
10067 PMEVTYPER[0] = value;
10068 return;
10069 case 900:
10070 PMEVTYPER[1] = value;
10071 return;
10072 case 904:
10073 PMEVTYPER[2] = value;
10074 return;
10075 case 908:
10076 PMEVTYPER[3] = value;
10077 return;
10078 case 1024:
10079 SHARED_BUFFER[0] = value;
10080 return;
10081 case 1028:
10082 SHARED_BUFFER[1] = value;
10083 return;
10084 case 1032:
10085 SHARED_BUFFER[2] = value;
10086 return;
10087 case 1036:
10088 SHARED_BUFFER[3] = value;
10089 return;
10090 case 1040:
10091 SHARED_BUFFER[4] = value;
10092 return;
10093 case 1044:
10094 SHARED_BUFFER[5] = value;
10095 return;
10096 case 1048:
10097 SHARED_BUFFER[6] = value;
10098 return;
10099 case 1052:
10100 SHARED_BUFFER[7] = value;
10101 return;
10102 case 1056:
10103 SHARED_BUFFER[8] = value;
10104 return;
10105 case 1060:
10106 SHARED_BUFFER[9] = value;
10107 return;
10108 case 1064:
10109 SHARED_BUFFER[10] = value;
10110 return;
10111 case 1068:
10112 SHARED_BUFFER[11] = value;
10113 return;
10114 case 1072:
10115 SHARED_BUFFER[12] = value;
10116 return;
10117 case 1076:
10118 SHARED_BUFFER[13] = value;
10119 return;
10120 case 1080:
10121 SHARED_BUFFER[14] = value;
10122 return;
10123 case 1084:
10124 SHARED_BUFFER[15] = value;
10125 return;
10126 case 1088:
10127 SHARED_BUFFER[16] = value;
10128 return;
10129 case 1092:
10130 SHARED_BUFFER[17] = value;
10131 return;
10132 case 1096:
10133 SHARED_BUFFER[18] = value;
10134 return;
10135 case 1100:
10136 SHARED_BUFFER[19] = value;
10137 return;
10138 case 1104:
10139 SHARED_BUFFER[20] = value;
10140 return;
10141 case 1108:
10142 SHARED_BUFFER[21] = value;
10143 return;
10144 case 1112:
10145 SHARED_BUFFER[22] = value;
10146 return;
10147 case 1116:
10148 SHARED_BUFFER[23] = value;
10149 return;
10150 case 1120:
10151 SHARED_BUFFER[24] = value;
10152 return;
10153 case 1124:
10154 SHARED_BUFFER[25] = value;
10155 return;
10156 case 1128:
10157 SHARED_BUFFER[26] = value;
10158 return;
10159 case 1132:
10160 SHARED_BUFFER[27] = value;
10161 return;
10162 case 1136:
10163 SHARED_BUFFER[28] = value;
10164 return;
10165 case 1140:
10166 SHARED_BUFFER[29] = value;
10167 return;
10168 case 1144:
10169 SHARED_BUFFER[30] = value;
10170 return;
10171 case 1148:
10172 SHARED_BUFFER[31] = value;
10173 return;
10174 case 1152:
10175 SHARED_BUFFER[32] = value;
10176 return;
10177 case 1156:
10178 SHARED_BUFFER[33] = value;
10179 return;
10180 case 1160:
10181 SHARED_BUFFER[34] = value;
10182 return;
10183 case 1164:
10184 SHARED_BUFFER[35] = value;
10185 return;
10186 case 1168:
10187 SHARED_BUFFER[36] = value;
10188 return;
10189 case 1172:
10190 SHARED_BUFFER[37] = value;
10191 return;
10192 case 1176:
10193 SHARED_BUFFER[38] = value;
10194 return;
10195 case 1180:
10196 SHARED_BUFFER[39] = value;
10197 return;
10198 case 1184:
10199 SHARED_BUFFER[40] = value;
10200 return;
10201 case 1188:
10202 SHARED_BUFFER[41] = value;
10203 return;
10204 case 1192:
10205 SHARED_BUFFER[42] = value;
10206 return;
10207 case 1196:
10208 SHARED_BUFFER[43] = value;
10209 return;
10210 case 1200:
10211 SHARED_BUFFER[44] = value;
10212 return;
10213 case 1204:
10214 SHARED_BUFFER[45] = value;
10215 return;
10216 case 1208:
10217 SHARED_BUFFER[46] = value;
10218 return;
10219 case 1212:
10220 SHARED_BUFFER[47] = value;
10221 return;
10222 case 1216:
10223 SHARED_BUFFER[48] = value;
10224 return;
10225 case 1220:
10226 SHARED_BUFFER[49] = value;
10227 return;
10228 case 1224:
10229 SHARED_BUFFER[50] = value;
10230 return;
10231 case 1228:
10232 SHARED_BUFFER[51] = value;
10233 return;
10234 case 1232:
10235 SHARED_BUFFER[52] = value;
10236 return;
10237 case 1236:
10238 SHARED_BUFFER[53] = value;
10239 return;
10240 case 1240:
10241 SHARED_BUFFER[54] = value;
10242 return;
10243 case 1244:
10244 SHARED_BUFFER[55] = value;
10245 return;
10246 case 1248:
10247 SHARED_BUFFER[56] = value;
10248 return;
10249 case 1252:
10250 SHARED_BUFFER[57] = value;
10251 return;
10252 case 1256:
10253 SHARED_BUFFER[58] = value;
10254 return;
10255 case 1260:
10256 SHARED_BUFFER[59] = value;
10257 return;
10258 case 1264:
10259 SHARED_BUFFER[60] = value;
10260 return;
10261 case 1268:
10262 SHARED_BUFFER[61] = value;
10263 return;
10264 case 1272:
10265 SHARED_BUFFER[62] = value;
10266 return;
10267 case 1276:
10268 SHARED_BUFFER[63] = value;
10269 return;
10270 case 1280:
10271 SHARED_BUFFER[64] = value;
10272 return;
10273 case 1284:
10274 SHARED_BUFFER[65] = value;
10275 return;
10276 case 1288:
10277 SHARED_BUFFER[66] = value;
10278 return;
10279 case 1292:
10280 SHARED_BUFFER[67] = value;
10281 return;
10282 case 1296:
10283 SHARED_BUFFER[68] = value;
10284 return;
10285 case 1300:
10286 SHARED_BUFFER[69] = value;
10287 return;
10288 case 1304:
10289 SHARED_BUFFER[70] = value;
10290 return;
10291 case 1308:
10292 SHARED_BUFFER[71] = value;
10293 return;
10294 case 1312:
10295 SHARED_BUFFER[72] = value;
10296 return;
10297 case 1316:
10298 SHARED_BUFFER[73] = value;
10299 return;
10300 case 1320:
10301 SHARED_BUFFER[74] = value;
10302 return;
10303 case 1324:
10304 SHARED_BUFFER[75] = value;
10305 return;
10306 case 1328:
10307 SHARED_BUFFER[76] = value;
10308 return;
10309 case 1332:
10310 SHARED_BUFFER[77] = value;
10311 return;
10312 case 1336:
10313 SHARED_BUFFER[78] = value;
10314 return;
10315 case 1340:
10316 SHARED_BUFFER[79] = value;
10317 return;
10318 case 1344:
10319 SHARED_BUFFER[80] = value;
10320 return;
10321 case 1348:
10322 SHARED_BUFFER[81] = value;
10323 return;
10324 case 1352:
10325 SHARED_BUFFER[82] = value;
10326 return;
10327 case 1356:
10328 SHARED_BUFFER[83] = value;
10329 return;
10330 case 1360:
10331 SHARED_BUFFER[84] = value;
10332 return;
10333 case 1364:
10334 SHARED_BUFFER[85] = value;
10335 return;
10336 case 1368:
10337 SHARED_BUFFER[86] = value;
10338 return;
10339 case 1372:
10340 SHARED_BUFFER[87] = value;
10341 return;
10342 case 1376:
10343 SHARED_BUFFER[88] = value;
10344 return;
10345 case 1380:
10346 SHARED_BUFFER[89] = value;
10347 return;
10348 case 1384:
10349 SHARED_BUFFER[90] = value;
10350 return;
10351 case 1388:
10352 SHARED_BUFFER[91] = value;
10353 return;
10354 case 1392:
10355 SHARED_BUFFER[92] = value;
10356 return;
10357 case 1396:
10358 SHARED_BUFFER[93] = value;
10359 return;
10360 case 1400:
10361 SHARED_BUFFER[94] = value;
10362 return;
10363 case 1404:
10364 SHARED_BUFFER[95] = value;
10365 return;
10366 case 1408:
10367 SHARED_BUFFER[96] = value;
10368 return;
10369 case 1412:
10370 SHARED_BUFFER[97] = value;
10371 return;
10372 case 1416:
10373 SHARED_BUFFER[98] = value;
10374 return;
10375 case 1420:
10376 SHARED_BUFFER[99] = value;
10377 return;
10378 case 1424:
10379 SHARED_BUFFER[100] = value;
10380 return;
10381 case 1428:
10382 SHARED_BUFFER[101] = value;
10383 return;
10384 case 1432:
10385 SHARED_BUFFER[102] = value;
10386 return;
10387 case 1436:
10388 SHARED_BUFFER[103] = value;
10389 return;
10390 case 1440:
10391 SHARED_BUFFER[104] = value;
10392 return;
10393 case 1444:
10394 SHARED_BUFFER[105] = value;
10395 return;
10396 case 1448:
10397 SHARED_BUFFER[106] = value;
10398 return;
10399 case 1452:
10400 SHARED_BUFFER[107] = value;
10401 return;
10402 case 1456:
10403 SHARED_BUFFER[108] = value;
10404 return;
10405 case 1460:
10406 SHARED_BUFFER[109] = value;
10407 return;
10408 case 1464:
10409 SHARED_BUFFER[110] = value;
10410 return;
10411 case 1468:
10412 SHARED_BUFFER[111] = value;
10413 return;
10414 case 1472:
10415 SHARED_BUFFER[112] = value;
10416 return;
10417 case 1476:
10418 SHARED_BUFFER[113] = value;
10419 return;
10420 case 1480:
10421 SHARED_BUFFER[114] = value;
10422 return;
10423 case 1484:
10424 SHARED_BUFFER[115] = value;
10425 return;
10426 case 1488:
10427 SHARED_BUFFER[116] = value;
10428 return;
10429 case 1492:
10430 SHARED_BUFFER[117] = value;
10431 return;
10432 case 1496:
10433 SHARED_BUFFER[118] = value;
10434 return;
10435 case 1500:
10436 SHARED_BUFFER[119] = value;
10437 return;
10438 case 1504:
10439 SHARED_BUFFER[120] = value;
10440 return;
10441 case 1508:
10442 SHARED_BUFFER[121] = value;
10443 return;
10444 case 1512:
10445 SHARED_BUFFER[122] = value;
10446 return;
10447 case 1516:
10448 SHARED_BUFFER[123] = value;
10449 return;
10450 case 1520:
10451 SHARED_BUFFER[124] = value;
10452 return;
10453 case 1524:
10454 SHARED_BUFFER[125] = value;
10455 return;
10456 case 1528:
10457 SHARED_BUFFER[126] = value;
10458 return;
10459 case 1532:
10460 SHARED_BUFFER[127] = value;
10461 return;
10462 case 1536:
10463 SHARED_BUFFER[128] = value;
10464 return;
10465 case 1540:
10466 SHARED_BUFFER[129] = value;
10467 return;
10468 case 1544:
10469 SHARED_BUFFER[130] = value;
10470 return;
10471 case 1548:
10472 SHARED_BUFFER[131] = value;
10473 return;
10474 case 1552:
10475 SHARED_BUFFER[132] = value;
10476 return;
10477 case 1556:
10478 SHARED_BUFFER[133] = value;
10479 return;
10480 case 1560:
10481 SHARED_BUFFER[134] = value;
10482 return;
10483 case 1564:
10484 SHARED_BUFFER[135] = value;
10485 return;
10486 case 1568:
10487 SHARED_BUFFER[136] = value;
10488 return;
10489 case 1572:
10490 SHARED_BUFFER[137] = value;
10491 return;
10492 case 1576:
10493 SHARED_BUFFER[138] = value;
10494 return;
10495 case 1580:
10496 SHARED_BUFFER[139] = value;
10497 return;
10498 case 1584:
10499 SHARED_BUFFER[140] = value;
10500 return;
10501 case 1588:
10502 SHARED_BUFFER[141] = value;
10503 return;
10504 case 1592:
10505 SHARED_BUFFER[142] = value;
10506 return;
10507 case 1596:
10508 SHARED_BUFFER[143] = value;
10509 return;
10510 case 1600:
10511 SHARED_BUFFER[144] = value;
10512 return;
10513 case 1604:
10514 SHARED_BUFFER[145] = value;
10515 return;
10516 case 1608:
10517 SHARED_BUFFER[146] = value;
10518 return;
10519 case 1612:
10520 SHARED_BUFFER[147] = value;
10521 return;
10522 case 1616:
10523 SHARED_BUFFER[148] = value;
10524 return;
10525 case 1620:
10526 SHARED_BUFFER[149] = value;
10527 return;
10528 case 1624:
10529 SHARED_BUFFER[150] = value;
10530 return;
10531 case 1628:
10532 SHARED_BUFFER[151] = value;
10533 return;
10534 case 1632:
10535 SHARED_BUFFER[152] = value;
10536 return;
10537 case 1636:
10538 SHARED_BUFFER[153] = value;
10539 return;
10540 case 1640:
10541 SHARED_BUFFER[154] = value;
10542 return;
10543 case 1644:
10544 SHARED_BUFFER[155] = value;
10545 return;
10546 case 1648:
10547 SHARED_BUFFER[156] = value;
10548 return;
10549 case 1652:
10550 SHARED_BUFFER[157] = value;
10551 return;
10552 case 1656:
10553 SHARED_BUFFER[158] = value;
10554 return;
10555 case 1660:
10556 SHARED_BUFFER[159] = value;
10557 return;
10558 case 1664:
10559 SHARED_BUFFER[160] = value;
10560 return;
10561 case 1668:
10562 SHARED_BUFFER[161] = value;
10563 return;
10564 case 1672:
10565 SHARED_BUFFER[162] = value;
10566 return;
10567 case 1676:
10568 SHARED_BUFFER[163] = value;
10569 return;
10570 case 1680:
10571 SHARED_BUFFER[164] = value;
10572 return;
10573 case 1684:
10574 SHARED_BUFFER[165] = value;
10575 return;
10576 case 1688:
10577 SHARED_BUFFER[166] = value;
10578 return;
10579 case 1692:
10580 SHARED_BUFFER[167] = value;
10581 return;
10582 case 1696:
10583 SHARED_BUFFER[168] = value;
10584 return;
10585 case 1700:
10586 SHARED_BUFFER[169] = value;
10587 return;
10588 case 1704:
10589 SHARED_BUFFER[170] = value;
10590 return;
10591 case 1708:
10592 SHARED_BUFFER[171] = value;
10593 return;
10594 case 1712:
10595 SHARED_BUFFER[172] = value;
10596 return;
10597 case 1716:
10598 SHARED_BUFFER[173] = value;
10599 return;
10600 case 1720:
10601 SHARED_BUFFER[174] = value;
10602 return;
10603 case 1724:
10604 SHARED_BUFFER[175] = value;
10605 return;
10606 case 1728:
10607 SHARED_BUFFER[176] = value;
10608 return;
10609 case 1732:
10610 SHARED_BUFFER[177] = value;
10611 return;
10612 case 1736:
10613 SHARED_BUFFER[178] = value;
10614 return;
10615 case 1740:
10616 SHARED_BUFFER[179] = value;
10617 return;
10618 case 1744:
10619 SHARED_BUFFER[180] = value;
10620 return;
10621 case 1748:
10622 SHARED_BUFFER[181] = value;
10623 return;
10624 case 1752:
10625 SHARED_BUFFER[182] = value;
10626 return;
10627 case 1756:
10628 SHARED_BUFFER[183] = value;
10629 return;
10630 case 1760:
10631 SHARED_BUFFER[184] = value;
10632 return;
10633 case 1764:
10634 SHARED_BUFFER[185] = value;
10635 return;
10636 case 1768:
10637 SHARED_BUFFER[186] = value;
10638 return;
10639 case 1772:
10640 SHARED_BUFFER[187] = value;
10641 return;
10642 case 1776:
10643 SHARED_BUFFER[188] = value;
10644 return;
10645 case 1780:
10646 SHARED_BUFFER[189] = value;
10647 return;
10648 case 1784:
10649 SHARED_BUFFER[190] = value;
10650 return;
10651 case 1788:
10652 SHARED_BUFFER[191] = value;
10653 return;
10654 case 1792:
10655 SHARED_BUFFER[192] = value;
10656 return;
10657 case 1796:
10658 SHARED_BUFFER[193] = value;
10659 return;
10660 case 1800:
10661 SHARED_BUFFER[194] = value;
10662 return;
10663 case 1804:
10664 SHARED_BUFFER[195] = value;
10665 return;
10666 case 1808:
10667 SHARED_BUFFER[196] = value;
10668 return;
10669 case 1812:
10670 SHARED_BUFFER[197] = value;
10671 return;
10672 case 1816:
10673 SHARED_BUFFER[198] = value;
10674 return;
10675 case 1820:
10676 SHARED_BUFFER[199] = value;
10677 return;
10678 case 1824:
10679 SHARED_BUFFER[200] = value;
10680 return;
10681 case 1828:
10682 SHARED_BUFFER[201] = value;
10683 return;
10684 case 1832:
10685 SHARED_BUFFER[202] = value;
10686 return;
10687 case 1836:
10688 SHARED_BUFFER[203] = value;
10689 return;
10690 case 1840:
10691 SHARED_BUFFER[204] = value;
10692 return;
10693 case 1844:
10694 SHARED_BUFFER[205] = value;
10695 return;
10696 case 1848:
10697 SHARED_BUFFER[206] = value;
10698 return;
10699 case 1852:
10700 SHARED_BUFFER[207] = value;
10701 return;
10702 case 1856:
10703 SHARED_BUFFER[208] = value;
10704 return;
10705 case 1860:
10706 SHARED_BUFFER[209] = value;
10707 return;
10708 case 1864:
10709 SHARED_BUFFER[210] = value;
10710 return;
10711 case 1868:
10712 SHARED_BUFFER[211] = value;
10713 return;
10714 case 1872:
10715 SHARED_BUFFER[212] = value;
10716 return;
10717 case 1876:
10718 SHARED_BUFFER[213] = value;
10719 return;
10720 case 1880:
10721 SHARED_BUFFER[214] = value;
10722 return;
10723 case 1884:
10724 SHARED_BUFFER[215] = value;
10725 return;
10726 case 1888:
10727 SHARED_BUFFER[216] = value;
10728 return;
10729 case 1892:
10730 SHARED_BUFFER[217] = value;
10731 return;
10732 case 1896:
10733 SHARED_BUFFER[218] = value;
10734 return;
10735 case 1900:
10736 SHARED_BUFFER[219] = value;
10737 return;
10738 case 1904:
10739 SHARED_BUFFER[220] = value;
10740 return;
10741 case 1908:
10742 SHARED_BUFFER[221] = value;
10743 return;
10744 case 1912:
10745 SHARED_BUFFER[222] = value;
10746 return;
10747 case 1916:
10748 SHARED_BUFFER[223] = value;
10749 return;
10750 case 1920:
10751 SHARED_BUFFER[224] = value;
10752 return;
10753 case 1924:
10754 SHARED_BUFFER[225] = value;
10755 return;
10756 case 1928:
10757 SHARED_BUFFER[226] = value;
10758 return;
10759 case 1932:
10760 SHARED_BUFFER[227] = value;
10761 return;
10762 case 1936:
10763 SHARED_BUFFER[228] = value;
10764 return;
10765 case 1940:
10766 SHARED_BUFFER[229] = value;
10767 return;
10768 case 1944:
10769 SHARED_BUFFER[230] = value;
10770 return;
10771 case 1948:
10772 SHARED_BUFFER[231] = value;
10773 return;
10774 case 1952:
10775 SHARED_BUFFER[232] = value;
10776 return;
10777 case 1956:
10778 SHARED_BUFFER[233] = value;
10779 return;
10780 case 1960:
10781 SHARED_BUFFER[234] = value;
10782 return;
10783 case 1964:
10784 SHARED_BUFFER[235] = value;
10785 return;
10786 case 1968:
10787 SHARED_BUFFER[236] = value;
10788 return;
10789 case 1972:
10790 SHARED_BUFFER[237] = value;
10791 return;
10792 case 1976:
10793 SHARED_BUFFER[238] = value;
10794 return;
10795 case 1980:
10796 SHARED_BUFFER[239] = value;
10797 return;
10798 case 1984:
10799 SHARED_BUFFER[240] = value;
10800 return;
10801 case 1988:
10802 SHARED_BUFFER[241] = value;
10803 return;
10804 case 1992:
10805 SHARED_BUFFER[242] = value;
10806 return;
10807 case 1996:
10808 SHARED_BUFFER[243] = value;
10809 return;
10810 case 2000:
10811 SHARED_BUFFER[244] = value;
10812 return;
10813 case 2004:
10814 SHARED_BUFFER[245] = value;
10815 return;
10816 case 2008:
10817 SHARED_BUFFER[246] = value;
10818 return;
10819 case 2012:
10820 SHARED_BUFFER[247] = value;
10821 return;
10822 case 2016:
10823 SHARED_BUFFER[248] = value;
10824 return;
10825 case 2020:
10826 SHARED_BUFFER[249] = value;
10827 return;
10828 case 2024:
10829 SHARED_BUFFER[250] = value;
10830 return;
10831 case 2028:
10832 SHARED_BUFFER[251] = value;
10833 return;
10834 case 2032:
10835 SHARED_BUFFER[252] = value;
10836 return;
10837 case 2036:
10838 SHARED_BUFFER[253] = value;
10839 return;
10840 case 2040:
10841 SHARED_BUFFER[254] = value;
10842 return;
10843 case 2044:
10844 SHARED_BUFFER[255] = value;
10845 return;
10846 default:
10847 throw std::runtime_error("invalid register address");
10848 }
10849 }
10850#else
10851 uint32_t &operator[](const int addr_offset)
10852 {
10853 return reinterpret_cast<uint32_t *>(this)[addr_offset / 4];
10854 }
10855#endif
10856 enum class access_type_t : bool
10857 {
10858 RO,
10859 RW
10860 };
10861 access_type_t get_access_type(uint32_t offset)
10862 {
10863 switch (offset)
10864 {
10865 case 0:
10866 return access_type_t::RO;
10867 case 4:
10868 return access_type_t::RO;
10869 case 8:
10870 return access_type_t::RW;
10871 case 12:
10872 return access_type_t::RW;
10873 case 16:
10874 return access_type_t::RW;
10875 case 20:
10876 return access_type_t::RW;
10877 case 24:
10878 return access_type_t::RO;
10879 case 28:
10880 return access_type_t::RW;
10881 case 32:
10882 return access_type_t::RW;
10883 case 36:
10884 return access_type_t::RO;
10885 case 40:
10886 return access_type_t::RO;
10887 case 44:
10888 return access_type_t::RW;
10889 case 60:
10890 return access_type_t::RW;
10891 case 64:
10892 return access_type_t::RW;
10893 case 68:
10894 return access_type_t::RW;
10895 case 72:
10896 return access_type_t::RW;
10897 case 76:
10898 return access_type_t::RW;
10899 case 128:
10900 return access_type_t::RW;
10901 case 132:
10902 return access_type_t::RW;
10903 case 136:
10904 return access_type_t::RW;
10905 case 140:
10906 return access_type_t::RW;
10907 case 144:
10908 return access_type_t::RW;
10909 case 148:
10910 return access_type_t::RW;
10911 case 152:
10912 return access_type_t::RW;
10913 case 156:
10914 return access_type_t::RW;
10915 case 160:
10916 return access_type_t::RW;
10917 case 164:
10918 return access_type_t::RW;
10919 case 168:
10920 return access_type_t::RW;
10921 case 172:
10922 return access_type_t::RW;
10923 case 176:
10924 return access_type_t::RW;
10925 case 180:
10926 return access_type_t::RW;
10927 case 184:
10928 return access_type_t::RW;
10929 case 188:
10930 return access_type_t::RW;
10931 case 4032:
10932 return access_type_t::RO;
10933 case 4048:
10934 return access_type_t::RO;
10935 case 4052:
10936 return access_type_t::RO;
10937 case 4056:
10938 return access_type_t::RO;
10939 case 4060:
10940 return access_type_t::RO;
10941 case 4064:
10942 return access_type_t::RO;
10943 case 4068:
10944 return access_type_t::RO;
10945 case 4072:
10946 return access_type_t::RO;
10947 case 4076:
10948 return access_type_t::RO;
10949 case 4080:
10950 return access_type_t::RO;
10951 case 4084:
10952 return access_type_t::RO;
10953 case 4088:
10954 return access_type_t::RO;
10955 case 4092:
10956 return access_type_t::RO;
10957 case 320:
10958 return access_type_t::RW;
10959 case 324:
10960 return access_type_t::RW;
10961 case 328:
10962 return access_type_t::RW;
10963 case 332:
10964 return access_type_t::RW;
10965 case 512:
10966 return access_type_t::RO;
10967 case 516:
10968 return access_type_t::RO;
10969 case 520:
10970 return access_type_t::RO;
10971 case 524:
10972 return access_type_t::RO;
10973 case 528:
10974 return access_type_t::RO;
10975 case 532:
10976 return access_type_t::RO;
10977 case 536:
10978 return access_type_t::RO;
10979 case 540:
10980 return access_type_t::RO;
10981 case 544:
10982 return access_type_t::RO;
10983 case 548:
10984 return access_type_t::RO;
10985 case 552:
10986 return access_type_t::RO;
10987 case 556:
10988 return access_type_t::RO;
10989 case 560:
10990 return access_type_t::RO;
10991 case 564:
10992 return access_type_t::RO;
10993 case 568:
10994 return access_type_t::RO;
10995 case 572:
10996 return access_type_t::RO;
10997 case 576:
10998 return access_type_t::RO;
10999 case 580:
11000 return access_type_t::RO;
11001 case 584:
11002 return access_type_t::RO;
11003 case 588:
11004 return access_type_t::RO;
11005 case 592:
11006 return access_type_t::RO;
11007 case 596:
11008 return access_type_t::RO;
11009 case 600:
11010 return access_type_t::RO;
11011 case 604:
11012 return access_type_t::RO;
11013 case 608:
11014 return access_type_t::RO;
11015 case 612:
11016 return access_type_t::RO;
11017 case 616:
11018 return access_type_t::RO;
11019 case 620:
11020 return access_type_t::RO;
11021 case 624:
11022 return access_type_t::RO;
11023 case 628:
11024 return access_type_t::RO;
11025 case 632:
11026 return access_type_t::RO;
11027 case 636:
11028 return access_type_t::RO;
11029 case 640:
11030 return access_type_t::RO;
11031 case 644:
11032 return access_type_t::RO;
11033 case 700:
11034 return access_type_t::RO;
11035 case 2048:
11036 return access_type_t::RW;
11037 case 2052:
11038 return access_type_t::RW;
11039 case 2056:
11040 return access_type_t::RW;
11041 case 2060:
11042 return access_type_t::RW;
11043 case 2064:
11044 return access_type_t::RW;
11045 case 2068:
11046 return access_type_t::RW;
11047 case 2076:
11048 return access_type_t::RW;
11049 case 2084:
11050 return access_type_t::RW;
11051 case 2088:
11052 return access_type_t::RW;
11053 case 2092:
11054 return access_type_t::RW;
11055 case 2096:
11056 return access_type_t::RW;
11057 case 2100:
11058 return access_type_t::RW;
11059 case 2108:
11060 return access_type_t::RW;
11061 case 2116:
11062 return access_type_t::RW;
11063 case 2120:
11064 return access_type_t::RW;
11065 case 2124:
11066 return access_type_t::RW;
11067 case 2128:
11068 return access_type_t::RW;
11069 case 2132:
11070 return access_type_t::RW;
11071 case 2136:
11072 return access_type_t::RW;
11073 case 2140:
11074 return access_type_t::RW;
11075 case 2144:
11076 return access_type_t::RW;
11077 case 2152:
11078 return access_type_t::RW;
11079 case 2156:
11080 return access_type_t::RW;
11081 case 2160:
11082 return access_type_t::RW;
11083 case 2172:
11084 return access_type_t::RW;
11085 case 2176:
11086 return access_type_t::RW;
11087 case 2180:
11088 return access_type_t::RW;
11089 case 2184:
11090 return access_type_t::RW;
11091 case 2188:
11092 return access_type_t::RW;
11093 case 2192:
11094 return access_type_t::RW;
11095 case 2196:
11096 return access_type_t::RW;
11097 case 2200:
11098 return access_type_t::RW;
11099 case 2204:
11100 return access_type_t::RW;
11101 case 2208:
11102 return access_type_t::RW;
11103 case 2212:
11104 return access_type_t::RW;
11105 case 2228:
11106 return access_type_t::RW;
11107 case 2236:
11108 return access_type_t::RW;
11109 case 2240:
11110 return access_type_t::RW;
11111 case 2244:
11112 return access_type_t::RW;
11113 case 2248:
11114 return access_type_t::RW;
11115 case 2252:
11116 return access_type_t::RW;
11117 case 2304:
11118 return access_type_t::RW;
11119 case 2308:
11120 return access_type_t::RW;
11121 case 2324:
11122 return access_type_t::RW;
11123 case 2340:
11124 return access_type_t::RW;
11125 case 2344:
11126 return access_type_t::RW;
11127 case 2348:
11128 return access_type_t::RW;
11129 case 2352:
11130 return access_type_t::RW;
11131 case 2356:
11132 return access_type_t::RW;
11133 case 2364:
11134 return access_type_t::RW;
11135 case 2560:
11136 return access_type_t::RW;
11137 case 2564:
11138 return access_type_t::RW;
11139 case 2568:
11140 return access_type_t::RW;
11141 case 2572:
11142 return access_type_t::RW;
11143 case 2576:
11144 return access_type_t::RW;
11145 case 2580:
11146 return access_type_t::RW;
11147 case 2584:
11148 return access_type_t::RW;
11149 case 2588:
11150 return access_type_t::RW;
11151 case 2592:
11152 return access_type_t::RW;
11153 case 2596:
11154 return access_type_t::RW;
11155 case 2600:
11156 return access_type_t::RW;
11157 case 2604:
11158 return access_type_t::RW;
11159 case 2608:
11160 return access_type_t::RW;
11161 case 2612:
11162 return access_type_t::RW;
11163 case 2624:
11164 return access_type_t::RW;
11165 case 2628:
11166 return access_type_t::RW;
11167 case 2632:
11168 return access_type_t::RW;
11169 case 2636:
11170 return access_type_t::RW;
11171 case 2640:
11172 return access_type_t::RW;
11173 case 2644:
11174 return access_type_t::RW;
11175 case 2648:
11176 return access_type_t::RW;
11177 case 2652:
11178 return access_type_t::RW;
11179 case 2656:
11180 return access_type_t::RW;
11181 case 2660:
11182 return access_type_t::RW;
11183 case 2664:
11184 return access_type_t::RW;
11185 case 2668:
11186 return access_type_t::RW;
11187 case 2672:
11188 return access_type_t::RW;
11189 case 2676:
11190 return access_type_t::RW;
11191 case 2688:
11192 return access_type_t::RW;
11193 case 2692:
11194 return access_type_t::RW;
11195 case 2696:
11196 return access_type_t::RW;
11197 case 2700:
11198 return access_type_t::RW;
11199 case 2704:
11200 return access_type_t::RW;
11201 case 2708:
11202 return access_type_t::RW;
11203 case 2712:
11204 return access_type_t::RW;
11205 case 2720:
11206 return access_type_t::RW;
11207 case 2724:
11208 return access_type_t::RW;
11209 case 2728:
11210 return access_type_t::RW;
11211 case 2732:
11212 return access_type_t::RW;
11213 case 2736:
11214 return access_type_t::RW;
11215 case 2752:
11216 return access_type_t::RW;
11217 case 2756:
11218 return access_type_t::RW;
11219 case 2760:
11220 return access_type_t::RW;
11221 case 2764:
11222 return access_type_t::RW;
11223 case 2768:
11224 return access_type_t::RW;
11225 case 2772:
11226 return access_type_t::RW;
11227 case 2776:
11228 return access_type_t::RW;
11229 case 2780:
11230 return access_type_t::RW;
11231 case 2784:
11232 return access_type_t::RW;
11233 case 2788:
11234 return access_type_t::RW;
11235 case 2816:
11236 return access_type_t::RW;
11237 case 2820:
11238 return access_type_t::RW;
11239 case 2824:
11240 return access_type_t::RW;
11241 case 2828:
11242 return access_type_t::RW;
11243 case 2832:
11244 return access_type_t::RW;
11245 case 2836:
11246 return access_type_t::RW;
11247 case 2840:
11248 return access_type_t::RW;
11249 case 2844:
11250 return access_type_t::RW;
11251 case 2848:
11252 return access_type_t::RW;
11253 case 2852:
11254 return access_type_t::RW;
11255 case 2856:
11256 return access_type_t::RW;
11257 case 2860:
11258 return access_type_t::RW;
11259 case 2864:
11260 return access_type_t::RW;
11261 case 2868:
11262 return access_type_t::RW;
11263 case 2880:
11264 return access_type_t::RW;
11265 case 2884:
11266 return access_type_t::RW;
11267 case 2888:
11268 return access_type_t::RW;
11269 case 2892:
11270 return access_type_t::RW;
11271 case 2896:
11272 return access_type_t::RW;
11273 case 2900:
11274 return access_type_t::RW;
11275 case 2904:
11276 return access_type_t::RW;
11277 case 384:
11278 return access_type_t::RW;
11279 case 388:
11280 return access_type_t::RW;
11281 case 392:
11282 return access_type_t::RW;
11283 case 396:
11284 return access_type_t::RW;
11285 case 400:
11286 return access_type_t::RW;
11287 case 404:
11288 return access_type_t::RW;
11289 case 408:
11290 return access_type_t::RW;
11291 case 416:
11292 return access_type_t::RW;
11293 case 420:
11294 return access_type_t::RW;
11295 case 424:
11296 return access_type_t::RW;
11297 case 428:
11298 return access_type_t::RW;
11299 case 768:
11300 return access_type_t::RW;
11301 case 772:
11302 return access_type_t::RW;
11303 case 776:
11304 return access_type_t::RW;
11305 case 780:
11306 return access_type_t::RW;
11307 case 896:
11308 return access_type_t::RW;
11309 case 900:
11310 return access_type_t::RW;
11311 case 904:
11312 return access_type_t::RW;
11313 case 908:
11314 return access_type_t::RW;
11315 case 1024:
11316 return access_type_t::RW;
11317 case 1028:
11318 return access_type_t::RW;
11319 case 1032:
11320 return access_type_t::RW;
11321 case 1036:
11322 return access_type_t::RW;
11323 case 1040:
11324 return access_type_t::RW;
11325 case 1044:
11326 return access_type_t::RW;
11327 case 1048:
11328 return access_type_t::RW;
11329 case 1052:
11330 return access_type_t::RW;
11331 case 1056:
11332 return access_type_t::RW;
11333 case 1060:
11334 return access_type_t::RW;
11335 case 1064:
11336 return access_type_t::RW;
11337 case 1068:
11338 return access_type_t::RW;
11339 case 1072:
11340 return access_type_t::RW;
11341 case 1076:
11342 return access_type_t::RW;
11343 case 1080:
11344 return access_type_t::RW;
11345 case 1084:
11346 return access_type_t::RW;
11347 case 1088:
11348 return access_type_t::RW;
11349 case 1092:
11350 return access_type_t::RW;
11351 case 1096:
11352 return access_type_t::RW;
11353 case 1100:
11354 return access_type_t::RW;
11355 case 1104:
11356 return access_type_t::RW;
11357 case 1108:
11358 return access_type_t::RW;
11359 case 1112:
11360 return access_type_t::RW;
11361 case 1116:
11362 return access_type_t::RW;
11363 case 1120:
11364 return access_type_t::RW;
11365 case 1124:
11366 return access_type_t::RW;
11367 case 1128:
11368 return access_type_t::RW;
11369 case 1132:
11370 return access_type_t::RW;
11371 case 1136:
11372 return access_type_t::RW;
11373 case 1140:
11374 return access_type_t::RW;
11375 case 1144:
11376 return access_type_t::RW;
11377 case 1148:
11378 return access_type_t::RW;
11379 case 1152:
11380 return access_type_t::RW;
11381 case 1156:
11382 return access_type_t::RW;
11383 case 1160:
11384 return access_type_t::RW;
11385 case 1164:
11386 return access_type_t::RW;
11387 case 1168:
11388 return access_type_t::RW;
11389 case 1172:
11390 return access_type_t::RW;
11391 case 1176:
11392 return access_type_t::RW;
11393 case 1180:
11394 return access_type_t::RW;
11395 case 1184:
11396 return access_type_t::RW;
11397 case 1188:
11398 return access_type_t::RW;
11399 case 1192:
11400 return access_type_t::RW;
11401 case 1196:
11402 return access_type_t::RW;
11403 case 1200:
11404 return access_type_t::RW;
11405 case 1204:
11406 return access_type_t::RW;
11407 case 1208:
11408 return access_type_t::RW;
11409 case 1212:
11410 return access_type_t::RW;
11411 case 1216:
11412 return access_type_t::RW;
11413 case 1220:
11414 return access_type_t::RW;
11415 case 1224:
11416 return access_type_t::RW;
11417 case 1228:
11418 return access_type_t::RW;
11419 case 1232:
11420 return access_type_t::RW;
11421 case 1236:
11422 return access_type_t::RW;
11423 case 1240:
11424 return access_type_t::RW;
11425 case 1244:
11426 return access_type_t::RW;
11427 case 1248:
11428 return access_type_t::RW;
11429 case 1252:
11430 return access_type_t::RW;
11431 case 1256:
11432 return access_type_t::RW;
11433 case 1260:
11434 return access_type_t::RW;
11435 case 1264:
11436 return access_type_t::RW;
11437 case 1268:
11438 return access_type_t::RW;
11439 case 1272:
11440 return access_type_t::RW;
11441 case 1276:
11442 return access_type_t::RW;
11443 case 1280:
11444 return access_type_t::RW;
11445 case 1284:
11446 return access_type_t::RW;
11447 case 1288:
11448 return access_type_t::RW;
11449 case 1292:
11450 return access_type_t::RW;
11451 case 1296:
11452 return access_type_t::RW;
11453 case 1300:
11454 return access_type_t::RW;
11455 case 1304:
11456 return access_type_t::RW;
11457 case 1308:
11458 return access_type_t::RW;
11459 case 1312:
11460 return access_type_t::RW;
11461 case 1316:
11462 return access_type_t::RW;
11463 case 1320:
11464 return access_type_t::RW;
11465 case 1324:
11466 return access_type_t::RW;
11467 case 1328:
11468 return access_type_t::RW;
11469 case 1332:
11470 return access_type_t::RW;
11471 case 1336:
11472 return access_type_t::RW;
11473 case 1340:
11474 return access_type_t::RW;
11475 case 1344:
11476 return access_type_t::RW;
11477 case 1348:
11478 return access_type_t::RW;
11479 case 1352:
11480 return access_type_t::RW;
11481 case 1356:
11482 return access_type_t::RW;
11483 case 1360:
11484 return access_type_t::RW;
11485 case 1364:
11486 return access_type_t::RW;
11487 case 1368:
11488 return access_type_t::RW;
11489 case 1372:
11490 return access_type_t::RW;
11491 case 1376:
11492 return access_type_t::RW;
11493 case 1380:
11494 return access_type_t::RW;
11495 case 1384:
11496 return access_type_t::RW;
11497 case 1388:
11498 return access_type_t::RW;
11499 case 1392:
11500 return access_type_t::RW;
11501 case 1396:
11502 return access_type_t::RW;
11503 case 1400:
11504 return access_type_t::RW;
11505 case 1404:
11506 return access_type_t::RW;
11507 case 1408:
11508 return access_type_t::RW;
11509 case 1412:
11510 return access_type_t::RW;
11511 case 1416:
11512 return access_type_t::RW;
11513 case 1420:
11514 return access_type_t::RW;
11515 case 1424:
11516 return access_type_t::RW;
11517 case 1428:
11518 return access_type_t::RW;
11519 case 1432:
11520 return access_type_t::RW;
11521 case 1436:
11522 return access_type_t::RW;
11523 case 1440:
11524 return access_type_t::RW;
11525 case 1444:
11526 return access_type_t::RW;
11527 case 1448:
11528 return access_type_t::RW;
11529 case 1452:
11530 return access_type_t::RW;
11531 case 1456:
11532 return access_type_t::RW;
11533 case 1460:
11534 return access_type_t::RW;
11535 case 1464:
11536 return access_type_t::RW;
11537 case 1468:
11538 return access_type_t::RW;
11539 case 1472:
11540 return access_type_t::RW;
11541 case 1476:
11542 return access_type_t::RW;
11543 case 1480:
11544 return access_type_t::RW;
11545 case 1484:
11546 return access_type_t::RW;
11547 case 1488:
11548 return access_type_t::RW;
11549 case 1492:
11550 return access_type_t::RW;
11551 case 1496:
11552 return access_type_t::RW;
11553 case 1500:
11554 return access_type_t::RW;
11555 case 1504:
11556 return access_type_t::RW;
11557 case 1508:
11558 return access_type_t::RW;
11559 case 1512:
11560 return access_type_t::RW;
11561 case 1516:
11562 return access_type_t::RW;
11563 case 1520:
11564 return access_type_t::RW;
11565 case 1524:
11566 return access_type_t::RW;
11567 case 1528:
11568 return access_type_t::RW;
11569 case 1532:
11570 return access_type_t::RW;
11571 case 1536:
11572 return access_type_t::RW;
11573 case 1540:
11574 return access_type_t::RW;
11575 case 1544:
11576 return access_type_t::RW;
11577 case 1548:
11578 return access_type_t::RW;
11579 case 1552:
11580 return access_type_t::RW;
11581 case 1556:
11582 return access_type_t::RW;
11583 case 1560:
11584 return access_type_t::RW;
11585 case 1564:
11586 return access_type_t::RW;
11587 case 1568:
11588 return access_type_t::RW;
11589 case 1572:
11590 return access_type_t::RW;
11591 case 1576:
11592 return access_type_t::RW;
11593 case 1580:
11594 return access_type_t::RW;
11595 case 1584:
11596 return access_type_t::RW;
11597 case 1588:
11598 return access_type_t::RW;
11599 case 1592:
11600 return access_type_t::RW;
11601 case 1596:
11602 return access_type_t::RW;
11603 case 1600:
11604 return access_type_t::RW;
11605 case 1604:
11606 return access_type_t::RW;
11607 case 1608:
11608 return access_type_t::RW;
11609 case 1612:
11610 return access_type_t::RW;
11611 case 1616:
11612 return access_type_t::RW;
11613 case 1620:
11614 return access_type_t::RW;
11615 case 1624:
11616 return access_type_t::RW;
11617 case 1628:
11618 return access_type_t::RW;
11619 case 1632:
11620 return access_type_t::RW;
11621 case 1636:
11622 return access_type_t::RW;
11623 case 1640:
11624 return access_type_t::RW;
11625 case 1644:
11626 return access_type_t::RW;
11627 case 1648:
11628 return access_type_t::RW;
11629 case 1652:
11630 return access_type_t::RW;
11631 case 1656:
11632 return access_type_t::RW;
11633 case 1660:
11634 return access_type_t::RW;
11635 case 1664:
11636 return access_type_t::RW;
11637 case 1668:
11638 return access_type_t::RW;
11639 case 1672:
11640 return access_type_t::RW;
11641 case 1676:
11642 return access_type_t::RW;
11643 case 1680:
11644 return access_type_t::RW;
11645 case 1684:
11646 return access_type_t::RW;
11647 case 1688:
11648 return access_type_t::RW;
11649 case 1692:
11650 return access_type_t::RW;
11651 case 1696:
11652 return access_type_t::RW;
11653 case 1700:
11654 return access_type_t::RW;
11655 case 1704:
11656 return access_type_t::RW;
11657 case 1708:
11658 return access_type_t::RW;
11659 case 1712:
11660 return access_type_t::RW;
11661 case 1716:
11662 return access_type_t::RW;
11663 case 1720:
11664 return access_type_t::RW;
11665 case 1724:
11666 return access_type_t::RW;
11667 case 1728:
11668 return access_type_t::RW;
11669 case 1732:
11670 return access_type_t::RW;
11671 case 1736:
11672 return access_type_t::RW;
11673 case 1740:
11674 return access_type_t::RW;
11675 case 1744:
11676 return access_type_t::RW;
11677 case 1748:
11678 return access_type_t::RW;
11679 case 1752:
11680 return access_type_t::RW;
11681 case 1756:
11682 return access_type_t::RW;
11683 case 1760:
11684 return access_type_t::RW;
11685 case 1764:
11686 return access_type_t::RW;
11687 case 1768:
11688 return access_type_t::RW;
11689 case 1772:
11690 return access_type_t::RW;
11691 case 1776:
11692 return access_type_t::RW;
11693 case 1780:
11694 return access_type_t::RW;
11695 case 1784:
11696 return access_type_t::RW;
11697 case 1788:
11698 return access_type_t::RW;
11699 case 1792:
11700 return access_type_t::RW;
11701 case 1796:
11702 return access_type_t::RW;
11703 case 1800:
11704 return access_type_t::RW;
11705 case 1804:
11706 return access_type_t::RW;
11707 case 1808:
11708 return access_type_t::RW;
11709 case 1812:
11710 return access_type_t::RW;
11711 case 1816:
11712 return access_type_t::RW;
11713 case 1820:
11714 return access_type_t::RW;
11715 case 1824:
11716 return access_type_t::RW;
11717 case 1828:
11718 return access_type_t::RW;
11719 case 1832:
11720 return access_type_t::RW;
11721 case 1836:
11722 return access_type_t::RW;
11723 case 1840:
11724 return access_type_t::RW;
11725 case 1844:
11726 return access_type_t::RW;
11727 case 1848:
11728 return access_type_t::RW;
11729 case 1852:
11730 return access_type_t::RW;
11731 case 1856:
11732 return access_type_t::RW;
11733 case 1860:
11734 return access_type_t::RW;
11735 case 1864:
11736 return access_type_t::RW;
11737 case 1868:
11738 return access_type_t::RW;
11739 case 1872:
11740 return access_type_t::RW;
11741 case 1876:
11742 return access_type_t::RW;
11743 case 1880:
11744 return access_type_t::RW;
11745 case 1884:
11746 return access_type_t::RW;
11747 case 1888:
11748 return access_type_t::RW;
11749 case 1892:
11750 return access_type_t::RW;
11751 case 1896:
11752 return access_type_t::RW;
11753 case 1900:
11754 return access_type_t::RW;
11755 case 1904:
11756 return access_type_t::RW;
11757 case 1908:
11758 return access_type_t::RW;
11759 case 1912:
11760 return access_type_t::RW;
11761 case 1916:
11762 return access_type_t::RW;
11763 case 1920:
11764 return access_type_t::RW;
11765 case 1924:
11766 return access_type_t::RW;
11767 case 1928:
11768 return access_type_t::RW;
11769 case 1932:
11770 return access_type_t::RW;
11771 case 1936:
11772 return access_type_t::RW;
11773 case 1940:
11774 return access_type_t::RW;
11775 case 1944:
11776 return access_type_t::RW;
11777 case 1948:
11778 return access_type_t::RW;
11779 case 1952:
11780 return access_type_t::RW;
11781 case 1956:
11782 return access_type_t::RW;
11783 case 1960:
11784 return access_type_t::RW;
11785 case 1964:
11786 return access_type_t::RW;
11787 case 1968:
11788 return access_type_t::RW;
11789 case 1972:
11790 return access_type_t::RW;
11791 case 1976:
11792 return access_type_t::RW;
11793 case 1980:
11794 return access_type_t::RW;
11795 case 1984:
11796 return access_type_t::RW;
11797 case 1988:
11798 return access_type_t::RW;
11799 case 1992:
11800 return access_type_t::RW;
11801 case 1996:
11802 return access_type_t::RW;
11803 case 2000:
11804 return access_type_t::RW;
11805 case 2004:
11806 return access_type_t::RW;
11807 case 2008:
11808 return access_type_t::RW;
11809 case 2012:
11810 return access_type_t::RW;
11811 case 2016:
11812 return access_type_t::RW;
11813 case 2020:
11814 return access_type_t::RW;
11815 case 2024:
11816 return access_type_t::RW;
11817 case 2028:
11818 return access_type_t::RW;
11819 case 2032:
11820 return access_type_t::RW;
11821 case 2036:
11822 return access_type_t::RW;
11823 case 2040:
11824 return access_type_t::RW;
11825 case 2044:
11826 return access_type_t::RW;
11827 default:
11828 throw std::runtime_error("invalid register address");
11829 }
11830 }
11831#endif //__cplusplus
11832};
11833
11834// Data structure for commands without payload
11835struct command_no_payload_t
11836{
11837 uint32_t cmd_code : 10;
11838 uint32_t must_be_zero0 : 6; // 0
11839 uint32_t param : 16;
11840#ifdef __cplusplus
11841 CONSTEXPR bool valid() const
11842 {
11843 return must_be_zero0 == 0;
11844 }
11845 CONSTEXPR void init()
11846 {
11847 must_be_zero0 = 0;
11848 }
11849 CONSTEXPR ::cmd0 get_cmd_code() const
11850 {
11851 return static_cast<::cmd0>(cmd_code);
11852 }
11853 CONSTEXPR command_no_payload_t &set_cmd_code(::cmd0 value)
11854 {
11855 cmd_code = static_cast<uint32_t>(value);
11856 return *this;
11857 }
11858 CONSTEXPR uint32_t get_param() const
11859 {
11860 return static_cast<uint32_t>(param);
11861 }
11862 CONSTEXPR command_no_payload_t &set_param(uint32_t value)
11863 {
11864 param = static_cast<uint32_t>(value);
11865 return *this;
11866 }
11867#endif //__cplusplus
11868};
11869
11870// Data structure for commands with payload
11871struct command_with_payload_t
11872{
11873 uint32_t cmd_code : 10;
11874 uint32_t must_be_zero : 4; // 0
11875 uint32_t payload_size : 2; // Min:1 Max:2
11876 uint32_t param : 16;
11877 uint32_t data : 32;
11878#ifdef __cplusplus
11879 CONSTEXPR bool valid() const
11880 {
11881 return must_be_zero == 0 && payload_size >= 1 && payload_size <= 2;
11882 }
11883 CONSTEXPR void init()
11884 {
11885 must_be_zero = 0;
11886 payload_size = 1;
11887 }
11888 CONSTEXPR ::cmd1 get_cmd_code() const
11889 {
11890 return static_cast<::cmd1>(cmd_code);
11891 }
11892 CONSTEXPR command_with_payload_t &set_cmd_code(::cmd1 value)
11893 {
11894 cmd_code = static_cast<uint32_t>(value);
11895 return *this;
11896 }
11897 CONSTEXPR uint32_t get_data() const
11898 {
11899 return static_cast<uint32_t>(data);
11900 }
11901 CONSTEXPR command_with_payload_t &set_data(uint32_t value)
11902 {
11903 data = static_cast<uint32_t>(value);
11904 return *this;
11905 }
11906 CONSTEXPR uint32_t get_param() const
11907 {
11908 return static_cast<uint32_t>(param);
11909 }
11910 CONSTEXPR command_with_payload_t &set_param(uint32_t value)
11911 {
11912 param = static_cast<uint32_t>(value);
11913 return *this;
11914 }
11915 CONSTEXPR uint32_t get_payload_size() const
11916 {
11917 return static_cast<uint32_t>(payload_size);
11918 }
11919 CONSTEXPR command_with_payload_t &set_payload_size(uint32_t value)
11920 {
11921 payload_size = static_cast<uint32_t>(value);
11922 return *this;
11923 }
11924#endif //__cplusplus
11925};
11926
11927// Move to stopped state once all commands to this point are done. Raise IRQ to the host and logically OR the mask into
11928// the status register upper 16 bits (see the status register)
11929struct npu_op_stop_t
11930{
11931 uint32_t cmd_code : 10; // NPU_OP_STOP
11932 uint32_t must_be_zero0 : 6; // 0
11933 uint32_t mask : 16;
11934#ifdef __cplusplus
11935 CONSTEXPR bool valid() const
11936 {
11937 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_STOP) && must_be_zero0 == 0;
11938 }
11939 CONSTEXPR void init()
11940 {
11941 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_STOP);
11942 must_be_zero0 = 0;
11943 }
11944 CONSTEXPR ::cmd0 get_cmd_code() const
11945 {
11946 return static_cast<::cmd0>(cmd_code);
11947 }
11948 CONSTEXPR npu_op_stop_t &set_cmd_code(::cmd0 value)
11949 {
11950 cmd_code = static_cast<uint32_t>(value);
11951 return *this;
11952 }
11953 CONSTEXPR uint32_t get_mask() const
11954 {
11955 return static_cast<uint32_t>(mask);
11956 }
11957 CONSTEXPR npu_op_stop_t &set_mask(uint32_t value)
11958 {
11959 mask = static_cast<uint32_t>(value);
11960 return *this;
11961 }
11962#endif //__cplusplus
11963};
11964
11965// Raise IRQ to the host and logically OR the mask into the status register upper 16 bits (see the status register)
11966struct npu_op_irq_t
11967{
11968 uint32_t cmd_code : 10; // NPU_OP_IRQ
11969 uint32_t must_be_zero0 : 6; // 0
11970 uint32_t mask : 16;
11971#ifdef __cplusplus
11972 CONSTEXPR bool valid() const
11973 {
11974 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_IRQ) && must_be_zero0 == 0;
11975 }
11976 CONSTEXPR void init()
11977 {
11978 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_IRQ);
11979 must_be_zero0 = 0;
11980 }
11981 CONSTEXPR ::cmd0 get_cmd_code() const
11982 {
11983 return static_cast<::cmd0>(cmd_code);
11984 }
11985 CONSTEXPR npu_op_irq_t &set_cmd_code(::cmd0 value)
11986 {
11987 cmd_code = static_cast<uint32_t>(value);
11988 return *this;
11989 }
11990 CONSTEXPR uint32_t get_mask() const
11991 {
11992 return static_cast<uint32_t>(mask);
11993 }
11994 CONSTEXPR npu_op_irq_t &set_mask(uint32_t value)
11995 {
11996 mask = static_cast<uint32_t>(value);
11997 return *this;
11998 }
11999#endif //__cplusplus
12000};
12001
12002// Start stripe with full convolution or deconvolution
12003struct npu_op_conv_t
12004{
12005 uint32_t cmd_code : 10; // NPU_OP_CONV
12006 uint32_t must_be_zero0 : 6; // 0
12007 uint32_t reserved0 : 16;
12008#ifdef __cplusplus
12009 CONSTEXPR bool valid() const
12010 {
12011 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_CONV) && must_be_zero0 == 0;
12012 }
12013 CONSTEXPR void init()
12014 {
12015 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_CONV);
12016 must_be_zero0 = 0;
12017 }
12018 CONSTEXPR ::cmd0 get_cmd_code() const
12019 {
12020 return static_cast<::cmd0>(cmd_code);
12021 }
12022 CONSTEXPR npu_op_conv_t &set_cmd_code(::cmd0 value)
12023 {
12024 cmd_code = static_cast<uint32_t>(value);
12025 return *this;
12026 }
12027#endif //__cplusplus
12028};
12029
12030// Start stripe width depth-wise convolution or deconvolution operation
12031struct npu_op_depthwise_t
12032{
12033 uint32_t cmd_code : 10; // NPU_OP_DEPTHWISE
12034 uint32_t must_be_zero0 : 6; // 0
12035 uint32_t reserved0 : 16;
12036#ifdef __cplusplus
12037 CONSTEXPR bool valid() const
12038 {
12039 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_DEPTHWISE) && must_be_zero0 == 0;
12040 }
12041 CONSTEXPR void init()
12042 {
12043 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_DEPTHWISE);
12044 must_be_zero0 = 0;
12045 }
12046 CONSTEXPR ::cmd0 get_cmd_code() const
12047 {
12048 return static_cast<::cmd0>(cmd_code);
12049 }
12050 CONSTEXPR npu_op_depthwise_t &set_cmd_code(::cmd0 value)
12051 {
12052 cmd_code = static_cast<uint32_t>(value);
12053 return *this;
12054 }
12055#endif //__cplusplus
12056};
12057
12058// Start stripe with pooling operation
12059struct npu_op_pool_t
12060{
12061 uint32_t cmd_code : 10; // NPU_OP_POOL
12062 uint32_t must_be_zero0 : 6; // 0
12063 uint32_t mode : 16;
12064#ifdef __cplusplus
12065 CONSTEXPR bool valid() const
12066 {
12067 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_POOL) && must_be_zero0 == 0;
12068 }
12069 CONSTEXPR void init()
12070 {
12071 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_POOL);
12072 must_be_zero0 = 0;
12073 }
12074 CONSTEXPR ::cmd0 get_cmd_code() const
12075 {
12076 return static_cast<::cmd0>(cmd_code);
12077 }
12078 CONSTEXPR npu_op_pool_t &set_cmd_code(::cmd0 value)
12079 {
12080 cmd_code = static_cast<uint32_t>(value);
12081 return *this;
12082 }
12083 CONSTEXPR ::pooling_mode get_mode() const
12084 {
12085 return static_cast<::pooling_mode>(mode);
12086 }
12087 CONSTEXPR npu_op_pool_t &set_mode(::pooling_mode value)
12088 {
12089 mode = static_cast<uint32_t>(value);
12090 return *this;
12091 }
12092#endif //__cplusplus
12093};
12094
12095// Start stripe with pointwise operation
12096struct npu_op_elementwise_t
12097{
12098 uint32_t cmd_code : 10; // NPU_OP_ELEMENTWISE
12099 uint32_t must_be_zero0 : 6; // 0
12100 uint32_t mode : 16;
12101#ifdef __cplusplus
12102 CONSTEXPR bool valid() const
12103 {
12104 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_ELEMENTWISE) && must_be_zero0 == 0;
12105 }
12106 CONSTEXPR void init()
12107 {
12108 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_ELEMENTWISE);
12109 must_be_zero0 = 0;
12110 }
12111 CONSTEXPR ::cmd0 get_cmd_code() const
12112 {
12113 return static_cast<::cmd0>(cmd_code);
12114 }
12115 CONSTEXPR npu_op_elementwise_t &set_cmd_code(::cmd0 value)
12116 {
12117 cmd_code = static_cast<uint32_t>(value);
12118 return *this;
12119 }
12120 CONSTEXPR ::elementwise_mode get_mode() const
12121 {
12122 return static_cast<::elementwise_mode>(mode);
12123 }
12124 CONSTEXPR npu_op_elementwise_t &set_mode(::elementwise_mode value)
12125 {
12126 mode = static_cast<uint32_t>(value);
12127 return *this;
12128 }
12129#endif //__cplusplus
12130};
12131
12132// Queue new DMA for the given channel with the given mode. Mode bit 0 specifies the source address type 0=external,
12133// 1=internal Mode bit 1 specifies the destination address type 0=external, 1=internal In Ethos-U55 there is only one
12134// user channel so channel=0. If the channel is fully in use then the command blocks until a new DMA can start
12135struct npu_op_dma_start_t
12136{
12137 uint32_t cmd_code : 10; // NPU_OP_DMA_START
12138 uint32_t must_be_zero0 : 6; // 0
12139 uint32_t channel_mode : 16;
12140#ifdef __cplusplus
12141 CONSTEXPR bool valid() const
12142 {
12143 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_DMA_START) && must_be_zero0 == 0;
12144 }
12145 CONSTEXPR void init()
12146 {
12147 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_DMA_START);
12148 must_be_zero0 = 0;
12149 }
12150 CONSTEXPR uint32_t get_channel_mode() const
12151 {
12152 return static_cast<uint32_t>(channel_mode);
12153 }
12154 CONSTEXPR npu_op_dma_start_t &set_channel_mode(uint32_t value)
12155 {
12156 channel_mode = static_cast<uint32_t>(value);
12157 return *this;
12158 }
12159 CONSTEXPR ::cmd0 get_cmd_code() const
12160 {
12161 return static_cast<::cmd0>(cmd_code);
12162 }
12163 CONSTEXPR npu_op_dma_start_t &set_cmd_code(::cmd0 value)
12164 {
12165 cmd_code = static_cast<uint32_t>(value);
12166 return *this;
12167 }
12168#endif //__cplusplus
12169};
12170
12171// Wait for the DMA channel to have k or fewer active descriptors outstanding. In Ethos-U55 there is only one user
12172// channel so channel=0. In Ethos-U55 there is only one descriptor per channel so k=0 and the command waits for the
12173// single DMA to be complete.
12174struct npu_op_dma_wait_t
12175{
12176 uint32_t cmd_code : 10; // NPU_OP_DMA_WAIT
12177 uint32_t must_be_zero0 : 6; // 0
12178 uint32_t reserved0 : 16;
12179#ifdef __cplusplus
12180 CONSTEXPR bool valid() const
12181 {
12182 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_DMA_WAIT) && must_be_zero0 == 0;
12183 }
12184 CONSTEXPR void init()
12185 {
12186 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_DMA_WAIT);
12187 must_be_zero0 = 0;
12188 }
12189 CONSTEXPR ::cmd0 get_cmd_code() const
12190 {
12191 return static_cast<::cmd0>(cmd_code);
12192 }
12193 CONSTEXPR npu_op_dma_wait_t &set_cmd_code(::cmd0 value)
12194 {
12195 cmd_code = static_cast<uint32_t>(value);
12196 return *this;
12197 }
12198#endif //__cplusplus
12199};
12200
12201// Wait for n or fewer kernel operations to be remaining (not complete) before starting the next command. A kernel
12202// operation is Conv, Depthwise, Pool, VectorProd Elementwise. This command is typically placed before an
12203// NPU_OP_DMA_START command to prevent the DMA from starting until a previous kernel operation reading the memory has
12204// completed.
12205struct npu_op_kernel_wait_t
12206{
12207 uint32_t cmd_code : 10; // NPU_OP_KERNEL_WAIT
12208 uint32_t must_be_zero0 : 6; // 0
12209 uint32_t param : 16;
12210#ifdef __cplusplus
12211 CONSTEXPR bool valid() const
12212 {
12213 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_KERNEL_WAIT) && must_be_zero0 == 0;
12214 }
12215 CONSTEXPR void init()
12216 {
12217 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_KERNEL_WAIT);
12218 must_be_zero0 = 0;
12219 }
12220 CONSTEXPR ::cmd0 get_cmd_code() const
12221 {
12222 return static_cast<::cmd0>(cmd_code);
12223 }
12224 CONSTEXPR npu_op_kernel_wait_t &set_cmd_code(::cmd0 value)
12225 {
12226 cmd_code = static_cast<uint32_t>(value);
12227 return *this;
12228 }
12229 CONSTEXPR uint32_t get_param() const
12230 {
12231 return static_cast<uint32_t>(param);
12232 }
12233 CONSTEXPR npu_op_kernel_wait_t &set_param(uint32_t value)
12234 {
12235 param = static_cast<uint32_t>(value);
12236 return *this;
12237 }
12238#endif //__cplusplus
12239};
12240
12241// Enable or disable PMU counting (debug feature only).
12242struct npu_op_pmu_mask_t
12243{
12244 uint32_t cmd_code : 10; // NPU_OP_PMU_MASK
12245 uint32_t must_be_zero0 : 6; // 0
12246 uint32_t param : 16;
12247#ifdef __cplusplus
12248 CONSTEXPR bool valid() const
12249 {
12250 return cmd_code == static_cast<uint32_t>(cmd0::NPU_OP_PMU_MASK) && must_be_zero0 == 0;
12251 }
12252 CONSTEXPR void init()
12253 {
12254 cmd_code = static_cast<uint32_t>(cmd0::NPU_OP_PMU_MASK);
12255 must_be_zero0 = 0;
12256 }
12257 CONSTEXPR ::cmd0 get_cmd_code() const
12258 {
12259 return static_cast<::cmd0>(cmd_code);
12260 }
12261 CONSTEXPR npu_op_pmu_mask_t &set_cmd_code(::cmd0 value)
12262 {
12263 cmd_code = static_cast<uint32_t>(value);
12264 return *this;
12265 }
12266 CONSTEXPR uint32_t get_param() const
12267 {
12268 return static_cast<uint32_t>(param);
12269 }
12270 CONSTEXPR npu_op_pmu_mask_t &set_param(uint32_t value)
12271 {
12272 param = static_cast<uint32_t>(value);
12273 return *this;
12274 }
12275#endif //__cplusplus
12276};
12277
12278// IFM top pad
12279struct npu_set_ifm_pad_top_t
12280{
12281 uint32_t cmd_code : 10; // NPU_SET_IFM_PAD_TOP
12282 uint32_t must_be_zero0 : 6; // 0
12283 uint32_t param : 16;
12284#ifdef __cplusplus
12285 CONSTEXPR bool valid() const
12286 {
12287 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_TOP) && must_be_zero0 == 0;
12288 }
12289 CONSTEXPR void init()
12290 {
12291 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_TOP);
12292 must_be_zero0 = 0;
12293 }
12294 CONSTEXPR ::cmd0 get_cmd_code() const
12295 {
12296 return static_cast<::cmd0>(cmd_code);
12297 }
12298 CONSTEXPR npu_set_ifm_pad_top_t &set_cmd_code(::cmd0 value)
12299 {
12300 cmd_code = static_cast<uint32_t>(value);
12301 return *this;
12302 }
12303 CONSTEXPR uint32_t get_param() const
12304 {
12305 return static_cast<uint32_t>(param);
12306 }
12307 CONSTEXPR npu_set_ifm_pad_top_t &set_param(uint32_t value)
12308 {
12309 param = static_cast<uint32_t>(value);
12310 return *this;
12311 }
12312#endif //__cplusplus
12313};
12314
12315// IFM left pad
12316struct npu_set_ifm_pad_left_t
12317{
12318 uint32_t cmd_code : 10; // NPU_SET_IFM_PAD_LEFT
12319 uint32_t must_be_zero0 : 6; // 0
12320 uint32_t param : 16;
12321#ifdef __cplusplus
12322 CONSTEXPR bool valid() const
12323 {
12324 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_LEFT) && must_be_zero0 == 0;
12325 }
12326 CONSTEXPR void init()
12327 {
12328 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_LEFT);
12329 must_be_zero0 = 0;
12330 }
12331 CONSTEXPR ::cmd0 get_cmd_code() const
12332 {
12333 return static_cast<::cmd0>(cmd_code);
12334 }
12335 CONSTEXPR npu_set_ifm_pad_left_t &set_cmd_code(::cmd0 value)
12336 {
12337 cmd_code = static_cast<uint32_t>(value);
12338 return *this;
12339 }
12340 CONSTEXPR uint32_t get_param() const
12341 {
12342 return static_cast<uint32_t>(param);
12343 }
12344 CONSTEXPR npu_set_ifm_pad_left_t &set_param(uint32_t value)
12345 {
12346 param = static_cast<uint32_t>(value);
12347 return *this;
12348 }
12349#endif //__cplusplus
12350};
12351
12352// IFM right pad
12353struct npu_set_ifm_pad_right_t
12354{
12355 uint32_t cmd_code : 10; // NPU_SET_IFM_PAD_RIGHT
12356 uint32_t must_be_zero0 : 6; // 0
12357 uint32_t param : 16;
12358#ifdef __cplusplus
12359 CONSTEXPR bool valid() const
12360 {
12361 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_RIGHT) && must_be_zero0 == 0;
12362 }
12363 CONSTEXPR void init()
12364 {
12365 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_RIGHT);
12366 must_be_zero0 = 0;
12367 }
12368 CONSTEXPR ::cmd0 get_cmd_code() const
12369 {
12370 return static_cast<::cmd0>(cmd_code);
12371 }
12372 CONSTEXPR npu_set_ifm_pad_right_t &set_cmd_code(::cmd0 value)
12373 {
12374 cmd_code = static_cast<uint32_t>(value);
12375 return *this;
12376 }
12377 CONSTEXPR uint32_t get_param() const
12378 {
12379 return static_cast<uint32_t>(param);
12380 }
12381 CONSTEXPR npu_set_ifm_pad_right_t &set_param(uint32_t value)
12382 {
12383 param = static_cast<uint32_t>(value);
12384 return *this;
12385 }
12386#endif //__cplusplus
12387};
12388
12389// IFM bottom pad
12390struct npu_set_ifm_pad_bottom_t
12391{
12392 uint32_t cmd_code : 10; // NPU_SET_IFM_PAD_BOTTOM
12393 uint32_t must_be_zero0 : 6; // 0
12394 uint32_t param : 16;
12395#ifdef __cplusplus
12396 CONSTEXPR bool valid() const
12397 {
12398 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_BOTTOM) && must_be_zero0 == 0;
12399 }
12400 CONSTEXPR void init()
12401 {
12402 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_PAD_BOTTOM);
12403 must_be_zero0 = 0;
12404 }
12405 CONSTEXPR ::cmd0 get_cmd_code() const
12406 {
12407 return static_cast<::cmd0>(cmd_code);
12408 }
12409 CONSTEXPR npu_set_ifm_pad_bottom_t &set_cmd_code(::cmd0 value)
12410 {
12411 cmd_code = static_cast<uint32_t>(value);
12412 return *this;
12413 }
12414 CONSTEXPR uint32_t get_param() const
12415 {
12416 return static_cast<uint32_t>(param);
12417 }
12418 CONSTEXPR npu_set_ifm_pad_bottom_t &set_param(uint32_t value)
12419 {
12420 param = static_cast<uint32_t>(value);
12421 return *this;
12422 }
12423#endif //__cplusplus
12424};
12425
12426// Number of input channels - 1
12427struct npu_set_ifm_depth_m1_t
12428{
12429 uint32_t cmd_code : 10; // NPU_SET_IFM_DEPTH_M1
12430 uint32_t must_be_zero0 : 6; // 0
12431 uint32_t param : 16;
12432#ifdef __cplusplus
12433 CONSTEXPR bool valid() const
12434 {
12435 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_DEPTH_M1) && must_be_zero0 == 0;
12436 }
12437 CONSTEXPR void init()
12438 {
12439 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_DEPTH_M1);
12440 must_be_zero0 = 0;
12441 }
12442 CONSTEXPR ::cmd0 get_cmd_code() const
12443 {
12444 return static_cast<::cmd0>(cmd_code);
12445 }
12446 CONSTEXPR npu_set_ifm_depth_m1_t &set_cmd_code(::cmd0 value)
12447 {
12448 cmd_code = static_cast<uint32_t>(value);
12449 return *this;
12450 }
12451 CONSTEXPR uint32_t get_param() const
12452 {
12453 return static_cast<uint32_t>(param);
12454 }
12455 CONSTEXPR npu_set_ifm_depth_m1_t &set_param(uint32_t value)
12456 {
12457 param = static_cast<uint32_t>(value);
12458 return *this;
12459 }
12460#endif //__cplusplus
12461};
12462
12463// Set IFM precision
12464struct npu_set_ifm_precision_t
12465{
12466 uint32_t cmd_code : 10; // NPU_SET_IFM_PRECISION
12467 uint32_t must_be_zero0 : 6; // 0
12468 uint32_t param : 4;
12469 uint32_t reserved0 : 2;
12470 uint32_t format : 2;
12471 uint32_t scale_mode : 2;
12472 uint32_t reserved1 : 4;
12473 uint32_t round_mode : 2;
12474#ifdef __cplusplus
12475 CONSTEXPR bool valid() const
12476 {
12477 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_PRECISION) && must_be_zero0 == 0;
12478 }
12479 CONSTEXPR void init()
12480 {
12481 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_PRECISION);
12482 must_be_zero0 = 0;
12483 }
12484 CONSTEXPR ::cmd0 get_cmd_code() const
12485 {
12486 return static_cast<::cmd0>(cmd_code);
12487 }
12488 CONSTEXPR npu_set_ifm_precision_t &set_cmd_code(::cmd0 value)
12489 {
12490 cmd_code = static_cast<uint32_t>(value);
12491 return *this;
12492 }
12493 CONSTEXPR ::data_format get_format() const
12494 {
12495 return static_cast<::data_format>(format);
12496 }
12497 CONSTEXPR npu_set_ifm_precision_t &set_format(::data_format value)
12498 {
12499 format = static_cast<uint32_t>(value);
12500 return *this;
12501 }
12502 CONSTEXPR ::ifm_precision get_param() const
12503 {
12504 return static_cast<::ifm_precision>(param);
12505 }
12506 CONSTEXPR npu_set_ifm_precision_t &set_param(::ifm_precision value)
12507 {
12508 param = static_cast<uint32_t>(value);
12509 return *this;
12510 }
12511 CONSTEXPR ::rounding get_round_mode() const
12512 {
12513 return static_cast<::rounding>(round_mode);
12514 }
12515 CONSTEXPR npu_set_ifm_precision_t &set_round_mode(::rounding value)
12516 {
12517 round_mode = static_cast<uint32_t>(value);
12518 return *this;
12519 }
12520 CONSTEXPR ::ifm_scale_mode get_scale_mode() const
12521 {
12522 return static_cast<::ifm_scale_mode>(scale_mode);
12523 }
12524 CONSTEXPR npu_set_ifm_precision_t &set_scale_mode(::ifm_scale_mode value)
12525 {
12526 scale_mode = static_cast<uint32_t>(value);
12527 return *this;
12528 }
12529#endif //__cplusplus
12530};
12531
12532// b[1:0] = upscale mode (0=none, 1=2x2 nearest, 2=2x2 transpose)
12533struct npu_set_ifm_upscale_t
12534{
12535 uint32_t cmd_code : 10; // NPU_SET_IFM_UPSCALE
12536 uint32_t must_be_zero0 : 6; // 0
12537 uint32_t mode : 2;
12538 uint32_t reserved0 : 14;
12539#ifdef __cplusplus
12540 CONSTEXPR bool valid() const
12541 {
12542 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_UPSCALE) && must_be_zero0 == 0;
12543 }
12544 CONSTEXPR void init()
12545 {
12546 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_UPSCALE);
12547 must_be_zero0 = 0;
12548 }
12549 CONSTEXPR ::cmd0 get_cmd_code() const
12550 {
12551 return static_cast<::cmd0>(cmd_code);
12552 }
12553 CONSTEXPR npu_set_ifm_upscale_t &set_cmd_code(::cmd0 value)
12554 {
12555 cmd_code = static_cast<uint32_t>(value);
12556 return *this;
12557 }
12558 CONSTEXPR ::resampling_mode get_mode() const
12559 {
12560 return static_cast<::resampling_mode>(mode);
12561 }
12562 CONSTEXPR npu_set_ifm_upscale_t &set_mode(::resampling_mode value)
12563 {
12564 mode = static_cast<uint32_t>(value);
12565 return *this;
12566 }
12567#endif //__cplusplus
12568};
12569
12570// Zero point offset (so value that 0 is encoded as)
12571struct npu_set_ifm_zero_point_t
12572{
12573 uint32_t cmd_code : 10; // NPU_SET_IFM_ZERO_POINT
12574 uint32_t must_be_zero0 : 6; // 0
12575 uint32_t param : 16;
12576#ifdef __cplusplus
12577 CONSTEXPR bool valid() const
12578 {
12579 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_ZERO_POINT) && must_be_zero0 == 0;
12580 }
12581 CONSTEXPR void init()
12582 {
12583 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_ZERO_POINT);
12584 must_be_zero0 = 0;
12585 }
12586 CONSTEXPR ::cmd0 get_cmd_code() const
12587 {
12588 return static_cast<::cmd0>(cmd_code);
12589 }
12590 CONSTEXPR npu_set_ifm_zero_point_t &set_cmd_code(::cmd0 value)
12591 {
12592 cmd_code = static_cast<uint32_t>(value);
12593 return *this;
12594 }
12595 CONSTEXPR uint32_t get_param() const
12596 {
12597 return static_cast<uint32_t>(param);
12598 }
12599 CONSTEXPR npu_set_ifm_zero_point_t &set_param(uint32_t value)
12600 {
12601 param = static_cast<uint32_t>(value);
12602 return *this;
12603 }
12604#endif //__cplusplus
12605};
12606
12607// IFM Tile 0 and tile 2 (width-1)
12608struct npu_set_ifm_width0_m1_t
12609{
12610 uint32_t cmd_code : 10; // NPU_SET_IFM_WIDTH0_M1
12611 uint32_t must_be_zero0 : 6; // 0
12612 uint32_t param : 16;
12613#ifdef __cplusplus
12614 CONSTEXPR bool valid() const
12615 {
12616 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_WIDTH0_M1) && must_be_zero0 == 0;
12617 }
12618 CONSTEXPR void init()
12619 {
12620 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_WIDTH0_M1);
12621 must_be_zero0 = 0;
12622 }
12623 CONSTEXPR ::cmd0 get_cmd_code() const
12624 {
12625 return static_cast<::cmd0>(cmd_code);
12626 }
12627 CONSTEXPR npu_set_ifm_width0_m1_t &set_cmd_code(::cmd0 value)
12628 {
12629 cmd_code = static_cast<uint32_t>(value);
12630 return *this;
12631 }
12632 CONSTEXPR uint32_t get_param() const
12633 {
12634 return static_cast<uint32_t>(param);
12635 }
12636 CONSTEXPR npu_set_ifm_width0_m1_t &set_param(uint32_t value)
12637 {
12638 param = static_cast<uint32_t>(value);
12639 return *this;
12640 }
12641#endif //__cplusplus
12642};
12643
12644// IFM Tile 0 (height-1)
12645struct npu_set_ifm_height0_m1_t
12646{
12647 uint32_t cmd_code : 10; // NPU_SET_IFM_HEIGHT0_M1
12648 uint32_t must_be_zero0 : 6; // 0
12649 uint32_t param : 16;
12650#ifdef __cplusplus
12651 CONSTEXPR bool valid() const
12652 {
12653 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_HEIGHT0_M1) && must_be_zero0 == 0;
12654 }
12655 CONSTEXPR void init()
12656 {
12657 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_HEIGHT0_M1);
12658 must_be_zero0 = 0;
12659 }
12660 CONSTEXPR ::cmd0 get_cmd_code() const
12661 {
12662 return static_cast<::cmd0>(cmd_code);
12663 }
12664 CONSTEXPR npu_set_ifm_height0_m1_t &set_cmd_code(::cmd0 value)
12665 {
12666 cmd_code = static_cast<uint32_t>(value);
12667 return *this;
12668 }
12669 CONSTEXPR uint32_t get_param() const
12670 {
12671 return static_cast<uint32_t>(param);
12672 }
12673 CONSTEXPR npu_set_ifm_height0_m1_t &set_param(uint32_t value)
12674 {
12675 param = static_cast<uint32_t>(value);
12676 return *this;
12677 }
12678#endif //__cplusplus
12679};
12680
12681// IFM Tile 1 (height-1)
12682struct npu_set_ifm_height1_m1_t
12683{
12684 uint32_t cmd_code : 10; // NPU_SET_IFM_HEIGHT1_M1
12685 uint32_t must_be_zero0 : 6; // 0
12686 uint32_t param : 16;
12687#ifdef __cplusplus
12688 CONSTEXPR bool valid() const
12689 {
12690 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_HEIGHT1_M1) && must_be_zero0 == 0;
12691 }
12692 CONSTEXPR void init()
12693 {
12694 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_HEIGHT1_M1);
12695 must_be_zero0 = 0;
12696 }
12697 CONSTEXPR ::cmd0 get_cmd_code() const
12698 {
12699 return static_cast<::cmd0>(cmd_code);
12700 }
12701 CONSTEXPR npu_set_ifm_height1_m1_t &set_cmd_code(::cmd0 value)
12702 {
12703 cmd_code = static_cast<uint32_t>(value);
12704 return *this;
12705 }
12706 CONSTEXPR uint32_t get_param() const
12707 {
12708 return static_cast<uint32_t>(param);
12709 }
12710 CONSTEXPR npu_set_ifm_height1_m1_t &set_param(uint32_t value)
12711 {
12712 param = static_cast<uint32_t>(value);
12713 return *this;
12714 }
12715#endif //__cplusplus
12716};
12717
12718// End of IB0,IB1 buffers in the SHRAM in KB units. Multiple of 2.
12719struct npu_set_ifm_ib_end_t
12720{
12721 uint32_t cmd_code : 10; // NPU_SET_IFM_IB_END
12722 uint32_t must_be_zero0 : 6; // 0
12723 uint32_t param : 16;
12724#ifdef __cplusplus
12725 CONSTEXPR bool valid() const
12726 {
12727 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_IB_END) && must_be_zero0 == 0;
12728 }
12729 CONSTEXPR void init()
12730 {
12731 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_IB_END);
12732 must_be_zero0 = 0;
12733 }
12734 CONSTEXPR ::cmd0 get_cmd_code() const
12735 {
12736 return static_cast<::cmd0>(cmd_code);
12737 }
12738 CONSTEXPR npu_set_ifm_ib_end_t &set_cmd_code(::cmd0 value)
12739 {
12740 cmd_code = static_cast<uint32_t>(value);
12741 return *this;
12742 }
12743 CONSTEXPR uint32_t get_param() const
12744 {
12745 return static_cast<uint32_t>(param);
12746 }
12747 CONSTEXPR npu_set_ifm_ib_end_t &set_param(uint32_t value)
12748 {
12749 param = static_cast<uint32_t>(value);
12750 return *this;
12751 }
12752#endif //__cplusplus
12753};
12754
12755// Index n for IFM access: BasePointer[n] is added to all IFM offsets
12756struct npu_set_ifm_region_t
12757{
12758 uint32_t cmd_code : 10; // NPU_SET_IFM_REGION
12759 uint32_t must_be_zero0 : 6; // 0
12760 uint32_t param : 16;
12761#ifdef __cplusplus
12762 CONSTEXPR bool valid() const
12763 {
12764 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM_REGION) && must_be_zero0 == 0;
12765 }
12766 CONSTEXPR void init()
12767 {
12768 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM_REGION);
12769 must_be_zero0 = 0;
12770 }
12771 CONSTEXPR ::cmd0 get_cmd_code() const
12772 {
12773 return static_cast<::cmd0>(cmd_code);
12774 }
12775 CONSTEXPR npu_set_ifm_region_t &set_cmd_code(::cmd0 value)
12776 {
12777 cmd_code = static_cast<uint32_t>(value);
12778 return *this;
12779 }
12780 CONSTEXPR uint32_t get_param() const
12781 {
12782 return static_cast<uint32_t>(param);
12783 }
12784 CONSTEXPR npu_set_ifm_region_t &set_param(uint32_t value)
12785 {
12786 param = static_cast<uint32_t>(value);
12787 return *this;
12788 }
12789#endif //__cplusplus
12790};
12791
12792// Output feature map width -1 (for the stripe to process)
12793struct npu_set_ofm_width_m1_t
12794{
12795 uint32_t cmd_code : 10; // NPU_SET_OFM_WIDTH_M1
12796 uint32_t must_be_zero0 : 6; // 0
12797 uint32_t param : 16;
12798#ifdef __cplusplus
12799 CONSTEXPR bool valid() const
12800 {
12801 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_WIDTH_M1) && must_be_zero0 == 0;
12802 }
12803 CONSTEXPR void init()
12804 {
12805 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_WIDTH_M1);
12806 must_be_zero0 = 0;
12807 }
12808 CONSTEXPR ::cmd0 get_cmd_code() const
12809 {
12810 return static_cast<::cmd0>(cmd_code);
12811 }
12812 CONSTEXPR npu_set_ofm_width_m1_t &set_cmd_code(::cmd0 value)
12813 {
12814 cmd_code = static_cast<uint32_t>(value);
12815 return *this;
12816 }
12817 CONSTEXPR uint32_t get_param() const
12818 {
12819 return static_cast<uint32_t>(param);
12820 }
12821 CONSTEXPR npu_set_ofm_width_m1_t &set_param(uint32_t value)
12822 {
12823 param = static_cast<uint32_t>(value);
12824 return *this;
12825 }
12826#endif //__cplusplus
12827};
12828
12829// Output feature map height -1 (for the stripe to process)
12830struct npu_set_ofm_height_m1_t
12831{
12832 uint32_t cmd_code : 10; // NPU_SET_OFM_HEIGHT_M1
12833 uint32_t must_be_zero0 : 6; // 0
12834 uint32_t param : 16;
12835#ifdef __cplusplus
12836 CONSTEXPR bool valid() const
12837 {
12838 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_HEIGHT_M1) && must_be_zero0 == 0;
12839 }
12840 CONSTEXPR void init()
12841 {
12842 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_HEIGHT_M1);
12843 must_be_zero0 = 0;
12844 }
12845 CONSTEXPR ::cmd0 get_cmd_code() const
12846 {
12847 return static_cast<::cmd0>(cmd_code);
12848 }
12849 CONSTEXPR npu_set_ofm_height_m1_t &set_cmd_code(::cmd0 value)
12850 {
12851 cmd_code = static_cast<uint32_t>(value);
12852 return *this;
12853 }
12854 CONSTEXPR uint32_t get_param() const
12855 {
12856 return static_cast<uint32_t>(param);
12857 }
12858 CONSTEXPR npu_set_ofm_height_m1_t &set_param(uint32_t value)
12859 {
12860 param = static_cast<uint32_t>(value);
12861 return *this;
12862 }
12863#endif //__cplusplus
12864};
12865
12866// Output feature map depth -1 (for the stripe to process)
12867struct npu_set_ofm_depth_m1_t
12868{
12869 uint32_t cmd_code : 10; // NPU_SET_OFM_DEPTH_M1
12870 uint32_t must_be_zero0 : 6; // 0
12871 uint32_t param : 16;
12872#ifdef __cplusplus
12873 CONSTEXPR bool valid() const
12874 {
12875 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_DEPTH_M1) && must_be_zero0 == 0;
12876 }
12877 CONSTEXPR void init()
12878 {
12879 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_DEPTH_M1);
12880 must_be_zero0 = 0;
12881 }
12882 CONSTEXPR ::cmd0 get_cmd_code() const
12883 {
12884 return static_cast<::cmd0>(cmd_code);
12885 }
12886 CONSTEXPR npu_set_ofm_depth_m1_t &set_cmd_code(::cmd0 value)
12887 {
12888 cmd_code = static_cast<uint32_t>(value);
12889 return *this;
12890 }
12891 CONSTEXPR uint32_t get_param() const
12892 {
12893 return static_cast<uint32_t>(param);
12894 }
12895 CONSTEXPR npu_set_ofm_depth_m1_t &set_param(uint32_t value)
12896 {
12897 param = static_cast<uint32_t>(value);
12898 return *this;
12899 }
12900#endif //__cplusplus
12901};
12902
12903// Set OFM precision
12904struct npu_set_ofm_precision_t
12905{
12906 uint32_t cmd_code : 10; // NPU_SET_OFM_PRECISION
12907 uint32_t must_be_zero0 : 6; // 0
12908 uint32_t precision : 3;
12909 uint32_t reserved0 : 3;
12910 uint32_t format : 2;
12911 uint32_t scaling : 1; // 0=Per channel scale/bias 1=Global scale (SET_OFM_SCALE), no bias
12912 uint32_t reserved1 : 5;
12913 uint32_t rounding : 2; // 0=TFL rounding 1=truncate towards zero 2=natural rounding
12914#ifdef __cplusplus
12915 CONSTEXPR bool valid() const
12916 {
12917 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_PRECISION) && must_be_zero0 == 0;
12918 }
12919 CONSTEXPR void init()
12920 {
12921 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_PRECISION);
12922 must_be_zero0 = 0;
12923 }
12924 CONSTEXPR ::cmd0 get_cmd_code() const
12925 {
12926 return static_cast<::cmd0>(cmd_code);
12927 }
12928 CONSTEXPR npu_set_ofm_precision_t &set_cmd_code(::cmd0 value)
12929 {
12930 cmd_code = static_cast<uint32_t>(value);
12931 return *this;
12932 }
12933 CONSTEXPR ::data_format get_format() const
12934 {
12935 return static_cast<::data_format>(format);
12936 }
12937 CONSTEXPR npu_set_ofm_precision_t &set_format(::data_format value)
12938 {
12939 format = static_cast<uint32_t>(value);
12940 return *this;
12941 }
12942 CONSTEXPR ::ofm_precision get_precision() const
12943 {
12944 return static_cast<::ofm_precision>(precision);
12945 }
12946 CONSTEXPR npu_set_ofm_precision_t &set_precision(::ofm_precision value)
12947 {
12948 precision = static_cast<uint32_t>(value);
12949 return *this;
12950 }
12951 CONSTEXPR ::rounding get_rounding() const
12952 {
12953 return static_cast<::rounding>(rounding);
12954 }
12955 CONSTEXPR npu_set_ofm_precision_t &set_rounding(::rounding value)
12956 {
12957 rounding = static_cast<uint32_t>(value);
12958 return *this;
12959 }
12960 CONSTEXPR uint32_t get_scaling() const
12961 {
12962 return static_cast<uint32_t>(scaling);
12963 }
12964 CONSTEXPR npu_set_ofm_precision_t &set_scaling(uint32_t value)
12965 {
12966 scaling = static_cast<uint32_t>(value);
12967 return *this;
12968 }
12969#endif //__cplusplus
12970};
12971
12972// TSU block width - 1 (provided sufficient data remaining)
12973struct npu_set_ofm_blk_width_m1_t
12974{
12975 uint32_t cmd_code : 10; // NPU_SET_OFM_BLK_WIDTH_M1
12976 uint32_t must_be_zero0 : 6; // 0
12977 uint32_t param : 16;
12978#ifdef __cplusplus
12979 CONSTEXPR bool valid() const
12980 {
12981 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_BLK_WIDTH_M1) && must_be_zero0 == 0;
12982 }
12983 CONSTEXPR void init()
12984 {
12985 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_BLK_WIDTH_M1);
12986 must_be_zero0 = 0;
12987 }
12988 CONSTEXPR ::cmd0 get_cmd_code() const
12989 {
12990 return static_cast<::cmd0>(cmd_code);
12991 }
12992 CONSTEXPR npu_set_ofm_blk_width_m1_t &set_cmd_code(::cmd0 value)
12993 {
12994 cmd_code = static_cast<uint32_t>(value);
12995 return *this;
12996 }
12997 CONSTEXPR uint32_t get_param() const
12998 {
12999 return static_cast<uint32_t>(param);
13000 }
13001 CONSTEXPR npu_set_ofm_blk_width_m1_t &set_param(uint32_t value)
13002 {
13003 param = static_cast<uint32_t>(value);
13004 return *this;
13005 }
13006#endif //__cplusplus
13007};
13008
13009// TSU block height -1 (provided sufficient data remaining)
13010struct npu_set_ofm_blk_height_m1_t
13011{
13012 uint32_t cmd_code : 10; // NPU_SET_OFM_BLK_HEIGHT_M1
13013 uint32_t must_be_zero0 : 6; // 0
13014 uint32_t param : 16;
13015#ifdef __cplusplus
13016 CONSTEXPR bool valid() const
13017 {
13018 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_BLK_HEIGHT_M1) && must_be_zero0 == 0;
13019 }
13020 CONSTEXPR void init()
13021 {
13022 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_BLK_HEIGHT_M1);
13023 must_be_zero0 = 0;
13024 }
13025 CONSTEXPR ::cmd0 get_cmd_code() const
13026 {
13027 return static_cast<::cmd0>(cmd_code);
13028 }
13029 CONSTEXPR npu_set_ofm_blk_height_m1_t &set_cmd_code(::cmd0 value)
13030 {
13031 cmd_code = static_cast<uint32_t>(value);
13032 return *this;
13033 }
13034 CONSTEXPR uint32_t get_param() const
13035 {
13036 return static_cast<uint32_t>(param);
13037 }
13038 CONSTEXPR npu_set_ofm_blk_height_m1_t &set_param(uint32_t value)
13039 {
13040 param = static_cast<uint32_t>(value);
13041 return *this;
13042 }
13043#endif //__cplusplus
13044};
13045
13046// TSU block depth -1 (provided sufficient data remaining)
13047struct npu_set_ofm_blk_depth_m1_t
13048{
13049 uint32_t cmd_code : 10; // NPU_SET_OFM_BLK_DEPTH_M1
13050 uint32_t must_be_zero0 : 6; // 0
13051 uint32_t param : 16;
13052#ifdef __cplusplus
13053 CONSTEXPR bool valid() const
13054 {
13055 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_BLK_DEPTH_M1) && must_be_zero0 == 0;
13056 }
13057 CONSTEXPR void init()
13058 {
13059 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_BLK_DEPTH_M1);
13060 must_be_zero0 = 0;
13061 }
13062 CONSTEXPR ::cmd0 get_cmd_code() const
13063 {
13064 return static_cast<::cmd0>(cmd_code);
13065 }
13066 CONSTEXPR npu_set_ofm_blk_depth_m1_t &set_cmd_code(::cmd0 value)
13067 {
13068 cmd_code = static_cast<uint32_t>(value);
13069 return *this;
13070 }
13071 CONSTEXPR uint32_t get_param() const
13072 {
13073 return static_cast<uint32_t>(param);
13074 }
13075 CONSTEXPR npu_set_ofm_blk_depth_m1_t &set_param(uint32_t value)
13076 {
13077 param = static_cast<uint32_t>(value);
13078 return *this;
13079 }
13080#endif //__cplusplus
13081};
13082
13083// Zero point offset (so value that 0 is encoded as)
13084struct npu_set_ofm_zero_point_t
13085{
13086 uint32_t cmd_code : 10; // NPU_SET_OFM_ZERO_POINT
13087 uint32_t must_be_zero0 : 6; // 0
13088 uint32_t param : 16;
13089#ifdef __cplusplus
13090 CONSTEXPR bool valid() const
13091 {
13092 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_ZERO_POINT) && must_be_zero0 == 0;
13093 }
13094 CONSTEXPR void init()
13095 {
13096 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_ZERO_POINT);
13097 must_be_zero0 = 0;
13098 }
13099 CONSTEXPR ::cmd0 get_cmd_code() const
13100 {
13101 return static_cast<::cmd0>(cmd_code);
13102 }
13103 CONSTEXPR npu_set_ofm_zero_point_t &set_cmd_code(::cmd0 value)
13104 {
13105 cmd_code = static_cast<uint32_t>(value);
13106 return *this;
13107 }
13108 CONSTEXPR uint32_t get_param() const
13109 {
13110 return static_cast<uint32_t>(param);
13111 }
13112 CONSTEXPR npu_set_ofm_zero_point_t &set_param(uint32_t value)
13113 {
13114 param = static_cast<uint32_t>(value);
13115 return *this;
13116 }
13117#endif //__cplusplus
13118};
13119
13120// OFM Tile 0 and tile 2 (width-1)
13121struct npu_set_ofm_width0_m1_t
13122{
13123 uint32_t cmd_code : 10; // NPU_SET_OFM_WIDTH0_M1
13124 uint32_t must_be_zero0 : 6; // 0
13125 uint32_t param : 16;
13126#ifdef __cplusplus
13127 CONSTEXPR bool valid() const
13128 {
13129 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_WIDTH0_M1) && must_be_zero0 == 0;
13130 }
13131 CONSTEXPR void init()
13132 {
13133 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_WIDTH0_M1);
13134 must_be_zero0 = 0;
13135 }
13136 CONSTEXPR ::cmd0 get_cmd_code() const
13137 {
13138 return static_cast<::cmd0>(cmd_code);
13139 }
13140 CONSTEXPR npu_set_ofm_width0_m1_t &set_cmd_code(::cmd0 value)
13141 {
13142 cmd_code = static_cast<uint32_t>(value);
13143 return *this;
13144 }
13145 CONSTEXPR uint32_t get_param() const
13146 {
13147 return static_cast<uint32_t>(param);
13148 }
13149 CONSTEXPR npu_set_ofm_width0_m1_t &set_param(uint32_t value)
13150 {
13151 param = static_cast<uint32_t>(value);
13152 return *this;
13153 }
13154#endif //__cplusplus
13155};
13156
13157// OFM Tile 0 (height-1)
13158struct npu_set_ofm_height0_m1_t
13159{
13160 uint32_t cmd_code : 10; // NPU_SET_OFM_HEIGHT0_M1
13161 uint32_t must_be_zero0 : 6; // 0
13162 uint32_t param : 16;
13163#ifdef __cplusplus
13164 CONSTEXPR bool valid() const
13165 {
13166 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_HEIGHT0_M1) && must_be_zero0 == 0;
13167 }
13168 CONSTEXPR void init()
13169 {
13170 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_HEIGHT0_M1);
13171 must_be_zero0 = 0;
13172 }
13173 CONSTEXPR ::cmd0 get_cmd_code() const
13174 {
13175 return static_cast<::cmd0>(cmd_code);
13176 }
13177 CONSTEXPR npu_set_ofm_height0_m1_t &set_cmd_code(::cmd0 value)
13178 {
13179 cmd_code = static_cast<uint32_t>(value);
13180 return *this;
13181 }
13182 CONSTEXPR uint32_t get_param() const
13183 {
13184 return static_cast<uint32_t>(param);
13185 }
13186 CONSTEXPR npu_set_ofm_height0_m1_t &set_param(uint32_t value)
13187 {
13188 param = static_cast<uint32_t>(value);
13189 return *this;
13190 }
13191#endif //__cplusplus
13192};
13193
13194// OFM Tile 1 (height-1)
13195struct npu_set_ofm_height1_m1_t
13196{
13197 uint32_t cmd_code : 10; // NPU_SET_OFM_HEIGHT1_M1
13198 uint32_t must_be_zero0 : 6; // 0
13199 uint32_t param : 16;
13200#ifdef __cplusplus
13201 CONSTEXPR bool valid() const
13202 {
13203 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_HEIGHT1_M1) && must_be_zero0 == 0;
13204 }
13205 CONSTEXPR void init()
13206 {
13207 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_HEIGHT1_M1);
13208 must_be_zero0 = 0;
13209 }
13210 CONSTEXPR ::cmd0 get_cmd_code() const
13211 {
13212 return static_cast<::cmd0>(cmd_code);
13213 }
13214 CONSTEXPR npu_set_ofm_height1_m1_t &set_cmd_code(::cmd0 value)
13215 {
13216 cmd_code = static_cast<uint32_t>(value);
13217 return *this;
13218 }
13219 CONSTEXPR uint32_t get_param() const
13220 {
13221 return static_cast<uint32_t>(param);
13222 }
13223 CONSTEXPR npu_set_ofm_height1_m1_t &set_param(uint32_t value)
13224 {
13225 param = static_cast<uint32_t>(value);
13226 return *this;
13227 }
13228#endif //__cplusplus
13229};
13230
13231// Index n for OFM access: BasePointer[n] is added to all OFM offsets
13232struct npu_set_ofm_region_t
13233{
13234 uint32_t cmd_code : 10; // NPU_SET_OFM_REGION
13235 uint32_t must_be_zero0 : 6; // 0
13236 uint32_t param : 16;
13237#ifdef __cplusplus
13238 CONSTEXPR bool valid() const
13239 {
13240 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_OFM_REGION) && must_be_zero0 == 0;
13241 }
13242 CONSTEXPR void init()
13243 {
13244 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_OFM_REGION);
13245 must_be_zero0 = 0;
13246 }
13247 CONSTEXPR ::cmd0 get_cmd_code() const
13248 {
13249 return static_cast<::cmd0>(cmd_code);
13250 }
13251 CONSTEXPR npu_set_ofm_region_t &set_cmd_code(::cmd0 value)
13252 {
13253 cmd_code = static_cast<uint32_t>(value);
13254 return *this;
13255 }
13256 CONSTEXPR uint32_t get_param() const
13257 {
13258 return static_cast<uint32_t>(param);
13259 }
13260 CONSTEXPR npu_set_ofm_region_t &set_param(uint32_t value)
13261 {
13262 param = static_cast<uint32_t>(value);
13263 return *this;
13264 }
13265#endif //__cplusplus
13266};
13267
13268// Set kernel width - 1
13269struct npu_set_kernel_width_m1_t
13270{
13271 uint32_t cmd_code : 10; // NPU_SET_KERNEL_WIDTH_M1
13272 uint32_t must_be_zero0 : 6; // 0
13273 uint32_t param : 16;
13274#ifdef __cplusplus
13275 CONSTEXPR bool valid() const
13276 {
13277 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_KERNEL_WIDTH_M1) && must_be_zero0 == 0;
13278 }
13279 CONSTEXPR void init()
13280 {
13281 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_KERNEL_WIDTH_M1);
13282 must_be_zero0 = 0;
13283 }
13284 CONSTEXPR ::cmd0 get_cmd_code() const
13285 {
13286 return static_cast<::cmd0>(cmd_code);
13287 }
13288 CONSTEXPR npu_set_kernel_width_m1_t &set_cmd_code(::cmd0 value)
13289 {
13290 cmd_code = static_cast<uint32_t>(value);
13291 return *this;
13292 }
13293 CONSTEXPR uint32_t get_param() const
13294 {
13295 return static_cast<uint32_t>(param);
13296 }
13297 CONSTEXPR npu_set_kernel_width_m1_t &set_param(uint32_t value)
13298 {
13299 param = static_cast<uint32_t>(value);
13300 return *this;
13301 }
13302#endif //__cplusplus
13303};
13304
13305// Set kernel height - 1
13306struct npu_set_kernel_height_m1_t
13307{
13308 uint32_t cmd_code : 10; // NPU_SET_KERNEL_HEIGHT_M1
13309 uint32_t must_be_zero0 : 6; // 0
13310 uint32_t param : 16;
13311#ifdef __cplusplus
13312 CONSTEXPR bool valid() const
13313 {
13314 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_KERNEL_HEIGHT_M1) && must_be_zero0 == 0;
13315 }
13316 CONSTEXPR void init()
13317 {
13318 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_KERNEL_HEIGHT_M1);
13319 must_be_zero0 = 0;
13320 }
13321 CONSTEXPR ::cmd0 get_cmd_code() const
13322 {
13323 return static_cast<::cmd0>(cmd_code);
13324 }
13325 CONSTEXPR npu_set_kernel_height_m1_t &set_cmd_code(::cmd0 value)
13326 {
13327 cmd_code = static_cast<uint32_t>(value);
13328 return *this;
13329 }
13330 CONSTEXPR uint32_t get_param() const
13331 {
13332 return static_cast<uint32_t>(param);
13333 }
13334 CONSTEXPR npu_set_kernel_height_m1_t &set_param(uint32_t value)
13335 {
13336 param = static_cast<uint32_t>(value);
13337 return *this;
13338 }
13339#endif //__cplusplus
13340};
13341
13342// Kernel stride b0=X stride-1, b1=Y stride-1, b2=weight order (0=depth, 1=kernel) b3 = kernel_x_dilation - 1 (0=no x
13343// dilation, 1=x dilation of x2) b4 = kernel_y_dilation -1 (0=no y dilation, 1=y dilation of x2) b5 = kernel
13344// decomposition size (0 for kernel_split_size=8, 1 for kernel_split_size=4)
13345struct npu_set_kernel_stride_t
13346{
13347 uint32_t cmd_code : 10; // NPU_SET_KERNEL_STRIDE
13348 uint32_t must_be_zero0 : 6; // 0
13349 uint32_t param : 16;
13350#ifdef __cplusplus
13351 CONSTEXPR bool valid() const
13352 {
13353 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_KERNEL_STRIDE) && must_be_zero0 == 0;
13354 }
13355 CONSTEXPR void init()
13356 {
13357 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_KERNEL_STRIDE);
13358 must_be_zero0 = 0;
13359 }
13360 CONSTEXPR ::cmd0 get_cmd_code() const
13361 {
13362 return static_cast<::cmd0>(cmd_code);
13363 }
13364 CONSTEXPR npu_set_kernel_stride_t &set_cmd_code(::cmd0 value)
13365 {
13366 cmd_code = static_cast<uint32_t>(value);
13367 return *this;
13368 }
13369 CONSTEXPR uint32_t get_param() const
13370 {
13371 return static_cast<uint32_t>(param);
13372 }
13373 CONSTEXPR npu_set_kernel_stride_t &set_param(uint32_t value)
13374 {
13375 param = static_cast<uint32_t>(value);
13376 return *this;
13377 }
13378#endif //__cplusplus
13379};
13380
13381// 0=1-core, 1=2-core depth
13382struct npu_set_parallel_mode_t
13383{
13384 uint32_t cmd_code : 10; // NPU_SET_PARALLEL_MODE
13385 uint32_t must_be_zero0 : 6; // 0
13386 uint32_t param : 16;
13387#ifdef __cplusplus
13388 CONSTEXPR bool valid() const
13389 {
13390 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_PARALLEL_MODE) && must_be_zero0 == 0;
13391 }
13392 CONSTEXPR void init()
13393 {
13394 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_PARALLEL_MODE);
13395 must_be_zero0 = 0;
13396 }
13397 CONSTEXPR ::cmd0 get_cmd_code() const
13398 {
13399 return static_cast<::cmd0>(cmd_code);
13400 }
13401 CONSTEXPR npu_set_parallel_mode_t &set_cmd_code(::cmd0 value)
13402 {
13403 cmd_code = static_cast<uint32_t>(value);
13404 return *this;
13405 }
13406 CONSTEXPR uint32_t get_param() const
13407 {
13408 return static_cast<uint32_t>(param);
13409 }
13410 CONSTEXPR npu_set_parallel_mode_t &set_param(uint32_t value)
13411 {
13412 param = static_cast<uint32_t>(value);
13413 return *this;
13414 }
13415#endif //__cplusplus
13416};
13417
13418// Set accumulator format
13419struct npu_set_acc_format_t
13420{
13421 uint32_t cmd_code : 10; // NPU_SET_ACC_FORMAT
13422 uint32_t must_be_zero0 : 6; // 0
13423 uint32_t param : 16;
13424#ifdef __cplusplus
13425 CONSTEXPR bool valid() const
13426 {
13427 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_ACC_FORMAT) && must_be_zero0 == 0;
13428 }
13429 CONSTEXPR void init()
13430 {
13431 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_ACC_FORMAT);
13432 must_be_zero0 = 0;
13433 }
13434 CONSTEXPR ::cmd0 get_cmd_code() const
13435 {
13436 return static_cast<::cmd0>(cmd_code);
13437 }
13438 CONSTEXPR npu_set_acc_format_t &set_cmd_code(::cmd0 value)
13439 {
13440 cmd_code = static_cast<uint32_t>(value);
13441 return *this;
13442 }
13443 CONSTEXPR ::acc_format get_param() const
13444 {
13445 return static_cast<::acc_format>(param);
13446 }
13447 CONSTEXPR npu_set_acc_format_t &set_param(::acc_format value)
13448 {
13449 param = static_cast<uint32_t>(value);
13450 return *this;
13451 }
13452#endif //__cplusplus
13453};
13454
13455// Set activation
13456struct npu_set_activation_t
13457{
13458 uint32_t cmd_code : 10; // NPU_SET_ACTIVATION
13459 uint32_t must_be_zero0 : 6; // 0
13460 uint32_t type : 12;
13461 uint32_t act_clip_range : 4;
13462#ifdef __cplusplus
13463 CONSTEXPR bool valid() const
13464 {
13465 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_ACTIVATION) && must_be_zero0 == 0;
13466 }
13467 CONSTEXPR void init()
13468 {
13469 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_ACTIVATION);
13470 must_be_zero0 = 0;
13471 }
13472 CONSTEXPR ::clip_range get_act_clip_range() const
13473 {
13474 return static_cast<::clip_range>(act_clip_range);
13475 }
13476 CONSTEXPR npu_set_activation_t &set_act_clip_range(::clip_range value)
13477 {
13478 act_clip_range = static_cast<uint32_t>(value);
13479 return *this;
13480 }
13481 CONSTEXPR ::cmd0 get_cmd_code() const
13482 {
13483 return static_cast<::cmd0>(cmd_code);
13484 }
13485 CONSTEXPR npu_set_activation_t &set_cmd_code(::cmd0 value)
13486 {
13487 cmd_code = static_cast<uint32_t>(value);
13488 return *this;
13489 }
13490 CONSTEXPR ::activation get_type() const
13491 {
13492 return static_cast<::activation>(type);
13493 }
13494 CONSTEXPR npu_set_activation_t &set_type(::activation value)
13495 {
13496 type = static_cast<uint32_t>(value);
13497 return *this;
13498 }
13499#endif //__cplusplus
13500};
13501
13502// Lower bound clip for OFM activations – range is the OFM type range
13503struct npu_set_activation_min_t
13504{
13505 uint32_t cmd_code : 10; // NPU_SET_ACTIVATION_MIN
13506 uint32_t must_be_zero0 : 6; // 0
13507 uint32_t param : 16;
13508#ifdef __cplusplus
13509 CONSTEXPR bool valid() const
13510 {
13511 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_ACTIVATION_MIN) && must_be_zero0 == 0;
13512 }
13513 CONSTEXPR void init()
13514 {
13515 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_ACTIVATION_MIN);
13516 must_be_zero0 = 0;
13517 }
13518 CONSTEXPR ::cmd0 get_cmd_code() const
13519 {
13520 return static_cast<::cmd0>(cmd_code);
13521 }
13522 CONSTEXPR npu_set_activation_min_t &set_cmd_code(::cmd0 value)
13523 {
13524 cmd_code = static_cast<uint32_t>(value);
13525 return *this;
13526 }
13527 CONSTEXPR uint32_t get_param() const
13528 {
13529 return static_cast<uint32_t>(param);
13530 }
13531 CONSTEXPR npu_set_activation_min_t &set_param(uint32_t value)
13532 {
13533 param = static_cast<uint32_t>(value);
13534 return *this;
13535 }
13536#endif //__cplusplus
13537};
13538
13539// Upper bound clip for OFM activations – range is the OFM type range
13540struct npu_set_activation_max_t
13541{
13542 uint32_t cmd_code : 10; // NPU_SET_ACTIVATION_MAX
13543 uint32_t must_be_zero0 : 6; // 0
13544 uint32_t param : 16;
13545#ifdef __cplusplus
13546 CONSTEXPR bool valid() const
13547 {
13548 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_ACTIVATION_MAX) && must_be_zero0 == 0;
13549 }
13550 CONSTEXPR void init()
13551 {
13552 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_ACTIVATION_MAX);
13553 must_be_zero0 = 0;
13554 }
13555 CONSTEXPR ::cmd0 get_cmd_code() const
13556 {
13557 return static_cast<::cmd0>(cmd_code);
13558 }
13559 CONSTEXPR npu_set_activation_max_t &set_cmd_code(::cmd0 value)
13560 {
13561 cmd_code = static_cast<uint32_t>(value);
13562 return *this;
13563 }
13564 CONSTEXPR uint32_t get_param() const
13565 {
13566 return static_cast<uint32_t>(param);
13567 }
13568 CONSTEXPR npu_set_activation_max_t &set_param(uint32_t value)
13569 {
13570 param = static_cast<uint32_t>(value);
13571 return *this;
13572 }
13573#endif //__cplusplus
13574};
13575
13576// Index n for weight access: BasePointer[n] is added to all Weight stream offsets
13577struct npu_set_weight_region_t
13578{
13579 uint32_t cmd_code : 10; // NPU_SET_WEIGHT_REGION
13580 uint32_t must_be_zero0 : 6; // 0
13581 uint32_t param : 16;
13582#ifdef __cplusplus
13583 CONSTEXPR bool valid() const
13584 {
13585 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_WEIGHT_REGION) && must_be_zero0 == 0;
13586 }
13587 CONSTEXPR void init()
13588 {
13589 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_WEIGHT_REGION);
13590 must_be_zero0 = 0;
13591 }
13592 CONSTEXPR ::cmd0 get_cmd_code() const
13593 {
13594 return static_cast<::cmd0>(cmd_code);
13595 }
13596 CONSTEXPR npu_set_weight_region_t &set_cmd_code(::cmd0 value)
13597 {
13598 cmd_code = static_cast<uint32_t>(value);
13599 return *this;
13600 }
13601 CONSTEXPR uint32_t get_param() const
13602 {
13603 return static_cast<uint32_t>(param);
13604 }
13605 CONSTEXPR npu_set_weight_region_t &set_param(uint32_t value)
13606 {
13607 param = static_cast<uint32_t>(value);
13608 return *this;
13609 }
13610#endif //__cplusplus
13611};
13612
13613// Index n for weight access: BasePointer[n] is added to all scale stream offsets
13614struct npu_set_scale_region_t
13615{
13616 uint32_t cmd_code : 10; // NPU_SET_SCALE_REGION
13617 uint32_t must_be_zero0 : 6; // 0
13618 uint32_t param : 16;
13619#ifdef __cplusplus
13620 CONSTEXPR bool valid() const
13621 {
13622 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_SCALE_REGION) && must_be_zero0 == 0;
13623 }
13624 CONSTEXPR void init()
13625 {
13626 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_SCALE_REGION);
13627 must_be_zero0 = 0;
13628 }
13629 CONSTEXPR ::cmd0 get_cmd_code() const
13630 {
13631 return static_cast<::cmd0>(cmd_code);
13632 }
13633 CONSTEXPR npu_set_scale_region_t &set_cmd_code(::cmd0 value)
13634 {
13635 cmd_code = static_cast<uint32_t>(value);
13636 return *this;
13637 }
13638 CONSTEXPR uint32_t get_param() const
13639 {
13640 return static_cast<uint32_t>(param);
13641 }
13642 CONSTEXPR npu_set_scale_region_t &set_param(uint32_t value)
13643 {
13644 param = static_cast<uint32_t>(value);
13645 return *this;
13646 }
13647#endif //__cplusplus
13648};
13649
13650// Start of ACC0,ACC1 buffers in the SHRAM in KB units. Multiple of 4.)
13651struct npu_set_ab_start_t
13652{
13653 uint32_t cmd_code : 10; // NPU_SET_AB_START
13654 uint32_t must_be_zero0 : 6; // 0
13655 uint32_t param : 16;
13656#ifdef __cplusplus
13657 CONSTEXPR bool valid() const
13658 {
13659 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_AB_START) && must_be_zero0 == 0;
13660 }
13661 CONSTEXPR void init()
13662 {
13663 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_AB_START);
13664 must_be_zero0 = 0;
13665 }
13666 CONSTEXPR ::cmd0 get_cmd_code() const
13667 {
13668 return static_cast<::cmd0>(cmd_code);
13669 }
13670 CONSTEXPR npu_set_ab_start_t &set_cmd_code(::cmd0 value)
13671 {
13672 cmd_code = static_cast<uint32_t>(value);
13673 return *this;
13674 }
13675 CONSTEXPR uint32_t get_param() const
13676 {
13677 return static_cast<uint32_t>(param);
13678 }
13679 CONSTEXPR npu_set_ab_start_t &set_param(uint32_t value)
13680 {
13681 param = static_cast<uint32_t>(value);
13682 return *this;
13683 }
13684#endif //__cplusplus
13685};
13686
13687// Set block number of blocks dependency between kernel operations
13688struct npu_set_blockdep_t
13689{
13690 uint32_t cmd_code : 10; // NPU_SET_BLOCKDEP
13691 uint32_t must_be_zero0 : 6; // 0
13692 uint32_t param : 16;
13693#ifdef __cplusplus
13694 CONSTEXPR bool valid() const
13695 {
13696 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_BLOCKDEP) && must_be_zero0 == 0;
13697 }
13698 CONSTEXPR void init()
13699 {
13700 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_BLOCKDEP);
13701 must_be_zero0 = 0;
13702 }
13703 CONSTEXPR ::cmd0 get_cmd_code() const
13704 {
13705 return static_cast<::cmd0>(cmd_code);
13706 }
13707 CONSTEXPR npu_set_blockdep_t &set_cmd_code(::cmd0 value)
13708 {
13709 cmd_code = static_cast<uint32_t>(value);
13710 return *this;
13711 }
13712 CONSTEXPR uint32_t get_param() const
13713 {
13714 return static_cast<uint32_t>(param);
13715 }
13716 CONSTEXPR npu_set_blockdep_t &set_param(uint32_t value)
13717 {
13718 param = static_cast<uint32_t>(value);
13719 return *this;
13720 }
13721#endif //__cplusplus
13722};
13723
13724// DMA0 SRC region bitmap
13725struct npu_set_dma0_src_region_t
13726{
13727 uint32_t cmd_code : 10; // NPU_SET_DMA0_SRC_REGION
13728 uint32_t must_be_zero0 : 6; // 0
13729 uint32_t region : 8; // If Bit[8]=0, Bit[7:0]=Region number in the range [0, 8) of SRC offset. If Bit[8]=1,
13730 // Bit[7:0]=Core number (0 or 1) to read.
13731 uint32_t internal : 1; // Must be 0 (external)
13732 uint32_t stride_mode : 2; // stride mode 0/1/2=1D/2D/3D
13733 uint32_t reserved0 : 5;
13734#ifdef __cplusplus
13735 CONSTEXPR bool valid() const
13736 {
13737 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_DMA0_SRC_REGION) && must_be_zero0 == 0;
13738 }
13739 CONSTEXPR void init()
13740 {
13741 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_DMA0_SRC_REGION);
13742 must_be_zero0 = 0;
13743 }
13744 CONSTEXPR ::cmd0 get_cmd_code() const
13745 {
13746 return static_cast<::cmd0>(cmd_code);
13747 }
13748 CONSTEXPR npu_set_dma0_src_region_t &set_cmd_code(::cmd0 value)
13749 {
13750 cmd_code = static_cast<uint32_t>(value);
13751 return *this;
13752 }
13753 CONSTEXPR uint32_t get_internal() const
13754 {
13755 return static_cast<uint32_t>(internal);
13756 }
13757 CONSTEXPR npu_set_dma0_src_region_t &set_internal(uint32_t value)
13758 {
13759 internal = static_cast<uint32_t>(value);
13760 return *this;
13761 }
13762 CONSTEXPR uint32_t get_region() const
13763 {
13764 return static_cast<uint32_t>(region);
13765 }
13766 CONSTEXPR npu_set_dma0_src_region_t &set_region(uint32_t value)
13767 {
13768 region = static_cast<uint32_t>(value);
13769 return *this;
13770 }
13771 CONSTEXPR ::stride_mode get_stride_mode() const
13772 {
13773 return static_cast<::stride_mode>(stride_mode);
13774 }
13775 CONSTEXPR npu_set_dma0_src_region_t &set_stride_mode(::stride_mode value)
13776 {
13777 stride_mode = static_cast<uint32_t>(value);
13778 return *this;
13779 }
13780#endif //__cplusplus
13781};
13782
13783// DMA0 DST region bitmap
13784struct npu_set_dma0_dst_region_t
13785{
13786 uint32_t cmd_code : 10; // NPU_SET_DMA0_DST_REGION
13787 uint32_t must_be_zero0 : 6; // 0
13788 uint32_t region : 8; // If Bit[8]=0, Bit[7:0]=Region number in the range [0, 8) of DST offset. If Bit[8]=1,
13789 // Bit[7:0]=Core mask to write to (bit k set for core k=0,1).
13790 uint32_t internal : 1; // Select external/internal=0/1
13791 uint32_t stride_mode : 2; // stride mode 0/1/2=1D/2D/3D
13792 uint32_t reserved0 : 5;
13793#ifdef __cplusplus
13794 CONSTEXPR bool valid() const
13795 {
13796 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_DMA0_DST_REGION) && must_be_zero0 == 0;
13797 }
13798 CONSTEXPR void init()
13799 {
13800 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_DMA0_DST_REGION);
13801 must_be_zero0 = 0;
13802 }
13803 CONSTEXPR ::cmd0 get_cmd_code() const
13804 {
13805 return static_cast<::cmd0>(cmd_code);
13806 }
13807 CONSTEXPR npu_set_dma0_dst_region_t &set_cmd_code(::cmd0 value)
13808 {
13809 cmd_code = static_cast<uint32_t>(value);
13810 return *this;
13811 }
13812 CONSTEXPR uint32_t get_internal() const
13813 {
13814 return static_cast<uint32_t>(internal);
13815 }
13816 CONSTEXPR npu_set_dma0_dst_region_t &set_internal(uint32_t value)
13817 {
13818 internal = static_cast<uint32_t>(value);
13819 return *this;
13820 }
13821 CONSTEXPR uint32_t get_region() const
13822 {
13823 return static_cast<uint32_t>(region);
13824 }
13825 CONSTEXPR npu_set_dma0_dst_region_t &set_region(uint32_t value)
13826 {
13827 region = static_cast<uint32_t>(value);
13828 return *this;
13829 }
13830 CONSTEXPR ::stride_mode get_stride_mode() const
13831 {
13832 return static_cast<::stride_mode>(stride_mode);
13833 }
13834 CONSTEXPR npu_set_dma0_dst_region_t &set_stride_mode(::stride_mode value)
13835 {
13836 stride_mode = static_cast<uint32_t>(value);
13837 return *this;
13838 }
13839#endif //__cplusplus
13840};
13841
13842// Inner size for 2D/3D mode.
13843struct npu_set_dma0_size0_t
13844{
13845 uint32_t cmd_code : 10; // NPU_SET_DMA0_SIZE0
13846 uint32_t must_be_zero0 : 6; // 0
13847 uint32_t param : 16;
13848#ifdef __cplusplus
13849 CONSTEXPR bool valid() const
13850 {
13851 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_DMA0_SIZE0) && must_be_zero0 == 0;
13852 }
13853 CONSTEXPR void init()
13854 {
13855 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_DMA0_SIZE0);
13856 must_be_zero0 = 0;
13857 }
13858 CONSTEXPR ::cmd0 get_cmd_code() const
13859 {
13860 return static_cast<::cmd0>(cmd_code);
13861 }
13862 CONSTEXPR npu_set_dma0_size0_t &set_cmd_code(::cmd0 value)
13863 {
13864 cmd_code = static_cast<uint32_t>(value);
13865 return *this;
13866 }
13867 CONSTEXPR uint32_t get_param() const
13868 {
13869 return static_cast<uint32_t>(param);
13870 }
13871 CONSTEXPR npu_set_dma0_size0_t &set_param(uint32_t value)
13872 {
13873 param = static_cast<uint32_t>(value);
13874 return *this;
13875 }
13876#endif //__cplusplus
13877};
13878
13879// Outer size for 3D mode.
13880struct npu_set_dma0_size1_t
13881{
13882 uint32_t cmd_code : 10; // NPU_SET_DMA0_SIZE1
13883 uint32_t must_be_zero0 : 6; // 0
13884 uint32_t param : 16;
13885#ifdef __cplusplus
13886 CONSTEXPR bool valid() const
13887 {
13888 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_DMA0_SIZE1) && must_be_zero0 == 0;
13889 }
13890 CONSTEXPR void init()
13891 {
13892 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_DMA0_SIZE1);
13893 must_be_zero0 = 0;
13894 }
13895 CONSTEXPR ::cmd0 get_cmd_code() const
13896 {
13897 return static_cast<::cmd0>(cmd_code);
13898 }
13899 CONSTEXPR npu_set_dma0_size1_t &set_cmd_code(::cmd0 value)
13900 {
13901 cmd_code = static_cast<uint32_t>(value);
13902 return *this;
13903 }
13904 CONSTEXPR uint32_t get_param() const
13905 {
13906 return static_cast<uint32_t>(param);
13907 }
13908 CONSTEXPR npu_set_dma0_size1_t &set_param(uint32_t value)
13909 {
13910 param = static_cast<uint32_t>(value);
13911 return *this;
13912 }
13913#endif //__cplusplus
13914};
13915
13916// Set IFM2 Broadcast mode
13917struct npu_set_ifm2_broadcast_t
13918{
13919 uint32_t cmd_code : 10; // NPU_SET_IFM2_BROADCAST
13920 uint32_t must_be_zero0 : 6; // 0
13921 uint32_t broadcast_height : 1;
13922 uint32_t broadcast_width : 1;
13923 uint32_t broadcast_depth : 1;
13924 uint32_t reserved0 : 3;
13925 uint32_t operand_order : 1;
13926 uint32_t broadcast_scalar : 1;
13927 uint32_t reserved1 : 8;
13928#ifdef __cplusplus
13929 CONSTEXPR bool valid() const
13930 {
13931 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_BROADCAST) && must_be_zero0 == 0;
13932 }
13933 CONSTEXPR void init()
13934 {
13935 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_BROADCAST);
13936 must_be_zero0 = 0;
13937 }
13938 CONSTEXPR uint32_t get_broadcast_depth() const
13939 {
13940 return static_cast<uint32_t>(broadcast_depth);
13941 }
13942 CONSTEXPR npu_set_ifm2_broadcast_t &set_broadcast_depth(uint32_t value)
13943 {
13944 broadcast_depth = static_cast<uint32_t>(value);
13945 return *this;
13946 }
13947 CONSTEXPR uint32_t get_broadcast_height() const
13948 {
13949 return static_cast<uint32_t>(broadcast_height);
13950 }
13951 CONSTEXPR npu_set_ifm2_broadcast_t &set_broadcast_height(uint32_t value)
13952 {
13953 broadcast_height = static_cast<uint32_t>(value);
13954 return *this;
13955 }
13956 CONSTEXPR uint32_t get_broadcast_scalar() const
13957 {
13958 return static_cast<uint32_t>(broadcast_scalar);
13959 }
13960 CONSTEXPR npu_set_ifm2_broadcast_t &set_broadcast_scalar(uint32_t value)
13961 {
13962 broadcast_scalar = static_cast<uint32_t>(value);
13963 return *this;
13964 }
13965 CONSTEXPR uint32_t get_broadcast_width() const
13966 {
13967 return static_cast<uint32_t>(broadcast_width);
13968 }
13969 CONSTEXPR npu_set_ifm2_broadcast_t &set_broadcast_width(uint32_t value)
13970 {
13971 broadcast_width = static_cast<uint32_t>(value);
13972 return *this;
13973 }
13974 CONSTEXPR ::cmd0 get_cmd_code() const
13975 {
13976 return static_cast<::cmd0>(cmd_code);
13977 }
13978 CONSTEXPR npu_set_ifm2_broadcast_t &set_cmd_code(::cmd0 value)
13979 {
13980 cmd_code = static_cast<uint32_t>(value);
13981 return *this;
13982 }
13983 CONSTEXPR uint32_t get_operand_order() const
13984 {
13985 return static_cast<uint32_t>(operand_order);
13986 }
13987 CONSTEXPR npu_set_ifm2_broadcast_t &set_operand_order(uint32_t value)
13988 {
13989 operand_order = static_cast<uint32_t>(value);
13990 return *this;
13991 }
13992#endif //__cplusplus
13993};
13994
13995// IFM2 scalar value at range IFM_PRECISION
13996struct npu_set_ifm2_scalar_t
13997{
13998 uint32_t cmd_code : 10; // NPU_SET_IFM2_SCALAR
13999 uint32_t must_be_zero0 : 6; // 0
14000 uint32_t param : 16;
14001#ifdef __cplusplus
14002 CONSTEXPR bool valid() const
14003 {
14004 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_SCALAR) && must_be_zero0 == 0;
14005 }
14006 CONSTEXPR void init()
14007 {
14008 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_SCALAR);
14009 must_be_zero0 = 0;
14010 }
14011 CONSTEXPR ::cmd0 get_cmd_code() const
14012 {
14013 return static_cast<::cmd0>(cmd_code);
14014 }
14015 CONSTEXPR npu_set_ifm2_scalar_t &set_cmd_code(::cmd0 value)
14016 {
14017 cmd_code = static_cast<uint32_t>(value);
14018 return *this;
14019 }
14020 CONSTEXPR uint32_t get_param() const
14021 {
14022 return static_cast<uint32_t>(param);
14023 }
14024 CONSTEXPR npu_set_ifm2_scalar_t &set_param(uint32_t value)
14025 {
14026 param = static_cast<uint32_t>(value);
14027 return *this;
14028 }
14029#endif //__cplusplus
14030};
14031
14032// Set activation
14033struct npu_set_ifm2_precision_t
14034{
14035 uint32_t cmd_code : 10; // NPU_SET_IFM2_PRECISION
14036 uint32_t must_be_zero0 : 6; // 0
14037 uint32_t param : 4;
14038 uint32_t reserved0 : 2;
14039 uint32_t format : 2;
14040 uint32_t reserved1 : 8;
14041#ifdef __cplusplus
14042 CONSTEXPR bool valid() const
14043 {
14044 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_PRECISION) && must_be_zero0 == 0;
14045 }
14046 CONSTEXPR void init()
14047 {
14048 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_PRECISION);
14049 must_be_zero0 = 0;
14050 }
14051 CONSTEXPR ::cmd0 get_cmd_code() const
14052 {
14053 return static_cast<::cmd0>(cmd_code);
14054 }
14055 CONSTEXPR npu_set_ifm2_precision_t &set_cmd_code(::cmd0 value)
14056 {
14057 cmd_code = static_cast<uint32_t>(value);
14058 return *this;
14059 }
14060 CONSTEXPR ::data_format get_format() const
14061 {
14062 return static_cast<::data_format>(format);
14063 }
14064 CONSTEXPR npu_set_ifm2_precision_t &set_format(::data_format value)
14065 {
14066 format = static_cast<uint32_t>(value);
14067 return *this;
14068 }
14069 CONSTEXPR ::ifm_precision get_param() const
14070 {
14071 return static_cast<::ifm_precision>(param);
14072 }
14073 CONSTEXPR npu_set_ifm2_precision_t &set_param(::ifm_precision value)
14074 {
14075 param = static_cast<uint32_t>(value);
14076 return *this;
14077 }
14078#endif //__cplusplus
14079};
14080
14081// Zero point offset (so value that 0 is encoded as) at range IFM_PRECISION
14082struct npu_set_ifm2_zero_point_t
14083{
14084 uint32_t cmd_code : 10; // NPU_SET_IFM2_ZERO_POINT
14085 uint32_t must_be_zero0 : 6; // 0
14086 uint32_t param : 16;
14087#ifdef __cplusplus
14088 CONSTEXPR bool valid() const
14089 {
14090 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_ZERO_POINT) && must_be_zero0 == 0;
14091 }
14092 CONSTEXPR void init()
14093 {
14094 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_ZERO_POINT);
14095 must_be_zero0 = 0;
14096 }
14097 CONSTEXPR ::cmd0 get_cmd_code() const
14098 {
14099 return static_cast<::cmd0>(cmd_code);
14100 }
14101 CONSTEXPR npu_set_ifm2_zero_point_t &set_cmd_code(::cmd0 value)
14102 {
14103 cmd_code = static_cast<uint32_t>(value);
14104 return *this;
14105 }
14106 CONSTEXPR uint32_t get_param() const
14107 {
14108 return static_cast<uint32_t>(param);
14109 }
14110 CONSTEXPR npu_set_ifm2_zero_point_t &set_param(uint32_t value)
14111 {
14112 param = static_cast<uint32_t>(value);
14113 return *this;
14114 }
14115#endif //__cplusplus
14116};
14117
14118// IFM2 Tile 0 and tile 2 (width-1)
14119struct npu_set_ifm2_width0_m1_t
14120{
14121 uint32_t cmd_code : 10; // NPU_SET_IFM2_WIDTH0_M1
14122 uint32_t must_be_zero0 : 6; // 0
14123 uint32_t param : 16;
14124#ifdef __cplusplus
14125 CONSTEXPR bool valid() const
14126 {
14127 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_WIDTH0_M1) && must_be_zero0 == 0;
14128 }
14129 CONSTEXPR void init()
14130 {
14131 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_WIDTH0_M1);
14132 must_be_zero0 = 0;
14133 }
14134 CONSTEXPR ::cmd0 get_cmd_code() const
14135 {
14136 return static_cast<::cmd0>(cmd_code);
14137 }
14138 CONSTEXPR npu_set_ifm2_width0_m1_t &set_cmd_code(::cmd0 value)
14139 {
14140 cmd_code = static_cast<uint32_t>(value);
14141 return *this;
14142 }
14143 CONSTEXPR uint32_t get_param() const
14144 {
14145 return static_cast<uint32_t>(param);
14146 }
14147 CONSTEXPR npu_set_ifm2_width0_m1_t &set_param(uint32_t value)
14148 {
14149 param = static_cast<uint32_t>(value);
14150 return *this;
14151 }
14152#endif //__cplusplus
14153};
14154
14155// IFM2 Tile 0 (height-1)
14156struct npu_set_ifm2_height0_m1_t
14157{
14158 uint32_t cmd_code : 10; // NPU_SET_IFM2_HEIGHT0_M1
14159 uint32_t must_be_zero0 : 6; // 0
14160 uint32_t param : 16;
14161#ifdef __cplusplus
14162 CONSTEXPR bool valid() const
14163 {
14164 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_HEIGHT0_M1) && must_be_zero0 == 0;
14165 }
14166 CONSTEXPR void init()
14167 {
14168 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_HEIGHT0_M1);
14169 must_be_zero0 = 0;
14170 }
14171 CONSTEXPR ::cmd0 get_cmd_code() const
14172 {
14173 return static_cast<::cmd0>(cmd_code);
14174 }
14175 CONSTEXPR npu_set_ifm2_height0_m1_t &set_cmd_code(::cmd0 value)
14176 {
14177 cmd_code = static_cast<uint32_t>(value);
14178 return *this;
14179 }
14180 CONSTEXPR uint32_t get_param() const
14181 {
14182 return static_cast<uint32_t>(param);
14183 }
14184 CONSTEXPR npu_set_ifm2_height0_m1_t &set_param(uint32_t value)
14185 {
14186 param = static_cast<uint32_t>(value);
14187 return *this;
14188 }
14189#endif //__cplusplus
14190};
14191
14192// IFM2 Tile 1 (height-1)
14193struct npu_set_ifm2_height1_m1_t
14194{
14195 uint32_t cmd_code : 10; // NPU_SET_IFM2_HEIGHT1_M1
14196 uint32_t must_be_zero0 : 6; // 0
14197 uint32_t param : 16;
14198#ifdef __cplusplus
14199 CONSTEXPR bool valid() const
14200 {
14201 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_HEIGHT1_M1) && must_be_zero0 == 0;
14202 }
14203 CONSTEXPR void init()
14204 {
14205 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_HEIGHT1_M1);
14206 must_be_zero0 = 0;
14207 }
14208 CONSTEXPR ::cmd0 get_cmd_code() const
14209 {
14210 return static_cast<::cmd0>(cmd_code);
14211 }
14212 CONSTEXPR npu_set_ifm2_height1_m1_t &set_cmd_code(::cmd0 value)
14213 {
14214 cmd_code = static_cast<uint32_t>(value);
14215 return *this;
14216 }
14217 CONSTEXPR uint32_t get_param() const
14218 {
14219 return static_cast<uint32_t>(param);
14220 }
14221 CONSTEXPR npu_set_ifm2_height1_m1_t &set_param(uint32_t value)
14222 {
14223 param = static_cast<uint32_t>(value);
14224 return *this;
14225 }
14226#endif //__cplusplus
14227};
14228
14229// Start of IB0, IB1 buffers for IFM2 in SHRAM. In KB units, multiple of 2.
14230struct npu_set_ifm2_ib_start_t
14231{
14232 uint32_t cmd_code : 10; // NPU_SET_IFM2_IB_START
14233 uint32_t must_be_zero0 : 6; // 0
14234 uint32_t param : 16;
14235#ifdef __cplusplus
14236 CONSTEXPR bool valid() const
14237 {
14238 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_IB_START) && must_be_zero0 == 0;
14239 }
14240 CONSTEXPR void init()
14241 {
14242 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_IB_START);
14243 must_be_zero0 = 0;
14244 }
14245 CONSTEXPR ::cmd0 get_cmd_code() const
14246 {
14247 return static_cast<::cmd0>(cmd_code);
14248 }
14249 CONSTEXPR npu_set_ifm2_ib_start_t &set_cmd_code(::cmd0 value)
14250 {
14251 cmd_code = static_cast<uint32_t>(value);
14252 return *this;
14253 }
14254 CONSTEXPR uint32_t get_param() const
14255 {
14256 return static_cast<uint32_t>(param);
14257 }
14258 CONSTEXPR npu_set_ifm2_ib_start_t &set_param(uint32_t value)
14259 {
14260 param = static_cast<uint32_t>(value);
14261 return *this;
14262 }
14263#endif //__cplusplus
14264};
14265
14266// Index n for IFM2 access: Region[n] is added to all IFM2 addresses
14267struct npu_set_ifm2_region_t
14268{
14269 uint32_t cmd_code : 10; // NPU_SET_IFM2_REGION
14270 uint32_t must_be_zero0 : 6; // 0
14271 uint32_t param : 16;
14272#ifdef __cplusplus
14273 CONSTEXPR bool valid() const
14274 {
14275 return cmd_code == static_cast<uint32_t>(cmd0::NPU_SET_IFM2_REGION) && must_be_zero0 == 0;
14276 }
14277 CONSTEXPR void init()
14278 {
14279 cmd_code = static_cast<uint32_t>(cmd0::NPU_SET_IFM2_REGION);
14280 must_be_zero0 = 0;
14281 }
14282 CONSTEXPR ::cmd0 get_cmd_code() const
14283 {
14284 return static_cast<::cmd0>(cmd_code);
14285 }
14286 CONSTEXPR npu_set_ifm2_region_t &set_cmd_code(::cmd0 value)
14287 {
14288 cmd_code = static_cast<uint32_t>(value);
14289 return *this;
14290 }
14291 CONSTEXPR uint32_t get_param() const
14292 {
14293 return static_cast<uint32_t>(param);
14294 }
14295 CONSTEXPR npu_set_ifm2_region_t &set_param(uint32_t value)
14296 {
14297 param = static_cast<uint32_t>(value);
14298 return *this;
14299 }
14300#endif //__cplusplus
14301};
14302
14303// Set IFM base address (top left tile)
14304struct npu_set_ifm_base0_t
14305{
14306 uint32_t cmd_code : 10; // NPU_SET_IFM_BASE0
14307 uint32_t must_be_zero : 4; // 0
14308 uint32_t payload_size : 2; // Min:1 Max:2
14309 uint32_t reserved0 : 16;
14310 uint32_t data : 32; // IFM base address (top left tile)
14311#ifdef __cplusplus
14312 CONSTEXPR bool valid() const
14313 {
14314 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE0) && must_be_zero == 0 && payload_size >= 1 &&
14315 payload_size <= 2;
14316 }
14317 CONSTEXPR void init()
14318 {
14319 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE0);
14320 must_be_zero = 0;
14321 payload_size = 1;
14322 }
14323 CONSTEXPR ::cmd1 get_cmd_code() const
14324 {
14325 return static_cast<::cmd1>(cmd_code);
14326 }
14327 CONSTEXPR npu_set_ifm_base0_t &set_cmd_code(::cmd1 value)
14328 {
14329 cmd_code = static_cast<uint32_t>(value);
14330 return *this;
14331 }
14332 CONSTEXPR uint32_t get_data() const
14333 {
14334 return static_cast<uint32_t>(data);
14335 }
14336 CONSTEXPR npu_set_ifm_base0_t &set_data(uint32_t value)
14337 {
14338 data = static_cast<uint32_t>(value);
14339 return *this;
14340 }
14341 CONSTEXPR uint32_t get_payload_size() const
14342 {
14343 return static_cast<uint32_t>(payload_size);
14344 }
14345 CONSTEXPR npu_set_ifm_base0_t &set_payload_size(uint32_t value)
14346 {
14347 payload_size = static_cast<uint32_t>(value);
14348 return *this;
14349 }
14350#endif //__cplusplus
14351};
14352
14353// Set IFM base address (top right tile)
14354struct npu_set_ifm_base1_t
14355{
14356 uint32_t cmd_code : 10; // NPU_SET_IFM_BASE1
14357 uint32_t must_be_zero : 4; // 0
14358 uint32_t payload_size : 2; // Min:1 Max:2
14359 uint32_t reserved0 : 16;
14360 uint32_t data : 32; // IFM base address (top right tile)
14361#ifdef __cplusplus
14362 CONSTEXPR bool valid() const
14363 {
14364 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE1) && must_be_zero == 0 && payload_size >= 1 &&
14365 payload_size <= 2;
14366 }
14367 CONSTEXPR void init()
14368 {
14369 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE1);
14370 must_be_zero = 0;
14371 payload_size = 1;
14372 }
14373 CONSTEXPR ::cmd1 get_cmd_code() const
14374 {
14375 return static_cast<::cmd1>(cmd_code);
14376 }
14377 CONSTEXPR npu_set_ifm_base1_t &set_cmd_code(::cmd1 value)
14378 {
14379 cmd_code = static_cast<uint32_t>(value);
14380 return *this;
14381 }
14382 CONSTEXPR uint32_t get_data() const
14383 {
14384 return static_cast<uint32_t>(data);
14385 }
14386 CONSTEXPR npu_set_ifm_base1_t &set_data(uint32_t value)
14387 {
14388 data = static_cast<uint32_t>(value);
14389 return *this;
14390 }
14391 CONSTEXPR uint32_t get_payload_size() const
14392 {
14393 return static_cast<uint32_t>(payload_size);
14394 }
14395 CONSTEXPR npu_set_ifm_base1_t &set_payload_size(uint32_t value)
14396 {
14397 payload_size = static_cast<uint32_t>(value);
14398 return *this;
14399 }
14400#endif //__cplusplus
14401};
14402
14403// Set IFM base address (bottom left tile)
14404struct npu_set_ifm_base2_t
14405{
14406 uint32_t cmd_code : 10; // NPU_SET_IFM_BASE2
14407 uint32_t must_be_zero : 4; // 0
14408 uint32_t payload_size : 2; // Min:1 Max:2
14409 uint32_t reserved0 : 16;
14410 uint32_t data : 32; // IFM base address (bottom left tile)
14411#ifdef __cplusplus
14412 CONSTEXPR bool valid() const
14413 {
14414 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE2) && must_be_zero == 0 && payload_size >= 1 &&
14415 payload_size <= 2;
14416 }
14417 CONSTEXPR void init()
14418 {
14419 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE2);
14420 must_be_zero = 0;
14421 payload_size = 1;
14422 }
14423 CONSTEXPR ::cmd1 get_cmd_code() const
14424 {
14425 return static_cast<::cmd1>(cmd_code);
14426 }
14427 CONSTEXPR npu_set_ifm_base2_t &set_cmd_code(::cmd1 value)
14428 {
14429 cmd_code = static_cast<uint32_t>(value);
14430 return *this;
14431 }
14432 CONSTEXPR uint32_t get_data() const
14433 {
14434 return static_cast<uint32_t>(data);
14435 }
14436 CONSTEXPR npu_set_ifm_base2_t &set_data(uint32_t value)
14437 {
14438 data = static_cast<uint32_t>(value);
14439 return *this;
14440 }
14441 CONSTEXPR uint32_t get_payload_size() const
14442 {
14443 return static_cast<uint32_t>(payload_size);
14444 }
14445 CONSTEXPR npu_set_ifm_base2_t &set_payload_size(uint32_t value)
14446 {
14447 payload_size = static_cast<uint32_t>(value);
14448 return *this;
14449 }
14450#endif //__cplusplus
14451};
14452
14453// Set IFM base address (bottom right tile)
14454struct npu_set_ifm_base3_t
14455{
14456 uint32_t cmd_code : 10; // NPU_SET_IFM_BASE3
14457 uint32_t must_be_zero : 4; // 0
14458 uint32_t payload_size : 2; // Min:1 Max:2
14459 uint32_t reserved0 : 16;
14460 uint32_t data : 32; // IFM base address (bottom right tile)
14461#ifdef __cplusplus
14462 CONSTEXPR bool valid() const
14463 {
14464 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE3) && must_be_zero == 0 && payload_size >= 1 &&
14465 payload_size <= 2;
14466 }
14467 CONSTEXPR void init()
14468 {
14469 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_BASE3);
14470 must_be_zero = 0;
14471 payload_size = 1;
14472 }
14473 CONSTEXPR ::cmd1 get_cmd_code() const
14474 {
14475 return static_cast<::cmd1>(cmd_code);
14476 }
14477 CONSTEXPR npu_set_ifm_base3_t &set_cmd_code(::cmd1 value)
14478 {
14479 cmd_code = static_cast<uint32_t>(value);
14480 return *this;
14481 }
14482 CONSTEXPR uint32_t get_data() const
14483 {
14484 return static_cast<uint32_t>(data);
14485 }
14486 CONSTEXPR npu_set_ifm_base3_t &set_data(uint32_t value)
14487 {
14488 data = static_cast<uint32_t>(value);
14489 return *this;
14490 }
14491 CONSTEXPR uint32_t get_payload_size() const
14492 {
14493 return static_cast<uint32_t>(payload_size);
14494 }
14495 CONSTEXPR npu_set_ifm_base3_t &set_payload_size(uint32_t value)
14496 {
14497 payload_size = static_cast<uint32_t>(value);
14498 return *this;
14499 }
14500#endif //__cplusplus
14501};
14502
14503// Set IFM byte stride between horizontal values
14504struct npu_set_ifm_stride_x_t
14505{
14506 uint32_t cmd_code : 10; // NPU_SET_IFM_STRIDE_X
14507 uint32_t must_be_zero : 4; // 0
14508 uint32_t payload_size : 2; // Min:1 Max:2
14509 uint32_t reserved0 : 16;
14510 uint32_t data : 32; // IFM byte stride between horizontal values
14511#ifdef __cplusplus
14512 CONSTEXPR bool valid() const
14513 {
14514 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_STRIDE_X) && must_be_zero == 0 &&
14515 payload_size >= 1 && payload_size <= 2;
14516 }
14517 CONSTEXPR void init()
14518 {
14519 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_STRIDE_X);
14520 must_be_zero = 0;
14521 payload_size = 1;
14522 }
14523 CONSTEXPR ::cmd1 get_cmd_code() const
14524 {
14525 return static_cast<::cmd1>(cmd_code);
14526 }
14527 CONSTEXPR npu_set_ifm_stride_x_t &set_cmd_code(::cmd1 value)
14528 {
14529 cmd_code = static_cast<uint32_t>(value);
14530 return *this;
14531 }
14532 CONSTEXPR uint32_t get_data() const
14533 {
14534 return static_cast<uint32_t>(data);
14535 }
14536 CONSTEXPR npu_set_ifm_stride_x_t &set_data(uint32_t value)
14537 {
14538 data = static_cast<uint32_t>(value);
14539 return *this;
14540 }
14541 CONSTEXPR uint32_t get_payload_size() const
14542 {
14543 return static_cast<uint32_t>(payload_size);
14544 }
14545 CONSTEXPR npu_set_ifm_stride_x_t &set_payload_size(uint32_t value)
14546 {
14547 payload_size = static_cast<uint32_t>(value);
14548 return *this;
14549 }
14550#endif //__cplusplus
14551};
14552
14553// Set IFM byte stride between vertical values
14554struct npu_set_ifm_stride_y_t
14555{
14556 uint32_t cmd_code : 10; // NPU_SET_IFM_STRIDE_Y
14557 uint32_t must_be_zero : 4; // 0
14558 uint32_t payload_size : 2; // Min:1 Max:2
14559 uint32_t reserved0 : 16;
14560 uint32_t data : 32; // IFM byte stride between vertical values
14561#ifdef __cplusplus
14562 CONSTEXPR bool valid() const
14563 {
14564 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_STRIDE_Y) && must_be_zero == 0 &&
14565 payload_size >= 1 && payload_size <= 2;
14566 }
14567 CONSTEXPR void init()
14568 {
14569 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_STRIDE_Y);
14570 must_be_zero = 0;
14571 payload_size = 1;
14572 }
14573 CONSTEXPR ::cmd1 get_cmd_code() const
14574 {
14575 return static_cast<::cmd1>(cmd_code);
14576 }
14577 CONSTEXPR npu_set_ifm_stride_y_t &set_cmd_code(::cmd1 value)
14578 {
14579 cmd_code = static_cast<uint32_t>(value);
14580 return *this;
14581 }
14582 CONSTEXPR uint32_t get_data() const
14583 {
14584 return static_cast<uint32_t>(data);
14585 }
14586 CONSTEXPR npu_set_ifm_stride_y_t &set_data(uint32_t value)
14587 {
14588 data = static_cast<uint32_t>(value);
14589 return *this;
14590 }
14591 CONSTEXPR uint32_t get_payload_size() const
14592 {
14593 return static_cast<uint32_t>(payload_size);
14594 }
14595 CONSTEXPR npu_set_ifm_stride_y_t &set_payload_size(uint32_t value)
14596 {
14597 payload_size = static_cast<uint32_t>(value);
14598 return *this;
14599 }
14600#endif //__cplusplus
14601};
14602
14603// Set IFM byte stride between channel blocks (of 16 bytes each block)
14604struct npu_set_ifm_stride_c_t
14605{
14606 uint32_t cmd_code : 10; // NPU_SET_IFM_STRIDE_C
14607 uint32_t must_be_zero : 4; // 0
14608 uint32_t payload_size : 2; // Min:1 Max:2
14609 uint32_t reserved0 : 16;
14610 uint32_t data : 32; // IFM byte stride between channel blocks (of 16 bytes each block)
14611#ifdef __cplusplus
14612 CONSTEXPR bool valid() const
14613 {
14614 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM_STRIDE_C) && must_be_zero == 0 &&
14615 payload_size >= 1 && payload_size <= 2;
14616 }
14617 CONSTEXPR void init()
14618 {
14619 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM_STRIDE_C);
14620 must_be_zero = 0;
14621 payload_size = 1;
14622 }
14623 CONSTEXPR ::cmd1 get_cmd_code() const
14624 {
14625 return static_cast<::cmd1>(cmd_code);
14626 }
14627 CONSTEXPR npu_set_ifm_stride_c_t &set_cmd_code(::cmd1 value)
14628 {
14629 cmd_code = static_cast<uint32_t>(value);
14630 return *this;
14631 }
14632 CONSTEXPR uint32_t get_data() const
14633 {
14634 return static_cast<uint32_t>(data);
14635 }
14636 CONSTEXPR npu_set_ifm_stride_c_t &set_data(uint32_t value)
14637 {
14638 data = static_cast<uint32_t>(value);
14639 return *this;
14640 }
14641 CONSTEXPR uint32_t get_payload_size() const
14642 {
14643 return static_cast<uint32_t>(payload_size);
14644 }
14645 CONSTEXPR npu_set_ifm_stride_c_t &set_payload_size(uint32_t value)
14646 {
14647 payload_size = static_cast<uint32_t>(value);
14648 return *this;
14649 }
14650#endif //__cplusplus
14651};
14652
14653// Set OFM base address (top left tile)
14654struct npu_set_ofm_base0_t
14655{
14656 uint32_t cmd_code : 10; // NPU_SET_OFM_BASE0
14657 uint32_t must_be_zero : 4; // 0
14658 uint32_t payload_size : 2; // Min:1 Max:2
14659 uint32_t reserved0 : 16;
14660 uint32_t data : 32; // OFM base address (top left tile)
14661#ifdef __cplusplus
14662 CONSTEXPR bool valid() const
14663 {
14664 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE0) && must_be_zero == 0 && payload_size >= 1 &&
14665 payload_size <= 2;
14666 }
14667 CONSTEXPR void init()
14668 {
14669 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE0);
14670 must_be_zero = 0;
14671 payload_size = 1;
14672 }
14673 CONSTEXPR ::cmd1 get_cmd_code() const
14674 {
14675 return static_cast<::cmd1>(cmd_code);
14676 }
14677 CONSTEXPR npu_set_ofm_base0_t &set_cmd_code(::cmd1 value)
14678 {
14679 cmd_code = static_cast<uint32_t>(value);
14680 return *this;
14681 }
14682 CONSTEXPR uint32_t get_data() const
14683 {
14684 return static_cast<uint32_t>(data);
14685 }
14686 CONSTEXPR npu_set_ofm_base0_t &set_data(uint32_t value)
14687 {
14688 data = static_cast<uint32_t>(value);
14689 return *this;
14690 }
14691 CONSTEXPR uint32_t get_payload_size() const
14692 {
14693 return static_cast<uint32_t>(payload_size);
14694 }
14695 CONSTEXPR npu_set_ofm_base0_t &set_payload_size(uint32_t value)
14696 {
14697 payload_size = static_cast<uint32_t>(value);
14698 return *this;
14699 }
14700#endif //__cplusplus
14701};
14702
14703// Set OFM base address (top right tile)
14704struct npu_set_ofm_base1_t
14705{
14706 uint32_t cmd_code : 10; // NPU_SET_OFM_BASE1
14707 uint32_t must_be_zero : 4; // 0
14708 uint32_t payload_size : 2; // Min:1 Max:2
14709 uint32_t reserved0 : 16;
14710 uint32_t data : 32; // OFM base address (top right tile)
14711#ifdef __cplusplus
14712 CONSTEXPR bool valid() const
14713 {
14714 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE1) && must_be_zero == 0 && payload_size >= 1 &&
14715 payload_size <= 2;
14716 }
14717 CONSTEXPR void init()
14718 {
14719 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE1);
14720 must_be_zero = 0;
14721 payload_size = 1;
14722 }
14723 CONSTEXPR ::cmd1 get_cmd_code() const
14724 {
14725 return static_cast<::cmd1>(cmd_code);
14726 }
14727 CONSTEXPR npu_set_ofm_base1_t &set_cmd_code(::cmd1 value)
14728 {
14729 cmd_code = static_cast<uint32_t>(value);
14730 return *this;
14731 }
14732 CONSTEXPR uint32_t get_data() const
14733 {
14734 return static_cast<uint32_t>(data);
14735 }
14736 CONSTEXPR npu_set_ofm_base1_t &set_data(uint32_t value)
14737 {
14738 data = static_cast<uint32_t>(value);
14739 return *this;
14740 }
14741 CONSTEXPR uint32_t get_payload_size() const
14742 {
14743 return static_cast<uint32_t>(payload_size);
14744 }
14745 CONSTEXPR npu_set_ofm_base1_t &set_payload_size(uint32_t value)
14746 {
14747 payload_size = static_cast<uint32_t>(value);
14748 return *this;
14749 }
14750#endif //__cplusplus
14751};
14752
14753// Set OFM base address (bottom left tile)
14754struct npu_set_ofm_base2_t
14755{
14756 uint32_t cmd_code : 10; // NPU_SET_OFM_BASE2
14757 uint32_t must_be_zero : 4; // 0
14758 uint32_t payload_size : 2; // Min:1 Max:2
14759 uint32_t reserved0 : 16;
14760 uint32_t data : 32; // OFM base address (bottom left tile)
14761#ifdef __cplusplus
14762 CONSTEXPR bool valid() const
14763 {
14764 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE2) && must_be_zero == 0 && payload_size >= 1 &&
14765 payload_size <= 2;
14766 }
14767 CONSTEXPR void init()
14768 {
14769 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE2);
14770 must_be_zero = 0;
14771 payload_size = 1;
14772 }
14773 CONSTEXPR ::cmd1 get_cmd_code() const
14774 {
14775 return static_cast<::cmd1>(cmd_code);
14776 }
14777 CONSTEXPR npu_set_ofm_base2_t &set_cmd_code(::cmd1 value)
14778 {
14779 cmd_code = static_cast<uint32_t>(value);
14780 return *this;
14781 }
14782 CONSTEXPR uint32_t get_data() const
14783 {
14784 return static_cast<uint32_t>(data);
14785 }
14786 CONSTEXPR npu_set_ofm_base2_t &set_data(uint32_t value)
14787 {
14788 data = static_cast<uint32_t>(value);
14789 return *this;
14790 }
14791 CONSTEXPR uint32_t get_payload_size() const
14792 {
14793 return static_cast<uint32_t>(payload_size);
14794 }
14795 CONSTEXPR npu_set_ofm_base2_t &set_payload_size(uint32_t value)
14796 {
14797 payload_size = static_cast<uint32_t>(value);
14798 return *this;
14799 }
14800#endif //__cplusplus
14801};
14802
14803// Set OFM base address (bottom right tile)
14804struct npu_set_ofm_base3_t
14805{
14806 uint32_t cmd_code : 10; // NPU_SET_OFM_BASE3
14807 uint32_t must_be_zero : 4; // 0
14808 uint32_t payload_size : 2; // Min:1 Max:2
14809 uint32_t reserved0 : 16;
14810 uint32_t data : 32; // OFM base address (bottom right tile)
14811#ifdef __cplusplus
14812 CONSTEXPR bool valid() const
14813 {
14814 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE3) && must_be_zero == 0 && payload_size >= 1 &&
14815 payload_size <= 2;
14816 }
14817 CONSTEXPR void init()
14818 {
14819 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_BASE3);
14820 must_be_zero = 0;
14821 payload_size = 1;
14822 }
14823 CONSTEXPR ::cmd1 get_cmd_code() const
14824 {
14825 return static_cast<::cmd1>(cmd_code);
14826 }
14827 CONSTEXPR npu_set_ofm_base3_t &set_cmd_code(::cmd1 value)
14828 {
14829 cmd_code = static_cast<uint32_t>(value);
14830 return *this;
14831 }
14832 CONSTEXPR uint32_t get_data() const
14833 {
14834 return static_cast<uint32_t>(data);
14835 }
14836 CONSTEXPR npu_set_ofm_base3_t &set_data(uint32_t value)
14837 {
14838 data = static_cast<uint32_t>(value);
14839 return *this;
14840 }
14841 CONSTEXPR uint32_t get_payload_size() const
14842 {
14843 return static_cast<uint32_t>(payload_size);
14844 }
14845 CONSTEXPR npu_set_ofm_base3_t &set_payload_size(uint32_t value)
14846 {
14847 payload_size = static_cast<uint32_t>(value);
14848 return *this;
14849 }
14850#endif //__cplusplus
14851};
14852
14853// Set OFM byte stride between horizontal values
14854struct npu_set_ofm_stride_x_t
14855{
14856 uint32_t cmd_code : 10; // NPU_SET_OFM_STRIDE_X
14857 uint32_t must_be_zero : 4; // 0
14858 uint32_t payload_size : 2; // Min:1 Max:2
14859 uint32_t reserved0 : 16;
14860 uint32_t data : 32; // OFM byte stride between horizontal values
14861#ifdef __cplusplus
14862 CONSTEXPR bool valid() const
14863 {
14864 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_STRIDE_X) && must_be_zero == 0 &&
14865 payload_size >= 1 && payload_size <= 2;
14866 }
14867 CONSTEXPR void init()
14868 {
14869 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_STRIDE_X);
14870 must_be_zero = 0;
14871 payload_size = 1;
14872 }
14873 CONSTEXPR ::cmd1 get_cmd_code() const
14874 {
14875 return static_cast<::cmd1>(cmd_code);
14876 }
14877 CONSTEXPR npu_set_ofm_stride_x_t &set_cmd_code(::cmd1 value)
14878 {
14879 cmd_code = static_cast<uint32_t>(value);
14880 return *this;
14881 }
14882 CONSTEXPR uint32_t get_data() const
14883 {
14884 return static_cast<uint32_t>(data);
14885 }
14886 CONSTEXPR npu_set_ofm_stride_x_t &set_data(uint32_t value)
14887 {
14888 data = static_cast<uint32_t>(value);
14889 return *this;
14890 }
14891 CONSTEXPR uint32_t get_payload_size() const
14892 {
14893 return static_cast<uint32_t>(payload_size);
14894 }
14895 CONSTEXPR npu_set_ofm_stride_x_t &set_payload_size(uint32_t value)
14896 {
14897 payload_size = static_cast<uint32_t>(value);
14898 return *this;
14899 }
14900#endif //__cplusplus
14901};
14902
14903// Set OFM byte stride between vertical values
14904struct npu_set_ofm_stride_y_t
14905{
14906 uint32_t cmd_code : 10; // NPU_SET_OFM_STRIDE_Y
14907 uint32_t must_be_zero : 4; // 0
14908 uint32_t payload_size : 2; // Min:1 Max:2
14909 uint32_t reserved0 : 16;
14910 uint32_t data : 32; // OFM byte stride between vertical values
14911#ifdef __cplusplus
14912 CONSTEXPR bool valid() const
14913 {
14914 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_STRIDE_Y) && must_be_zero == 0 &&
14915 payload_size >= 1 && payload_size <= 2;
14916 }
14917 CONSTEXPR void init()
14918 {
14919 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_STRIDE_Y);
14920 must_be_zero = 0;
14921 payload_size = 1;
14922 }
14923 CONSTEXPR ::cmd1 get_cmd_code() const
14924 {
14925 return static_cast<::cmd1>(cmd_code);
14926 }
14927 CONSTEXPR npu_set_ofm_stride_y_t &set_cmd_code(::cmd1 value)
14928 {
14929 cmd_code = static_cast<uint32_t>(value);
14930 return *this;
14931 }
14932 CONSTEXPR uint32_t get_data() const
14933 {
14934 return static_cast<uint32_t>(data);
14935 }
14936 CONSTEXPR npu_set_ofm_stride_y_t &set_data(uint32_t value)
14937 {
14938 data = static_cast<uint32_t>(value);
14939 return *this;
14940 }
14941 CONSTEXPR uint32_t get_payload_size() const
14942 {
14943 return static_cast<uint32_t>(payload_size);
14944 }
14945 CONSTEXPR npu_set_ofm_stride_y_t &set_payload_size(uint32_t value)
14946 {
14947 payload_size = static_cast<uint32_t>(value);
14948 return *this;
14949 }
14950#endif //__cplusplus
14951};
14952
14953// Set OFM byte stride between channel blocks (of 16 bytes each block)
14954struct npu_set_ofm_stride_c_t
14955{
14956 uint32_t cmd_code : 10; // NPU_SET_OFM_STRIDE_C
14957 uint32_t must_be_zero : 4; // 0
14958 uint32_t payload_size : 2; // Min:1 Max:2
14959 uint32_t reserved0 : 16;
14960 uint32_t data : 32; // OFM byte stride between channel blocks (of 16 bytes each block)
14961#ifdef __cplusplus
14962 CONSTEXPR bool valid() const
14963 {
14964 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_STRIDE_C) && must_be_zero == 0 &&
14965 payload_size >= 1 && payload_size <= 2;
14966 }
14967 CONSTEXPR void init()
14968 {
14969 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_STRIDE_C);
14970 must_be_zero = 0;
14971 payload_size = 1;
14972 }
14973 CONSTEXPR ::cmd1 get_cmd_code() const
14974 {
14975 return static_cast<::cmd1>(cmd_code);
14976 }
14977 CONSTEXPR npu_set_ofm_stride_c_t &set_cmd_code(::cmd1 value)
14978 {
14979 cmd_code = static_cast<uint32_t>(value);
14980 return *this;
14981 }
14982 CONSTEXPR uint32_t get_data() const
14983 {
14984 return static_cast<uint32_t>(data);
14985 }
14986 CONSTEXPR npu_set_ofm_stride_c_t &set_data(uint32_t value)
14987 {
14988 data = static_cast<uint32_t>(value);
14989 return *this;
14990 }
14991 CONSTEXPR uint32_t get_payload_size() const
14992 {
14993 return static_cast<uint32_t>(payload_size);
14994 }
14995 CONSTEXPR npu_set_ofm_stride_c_t &set_payload_size(uint32_t value)
14996 {
14997 payload_size = static_cast<uint32_t>(value);
14998 return *this;
14999 }
15000#endif //__cplusplus
15001};
15002
15003// Set Weight stream input base address
15004struct npu_set_weight_base_t
15005{
15006 uint32_t cmd_code : 10; // NPU_SET_WEIGHT_BASE
15007 uint32_t must_be_zero : 4; // 0
15008 uint32_t payload_size : 2; // Min:1 Max:2
15009 uint32_t reserved0 : 16;
15010 uint32_t data : 32; // Weight stream input base address
15011#ifdef __cplusplus
15012 CONSTEXPR bool valid() const
15013 {
15014 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT_BASE) && must_be_zero == 0 && payload_size >= 1 &&
15015 payload_size <= 2;
15016 }
15017 CONSTEXPR void init()
15018 {
15019 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT_BASE);
15020 must_be_zero = 0;
15021 payload_size = 1;
15022 }
15023 CONSTEXPR ::cmd1 get_cmd_code() const
15024 {
15025 return static_cast<::cmd1>(cmd_code);
15026 }
15027 CONSTEXPR npu_set_weight_base_t &set_cmd_code(::cmd1 value)
15028 {
15029 cmd_code = static_cast<uint32_t>(value);
15030 return *this;
15031 }
15032 CONSTEXPR uint32_t get_data() const
15033 {
15034 return static_cast<uint32_t>(data);
15035 }
15036 CONSTEXPR npu_set_weight_base_t &set_data(uint32_t value)
15037 {
15038 data = static_cast<uint32_t>(value);
15039 return *this;
15040 }
15041 CONSTEXPR uint32_t get_payload_size() const
15042 {
15043 return static_cast<uint32_t>(payload_size);
15044 }
15045 CONSTEXPR npu_set_weight_base_t &set_payload_size(uint32_t value)
15046 {
15047 payload_size = static_cast<uint32_t>(value);
15048 return *this;
15049 }
15050#endif //__cplusplus
15051};
15052
15053// Set Weight stream length
15054struct npu_set_weight_length_t
15055{
15056 uint32_t cmd_code : 10; // NPU_SET_WEIGHT_LENGTH
15057 uint32_t must_be_zero : 4; // 0
15058 uint32_t payload_size : 2; // Min:1 Max:2
15059 uint32_t reserved0 : 16;
15060 uint32_t data : 32; // Weight stream length
15061#ifdef __cplusplus
15062 CONSTEXPR bool valid() const
15063 {
15064 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT_LENGTH) && must_be_zero == 0 &&
15065 payload_size >= 1 && payload_size <= 2;
15066 }
15067 CONSTEXPR void init()
15068 {
15069 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT_LENGTH);
15070 must_be_zero = 0;
15071 payload_size = 1;
15072 }
15073 CONSTEXPR ::cmd1 get_cmd_code() const
15074 {
15075 return static_cast<::cmd1>(cmd_code);
15076 }
15077 CONSTEXPR npu_set_weight_length_t &set_cmd_code(::cmd1 value)
15078 {
15079 cmd_code = static_cast<uint32_t>(value);
15080 return *this;
15081 }
15082 CONSTEXPR uint32_t get_data() const
15083 {
15084 return static_cast<uint32_t>(data);
15085 }
15086 CONSTEXPR npu_set_weight_length_t &set_data(uint32_t value)
15087 {
15088 data = static_cast<uint32_t>(value);
15089 return *this;
15090 }
15091 CONSTEXPR uint32_t get_payload_size() const
15092 {
15093 return static_cast<uint32_t>(payload_size);
15094 }
15095 CONSTEXPR npu_set_weight_length_t &set_payload_size(uint32_t value)
15096 {
15097 payload_size = static_cast<uint32_t>(value);
15098 return *this;
15099 }
15100#endif //__cplusplus
15101};
15102
15103// Set Scale and bias stream input base address
15104struct npu_set_scale_base_t
15105{
15106 uint32_t cmd_code : 10; // NPU_SET_SCALE_BASE
15107 uint32_t must_be_zero : 4; // 0
15108 uint32_t payload_size : 2; // Min:1 Max:2
15109 uint32_t reserved0 : 16;
15110 uint32_t data : 32; // Scale and bias stream input base address
15111#ifdef __cplusplus
15112 CONSTEXPR bool valid() const
15113 {
15114 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_SCALE_BASE) && must_be_zero == 0 && payload_size >= 1 &&
15115 payload_size <= 2;
15116 }
15117 CONSTEXPR void init()
15118 {
15119 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_SCALE_BASE);
15120 must_be_zero = 0;
15121 payload_size = 1;
15122 }
15123 CONSTEXPR ::cmd1 get_cmd_code() const
15124 {
15125 return static_cast<::cmd1>(cmd_code);
15126 }
15127 CONSTEXPR npu_set_scale_base_t &set_cmd_code(::cmd1 value)
15128 {
15129 cmd_code = static_cast<uint32_t>(value);
15130 return *this;
15131 }
15132 CONSTEXPR uint32_t get_data() const
15133 {
15134 return static_cast<uint32_t>(data);
15135 }
15136 CONSTEXPR npu_set_scale_base_t &set_data(uint32_t value)
15137 {
15138 data = static_cast<uint32_t>(value);
15139 return *this;
15140 }
15141 CONSTEXPR uint32_t get_payload_size() const
15142 {
15143 return static_cast<uint32_t>(payload_size);
15144 }
15145 CONSTEXPR npu_set_scale_base_t &set_payload_size(uint32_t value)
15146 {
15147 payload_size = static_cast<uint32_t>(value);
15148 return *this;
15149 }
15150#endif //__cplusplus
15151};
15152
15153// Set Scale and bias stream input length
15154struct npu_set_scale_length_t
15155{
15156 uint32_t cmd_code : 10; // NPU_SET_SCALE_LENGTH
15157 uint32_t must_be_zero : 4; // 0
15158 uint32_t payload_size : 2; // Min:1 Max:2
15159 uint32_t reserved0 : 16;
15160 uint32_t data : 32; // Scale and bias stream input length
15161#ifdef __cplusplus
15162 CONSTEXPR bool valid() const
15163 {
15164 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_SCALE_LENGTH) && must_be_zero == 0 &&
15165 payload_size >= 1 && payload_size <= 2;
15166 }
15167 CONSTEXPR void init()
15168 {
15169 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_SCALE_LENGTH);
15170 must_be_zero = 0;
15171 payload_size = 1;
15172 }
15173 CONSTEXPR ::cmd1 get_cmd_code() const
15174 {
15175 return static_cast<::cmd1>(cmd_code);
15176 }
15177 CONSTEXPR npu_set_scale_length_t &set_cmd_code(::cmd1 value)
15178 {
15179 cmd_code = static_cast<uint32_t>(value);
15180 return *this;
15181 }
15182 CONSTEXPR uint32_t get_data() const
15183 {
15184 return static_cast<uint32_t>(data);
15185 }
15186 CONSTEXPR npu_set_scale_length_t &set_data(uint32_t value)
15187 {
15188 data = static_cast<uint32_t>(value);
15189 return *this;
15190 }
15191 CONSTEXPR uint32_t get_payload_size() const
15192 {
15193 return static_cast<uint32_t>(payload_size);
15194 }
15195 CONSTEXPR npu_set_scale_length_t &set_payload_size(uint32_t value)
15196 {
15197 payload_size = static_cast<uint32_t>(value);
15198 return *this;
15199 }
15200#endif //__cplusplus
15201};
15202
15203// Set scale (32-bit). Used by average pool with pad=0, elementwise MUL, ADD, SUB
15204struct npu_set_ofm_scale_t
15205{
15206 uint32_t cmd_code : 10; // NPU_SET_OFM_SCALE
15207 uint32_t must_be_zero : 4; // 0
15208 uint32_t payload_size : 2; // Min:1 Max:2
15209 uint32_t shift : 16;
15210 uint32_t data : 32; // scale (32-bit). Used by average pool with pad=0, elementwise MUL, ADD, SUB
15211#ifdef __cplusplus
15212 CONSTEXPR bool valid() const
15213 {
15214 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OFM_SCALE) && must_be_zero == 0 && payload_size >= 1 &&
15215 payload_size <= 2;
15216 }
15217 CONSTEXPR void init()
15218 {
15219 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OFM_SCALE);
15220 must_be_zero = 0;
15221 payload_size = 1;
15222 }
15223 CONSTEXPR ::cmd1 get_cmd_code() const
15224 {
15225 return static_cast<::cmd1>(cmd_code);
15226 }
15227 CONSTEXPR npu_set_ofm_scale_t &set_cmd_code(::cmd1 value)
15228 {
15229 cmd_code = static_cast<uint32_t>(value);
15230 return *this;
15231 }
15232 CONSTEXPR uint32_t get_data() const
15233 {
15234 return static_cast<uint32_t>(data);
15235 }
15236 CONSTEXPR npu_set_ofm_scale_t &set_data(uint32_t value)
15237 {
15238 data = static_cast<uint32_t>(value);
15239 return *this;
15240 }
15241 CONSTEXPR uint32_t get_payload_size() const
15242 {
15243 return static_cast<uint32_t>(payload_size);
15244 }
15245 CONSTEXPR npu_set_ofm_scale_t &set_payload_size(uint32_t value)
15246 {
15247 payload_size = static_cast<uint32_t>(value);
15248 return *this;
15249 }
15250 CONSTEXPR uint32_t get_shift() const
15251 {
15252 return static_cast<uint32_t>(shift);
15253 }
15254 CONSTEXPR npu_set_ofm_scale_t &set_shift(uint32_t value)
15255 {
15256 shift = static_cast<uint32_t>(value);
15257 return *this;
15258 }
15259#endif //__cplusplus
15260};
15261
15262// Set scale (32-bit) used for elementwise ADD/SUB OPA prescale. If IFM scale mode is 0 then shift is ignored and scale
15263// is 16-bit. If IFM scale mode is 1 or 2 then shift is 6-bit and scale is 32-bit
15264struct npu_set_opa_scale_t
15265{
15266 uint32_t cmd_code : 10; // NPU_SET_OPA_SCALE
15267 uint32_t must_be_zero : 4; // 0
15268 uint32_t payload_size : 2; // Min:1 Max:2
15269 uint32_t shift : 16;
15270 uint32_t
15271 data : 32; // scale (32-bit) used for elementwise ADD/SUB OPA prescale. If IFM scale mode is 0 then shift is
15272 // ignored and scale is 16-bit. If IFM scale mode is 1 or 2 then shift is 6-bit and scale is 32-bit
15273#ifdef __cplusplus
15274 CONSTEXPR bool valid() const
15275 {
15276 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OPA_SCALE) && must_be_zero == 0 && payload_size >= 1 &&
15277 payload_size <= 2;
15278 }
15279 CONSTEXPR void init()
15280 {
15281 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OPA_SCALE);
15282 must_be_zero = 0;
15283 payload_size = 1;
15284 }
15285 CONSTEXPR ::cmd1 get_cmd_code() const
15286 {
15287 return static_cast<::cmd1>(cmd_code);
15288 }
15289 CONSTEXPR npu_set_opa_scale_t &set_cmd_code(::cmd1 value)
15290 {
15291 cmd_code = static_cast<uint32_t>(value);
15292 return *this;
15293 }
15294 CONSTEXPR uint32_t get_data() const
15295 {
15296 return static_cast<uint32_t>(data);
15297 }
15298 CONSTEXPR npu_set_opa_scale_t &set_data(uint32_t value)
15299 {
15300 data = static_cast<uint32_t>(value);
15301 return *this;
15302 }
15303 CONSTEXPR uint32_t get_payload_size() const
15304 {
15305 return static_cast<uint32_t>(payload_size);
15306 }
15307 CONSTEXPR npu_set_opa_scale_t &set_payload_size(uint32_t value)
15308 {
15309 payload_size = static_cast<uint32_t>(value);
15310 return *this;
15311 }
15312 CONSTEXPR uint32_t get_shift() const
15313 {
15314 return static_cast<uint32_t>(shift);
15315 }
15316 CONSTEXPR npu_set_opa_scale_t &set_shift(uint32_t value)
15317 {
15318 shift = static_cast<uint32_t>(value);
15319 return *this;
15320 }
15321#endif //__cplusplus
15322};
15323
15324// Set scale (16-bit) used for elementwise ADD/SUB OPB prescale. If IFM scale mode is 0 then scale is 16-bit. If IFM
15325// scale mode is 1 or 2 then this register is not used
15326struct npu_set_opb_scale_t
15327{
15328 uint32_t cmd_code : 10; // NPU_SET_OPB_SCALE
15329 uint32_t must_be_zero : 4; // 0
15330 uint32_t payload_size : 2; // Min:1 Max:2
15331 uint32_t reserved0 : 16;
15332 uint32_t data : 32; // scale (16-bit) used for elementwise ADD/SUB OPB prescale. If IFM scale mode is 0 then scale
15333 // is 16-bit. If IFM scale mode is 1 or 2 then this register is not used
15334#ifdef __cplusplus
15335 CONSTEXPR bool valid() const
15336 {
15337 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_OPB_SCALE) && must_be_zero == 0 && payload_size >= 1 &&
15338 payload_size <= 2;
15339 }
15340 CONSTEXPR void init()
15341 {
15342 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_OPB_SCALE);
15343 must_be_zero = 0;
15344 payload_size = 1;
15345 }
15346 CONSTEXPR ::cmd1 get_cmd_code() const
15347 {
15348 return static_cast<::cmd1>(cmd_code);
15349 }
15350 CONSTEXPR npu_set_opb_scale_t &set_cmd_code(::cmd1 value)
15351 {
15352 cmd_code = static_cast<uint32_t>(value);
15353 return *this;
15354 }
15355 CONSTEXPR uint32_t get_data() const
15356 {
15357 return static_cast<uint32_t>(data);
15358 }
15359 CONSTEXPR npu_set_opb_scale_t &set_data(uint32_t value)
15360 {
15361 data = static_cast<uint32_t>(value);
15362 return *this;
15363 }
15364 CONSTEXPR uint32_t get_payload_size() const
15365 {
15366 return static_cast<uint32_t>(payload_size);
15367 }
15368 CONSTEXPR npu_set_opb_scale_t &set_payload_size(uint32_t value)
15369 {
15370 payload_size = static_cast<uint32_t>(value);
15371 return *this;
15372 }
15373#endif //__cplusplus
15374};
15375
15376// Set DMA source address
15377struct npu_set_dma0_src_t
15378{
15379 uint32_t cmd_code : 10; // NPU_SET_DMA0_SRC
15380 uint32_t must_be_zero : 4; // 0
15381 uint32_t payload_size : 2; // Min:1 Max:2
15382 uint32_t reserved0 : 16;
15383 uint32_t data : 32;
15384#ifdef __cplusplus
15385 CONSTEXPR bool valid() const
15386 {
15387 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_DMA0_SRC) && must_be_zero == 0 && payload_size >= 1 &&
15388 payload_size <= 2;
15389 }
15390 CONSTEXPR void init()
15391 {
15392 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_DMA0_SRC);
15393 must_be_zero = 0;
15394 payload_size = 1;
15395 }
15396 CONSTEXPR ::cmd1 get_cmd_code() const
15397 {
15398 return static_cast<::cmd1>(cmd_code);
15399 }
15400 CONSTEXPR npu_set_dma0_src_t &set_cmd_code(::cmd1 value)
15401 {
15402 cmd_code = static_cast<uint32_t>(value);
15403 return *this;
15404 }
15405 CONSTEXPR uint32_t get_data() const
15406 {
15407 return static_cast<uint32_t>(data);
15408 }
15409 CONSTEXPR npu_set_dma0_src_t &set_data(uint32_t value)
15410 {
15411 data = static_cast<uint32_t>(value);
15412 return *this;
15413 }
15414 CONSTEXPR uint32_t get_payload_size() const
15415 {
15416 return static_cast<uint32_t>(payload_size);
15417 }
15418 CONSTEXPR npu_set_dma0_src_t &set_payload_size(uint32_t value)
15419 {
15420 payload_size = static_cast<uint32_t>(value);
15421 return *this;
15422 }
15423#endif //__cplusplus
15424};
15425
15426// Set DMA destination address
15427struct npu_set_dma0_dst_t
15428{
15429 uint32_t cmd_code : 10; // NPU_SET_DMA0_DST
15430 uint32_t must_be_zero : 4; // 0
15431 uint32_t payload_size : 2; // Min:1 Max:2
15432 uint32_t reserved0 : 16;
15433 uint32_t data : 32;
15434#ifdef __cplusplus
15435 CONSTEXPR bool valid() const
15436 {
15437 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_DMA0_DST) && must_be_zero == 0 && payload_size >= 1 &&
15438 payload_size <= 2;
15439 }
15440 CONSTEXPR void init()
15441 {
15442 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_DMA0_DST);
15443 must_be_zero = 0;
15444 payload_size = 1;
15445 }
15446 CONSTEXPR ::cmd1 get_cmd_code() const
15447 {
15448 return static_cast<::cmd1>(cmd_code);
15449 }
15450 CONSTEXPR npu_set_dma0_dst_t &set_cmd_code(::cmd1 value)
15451 {
15452 cmd_code = static_cast<uint32_t>(value);
15453 return *this;
15454 }
15455 CONSTEXPR uint32_t get_data() const
15456 {
15457 return static_cast<uint32_t>(data);
15458 }
15459 CONSTEXPR npu_set_dma0_dst_t &set_data(uint32_t value)
15460 {
15461 data = static_cast<uint32_t>(value);
15462 return *this;
15463 }
15464 CONSTEXPR uint32_t get_payload_size() const
15465 {
15466 return static_cast<uint32_t>(payload_size);
15467 }
15468 CONSTEXPR npu_set_dma0_dst_t &set_payload_size(uint32_t value)
15469 {
15470 payload_size = static_cast<uint32_t>(value);
15471 return *this;
15472 }
15473#endif //__cplusplus
15474};
15475
15476// Set DMA length
15477struct npu_set_dma0_len_t
15478{
15479 uint32_t cmd_code : 10; // NPU_SET_DMA0_LEN
15480 uint32_t must_be_zero : 4; // 0
15481 uint32_t payload_size : 2; // Min:1 Max:2
15482 uint32_t reserved0 : 16;
15483 uint32_t data : 32; // DMA length
15484#ifdef __cplusplus
15485 CONSTEXPR bool valid() const
15486 {
15487 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_DMA0_LEN) && must_be_zero == 0 && payload_size >= 1 &&
15488 payload_size <= 2;
15489 }
15490 CONSTEXPR void init()
15491 {
15492 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_DMA0_LEN);
15493 must_be_zero = 0;
15494 payload_size = 1;
15495 }
15496 CONSTEXPR ::cmd1 get_cmd_code() const
15497 {
15498 return static_cast<::cmd1>(cmd_code);
15499 }
15500 CONSTEXPR npu_set_dma0_len_t &set_cmd_code(::cmd1 value)
15501 {
15502 cmd_code = static_cast<uint32_t>(value);
15503 return *this;
15504 }
15505 CONSTEXPR uint32_t get_data() const
15506 {
15507 return static_cast<uint32_t>(data);
15508 }
15509 CONSTEXPR npu_set_dma0_len_t &set_data(uint32_t value)
15510 {
15511 data = static_cast<uint32_t>(value);
15512 return *this;
15513 }
15514 CONSTEXPR uint32_t get_payload_size() const
15515 {
15516 return static_cast<uint32_t>(payload_size);
15517 }
15518 CONSTEXPR npu_set_dma0_len_t &set_payload_size(uint32_t value)
15519 {
15520 payload_size = static_cast<uint32_t>(value);
15521 return *this;
15522 }
15523#endif //__cplusplus
15524};
15525
15526// Set Byte distance to skip after inner size (2D/3D mode)
15527struct npu_set_dma0_skip0_t
15528{
15529 uint32_t cmd_code : 10; // NPU_SET_DMA0_SKIP0
15530 uint32_t must_be_zero : 4; // 0
15531 uint32_t payload_size : 2; // Min:1 Max:2
15532 uint32_t param : 16;
15533 uint32_t data : 32; // Byte distance to skip after inner size (2D/3D mode)
15534#ifdef __cplusplus
15535 CONSTEXPR bool valid() const
15536 {
15537 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_DMA0_SKIP0) && must_be_zero == 0 && payload_size >= 1 &&
15538 payload_size <= 2;
15539 }
15540 CONSTEXPR void init()
15541 {
15542 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_DMA0_SKIP0);
15543 must_be_zero = 0;
15544 payload_size = 1;
15545 }
15546 CONSTEXPR ::cmd1 get_cmd_code() const
15547 {
15548 return static_cast<::cmd1>(cmd_code);
15549 }
15550 CONSTEXPR npu_set_dma0_skip0_t &set_cmd_code(::cmd1 value)
15551 {
15552 cmd_code = static_cast<uint32_t>(value);
15553 return *this;
15554 }
15555 CONSTEXPR uint32_t get_data() const
15556 {
15557 return static_cast<uint32_t>(data);
15558 }
15559 CONSTEXPR npu_set_dma0_skip0_t &set_data(uint32_t value)
15560 {
15561 data = static_cast<uint32_t>(value);
15562 return *this;
15563 }
15564 CONSTEXPR uint32_t get_param() const
15565 {
15566 return static_cast<uint32_t>(param);
15567 }
15568 CONSTEXPR npu_set_dma0_skip0_t &set_param(uint32_t value)
15569 {
15570 param = static_cast<uint32_t>(value);
15571 return *this;
15572 }
15573 CONSTEXPR uint32_t get_payload_size() const
15574 {
15575 return static_cast<uint32_t>(payload_size);
15576 }
15577 CONSTEXPR npu_set_dma0_skip0_t &set_payload_size(uint32_t value)
15578 {
15579 payload_size = static_cast<uint32_t>(value);
15580 return *this;
15581 }
15582#endif //__cplusplus
15583};
15584
15585// Set Byte distance to skip after outer size (3D mode)
15586struct npu_set_dma0_skip1_t
15587{
15588 uint32_t cmd_code : 10; // NPU_SET_DMA0_SKIP1
15589 uint32_t must_be_zero : 4; // 0
15590 uint32_t payload_size : 2; // Min:1 Max:2
15591 uint32_t param : 16;
15592 uint32_t data : 32; // Byte distance to skip after outer size (3D mode)
15593#ifdef __cplusplus
15594 CONSTEXPR bool valid() const
15595 {
15596 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_DMA0_SKIP1) && must_be_zero == 0 && payload_size >= 1 &&
15597 payload_size <= 2;
15598 }
15599 CONSTEXPR void init()
15600 {
15601 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_DMA0_SKIP1);
15602 must_be_zero = 0;
15603 payload_size = 1;
15604 }
15605 CONSTEXPR ::cmd1 get_cmd_code() const
15606 {
15607 return static_cast<::cmd1>(cmd_code);
15608 }
15609 CONSTEXPR npu_set_dma0_skip1_t &set_cmd_code(::cmd1 value)
15610 {
15611 cmd_code = static_cast<uint32_t>(value);
15612 return *this;
15613 }
15614 CONSTEXPR uint32_t get_data() const
15615 {
15616 return static_cast<uint32_t>(data);
15617 }
15618 CONSTEXPR npu_set_dma0_skip1_t &set_data(uint32_t value)
15619 {
15620 data = static_cast<uint32_t>(value);
15621 return *this;
15622 }
15623 CONSTEXPR uint32_t get_param() const
15624 {
15625 return static_cast<uint32_t>(param);
15626 }
15627 CONSTEXPR npu_set_dma0_skip1_t &set_param(uint32_t value)
15628 {
15629 param = static_cast<uint32_t>(value);
15630 return *this;
15631 }
15632 CONSTEXPR uint32_t get_payload_size() const
15633 {
15634 return static_cast<uint32_t>(payload_size);
15635 }
15636 CONSTEXPR npu_set_dma0_skip1_t &set_payload_size(uint32_t value)
15637 {
15638 payload_size = static_cast<uint32_t>(value);
15639 return *this;
15640 }
15641#endif //__cplusplus
15642};
15643
15644// Set IFM2 tile0 offset (top left tile) from IFM_REGION start
15645struct npu_set_ifm2_base0_t
15646{
15647 uint32_t cmd_code : 10; // NPU_SET_IFM2_BASE0
15648 uint32_t must_be_zero : 4; // 0
15649 uint32_t payload_size : 2; // Min:1 Max:2
15650 uint32_t reserved0 : 16;
15651 uint32_t data : 32; // IFM2 tile0 offset (top left tile) from IFM_REGION start
15652#ifdef __cplusplus
15653 CONSTEXPR bool valid() const
15654 {
15655 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE0) && must_be_zero == 0 && payload_size >= 1 &&
15656 payload_size <= 2;
15657 }
15658 CONSTEXPR void init()
15659 {
15660 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE0);
15661 must_be_zero = 0;
15662 payload_size = 1;
15663 }
15664 CONSTEXPR ::cmd1 get_cmd_code() const
15665 {
15666 return static_cast<::cmd1>(cmd_code);
15667 }
15668 CONSTEXPR npu_set_ifm2_base0_t &set_cmd_code(::cmd1 value)
15669 {
15670 cmd_code = static_cast<uint32_t>(value);
15671 return *this;
15672 }
15673 CONSTEXPR uint32_t get_data() const
15674 {
15675 return static_cast<uint32_t>(data);
15676 }
15677 CONSTEXPR npu_set_ifm2_base0_t &set_data(uint32_t value)
15678 {
15679 data = static_cast<uint32_t>(value);
15680 return *this;
15681 }
15682 CONSTEXPR uint32_t get_payload_size() const
15683 {
15684 return static_cast<uint32_t>(payload_size);
15685 }
15686 CONSTEXPR npu_set_ifm2_base0_t &set_payload_size(uint32_t value)
15687 {
15688 payload_size = static_cast<uint32_t>(value);
15689 return *this;
15690 }
15691#endif //__cplusplus
15692};
15693
15694// Set IFM2 tile1 offset (top right tile) from IFM_REGION start
15695struct npu_set_ifm2_base1_t
15696{
15697 uint32_t cmd_code : 10; // NPU_SET_IFM2_BASE1
15698 uint32_t must_be_zero : 4; // 0
15699 uint32_t payload_size : 2; // Min:1 Max:2
15700 uint32_t reserved0 : 16;
15701 uint32_t data : 32; // IFM2 tile1 offset (top right tile) from IFM_REGION start
15702#ifdef __cplusplus
15703 CONSTEXPR bool valid() const
15704 {
15705 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE1) && must_be_zero == 0 && payload_size >= 1 &&
15706 payload_size <= 2;
15707 }
15708 CONSTEXPR void init()
15709 {
15710 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE1);
15711 must_be_zero = 0;
15712 payload_size = 1;
15713 }
15714 CONSTEXPR ::cmd1 get_cmd_code() const
15715 {
15716 return static_cast<::cmd1>(cmd_code);
15717 }
15718 CONSTEXPR npu_set_ifm2_base1_t &set_cmd_code(::cmd1 value)
15719 {
15720 cmd_code = static_cast<uint32_t>(value);
15721 return *this;
15722 }
15723 CONSTEXPR uint32_t get_data() const
15724 {
15725 return static_cast<uint32_t>(data);
15726 }
15727 CONSTEXPR npu_set_ifm2_base1_t &set_data(uint32_t value)
15728 {
15729 data = static_cast<uint32_t>(value);
15730 return *this;
15731 }
15732 CONSTEXPR uint32_t get_payload_size() const
15733 {
15734 return static_cast<uint32_t>(payload_size);
15735 }
15736 CONSTEXPR npu_set_ifm2_base1_t &set_payload_size(uint32_t value)
15737 {
15738 payload_size = static_cast<uint32_t>(value);
15739 return *this;
15740 }
15741#endif //__cplusplus
15742};
15743
15744// Set IFM2 tile2 offset (bottom left tile) from IFM_REGION start
15745struct npu_set_ifm2_base2_t
15746{
15747 uint32_t cmd_code : 10; // NPU_SET_IFM2_BASE2
15748 uint32_t must_be_zero : 4; // 0
15749 uint32_t payload_size : 2; // Min:1 Max:2
15750 uint32_t reserved0 : 16;
15751 uint32_t data : 32; // IFM2 tile2 offset (bottom left tile) from IFM_REGION start
15752#ifdef __cplusplus
15753 CONSTEXPR bool valid() const
15754 {
15755 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE2) && must_be_zero == 0 && payload_size >= 1 &&
15756 payload_size <= 2;
15757 }
15758 CONSTEXPR void init()
15759 {
15760 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE2);
15761 must_be_zero = 0;
15762 payload_size = 1;
15763 }
15764 CONSTEXPR ::cmd1 get_cmd_code() const
15765 {
15766 return static_cast<::cmd1>(cmd_code);
15767 }
15768 CONSTEXPR npu_set_ifm2_base2_t &set_cmd_code(::cmd1 value)
15769 {
15770 cmd_code = static_cast<uint32_t>(value);
15771 return *this;
15772 }
15773 CONSTEXPR uint32_t get_data() const
15774 {
15775 return static_cast<uint32_t>(data);
15776 }
15777 CONSTEXPR npu_set_ifm2_base2_t &set_data(uint32_t value)
15778 {
15779 data = static_cast<uint32_t>(value);
15780 return *this;
15781 }
15782 CONSTEXPR uint32_t get_payload_size() const
15783 {
15784 return static_cast<uint32_t>(payload_size);
15785 }
15786 CONSTEXPR npu_set_ifm2_base2_t &set_payload_size(uint32_t value)
15787 {
15788 payload_size = static_cast<uint32_t>(value);
15789 return *this;
15790 }
15791#endif //__cplusplus
15792};
15793
15794// Set IFM2 tile3 offset (bottom right tile) from IFM_REGION start
15795struct npu_set_ifm2_base3_t
15796{
15797 uint32_t cmd_code : 10; // NPU_SET_IFM2_BASE3
15798 uint32_t must_be_zero : 4; // 0
15799 uint32_t payload_size : 2; // Min:1 Max:2
15800 uint32_t reserved0 : 16;
15801 uint32_t data : 32; // IFM2 tile3 offset (bottom right tile) from IFM_REGION start
15802#ifdef __cplusplus
15803 CONSTEXPR bool valid() const
15804 {
15805 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE3) && must_be_zero == 0 && payload_size >= 1 &&
15806 payload_size <= 2;
15807 }
15808 CONSTEXPR void init()
15809 {
15810 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_BASE3);
15811 must_be_zero = 0;
15812 payload_size = 1;
15813 }
15814 CONSTEXPR ::cmd1 get_cmd_code() const
15815 {
15816 return static_cast<::cmd1>(cmd_code);
15817 }
15818 CONSTEXPR npu_set_ifm2_base3_t &set_cmd_code(::cmd1 value)
15819 {
15820 cmd_code = static_cast<uint32_t>(value);
15821 return *this;
15822 }
15823 CONSTEXPR uint32_t get_data() const
15824 {
15825 return static_cast<uint32_t>(data);
15826 }
15827 CONSTEXPR npu_set_ifm2_base3_t &set_data(uint32_t value)
15828 {
15829 data = static_cast<uint32_t>(value);
15830 return *this;
15831 }
15832 CONSTEXPR uint32_t get_payload_size() const
15833 {
15834 return static_cast<uint32_t>(payload_size);
15835 }
15836 CONSTEXPR npu_set_ifm2_base3_t &set_payload_size(uint32_t value)
15837 {
15838 payload_size = static_cast<uint32_t>(value);
15839 return *this;
15840 }
15841#endif //__cplusplus
15842};
15843
15844// Set IFM2 byte stride between horizontal values
15845struct npu_set_ifm2_stride_x_t
15846{
15847 uint32_t cmd_code : 10; // NPU_SET_IFM2_STRIDE_X
15848 uint32_t must_be_zero : 4; // 0
15849 uint32_t payload_size : 2; // Min:1 Max:2
15850 uint32_t reserved0 : 16;
15851 uint32_t data : 32; // IFM2 byte stride between horizontal values
15852#ifdef __cplusplus
15853 CONSTEXPR bool valid() const
15854 {
15855 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_STRIDE_X) && must_be_zero == 0 &&
15856 payload_size >= 1 && payload_size <= 2;
15857 }
15858 CONSTEXPR void init()
15859 {
15860 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_STRIDE_X);
15861 must_be_zero = 0;
15862 payload_size = 1;
15863 }
15864 CONSTEXPR ::cmd1 get_cmd_code() const
15865 {
15866 return static_cast<::cmd1>(cmd_code);
15867 }
15868 CONSTEXPR npu_set_ifm2_stride_x_t &set_cmd_code(::cmd1 value)
15869 {
15870 cmd_code = static_cast<uint32_t>(value);
15871 return *this;
15872 }
15873 CONSTEXPR uint32_t get_data() const
15874 {
15875 return static_cast<uint32_t>(data);
15876 }
15877 CONSTEXPR npu_set_ifm2_stride_x_t &set_data(uint32_t value)
15878 {
15879 data = static_cast<uint32_t>(value);
15880 return *this;
15881 }
15882 CONSTEXPR uint32_t get_payload_size() const
15883 {
15884 return static_cast<uint32_t>(payload_size);
15885 }
15886 CONSTEXPR npu_set_ifm2_stride_x_t &set_payload_size(uint32_t value)
15887 {
15888 payload_size = static_cast<uint32_t>(value);
15889 return *this;
15890 }
15891#endif //__cplusplus
15892};
15893
15894// Set IFM2 byte stride between vertical values
15895struct npu_set_ifm2_stride_y_t
15896{
15897 uint32_t cmd_code : 10; // NPU_SET_IFM2_STRIDE_Y
15898 uint32_t must_be_zero : 4; // 0
15899 uint32_t payload_size : 2; // Min:1 Max:2
15900 uint32_t reserved0 : 16;
15901 uint32_t data : 32; // IFM2 byte stride between vertical values
15902#ifdef __cplusplus
15903 CONSTEXPR bool valid() const
15904 {
15905 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_STRIDE_Y) && must_be_zero == 0 &&
15906 payload_size >= 1 && payload_size <= 2;
15907 }
15908 CONSTEXPR void init()
15909 {
15910 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_STRIDE_Y);
15911 must_be_zero = 0;
15912 payload_size = 1;
15913 }
15914 CONSTEXPR ::cmd1 get_cmd_code() const
15915 {
15916 return static_cast<::cmd1>(cmd_code);
15917 }
15918 CONSTEXPR npu_set_ifm2_stride_y_t &set_cmd_code(::cmd1 value)
15919 {
15920 cmd_code = static_cast<uint32_t>(value);
15921 return *this;
15922 }
15923 CONSTEXPR uint32_t get_data() const
15924 {
15925 return static_cast<uint32_t>(data);
15926 }
15927 CONSTEXPR npu_set_ifm2_stride_y_t &set_data(uint32_t value)
15928 {
15929 data = static_cast<uint32_t>(value);
15930 return *this;
15931 }
15932 CONSTEXPR uint32_t get_payload_size() const
15933 {
15934 return static_cast<uint32_t>(payload_size);
15935 }
15936 CONSTEXPR npu_set_ifm2_stride_y_t &set_payload_size(uint32_t value)
15937 {
15938 payload_size = static_cast<uint32_t>(value);
15939 return *this;
15940 }
15941#endif //__cplusplus
15942};
15943
15944// Set IFM2 byte stride between channel blocks (of 16 bytes each block)
15945struct npu_set_ifm2_stride_c_t
15946{
15947 uint32_t cmd_code : 10; // NPU_SET_IFM2_STRIDE_C
15948 uint32_t must_be_zero : 4; // 0
15949 uint32_t payload_size : 2; // Min:1 Max:2
15950 uint32_t reserved0 : 16;
15951 uint32_t data : 32; // IFM2 byte stride between channel blocks (of 16 bytes each block)
15952#ifdef __cplusplus
15953 CONSTEXPR bool valid() const
15954 {
15955 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_IFM2_STRIDE_C) && must_be_zero == 0 &&
15956 payload_size >= 1 && payload_size <= 2;
15957 }
15958 CONSTEXPR void init()
15959 {
15960 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_IFM2_STRIDE_C);
15961 must_be_zero = 0;
15962 payload_size = 1;
15963 }
15964 CONSTEXPR ::cmd1 get_cmd_code() const
15965 {
15966 return static_cast<::cmd1>(cmd_code);
15967 }
15968 CONSTEXPR npu_set_ifm2_stride_c_t &set_cmd_code(::cmd1 value)
15969 {
15970 cmd_code = static_cast<uint32_t>(value);
15971 return *this;
15972 }
15973 CONSTEXPR uint32_t get_data() const
15974 {
15975 return static_cast<uint32_t>(data);
15976 }
15977 CONSTEXPR npu_set_ifm2_stride_c_t &set_data(uint32_t value)
15978 {
15979 data = static_cast<uint32_t>(value);
15980 return *this;
15981 }
15982 CONSTEXPR uint32_t get_payload_size() const
15983 {
15984 return static_cast<uint32_t>(payload_size);
15985 }
15986 CONSTEXPR npu_set_ifm2_stride_c_t &set_payload_size(uint32_t value)
15987 {
15988 payload_size = static_cast<uint32_t>(value);
15989 return *this;
15990 }
15991#endif //__cplusplus
15992};
15993
15994// Set Weight stream byte offset in WEIGHT_REGION
15995struct npu_set_weight1_base_t
15996{
15997 uint32_t cmd_code : 10; // NPU_SET_WEIGHT1_BASE
15998 uint32_t must_be_zero : 4; // 0
15999 uint32_t payload_size : 2; // Min:1 Max:2
16000 uint32_t param : 16;
16001 uint32_t data : 32; // Weight stream byte offset in WEIGHT_REGION
16002#ifdef __cplusplus
16003 CONSTEXPR bool valid() const
16004 {
16005 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT1_BASE) && must_be_zero == 0 &&
16006 payload_size >= 1 && payload_size <= 2;
16007 }
16008 CONSTEXPR void init()
16009 {
16010 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT1_BASE);
16011 must_be_zero = 0;
16012 payload_size = 1;
16013 }
16014 CONSTEXPR ::cmd1 get_cmd_code() const
16015 {
16016 return static_cast<::cmd1>(cmd_code);
16017 }
16018 CONSTEXPR npu_set_weight1_base_t &set_cmd_code(::cmd1 value)
16019 {
16020 cmd_code = static_cast<uint32_t>(value);
16021 return *this;
16022 }
16023 CONSTEXPR uint32_t get_data() const
16024 {
16025 return static_cast<uint32_t>(data);
16026 }
16027 CONSTEXPR npu_set_weight1_base_t &set_data(uint32_t value)
16028 {
16029 data = static_cast<uint32_t>(value);
16030 return *this;
16031 }
16032 CONSTEXPR uint32_t get_param() const
16033 {
16034 return static_cast<uint32_t>(param);
16035 }
16036 CONSTEXPR npu_set_weight1_base_t &set_param(uint32_t value)
16037 {
16038 param = static_cast<uint32_t>(value);
16039 return *this;
16040 }
16041 CONSTEXPR uint32_t get_payload_size() const
16042 {
16043 return static_cast<uint32_t>(payload_size);
16044 }
16045 CONSTEXPR npu_set_weight1_base_t &set_payload_size(uint32_t value)
16046 {
16047 payload_size = static_cast<uint32_t>(value);
16048 return *this;
16049 }
16050#endif //__cplusplus
16051};
16052
16053// Set Weight stream byte length (unsigned 32 bits)
16054struct npu_set_weight1_length_t
16055{
16056 uint32_t cmd_code : 10; // NPU_SET_WEIGHT1_LENGTH
16057 uint32_t must_be_zero : 4; // 0
16058 uint32_t payload_size : 2; // Min:1 Max:2
16059 uint32_t reserved0 : 16;
16060 uint32_t data : 32; // Weight stream byte length (unsigned 32 bits)
16061#ifdef __cplusplus
16062 CONSTEXPR bool valid() const
16063 {
16064 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT1_LENGTH) && must_be_zero == 0 &&
16065 payload_size >= 1 && payload_size <= 2;
16066 }
16067 CONSTEXPR void init()
16068 {
16069 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_WEIGHT1_LENGTH);
16070 must_be_zero = 0;
16071 payload_size = 1;
16072 }
16073 CONSTEXPR ::cmd1 get_cmd_code() const
16074 {
16075 return static_cast<::cmd1>(cmd_code);
16076 }
16077 CONSTEXPR npu_set_weight1_length_t &set_cmd_code(::cmd1 value)
16078 {
16079 cmd_code = static_cast<uint32_t>(value);
16080 return *this;
16081 }
16082 CONSTEXPR uint32_t get_data() const
16083 {
16084 return static_cast<uint32_t>(data);
16085 }
16086 CONSTEXPR npu_set_weight1_length_t &set_data(uint32_t value)
16087 {
16088 data = static_cast<uint32_t>(value);
16089 return *this;
16090 }
16091 CONSTEXPR uint32_t get_payload_size() const
16092 {
16093 return static_cast<uint32_t>(payload_size);
16094 }
16095 CONSTEXPR npu_set_weight1_length_t &set_payload_size(uint32_t value)
16096 {
16097 payload_size = static_cast<uint32_t>(value);
16098 return *this;
16099 }
16100#endif //__cplusplus
16101};
16102
16103// Set Scale and bias stream input byte offset from SCALE_REGION
16104struct npu_set_scale1_base_t
16105{
16106 uint32_t cmd_code : 10; // NPU_SET_SCALE1_BASE
16107 uint32_t must_be_zero : 4; // 0
16108 uint32_t payload_size : 2; // Min:1 Max:2
16109 uint32_t param : 16;
16110 uint32_t data : 32; // Scale and bias stream input byte offset from SCALE_REGION
16111#ifdef __cplusplus
16112 CONSTEXPR bool valid() const
16113 {
16114 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_SCALE1_BASE) && must_be_zero == 0 && payload_size >= 1 &&
16115 payload_size <= 2;
16116 }
16117 CONSTEXPR void init()
16118 {
16119 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_SCALE1_BASE);
16120 must_be_zero = 0;
16121 payload_size = 1;
16122 }
16123 CONSTEXPR ::cmd1 get_cmd_code() const
16124 {
16125 return static_cast<::cmd1>(cmd_code);
16126 }
16127 CONSTEXPR npu_set_scale1_base_t &set_cmd_code(::cmd1 value)
16128 {
16129 cmd_code = static_cast<uint32_t>(value);
16130 return *this;
16131 }
16132 CONSTEXPR uint32_t get_data() const
16133 {
16134 return static_cast<uint32_t>(data);
16135 }
16136 CONSTEXPR npu_set_scale1_base_t &set_data(uint32_t value)
16137 {
16138 data = static_cast<uint32_t>(value);
16139 return *this;
16140 }
16141 CONSTEXPR uint32_t get_param() const
16142 {
16143 return static_cast<uint32_t>(param);
16144 }
16145 CONSTEXPR npu_set_scale1_base_t &set_param(uint32_t value)
16146 {
16147 param = static_cast<uint32_t>(value);
16148 return *this;
16149 }
16150 CONSTEXPR uint32_t get_payload_size() const
16151 {
16152 return static_cast<uint32_t>(payload_size);
16153 }
16154 CONSTEXPR npu_set_scale1_base_t &set_payload_size(uint32_t value)
16155 {
16156 payload_size = static_cast<uint32_t>(value);
16157 return *this;
16158 }
16159#endif //__cplusplus
16160};
16161
16162// Set Scale and bias stream input byte length (unsigned 20 bits)
16163struct npu_set_scale1_length_t
16164{
16165 uint32_t cmd_code : 10; // NPU_SET_SCALE1_LENGTH
16166 uint32_t must_be_zero : 4; // 0
16167 uint32_t payload_size : 2; // Min:1 Max:2
16168 uint32_t reserved0 : 16;
16169 uint32_t data : 32; // Scale and bias stream input byte length (unsigned 20 bits)
16170#ifdef __cplusplus
16171 CONSTEXPR bool valid() const
16172 {
16173 return cmd_code == static_cast<uint32_t>(cmd1::NPU_SET_SCALE1_LENGTH) && must_be_zero == 0 &&
16174 payload_size >= 1 && payload_size <= 2;
16175 }
16176 CONSTEXPR void init()
16177 {
16178 cmd_code = static_cast<uint32_t>(cmd1::NPU_SET_SCALE1_LENGTH);
16179 must_be_zero = 0;
16180 payload_size = 1;
16181 }
16182 CONSTEXPR ::cmd1 get_cmd_code() const
16183 {
16184 return static_cast<::cmd1>(cmd_code);
16185 }
16186 CONSTEXPR npu_set_scale1_length_t &set_cmd_code(::cmd1 value)
16187 {
16188 cmd_code = static_cast<uint32_t>(value);
16189 return *this;
16190 }
16191 CONSTEXPR uint32_t get_data() const
16192 {
16193 return static_cast<uint32_t>(data);
16194 }
16195 CONSTEXPR npu_set_scale1_length_t &set_data(uint32_t value)
16196 {
16197 data = static_cast<uint32_t>(value);
16198 return *this;
16199 }
16200 CONSTEXPR uint32_t get_payload_size() const
16201 {
16202 return static_cast<uint32_t>(payload_size);
16203 }
16204 CONSTEXPR npu_set_scale1_length_t &set_payload_size(uint32_t value)
16205 {
16206 payload_size = static_cast<uint32_t>(value);
16207 return *this;
16208 }
16209#endif //__cplusplus
16210};
16211
16212#define NPU_DATA_STRUCTS \
16213 NPU_STRUCT(command_no_payload) \
16214 NPU_STRUCT(command_with_payload) \
16215 NPU_STRUCT(npu_op_stop) \
16216 NPU_STRUCT(npu_op_irq) \
16217 NPU_STRUCT(npu_op_conv) \
16218 NPU_STRUCT(npu_op_depthwise) \
16219 NPU_STRUCT(npu_op_pool) \
16220 NPU_STRUCT(npu_op_elementwise) \
16221 NPU_STRUCT(npu_op_dma_start) \
16222 NPU_STRUCT(npu_op_dma_wait) \
16223 NPU_STRUCT(npu_op_kernel_wait) \
16224 NPU_STRUCT(npu_op_pmu_mask) \
16225 NPU_STRUCT(npu_set_ifm_pad_top) \
16226 NPU_STRUCT(npu_set_ifm_pad_left) \
16227 NPU_STRUCT(npu_set_ifm_pad_right) \
16228 NPU_STRUCT(npu_set_ifm_pad_bottom) \
16229 NPU_STRUCT(npu_set_ifm_depth_m1) \
16230 NPU_STRUCT(npu_set_ifm_precision) \
16231 NPU_STRUCT(npu_set_ifm_upscale) \
16232 NPU_STRUCT(npu_set_ifm_zero_point) \
16233 NPU_STRUCT(npu_set_ifm_width0_m1) \
16234 NPU_STRUCT(npu_set_ifm_height0_m1) \
16235 NPU_STRUCT(npu_set_ifm_height1_m1) \
16236 NPU_STRUCT(npu_set_ifm_ib_end) \
16237 NPU_STRUCT(npu_set_ifm_region) \
16238 NPU_STRUCT(npu_set_ofm_width_m1) \
16239 NPU_STRUCT(npu_set_ofm_height_m1) \
16240 NPU_STRUCT(npu_set_ofm_depth_m1) \
16241 NPU_STRUCT(npu_set_ofm_precision) \
16242 NPU_STRUCT(npu_set_ofm_blk_width_m1) \
16243 NPU_STRUCT(npu_set_ofm_blk_height_m1) \
16244 NPU_STRUCT(npu_set_ofm_blk_depth_m1) \
16245 NPU_STRUCT(npu_set_ofm_zero_point) \
16246 NPU_STRUCT(npu_set_ofm_width0_m1) \
16247 NPU_STRUCT(npu_set_ofm_height0_m1) \
16248 NPU_STRUCT(npu_set_ofm_height1_m1) \
16249 NPU_STRUCT(npu_set_ofm_region) \
16250 NPU_STRUCT(npu_set_kernel_width_m1) \
16251 NPU_STRUCT(npu_set_kernel_height_m1) \
16252 NPU_STRUCT(npu_set_kernel_stride) \
16253 NPU_STRUCT(npu_set_parallel_mode) \
16254 NPU_STRUCT(npu_set_acc_format) \
16255 NPU_STRUCT(npu_set_activation) \
16256 NPU_STRUCT(npu_set_activation_min) \
16257 NPU_STRUCT(npu_set_activation_max) \
16258 NPU_STRUCT(npu_set_weight_region) \
16259 NPU_STRUCT(npu_set_scale_region) \
16260 NPU_STRUCT(npu_set_ab_start) \
16261 NPU_STRUCT(npu_set_blockdep) \
16262 NPU_STRUCT(npu_set_dma0_src_region) \
16263 NPU_STRUCT(npu_set_dma0_dst_region) \
16264 NPU_STRUCT(npu_set_dma0_size0) \
16265 NPU_STRUCT(npu_set_dma0_size1) \
16266 NPU_STRUCT(npu_set_ifm2_broadcast) \
16267 NPU_STRUCT(npu_set_ifm2_scalar) \
16268 NPU_STRUCT(npu_set_ifm2_precision) \
16269 NPU_STRUCT(npu_set_ifm2_zero_point) \
16270 NPU_STRUCT(npu_set_ifm2_width0_m1) \
16271 NPU_STRUCT(npu_set_ifm2_height0_m1) \
16272 NPU_STRUCT(npu_set_ifm2_height1_m1) \
16273 NPU_STRUCT(npu_set_ifm2_ib_start) \
16274 NPU_STRUCT(npu_set_ifm2_region) \
16275 NPU_STRUCT(npu_set_ifm_base0) \
16276 NPU_STRUCT(npu_set_ifm_base1) \
16277 NPU_STRUCT(npu_set_ifm_base2) \
16278 NPU_STRUCT(npu_set_ifm_base3) \
16279 NPU_STRUCT(npu_set_ifm_stride_x) \
16280 NPU_STRUCT(npu_set_ifm_stride_y) \
16281 NPU_STRUCT(npu_set_ifm_stride_c) \
16282 NPU_STRUCT(npu_set_ofm_base0) \
16283 NPU_STRUCT(npu_set_ofm_base1) \
16284 NPU_STRUCT(npu_set_ofm_base2) \
16285 NPU_STRUCT(npu_set_ofm_base3) \
16286 NPU_STRUCT(npu_set_ofm_stride_x) \
16287 NPU_STRUCT(npu_set_ofm_stride_y) \
16288 NPU_STRUCT(npu_set_ofm_stride_c) \
16289 NPU_STRUCT(npu_set_weight_base) \
16290 NPU_STRUCT(npu_set_weight_length) \
16291 NPU_STRUCT(npu_set_scale_base) \
16292 NPU_STRUCT(npu_set_scale_length) \
16293 NPU_STRUCT(npu_set_ofm_scale) \
16294 NPU_STRUCT(npu_set_opa_scale) \
16295 NPU_STRUCT(npu_set_opb_scale) \
16296 NPU_STRUCT(npu_set_dma0_src) \
16297 NPU_STRUCT(npu_set_dma0_dst) \
16298 NPU_STRUCT(npu_set_dma0_len) \
16299 NPU_STRUCT(npu_set_dma0_skip0) \
16300 NPU_STRUCT(npu_set_dma0_skip1) \
16301 NPU_STRUCT(npu_set_ifm2_base0) \
16302 NPU_STRUCT(npu_set_ifm2_base1) \
16303 NPU_STRUCT(npu_set_ifm2_base2) \
16304 NPU_STRUCT(npu_set_ifm2_base3) \
16305 NPU_STRUCT(npu_set_ifm2_stride_x) \
16306 NPU_STRUCT(npu_set_ifm2_stride_y) \
16307 NPU_STRUCT(npu_set_ifm2_stride_c) \
16308 NPU_STRUCT(npu_set_weight1_base) \
16309 NPU_STRUCT(npu_set_weight1_length) \
16310 NPU_STRUCT(npu_set_scale1_base) \
16311 NPU_STRUCT(npu_set_scale1_length)
16312#define NPU_OP_STRUCTS \
16313 NPU_OP_(stop) \
16314 NPU_OP_(irq) \
16315 NPU_OP_(conv) \
16316 NPU_OP_(depthwise) \
16317 NPU_OP_(pool) \
16318 NPU_OP_(elementwise) \
16319 NPU_OP_(dma_start) \
16320 NPU_OP_(dma_wait) \
16321 NPU_OP_(kernel_wait) \
16322 NPU_OP_(pmu_mask)
16323#define NPU_SET_STRUCTS \
16324 NPU_SET_(ifm_pad_top) \
16325 NPU_SET_(ifm_pad_left) \
16326 NPU_SET_(ifm_pad_right) \
16327 NPU_SET_(ifm_pad_bottom) \
16328 NPU_SET_(ifm_depth_m1) \
16329 NPU_SET_(ifm_precision) \
16330 NPU_SET_(ifm_upscale) \
16331 NPU_SET_(ifm_zero_point) \
16332 NPU_SET_(ifm_width0_m1) \
16333 NPU_SET_(ifm_height0_m1) \
16334 NPU_SET_(ifm_height1_m1) \
16335 NPU_SET_(ifm_ib_end) \
16336 NPU_SET_(ifm_region) \
16337 NPU_SET_(ofm_width_m1) \
16338 NPU_SET_(ofm_height_m1) \
16339 NPU_SET_(ofm_depth_m1) \
16340 NPU_SET_(ofm_precision) \
16341 NPU_SET_(ofm_blk_width_m1) \
16342 NPU_SET_(ofm_blk_height_m1) \
16343 NPU_SET_(ofm_blk_depth_m1) \
16344 NPU_SET_(ofm_zero_point) \
16345 NPU_SET_(ofm_width0_m1) \
16346 NPU_SET_(ofm_height0_m1) \
16347 NPU_SET_(ofm_height1_m1) \
16348 NPU_SET_(ofm_region) \
16349 NPU_SET_(kernel_width_m1) \
16350 NPU_SET_(kernel_height_m1) \
16351 NPU_SET_(kernel_stride) \
16352 NPU_SET_(parallel_mode) \
16353 NPU_SET_(acc_format) \
16354 NPU_SET_(activation) \
16355 NPU_SET_(activation_min) \
16356 NPU_SET_(activation_max) \
16357 NPU_SET_(weight_region) \
16358 NPU_SET_(scale_region) \
16359 NPU_SET_(ab_start) \
16360 NPU_SET_(blockdep) \
16361 NPU_SET_(dma0_src_region) \
16362 NPU_SET_(dma0_dst_region) \
16363 NPU_SET_(dma0_size0) \
16364 NPU_SET_(dma0_size1) \
16365 NPU_SET_(ifm2_broadcast) \
16366 NPU_SET_(ifm2_scalar) \
16367 NPU_SET_(ifm2_precision) \
16368 NPU_SET_(ifm2_zero_point) \
16369 NPU_SET_(ifm2_width0_m1) \
16370 NPU_SET_(ifm2_height0_m1) \
16371 NPU_SET_(ifm2_height1_m1) \
16372 NPU_SET_(ifm2_ib_start) \
16373 NPU_SET_(ifm2_region) \
16374 NPU_SET_(ifm_base0) \
16375 NPU_SET_(ifm_base1) \
16376 NPU_SET_(ifm_base2) \
16377 NPU_SET_(ifm_base3) \
16378 NPU_SET_(ifm_stride_x) \
16379 NPU_SET_(ifm_stride_y) \
16380 NPU_SET_(ifm_stride_c) \
16381 NPU_SET_(ofm_base0) \
16382 NPU_SET_(ofm_base1) \
16383 NPU_SET_(ofm_base2) \
16384 NPU_SET_(ofm_base3) \
16385 NPU_SET_(ofm_stride_x) \
16386 NPU_SET_(ofm_stride_y) \
16387 NPU_SET_(ofm_stride_c) \
16388 NPU_SET_(weight_base) \
16389 NPU_SET_(weight_length) \
16390 NPU_SET_(scale_base) \
16391 NPU_SET_(scale_length) \
16392 NPU_SET_(ofm_scale) \
16393 NPU_SET_(opa_scale) \
16394 NPU_SET_(opb_scale) \
16395 NPU_SET_(dma0_src) \
16396 NPU_SET_(dma0_dst) \
16397 NPU_SET_(dma0_len) \
16398 NPU_SET_(dma0_skip0) \
16399 NPU_SET_(dma0_skip1) \
16400 NPU_SET_(ifm2_base0) \
16401 NPU_SET_(ifm2_base1) \
16402 NPU_SET_(ifm2_base2) \
16403 NPU_SET_(ifm2_base3) \
16404 NPU_SET_(ifm2_stride_x) \
16405 NPU_SET_(ifm2_stride_y) \
16406 NPU_SET_(ifm2_stride_c) \
16407 NPU_SET_(weight1_base) \
16408 NPU_SET_(weight1_length) \
16409 NPU_SET_(scale1_base) \
16410 NPU_SET_(scale1_length)
16411#define COMMAND_STRUCTS \
16412 COMMAND_(no_payload) \
16413 COMMAND_(with_payload)
16414
16415#define EXPAND_ACC_FORMAT(FUNC, SEP) \
16416 FUNC(acc_format, INT_32BIT) SEP FUNC(acc_format, INT_40BIT) SEP FUNC(acc_format, FP_S5_10)
16417
16418#define EXPAND_ACTIVATION(FUNC, SEP) \
16419 FUNC(activation, NONE) \
16420 SEP FUNC(activation, TANH) SEP FUNC(activation, SIGMOID) SEP FUNC(activation, LUT_START) \
16421 SEP FUNC(activation, LUT_END)
16422
16423#define EXPAND_CLIP_RANGE(FUNC, SEP) \
16424 FUNC(clip_range, OFM_PRECISION) \
16425 SEP FUNC(clip_range, FORCE_UINT8) SEP FUNC(clip_range, FORCE_INT8) SEP FUNC(clip_range, FORCE_INT16)
16426
16427#define EXPAND_CMD0(FUNC, SEP) \
16428 FUNC(cmd0, NPU_OP_STOP) \
16429 SEP FUNC(cmd0, NPU_OP_IRQ) SEP FUNC(cmd0, NPU_OP_CONV) SEP FUNC(cmd0, NPU_OP_DEPTHWISE) SEP FUNC( \
16430 cmd0, NPU_OP_POOL) SEP FUNC(cmd0, NPU_OP_ELEMENTWISE) SEP FUNC(cmd0, NPU_OP_DMA_START) \
16431 SEP FUNC(cmd0, NPU_OP_DMA_WAIT) SEP FUNC(cmd0, NPU_OP_KERNEL_WAIT) SEP FUNC(cmd0, NPU_OP_PMU_MASK) SEP FUNC( \
16432 cmd0, NPU_SET_IFM_PAD_TOP) SEP FUNC(cmd0, NPU_SET_IFM_PAD_LEFT) SEP FUNC(cmd0, NPU_SET_IFM_PAD_RIGHT) \
16433 SEP FUNC(cmd0, NPU_SET_IFM_PAD_BOTTOM) SEP FUNC(cmd0, NPU_SET_IFM_DEPTH_M1) SEP FUNC( \
16434 cmd0, NPU_SET_IFM_PRECISION) SEP FUNC(cmd0, NPU_SET_IFM_UPSCALE) \
16435 SEP FUNC(cmd0, NPU_SET_IFM_ZERO_POINT) SEP FUNC(cmd0, NPU_SET_IFM_WIDTH0_M1) SEP FUNC( \
16436 cmd0, NPU_SET_IFM_HEIGHT0_M1) SEP FUNC(cmd0, NPU_SET_IFM_HEIGHT1_M1) SEP FUNC(cmd0, \
16437 NPU_SET_IFM_IB_END) \
16438 SEP FUNC(cmd0, NPU_SET_IFM_REGION) SEP FUNC(cmd0, NPU_SET_OFM_WIDTH_M1) SEP FUNC( \
16439 cmd0, NPU_SET_OFM_HEIGHT_M1) SEP FUNC(cmd0, NPU_SET_OFM_DEPTH_M1) \
16440 SEP FUNC(cmd0, NPU_SET_OFM_PRECISION) SEP FUNC(cmd0, NPU_SET_OFM_BLK_WIDTH_M1) SEP FUNC( \
16441 cmd0, NPU_SET_OFM_BLK_HEIGHT_M1) SEP FUNC(cmd0, NPU_SET_OFM_BLK_DEPTH_M1) \
16442 SEP FUNC(cmd0, NPU_SET_OFM_ZERO_POINT) SEP FUNC(cmd0, NPU_SET_OFM_WIDTH0_M1) SEP FUNC( \
16443 cmd0, NPU_SET_OFM_HEIGHT0_M1) SEP FUNC(cmd0, NPU_SET_OFM_HEIGHT1_M1) \
16444 SEP FUNC(cmd0, NPU_SET_OFM_REGION) SEP FUNC(cmd0, NPU_SET_KERNEL_WIDTH_M1) SEP FUNC( \
16445 cmd0, NPU_SET_KERNEL_HEIGHT_M1) SEP FUNC(cmd0, NPU_SET_KERNEL_STRIDE) \
16446 SEP FUNC(cmd0, NPU_SET_PARALLEL_MODE) SEP FUNC(cmd0, NPU_SET_ACC_FORMAT) SEP FUNC( \
16447 cmd0, NPU_SET_ACTIVATION) SEP FUNC(cmd0, NPU_SET_ACTIVATION_MIN) \
16448 SEP FUNC(cmd0, NPU_SET_ACTIVATION_MAX) SEP FUNC(cmd0, NPU_SET_WEIGHT_REGION) \
16449 SEP FUNC(cmd0, NPU_SET_SCALE_REGION) SEP FUNC(cmd0, NPU_SET_AB_START) \
16450 SEP FUNC(cmd0, \
16451 NPU_SET_BLOCKDEP) SEP FUNC(cmd0, NPU_SET_DMA0_SRC_REGION) \
16452 SEP FUNC(cmd0, NPU_SET_DMA0_DST_REGION) SEP FUNC( \
16453 cmd0, NPU_SET_DMA0_SIZE0) SEP FUNC(cmd0, NPU_SET_DMA0_SIZE1) \
16454 SEP FUNC(cmd0, NPU_SET_IFM2_BROADCAST) \
16455 SEP FUNC(cmd0, NPU_SET_IFM2_SCALAR) \
16456 SEP FUNC(cmd0, NPU_SET_IFM2_PRECISION) SEP FUNC( \
16457 cmd0, NPU_SET_IFM2_ZERO_POINT) \
16458 SEP FUNC(cmd0, NPU_SET_IFM2_WIDTH0_M1) SEP FUNC( \
16459 cmd0, NPU_SET_IFM2_HEIGHT0_M1) \
16460 SEP FUNC(cmd0, NPU_SET_IFM2_HEIGHT1_M1) \
16461 SEP FUNC(cmd0, NPU_SET_IFM2_IB_START) \
16462 SEP FUNC(cmd0, NPU_SET_IFM2_REGION)
16463
16464#define EXPAND_CMD1(FUNC, SEP) \
16465 FUNC(cmd1, NPU_SET_IFM_BASE0) \
16466 SEP FUNC(cmd1, NPU_SET_IFM_BASE1) SEP FUNC(cmd1, NPU_SET_IFM_BASE2) SEP FUNC(cmd1, NPU_SET_IFM_BASE3) \
16467 SEP FUNC(cmd1, NPU_SET_IFM_STRIDE_X) SEP FUNC(cmd1, NPU_SET_IFM_STRIDE_Y) SEP FUNC(cmd1, NPU_SET_IFM_STRIDE_C) \
16468 SEP FUNC(cmd1, NPU_SET_OFM_BASE0) SEP FUNC(cmd1, NPU_SET_OFM_BASE1) SEP FUNC(cmd1, NPU_SET_OFM_BASE2) \
16469 SEP FUNC(cmd1, NPU_SET_OFM_BASE3) SEP FUNC(cmd1, NPU_SET_OFM_STRIDE_X) \
16470 SEP FUNC(cmd1, NPU_SET_OFM_STRIDE_Y) SEP FUNC(cmd1, NPU_SET_OFM_STRIDE_C) \
16471 SEP FUNC(cmd1, NPU_SET_WEIGHT_BASE) SEP FUNC(cmd1, NPU_SET_WEIGHT_LENGTH) \
16472 SEP FUNC(cmd1, NPU_SET_SCALE_BASE) SEP FUNC(cmd1, NPU_SET_SCALE_LENGTH) \
16473 SEP FUNC(cmd1, NPU_SET_OFM_SCALE) SEP FUNC(cmd1, NPU_SET_OPA_SCALE) \
16474 SEP FUNC(cmd1, NPU_SET_OPB_SCALE) SEP FUNC(cmd1, NPU_SET_DMA0_SRC) \
16475 SEP FUNC(cmd1, NPU_SET_DMA0_DST) SEP FUNC(cmd1, NPU_SET_DMA0_LEN) SEP FUNC( \
16476 cmd1, NPU_SET_DMA0_SKIP0) SEP FUNC(cmd1, NPU_SET_DMA0_SKIP1) \
16477 SEP FUNC(cmd1, NPU_SET_IFM2_BASE0) SEP FUNC(cmd1, NPU_SET_IFM2_BASE1) \
16478 SEP FUNC(cmd1, NPU_SET_IFM2_BASE2) SEP FUNC(cmd1, NPU_SET_IFM2_BASE3) \
16479 SEP FUNC(cmd1, NPU_SET_IFM2_STRIDE_X) \
16480 SEP FUNC(cmd1, NPU_SET_IFM2_STRIDE_Y) \
16481 SEP FUNC(cmd1, NPU_SET_IFM2_STRIDE_C) \
16482 SEP FUNC(cmd1, NPU_SET_WEIGHT1_BASE) \
16483 SEP FUNC(cmd1, NPU_SET_WEIGHT1_LENGTH) \
16484 SEP FUNC(cmd1, NPU_SET_SCALE1_BASE) \
16485 SEP FUNC(cmd1, NPU_SET_SCALE1_LENGTH)
16486
16487#define EXPAND_DATA_FORMAT(FUNC, SEP) FUNC(data_format, NHWC) SEP FUNC(data_format, NHCWB16)
16488
16489#define EXPAND_ELEMENTWISE_MODE(FUNC, SEP) \
16490 FUNC(elementwise_mode, MUL) \
16491 SEP FUNC(elementwise_mode, ADD) SEP FUNC(elementwise_mode, SUB) SEP FUNC(elementwise_mode, MIN) \
16492 SEP FUNC(elementwise_mode, MAX) SEP FUNC(elementwise_mode, LRELU) SEP FUNC(elementwise_mode, ABS) \
16493 SEP FUNC(elementwise_mode, CLZ) SEP FUNC(elementwise_mode, SHR) SEP FUNC(elementwise_mode, SHL)
16494
16495#define EXPAND_IFM_PRECISION(FUNC, SEP) \
16496 FUNC(ifm_precision, W8_U8) \
16497 SEP FUNC(ifm_precision, W8_S8) SEP FUNC(ifm_precision, W8_U16) SEP FUNC(ifm_precision, W8_S16) \
16498 SEP FUNC(ifm_precision, W8_S32)
16499
16500#define EXPAND_IFM_SCALE_MODE(FUNC, SEP) \
16501 FUNC(ifm_scale_mode, SCALE_16BIT) \
16502 SEP FUNC(ifm_scale_mode, SCALE_OPA_32BIT) SEP FUNC(ifm_scale_mode, SCALE_OPB_32BIT)
16503
16504#define EXPAND_MEMORY_TYPE(FUNC, SEP) \
16505 FUNC(memory_type, AXI0_OUTSTANDING_COUNTER0) \
16506 SEP FUNC(memory_type, AXI0_OUTSTANDING_COUNTER1) SEP FUNC(memory_type, AXI1_OUTSTANDING_COUNTER2) \
16507 SEP FUNC(memory_type, AXI1_OUTSTANDING_COUNTER3)
16508
16509#define EXPAND_OFM_PRECISION(FUNC, SEP) \
16510 FUNC(ofm_precision, U8) \
16511 SEP FUNC(ofm_precision, S8) SEP FUNC(ofm_precision, U16) SEP FUNC(ofm_precision, S16) SEP FUNC(ofm_precision, S32)
16512
16513#define EXPAND_PMU_EVENT_TYPE(FUNC, SEP) \
16514 FUNC(pmu_event_type, CYCLE) \
16515 SEP FUNC(pmu_event_type, NPU_IDLE) SEP FUNC(pmu_event_type, MAC_ACTIVE) SEP FUNC( \
16516 pmu_event_type, MAC_ACTIVE_8BIT) SEP FUNC(pmu_event_type, MAC_ACTIVE_16BIT) SEP FUNC(pmu_event_type, \
16517 MAC_DPU_ACTIVE) \
16518 SEP FUNC(pmu_event_type, MAC_STALLED_BY_WD_ACC) SEP FUNC(pmu_event_type, MAC_STALLED_BY_WD) SEP FUNC( \
16519 pmu_event_type, MAC_STALLED_BY_ACC) SEP FUNC(pmu_event_type, MAC_STALLED_BY_IB) SEP FUNC(pmu_event_type, \
16520 AO_ACTIVE) \
16521 SEP FUNC(pmu_event_type, AO_ACTIVE_8BIT) SEP FUNC(pmu_event_type, AO_ACTIVE_16BIT) SEP FUNC( \
16522 pmu_event_type, AO_STALLED_BY_OFMP_OB) SEP FUNC(pmu_event_type, AO_STALLED_BY_OFMP) \
16523 SEP FUNC(pmu_event_type, AO_STALLED_BY_OB) SEP FUNC(pmu_event_type, AO_STALLED_BY_ACC_IB) SEP FUNC( \
16524 pmu_event_type, AO_STALLED_BY_ACC) SEP FUNC(pmu_event_type, AO_STALLED_BY_IB) \
16525 SEP FUNC(pmu_event_type, WD_ACTIVE) SEP FUNC(pmu_event_type, WD_STALLED) SEP FUNC( \
16526 pmu_event_type, WD_STALLED_BY_WS) SEP FUNC(pmu_event_type, WD_STALLED_BY_WD_BUF) \
16527 SEP FUNC(pmu_event_type, WD_PARSE_ACTIVE) SEP FUNC(pmu_event_type, WD_PARSE_STALLED) SEP FUNC( \
16528 pmu_event_type, WD_PARSE_STALLED_IN) SEP FUNC(pmu_event_type, WD_PARSE_STALLED_OUT) \
16529 SEP FUNC(pmu_event_type, AXI0_RD_TRANS_ACCEPTED) SEP FUNC( \
16530 pmu_event_type, AXI0_RD_TRANS_COMPLETED) SEP FUNC(pmu_event_type, \
16531 AXI0_RD_DATA_BEAT_RECEIVED) \
16532 SEP FUNC(pmu_event_type, AXI0_RD_TRAN_REQ_STALLED) SEP FUNC( \
16533 pmu_event_type, \
16534 AXI0_WR_TRANS_ACCEPTED) SEP FUNC(pmu_event_type, AXI0_WR_TRANS_COMPLETED_M) \
16535 SEP FUNC( \
16536 pmu_event_type, \
16537 AXI0_WR_TRANS_COMPLETED_S) SEP FUNC(pmu_event_type, AXI0_WR_DATA_BEAT_WRITTEN) \
16538 SEP FUNC(pmu_event_type, AXI0_WR_TRAN_REQ_STALLED) SEP FUNC( \
16539 pmu_event_type, \
16540 AXI0_WR_DATA_BEAT_STALLED) SEP FUNC(pmu_event_type, AXI0_ENABLED_CYCLES) \
16541 SEP FUNC(pmu_event_type, AXI0_RD_STALL_LIMIT) SEP FUNC( \
16542 pmu_event_type, \
16543 AXI0_WR_STALL_LIMIT) SEP FUNC(pmu_event_type, AXI1_RD_TRANS_ACCEPTED) \
16544 SEP FUNC(pmu_event_type, AXI1_RD_TRANS_COMPLETED) \
16545 SEP FUNC(pmu_event_type, AXI1_RD_DATA_BEAT_RECEIVED) SEP FUNC( \
16546 pmu_event_type, \
16547 AXI1_RD_TRAN_REQ_STALLED) SEP FUNC(pmu_event_type, \
16548 AXI1_WR_TRANS_ACCEPTED) \
16549 SEP FUNC(pmu_event_type, AXI1_WR_TRANS_COMPLETED_M) SEP FUNC( \
16550 pmu_event_type, \
16551 AXI1_WR_TRANS_COMPLETED_S) SEP \
16552 FUNC(pmu_event_type, AXI1_WR_DATA_BEAT_WRITTEN) SEP FUNC( \
16553 pmu_event_type, \
16554 AXI1_WR_TRAN_REQ_STALLED) SEP \
16555 FUNC(pmu_event_type, AXI1_WR_DATA_BEAT_STALLED) SEP FUNC( \
16556 pmu_event_type, \
16557 AXI1_ENABLED_CYCLES) SEP \
16558 FUNC(pmu_event_type, AXI1_RD_STALL_LIMIT) SEP FUNC( \
16559 pmu_event_type, \
16560 AXI1_WR_STALL_LIMIT) SEP FUNC(pmu_event_type, \
16561 AXI_LATENCY_ANY) \
16562 SEP FUNC(pmu_event_type, AXI_LATENCY_32) \
16563 SEP FUNC(pmu_event_type, AXI_LATENCY_64) \
16564 SEP FUNC(pmu_event_type, \
16565 AXI_LATENCY_128) \
16566 SEP FUNC(pmu_event_type, \
16567 AXI_LATENCY_256) \
16568 SEP FUNC(pmu_event_type, \
16569 AXI_LATENCY_512) \
16570 SEP FUNC(pmu_event_type, \
16571 AXI_LATENCY_1024)
16572
16573#define EXPAND_POOLING_MODE(FUNC, SEP) \
16574 FUNC(pooling_mode, MAX) SEP FUNC(pooling_mode, AVERAGE) SEP FUNC(pooling_mode, REDUCE_SUM)
16575
16576#define EXPAND_PRIVILEGE_LEVEL(FUNC, SEP) FUNC(privilege_level, USER) SEP FUNC(privilege_level, PRIVILEGED)
16577
16578#define EXPAND_PRODUCT(FUNC, SEP) FUNC(product, ETHOS_U55)
16579
16580#define EXPAND_RESAMPLING_MODE(FUNC, SEP) \
16581 FUNC(resampling_mode, NONE) SEP FUNC(resampling_mode, NEAREST) SEP FUNC(resampling_mode, TRANSPOSE)
16582
16583#define EXPAND_ROUNDING(FUNC, SEP) FUNC(rounding, TFL) SEP FUNC(rounding, TRUNCATE) SEP FUNC(rounding, NATURAL)
16584
16585#define EXPAND_SECURITY_LEVEL(FUNC, SEP) FUNC(security_level, SECURE) SEP FUNC(security_level, NON_SECURE)
16586
16587#define EXPAND_STATE(FUNC, SEP) FUNC(state, STOPPED) SEP FUNC(state, RUNNING)
16588
16589#define EXPAND_STRIDE_MODE(FUNC, SEP) \
16590 FUNC(stride_mode, STRIDE_MODE_1D) SEP FUNC(stride_mode, STRIDE_MODE_2D) SEP FUNC(stride_mode, STRIDE_MODE_3D)