../src/lowrisc_ip_usbdev_0.1/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: struct packed {
270: logic q;
271: } pinflip;
272: struct packed {
273: logic q;
274: } usb_ref_disable;
275: } usbdev_reg2hw_phy_config_reg_t;
276:
277:
278: typedef struct packed {
279: struct packed {
280: logic d;
281: logic de;
282: } pkt_received;
283: struct packed {
284: logic d;
285: logic de;
286: } pkt_sent;
287: struct packed {
288: logic d;
289: logic de;
290: } disconnected;
291: struct packed {
292: logic d;
293: logic de;
294: } host_lost;
295: struct packed {
296: logic d;
297: logic de;
298: } link_reset;
299: struct packed {
300: logic d;
301: logic de;
302: } link_suspend;
303: struct packed {
304: logic d;
305: logic de;
306: } link_resume;
307: struct packed {
308: logic d;
309: logic de;
310: } av_empty;
311: struct packed {
312: logic d;
313: logic de;
314: } rx_full;
315: struct packed {
316: logic d;
317: logic de;
318: } av_overflow;
319: struct packed {
320: logic d;
321: logic de;
322: } link_in_err;
323: struct packed {
324: logic d;
325: logic de;
326: } rx_crc_err;
327: struct packed {
328: logic d;
329: logic de;
330: } rx_pid_err;
331: struct packed {
332: logic d;
333: logic de;
334: } rx_bitstuff_err;
335: struct packed {
336: logic d;
337: logic de;
338: } frame;
339: struct packed {
340: logic d;
341: logic de;
342: } connected;
343: } usbdev_hw2reg_intr_state_reg_t;
344:
345: typedef struct packed {
346: struct packed {
347: logic [6:0] d;
348: logic de;
349: } device_address;
350: } usbdev_hw2reg_usbctrl_reg_t;
351:
352: typedef struct packed {
353: struct packed {
354: logic [10:0] d;
355: } frame;
356: struct packed {
357: logic d;
358: } host_lost;
359: struct packed {
360: logic [2:0] d;
361: } link_state;
362: struct packed {
363: logic d;
364: } sense;
365: struct packed {
366: logic [2:0] d;
367: } av_depth;
368: struct packed {
369: logic d;
370: } av_full;
371: struct packed {
372: logic [2:0] d;
373: } rx_depth;
374: struct packed {
375: logic d;
376: } rx_empty;
377: } usbdev_hw2reg_usbstat_reg_t;
378:
379: typedef struct packed {
380: struct packed {
381: logic [4:0] d;
382: } buffer;
383: struct packed {
384: logic [6:0] d;
385: } size;
386: struct packed {
387: logic d;
388: } setup;
389: struct packed {
390: logic [3:0] d;
391: } ep;
392: } usbdev_hw2reg_rxfifo_reg_t;
393:
394: typedef struct packed {
395: logic d;
396: logic de;
397: } usbdev_hw2reg_in_sent_mreg_t;
398:
399: typedef struct packed {
400: logic d;
401: logic de;
402: } usbdev_hw2reg_stall_mreg_t;
403:
404: typedef struct packed {
405: struct packed {
406: logic d;
407: logic de;
408: } pend;
409: struct packed {
410: logic d;
411: logic de;
412: } rdy;
413: } usbdev_hw2reg_configin_mreg_t;
414:
415:
416: ///////////////////////////////////////
417: // Register to internal design logic //
418: ///////////////////////////////////////
419: typedef struct packed {
420: usbdev_reg2hw_intr_state_reg_t intr_state; // [345:330]
421: usbdev_reg2hw_intr_enable_reg_t intr_enable; // [329:314]
422: usbdev_reg2hw_intr_test_reg_t intr_test; // [313:282]
423: usbdev_reg2hw_usbctrl_reg_t usbctrl; // [281:274]
424: usbdev_reg2hw_avbuffer_reg_t avbuffer; // [273:268]
425: usbdev_reg2hw_rxfifo_reg_t rxfifo; // [267:247]
426: usbdev_reg2hw_rxenable_setup_mreg_t [11:0] rxenable_setup; // [246:235]
427: usbdev_reg2hw_rxenable_out_mreg_t [11:0] rxenable_out; // [234:223]
428: usbdev_reg2hw_stall_mreg_t [11:0] stall; // [222:211]
429: usbdev_reg2hw_configin_mreg_t [11:0] configin; // [210:43]
430: usbdev_reg2hw_iso_mreg_t [11:0] iso; // [42:31]
431: usbdev_reg2hw_data_toggle_clear_mreg_t [11:0] data_toggle_clear; // [30:7]
432: usbdev_reg2hw_phy_config_reg_t phy_config; // [6:0]
433: } usbdev_reg2hw_t;
434:
435: ///////////////////////////////////////
436: // Internal design logic to register //
437: ///////////////////////////////////////
438: typedef struct packed {
439: usbdev_hw2reg_intr_state_reg_t intr_state; // [176:161]
440: usbdev_hw2reg_usbctrl_reg_t usbctrl; // [160:153]
441: usbdev_hw2reg_usbstat_reg_t usbstat; // [152:153]
442: usbdev_hw2reg_rxfifo_reg_t rxfifo; // [152:132]
443: usbdev_hw2reg_in_sent_mreg_t [11:0] in_sent; // [131:108]
444: usbdev_hw2reg_stall_mreg_t [11:0] stall; // [107:84]
445: usbdev_hw2reg_configin_mreg_t [11:0] configin; // [83:36]
446: } usbdev_hw2reg_t;
447:
448: // Register Address
449: parameter logic [11:0] USBDEV_INTR_STATE_OFFSET = 12'h 0;
450: parameter logic [11:0] USBDEV_INTR_ENABLE_OFFSET = 12'h 4;
451: parameter logic [11:0] USBDEV_INTR_TEST_OFFSET = 12'h 8;
452: parameter logic [11:0] USBDEV_USBCTRL_OFFSET = 12'h c;
453: parameter logic [11:0] USBDEV_USBSTAT_OFFSET = 12'h 10;
454: parameter logic [11:0] USBDEV_AVBUFFER_OFFSET = 12'h 14;
455: parameter logic [11:0] USBDEV_RXFIFO_OFFSET = 12'h 18;
456: parameter logic [11:0] USBDEV_RXENABLE_SETUP_OFFSET = 12'h 1c;
457: parameter logic [11:0] USBDEV_RXENABLE_OUT_OFFSET = 12'h 20;
458: parameter logic [11:0] USBDEV_IN_SENT_OFFSET = 12'h 24;
459: parameter logic [11:0] USBDEV_STALL_OFFSET = 12'h 28;
460: parameter logic [11:0] USBDEV_CONFIGIN0_OFFSET = 12'h 2c;
461: parameter logic [11:0] USBDEV_CONFIGIN1_OFFSET = 12'h 30;
462: parameter logic [11:0] USBDEV_CONFIGIN2_OFFSET = 12'h 34;
463: parameter logic [11:0] USBDEV_CONFIGIN3_OFFSET = 12'h 38;
464: parameter logic [11:0] USBDEV_CONFIGIN4_OFFSET = 12'h 3c;
465: parameter logic [11:0] USBDEV_CONFIGIN5_OFFSET = 12'h 40;
466: parameter logic [11:0] USBDEV_CONFIGIN6_OFFSET = 12'h 44;
467: parameter logic [11:0] USBDEV_CONFIGIN7_OFFSET = 12'h 48;
468: parameter logic [11:0] USBDEV_CONFIGIN8_OFFSET = 12'h 4c;
469: parameter logic [11:0] USBDEV_CONFIGIN9_OFFSET = 12'h 50;
470: parameter logic [11:0] USBDEV_CONFIGIN10_OFFSET = 12'h 54;
471: parameter logic [11:0] USBDEV_CONFIGIN11_OFFSET = 12'h 58;
472: parameter logic [11:0] USBDEV_ISO_OFFSET = 12'h 5c;
473: parameter logic [11:0] USBDEV_DATA_TOGGLE_CLEAR_OFFSET = 12'h 60;
474: parameter logic [11:0] USBDEV_PHY_CONFIG_OFFSET = 12'h 64;
475:
476: // Window parameter
477: parameter logic [11:0] USBDEV_BUFFER_OFFSET = 12'h 800;
478: parameter logic [11:0] USBDEV_BUFFER_SIZE = 12'h 800;
479:
480: // Register Index
481: typedef enum int {
482: USBDEV_INTR_STATE,
483: USBDEV_INTR_ENABLE,
484: USBDEV_INTR_TEST,
485: USBDEV_USBCTRL,
486: USBDEV_USBSTAT,
487: USBDEV_AVBUFFER,
488: USBDEV_RXFIFO,
489: USBDEV_RXENABLE_SETUP,
490: USBDEV_RXENABLE_OUT,
491: USBDEV_IN_SENT,
492: USBDEV_STALL,
493: USBDEV_CONFIGIN0,
494: USBDEV_CONFIGIN1,
495: USBDEV_CONFIGIN2,
496: USBDEV_CONFIGIN3,
497: USBDEV_CONFIGIN4,
498: USBDEV_CONFIGIN5,
499: USBDEV_CONFIGIN6,
500: USBDEV_CONFIGIN7,
501: USBDEV_CONFIGIN8,
502: USBDEV_CONFIGIN9,
503: USBDEV_CONFIGIN10,
504: USBDEV_CONFIGIN11,
505: USBDEV_ISO,
506: USBDEV_DATA_TOGGLE_CLEAR,
507: USBDEV_PHY_CONFIG
508: } usbdev_id_e;
509:
510: // Register width information to check illegal writes
511: parameter logic [3:0] USBDEV_PERMIT [26] = '{
512: 4'b 0011, // index[ 0] USBDEV_INTR_STATE
513: 4'b 0011, // index[ 1] USBDEV_INTR_ENABLE
514: 4'b 0011, // index[ 2] USBDEV_INTR_TEST
515: 4'b 0111, // index[ 3] USBDEV_USBCTRL
516: 4'b 1111, // index[ 4] USBDEV_USBSTAT
517: 4'b 0001, // index[ 5] USBDEV_AVBUFFER
518: 4'b 0111, // index[ 6] USBDEV_RXFIFO
519: 4'b 0011, // index[ 7] USBDEV_RXENABLE_SETUP
520: 4'b 0011, // index[ 8] USBDEV_RXENABLE_OUT
521: 4'b 0011, // index[ 9] USBDEV_IN_SENT
522: 4'b 0011, // index[10] USBDEV_STALL
523: 4'b 1111, // index[11] USBDEV_CONFIGIN0
524: 4'b 1111, // index[12] USBDEV_CONFIGIN1
525: 4'b 1111, // index[13] USBDEV_CONFIGIN2
526: 4'b 1111, // index[14] USBDEV_CONFIGIN3
527: 4'b 1111, // index[15] USBDEV_CONFIGIN4
528: 4'b 1111, // index[16] USBDEV_CONFIGIN5
529: 4'b 1111, // index[17] USBDEV_CONFIGIN6
530: 4'b 1111, // index[18] USBDEV_CONFIGIN7
531: 4'b 1111, // index[19] USBDEV_CONFIGIN8
532: 4'b 1111, // index[20] USBDEV_CONFIGIN9
533: 4'b 1111, // index[21] USBDEV_CONFIGIN10
534: 4'b 1111, // index[22] USBDEV_CONFIGIN11
535: 4'b 0011, // index[23] USBDEV_ISO
536: 4'b 0011, // index[24] USBDEV_DATA_TOGGLE_CLEAR
537: 4'b 0001 // index[25] USBDEV_PHY_CONFIG
538: };
539: endpackage
540:
541: