../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: