hw/ip/usbdev/rtl/usbdev_reg_pkg.sv Cov: 100%
1: // Copyright lowRISC contributors.
2: // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3: // SPDX-License-Identifier: Apache-2.0
4: //
5: // Register Package auto-generated by `reggen` containing data structure
6:
7: package usbdev_reg_pkg;
8:
9: // Param list
10: parameter int NEndpoints = 12;
11:
12: ////////////////////////////
13: // Typedefs for registers //
14: ////////////////////////////
15: typedef struct packed {
16: struct packed {
17: logic q;
18: } pkt_received;
19: struct packed {
20: logic q;
21: } pkt_sent;
22: struct packed {
23: logic q;
24: } disconnected;
25: struct packed {
26: logic q;
27: } host_lost;
28: struct packed {
29: logic q;
30: } link_reset;
31: struct packed {
32: logic q;
33: } link_suspend;
34: struct packed {
35: logic q;
36: } link_resume;
37: struct packed {
38: logic q;
39: } av_empty;
40: struct packed {
41: logic q;
42: } rx_full;
43: struct packed {
44: logic q;
45: } av_overflow;
46: struct packed {
47: logic q;
48: } link_in_err;
49: struct packed {
50: logic q;
51: } rx_crc_err;
52: struct packed {
53: logic q;
54: } rx_pid_err;
55: struct packed {
56: logic q;
57: } rx_bitstuff_err;
58: struct packed {
59: logic q;
60: } frame;
61: struct packed {
62: logic q;
63: } connected;
64: } usbdev_reg2hw_intr_state_reg_t;
65:
66: typedef struct packed {
67: struct packed {
68: logic q;
69: } pkt_received;
70: struct packed {
71: logic q;
72: } pkt_sent;
73: struct packed {
74: logic q;
75: } disconnected;
76: struct packed {
77: logic q;
78: } host_lost;
79: struct packed {
80: logic q;
81: } link_reset;
82: struct packed {
83: logic q;
84: } link_suspend;
85: struct packed {
86: logic q;
87: } link_resume;
88: struct packed {
89: logic q;
90: } av_empty;
91: struct packed {
92: logic q;
93: } rx_full;
94: struct packed {
95: logic q;
96: } av_overflow;
97: struct packed {
98: logic q;
99: } link_in_err;
100: struct packed {
101: logic q;
102: } rx_crc_err;
103: struct packed {
104: logic q;
105: } rx_pid_err;
106: struct packed {
107: logic q;
108: } rx_bitstuff_err;
109: struct packed {
110: logic q;
111: } frame;
112: struct packed {
113: logic q;
114: } connected;
115: } usbdev_reg2hw_intr_enable_reg_t;
116:
117: typedef struct packed {
118: struct packed {
119: logic q;
120: logic qe;
121: } pkt_received;
122: struct packed {
123: logic q;
124: logic qe;
125: } pkt_sent;
126: struct packed {
127: logic q;
128: logic qe;
129: } disconnected;
130: struct packed {
131: logic q;
132: logic qe;
133: } host_lost;
134: struct packed {
135: logic q;
136: logic qe;
137: } link_reset;
138: struct packed {
139: logic q;
140: logic qe;
141: } link_suspend;
142: struct packed {
143: logic q;
144: logic qe;
145: } link_resume;
146: struct packed {
147: logic q;
148: logic qe;
149: } av_empty;
150: struct packed {
151: logic q;
152: logic qe;
153: } rx_full;
154: struct packed {
155: logic q;
156: logic qe;
157: } av_overflow;
158: struct packed {
159: logic q;
160: logic qe;
161: } link_in_err;
162: struct packed {
163: logic q;
164: logic qe;
165: } rx_crc_err;
166: struct packed {
167: logic q;
168: logic qe;
169: } rx_pid_err;
170: struct packed {
171: logic q;
172: logic qe;
173: } rx_bitstuff_err;
174: struct packed {
175: logic q;
176: logic qe;
177: } frame;
178: struct packed {
179: logic q;
180: logic qe;
181: } connected;
182: } usbdev_reg2hw_intr_test_reg_t;
183:
184: typedef struct packed {
185: struct packed {
186: logic q;
187: } enable;
188: struct packed {
189: logic [6:0] q;
190: } device_address;
191: } usbdev_reg2hw_usbctrl_reg_t;
192:
193: typedef struct packed {
194: logic [4:0] q;
195: logic qe;
196: } usbdev_reg2hw_avbuffer_reg_t;
197:
198: typedef struct packed {
199: struct packed {
200: logic [4:0] q;
201: logic re;
202: } buffer;
203: struct packed {
204: logic [6:0] q;
205: logic re;
206: } size;
207: struct packed {
208: logic q;
209: logic re;
210: } setup;
211: struct packed {
212: logic [3:0] q;
213: logic re;
214: } ep;
215: } usbdev_reg2hw_rxfifo_reg_t;
216:
217: typedef struct packed {
218: logic q;
219: } usbdev_reg2hw_rxenable_setup_mreg_t;
220:
221: typedef struct packed {
222: logic q;
223: } usbdev_reg2hw_rxenable_out_mreg_t;
224:
225: typedef struct packed {
226: logic q;
227: } usbdev_reg2hw_stall_mreg_t;
228:
229: typedef struct packed {
230: struct packed {
231: logic [4:0] q;
232: } buffer;
233: struct packed {
234: logic [6:0] q;
235: } size;
236: struct packed {
237: logic q;
238: } pend;
239: struct packed {
240: logic q;
241: } rdy;
242: } usbdev_reg2hw_configin_mreg_t;
243:
244: typedef struct packed {
245: logic q;
246: } usbdev_reg2hw_iso_mreg_t;
247:
248: typedef struct packed {
249: logic q;
250: logic qe;
251: } usbdev_reg2hw_data_toggle_clear_mreg_t;
252:
253: typedef struct packed {
254: struct packed {
255: logic q;
256: } rx_differential_mode;
257: struct packed {
258: logic q;
259: } tx_differential_mode;
260: struct packed {
261: logic q;
262: } eop_single_bit;
263: struct packed {
264: logic q;
265: } override_pwr_sense_en;
266: struct packed {
267: logic q;
268: } override_pwr_sense_val;
269: } usbdev_reg2hw_phy_config_reg_t;
270:
271:
272: typedef struct packed {
273: struct packed {
274: logic d;
275: logic de;
276: } pkt_received;
277: struct packed {
278: logic d;
279: logic de;
280: } pkt_sent;
281: struct packed {
282: logic d;
283: logic de;
284: } disconnected;
285: struct packed {
286: logic d;
287: logic de;
288: } host_lost;
289: struct packed {
290: logic d;
291: logic de;
292: } link_reset;
293: struct packed {
294: logic d;
295: logic de;
296: } link_suspend;
297: struct packed {
298: logic d;
299: logic de;
300: } link_resume;
301: struct packed {
302: logic d;
303: logic de;
304: } av_empty;
305: struct packed {
306: logic d;
307: logic de;
308: } rx_full;
309: struct packed {
310: logic d;
311: logic de;
312: } av_overflow;
313: struct packed {
314: logic d;
315: logic de;
316: } link_in_err;
317: struct packed {
318: logic d;
319: logic de;
320: } rx_crc_err;
321: struct packed {
322: logic d;
323: logic de;
324: } rx_pid_err;
325: struct packed {
326: logic d;
327: logic de;
328: } rx_bitstuff_err;
329: struct packed {
330: logic d;
331: logic de;
332: } frame;
333: struct packed {
334: logic d;
335: logic de;
336: } connected;
337: } usbdev_hw2reg_intr_state_reg_t;
338:
339: typedef struct packed {
340: struct packed {
341: logic [6:0] d;
342: logic de;
343: } device_address;
344: } usbdev_hw2reg_usbctrl_reg_t;
345:
346: typedef struct packed {
347: struct packed {
348: logic [10:0] d;
349: } frame;
350: struct packed {
351: logic d;
352: } host_lost;
353: struct packed {
354: logic [2:0] d;
355: } link_state;
356: struct packed {
357: logic d;
358: } usb_sense;
359: struct packed {
360: logic [2:0] d;
361: } av_depth;
362: struct packed {
363: logic d;
364: } av_full;
365: struct packed {
366: logic [2:0] d;
367: } rx_depth;
368: struct packed {
369: logic d;
370: } rx_empty;
371: } usbdev_hw2reg_usbstat_reg_t;
372:
373: typedef struct packed {
374: struct packed {
375: logic [4:0] d;
376: } buffer;
377: struct packed {
378: logic [6:0] d;
379: } size;
380: struct packed {
381: logic d;
382: } setup;
383: struct packed {
384: logic [3:0] d;
385: } ep;
386: } usbdev_hw2reg_rxfifo_reg_t;
387:
388: typedef struct packed {
389: logic d;
390: logic de;
391: } usbdev_hw2reg_in_sent_mreg_t;
392:
393: typedef struct packed {
394: logic d;
395: logic de;
396: } usbdev_hw2reg_stall_mreg_t;
397:
398: typedef struct packed {
399: struct packed {
400: logic d;
401: logic de;
402: } pend;
403: struct packed {
404: logic d;
405: logic de;
406: } rdy;
407: } usbdev_hw2reg_configin_mreg_t;
408:
409:
410: ///////////////////////////////////////
411: // Register to internal design logic //
412: ///////////////////////////////////////
413: typedef struct packed {
414: usbdev_reg2hw_intr_state_reg_t intr_state; // [343:328]
415: usbdev_reg2hw_intr_enable_reg_t intr_enable; // [327:312]
416: usbdev_reg2hw_intr_test_reg_t intr_test; // [311:280]
417: usbdev_reg2hw_usbctrl_reg_t usbctrl; // [279:272]
418: usbdev_reg2hw_avbuffer_reg_t avbuffer; // [271:266]
419: usbdev_reg2hw_rxfifo_reg_t rxfifo; // [265:245]
420: usbdev_reg2hw_rxenable_setup_mreg_t [11:0] rxenable_setup; // [244:233]
421: usbdev_reg2hw_rxenable_out_mreg_t [11:0] rxenable_out; // [232:221]
422: usbdev_reg2hw_stall_mreg_t [11:0] stall; // [220:209]
423: usbdev_reg2hw_configin_mreg_t [11:0] configin; // [208:41]
424: usbdev_reg2hw_iso_mreg_t [11:0] iso; // [40:29]
425: usbdev_reg2hw_data_toggle_clear_mreg_t [11:0] data_toggle_clear; // [28:5]
426: usbdev_reg2hw_phy_config_reg_t phy_config; // [4:0]
427: } usbdev_reg2hw_t;
428:
429: ///////////////////////////////////////
430: // Internal design logic to register //
431: ///////////////////////////////////////
432: typedef struct packed {
433: usbdev_hw2reg_intr_state_reg_t intr_state; // [176:161]
434: usbdev_hw2reg_usbctrl_reg_t usbctrl; // [160:153]
435: usbdev_hw2reg_usbstat_reg_t usbstat; // [152:153]
436: usbdev_hw2reg_rxfifo_reg_t rxfifo; // [152:132]
437: usbdev_hw2reg_in_sent_mreg_t [11:0] in_sent; // [131:108]
438: usbdev_hw2reg_stall_mreg_t [11:0] stall; // [107:84]
439: usbdev_hw2reg_configin_mreg_t [11:0] configin; // [83:36]
440: } usbdev_hw2reg_t;
441:
442: // Register Address
443: parameter logic [11:0] USBDEV_INTR_STATE_OFFSET = 12'h 0;
444: parameter logic [11:0] USBDEV_INTR_ENABLE_OFFSET = 12'h 4;
445: parameter logic [11:0] USBDEV_INTR_TEST_OFFSET = 12'h 8;
446: parameter logic [11:0] USBDEV_USBCTRL_OFFSET = 12'h c;
447: parameter logic [11:0] USBDEV_USBSTAT_OFFSET = 12'h 10;
448: parameter logic [11:0] USBDEV_AVBUFFER_OFFSET = 12'h 14;
449: parameter logic [11:0] USBDEV_RXFIFO_OFFSET = 12'h 18;
450: parameter logic [11:0] USBDEV_RXENABLE_SETUP_OFFSET = 12'h 1c;
451: parameter logic [11:0] USBDEV_RXENABLE_OUT_OFFSET = 12'h 20;
452: parameter logic [11:0] USBDEV_IN_SENT_OFFSET = 12'h 24;
453: parameter logic [11:0] USBDEV_STALL_OFFSET = 12'h 28;
454: parameter logic [11:0] USBDEV_CONFIGIN0_OFFSET = 12'h 2c;
455: parameter logic [11:0] USBDEV_CONFIGIN1_OFFSET = 12'h 30;
456: parameter logic [11:0] USBDEV_CONFIGIN2_OFFSET = 12'h 34;
457: parameter logic [11:0] USBDEV_CONFIGIN3_OFFSET = 12'h 38;
458: parameter logic [11:0] USBDEV_CONFIGIN4_OFFSET = 12'h 3c;
459: parameter logic [11:0] USBDEV_CONFIGIN5_OFFSET = 12'h 40;
460: parameter logic [11:0] USBDEV_CONFIGIN6_OFFSET = 12'h 44;
461: parameter logic [11:0] USBDEV_CONFIGIN7_OFFSET = 12'h 48;
462: parameter logic [11:0] USBDEV_CONFIGIN8_OFFSET = 12'h 4c;
463: parameter logic [11:0] USBDEV_CONFIGIN9_OFFSET = 12'h 50;
464: parameter logic [11:0] USBDEV_CONFIGIN10_OFFSET = 12'h 54;
465: parameter logic [11:0] USBDEV_CONFIGIN11_OFFSET = 12'h 58;
466: parameter logic [11:0] USBDEV_ISO_OFFSET = 12'h 5c;
467: parameter logic [11:0] USBDEV_DATA_TOGGLE_CLEAR_OFFSET = 12'h 60;
468: parameter logic [11:0] USBDEV_PHY_CONFIG_OFFSET = 12'h 64;
469:
470: // Window parameter
471: parameter logic [11:0] USBDEV_BUFFER_OFFSET = 12'h 800;
472: parameter logic [11:0] USBDEV_BUFFER_SIZE = 12'h 800;
473:
474: // Register Index
475: typedef enum int {
476: USBDEV_INTR_STATE,
477: USBDEV_INTR_ENABLE,
478: USBDEV_INTR_TEST,
479: USBDEV_USBCTRL,
480: USBDEV_USBSTAT,
481: USBDEV_AVBUFFER,
482: USBDEV_RXFIFO,
483: USBDEV_RXENABLE_SETUP,
484: USBDEV_RXENABLE_OUT,
485: USBDEV_IN_SENT,
486: USBDEV_STALL,
487: USBDEV_CONFIGIN0,
488: USBDEV_CONFIGIN1,
489: USBDEV_CONFIGIN2,
490: USBDEV_CONFIGIN3,
491: USBDEV_CONFIGIN4,
492: USBDEV_CONFIGIN5,
493: USBDEV_CONFIGIN6,
494: USBDEV_CONFIGIN7,
495: USBDEV_CONFIGIN8,
496: USBDEV_CONFIGIN9,
497: USBDEV_CONFIGIN10,
498: USBDEV_CONFIGIN11,
499: USBDEV_ISO,
500: USBDEV_DATA_TOGGLE_CLEAR,
501: USBDEV_PHY_CONFIG
502: } usbdev_id_e;
503:
504: // Register width information to check illegal writes
505: parameter logic [3:0] USBDEV_PERMIT [26] = '{
506: 4'b 0011, // index[ 0] USBDEV_INTR_STATE
507: 4'b 0011, // index[ 1] USBDEV_INTR_ENABLE
508: 4'b 0011, // index[ 2] USBDEV_INTR_TEST
509: 4'b 0111, // index[ 3] USBDEV_USBCTRL
510: 4'b 1111, // index[ 4] USBDEV_USBSTAT
511: 4'b 0001, // index[ 5] USBDEV_AVBUFFER
512: 4'b 0111, // index[ 6] USBDEV_RXFIFO
513: 4'b 0011, // index[ 7] USBDEV_RXENABLE_SETUP
514: 4'b 0011, // index[ 8] USBDEV_RXENABLE_OUT
515: 4'b 0011, // index[ 9] USBDEV_IN_SENT
516: 4'b 0011, // index[10] USBDEV_STALL
517: 4'b 1111, // index[11] USBDEV_CONFIGIN0
518: 4'b 1111, // index[12] USBDEV_CONFIGIN1
519: 4'b 1111, // index[13] USBDEV_CONFIGIN2
520: 4'b 1111, // index[14] USBDEV_CONFIGIN3
521: 4'b 1111, // index[15] USBDEV_CONFIGIN4
522: 4'b 1111, // index[16] USBDEV_CONFIGIN5
523: 4'b 1111, // index[17] USBDEV_CONFIGIN6
524: 4'b 1111, // index[18] USBDEV_CONFIGIN7
525: 4'b 1111, // index[19] USBDEV_CONFIGIN8
526: 4'b 1111, // index[20] USBDEV_CONFIGIN9
527: 4'b 1111, // index[21] USBDEV_CONFIGIN10
528: 4'b 1111, // index[22] USBDEV_CONFIGIN11
529: 4'b 0011, // index[23] USBDEV_ISO
530: 4'b 0011, // index[24] USBDEV_DATA_TOGGLE_CLEAR
531: 4'b 0001 // index[25] USBDEV_PHY_CONFIG
532: };
533: endpackage
534:
535: