|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  | // | 
|  | // Register Package auto-generated by `reggen` containing data structure | 
|  |  | 
|  | package usbdev_reg_pkg; | 
|  |  | 
|  | // Param list | 
|  | localparam int NEndpoints = 12; | 
|  |  | 
|  | //////////////////////////// | 
|  | // Typedefs for registers // | 
|  | //////////////////////////// | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic        q; | 
|  | } pkt_received; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } pkt_sent; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } disconnected; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } host_lost; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } link_reset; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } link_suspend; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } link_resume; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } av_empty; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } rx_full; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } av_overflow; | 
|  | } usbdev_reg2hw_intr_state_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic        q; | 
|  | } pkt_received; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } pkt_sent; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } disconnected; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } host_lost; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } link_reset; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } link_suspend; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } link_resume; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } av_empty; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } rx_full; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } av_overflow; | 
|  | } usbdev_reg2hw_intr_enable_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } pkt_received; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } pkt_sent; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } disconnected; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } host_lost; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } link_reset; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } link_suspend; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } link_resume; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } av_empty; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } rx_full; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        qe; | 
|  | } av_overflow; | 
|  | } usbdev_reg2hw_intr_test_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic        q; | 
|  | } enable; | 
|  | struct packed { | 
|  | logic [6:0]  q; | 
|  | } device_address; | 
|  | } usbdev_reg2hw_usbctrl_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | logic [4:0]  q; | 
|  | logic        qe; | 
|  | } usbdev_reg2hw_avbuffer_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic [4:0]  q; | 
|  | logic        re; | 
|  | } buffer; | 
|  | struct packed { | 
|  | logic [6:0]  q; | 
|  | logic        re; | 
|  | } size; | 
|  | struct packed { | 
|  | logic        q; | 
|  | logic        re; | 
|  | } setup; | 
|  | struct packed { | 
|  | logic [3:0]  q; | 
|  | logic        re; | 
|  | } ep; | 
|  | } usbdev_reg2hw_rxfifo_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | logic        q; | 
|  | } usbdev_reg2hw_rxenable_setup_mreg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | logic        q; | 
|  | } usbdev_reg2hw_rxenable_out_mreg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | logic        q; | 
|  | } usbdev_reg2hw_stall_mreg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic [4:0]  q; | 
|  | } buffer; | 
|  | struct packed { | 
|  | logic [6:0]  q; | 
|  | } size; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } pend; | 
|  | struct packed { | 
|  | logic        q; | 
|  | } rdy; | 
|  | } usbdev_reg2hw_configin_mreg_t; | 
|  |  | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } pkt_received; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } pkt_sent; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } disconnected; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } host_lost; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } link_reset; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } link_suspend; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } link_resume; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } av_empty; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } rx_full; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } av_overflow; | 
|  | } usbdev_hw2reg_intr_state_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic [6:0]  d; | 
|  | logic        de; | 
|  | } device_address; | 
|  | } usbdev_hw2reg_usbctrl_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic [10:0] d; | 
|  | } frame; | 
|  | struct packed { | 
|  | logic        d; | 
|  | } host_lost; | 
|  | struct packed { | 
|  | logic [1:0]  d; | 
|  | } link_state; | 
|  | struct packed { | 
|  | logic        d; | 
|  | } usb_sense; | 
|  | struct packed { | 
|  | logic [2:0]  d; | 
|  | } av_depth; | 
|  | struct packed { | 
|  | logic        d; | 
|  | } av_full; | 
|  | struct packed { | 
|  | logic [2:0]  d; | 
|  | } rx_depth; | 
|  | struct packed { | 
|  | logic        d; | 
|  | } rx_empty; | 
|  | } usbdev_hw2reg_usbstat_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic [4:0]  d; | 
|  | } buffer; | 
|  | struct packed { | 
|  | logic [6:0]  d; | 
|  | } size; | 
|  | struct packed { | 
|  | logic        d; | 
|  | } setup; | 
|  | struct packed { | 
|  | logic [3:0]  d; | 
|  | } ep; | 
|  | } usbdev_hw2reg_rxfifo_reg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } usbdev_hw2reg_in_sent_mreg_t; | 
|  |  | 
|  | typedef struct packed { | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } pend; | 
|  | struct packed { | 
|  | logic        d; | 
|  | logic        de; | 
|  | } rdy; | 
|  | } usbdev_hw2reg_configin_mreg_t; | 
|  |  | 
|  |  | 
|  | /////////////////////////////////////// | 
|  | // Register to internal design logic // | 
|  | /////////////////////////////////////// | 
|  | typedef struct packed { | 
|  | usbdev_reg2hw_intr_state_reg_t intr_state; // [278:269] | 
|  | usbdev_reg2hw_intr_enable_reg_t intr_enable; // [268:259] | 
|  | usbdev_reg2hw_intr_test_reg_t intr_test; // [258:239] | 
|  | usbdev_reg2hw_usbctrl_reg_t usbctrl; // [238:231] | 
|  | usbdev_reg2hw_avbuffer_reg_t avbuffer; // [230:225] | 
|  | usbdev_reg2hw_rxfifo_reg_t rxfifo; // [224:204] | 
|  | usbdev_reg2hw_rxenable_setup_mreg_t [11:0] rxenable_setup; // [203:192] | 
|  | usbdev_reg2hw_rxenable_out_mreg_t [11:0] rxenable_out; // [191:180] | 
|  | usbdev_reg2hw_stall_mreg_t [11:0] stall; // [179:168] | 
|  | usbdev_reg2hw_configin_mreg_t [11:0] configin; // [167:0] | 
|  | } usbdev_reg2hw_t; | 
|  |  | 
|  | /////////////////////////////////////// | 
|  | // Internal design logic to register // | 
|  | /////////////////////////////////////// | 
|  | typedef struct packed { | 
|  | usbdev_hw2reg_intr_state_reg_t intr_state; // [139:130] | 
|  | usbdev_hw2reg_usbctrl_reg_t usbctrl; // [129:122] | 
|  | usbdev_hw2reg_usbstat_reg_t usbstat; // [121:122] | 
|  | usbdev_hw2reg_rxfifo_reg_t rxfifo; // [121:101] | 
|  | usbdev_hw2reg_in_sent_mreg_t [11:0] in_sent; // [100:77] | 
|  | usbdev_hw2reg_configin_mreg_t [11:0] configin; // [76:29] | 
|  | } usbdev_hw2reg_t; | 
|  |  | 
|  | // Register Address | 
|  | parameter USBDEV_INTR_STATE_OFFSET = 12'h 0; | 
|  | parameter USBDEV_INTR_ENABLE_OFFSET = 12'h 4; | 
|  | parameter USBDEV_INTR_TEST_OFFSET = 12'h 8; | 
|  | parameter USBDEV_USBCTRL_OFFSET = 12'h c; | 
|  | parameter USBDEV_USBSTAT_OFFSET = 12'h 10; | 
|  | parameter USBDEV_AVBUFFER_OFFSET = 12'h 14; | 
|  | parameter USBDEV_RXFIFO_OFFSET = 12'h 18; | 
|  | parameter USBDEV_RXENABLE_SETUP_OFFSET = 12'h 1c; | 
|  | parameter USBDEV_RXENABLE_OUT_OFFSET = 12'h 20; | 
|  | parameter USBDEV_IN_SENT_OFFSET = 12'h 24; | 
|  | parameter USBDEV_STALL_OFFSET = 12'h 28; | 
|  | parameter USBDEV_CONFIGIN0_OFFSET = 12'h 2c; | 
|  | parameter USBDEV_CONFIGIN1_OFFSET = 12'h 30; | 
|  | parameter USBDEV_CONFIGIN2_OFFSET = 12'h 34; | 
|  | parameter USBDEV_CONFIGIN3_OFFSET = 12'h 38; | 
|  | parameter USBDEV_CONFIGIN4_OFFSET = 12'h 3c; | 
|  | parameter USBDEV_CONFIGIN5_OFFSET = 12'h 40; | 
|  | parameter USBDEV_CONFIGIN6_OFFSET = 12'h 44; | 
|  | parameter USBDEV_CONFIGIN7_OFFSET = 12'h 48; | 
|  | parameter USBDEV_CONFIGIN8_OFFSET = 12'h 4c; | 
|  | parameter USBDEV_CONFIGIN9_OFFSET = 12'h 50; | 
|  | parameter USBDEV_CONFIGIN10_OFFSET = 12'h 54; | 
|  | parameter USBDEV_CONFIGIN11_OFFSET = 12'h 58; | 
|  |  | 
|  | // Window parameter | 
|  | parameter USBDEV_BUFFER_OFFSET = 12'h 800; | 
|  | parameter USBDEV_BUFFER_SIZE   = 12'h 800; | 
|  |  | 
|  | // Register Index | 
|  | typedef enum int { | 
|  | USBDEV_INTR_STATE, | 
|  | USBDEV_INTR_ENABLE, | 
|  | USBDEV_INTR_TEST, | 
|  | USBDEV_USBCTRL, | 
|  | USBDEV_USBSTAT, | 
|  | USBDEV_AVBUFFER, | 
|  | USBDEV_RXFIFO, | 
|  | USBDEV_RXENABLE_SETUP, | 
|  | USBDEV_RXENABLE_OUT, | 
|  | USBDEV_IN_SENT, | 
|  | USBDEV_STALL, | 
|  | USBDEV_CONFIGIN0, | 
|  | USBDEV_CONFIGIN1, | 
|  | USBDEV_CONFIGIN2, | 
|  | USBDEV_CONFIGIN3, | 
|  | USBDEV_CONFIGIN4, | 
|  | USBDEV_CONFIGIN5, | 
|  | USBDEV_CONFIGIN6, | 
|  | USBDEV_CONFIGIN7, | 
|  | USBDEV_CONFIGIN8, | 
|  | USBDEV_CONFIGIN9, | 
|  | USBDEV_CONFIGIN10, | 
|  | USBDEV_CONFIGIN11 | 
|  | } usbdev_id_e; | 
|  |  | 
|  | // Register width information to check illegal writes | 
|  | localparam logic [3:0] USBDEV_PERMIT [23] = '{ | 
|  | 4'b 0011, // index[ 0] USBDEV_INTR_STATE | 
|  | 4'b 0011, // index[ 1] USBDEV_INTR_ENABLE | 
|  | 4'b 0011, // index[ 2] USBDEV_INTR_TEST | 
|  | 4'b 0111, // index[ 3] USBDEV_USBCTRL | 
|  | 4'b 1111, // index[ 4] USBDEV_USBSTAT | 
|  | 4'b 0001, // index[ 5] USBDEV_AVBUFFER | 
|  | 4'b 0111, // index[ 6] USBDEV_RXFIFO | 
|  | 4'b 0011, // index[ 7] USBDEV_RXENABLE_SETUP | 
|  | 4'b 0011, // index[ 8] USBDEV_RXENABLE_OUT | 
|  | 4'b 0011, // index[ 9] USBDEV_IN_SENT | 
|  | 4'b 0011, // index[10] USBDEV_STALL | 
|  | 4'b 1111, // index[11] USBDEV_CONFIGIN0 | 
|  | 4'b 1111, // index[12] USBDEV_CONFIGIN1 | 
|  | 4'b 1111, // index[13] USBDEV_CONFIGIN2 | 
|  | 4'b 1111, // index[14] USBDEV_CONFIGIN3 | 
|  | 4'b 1111, // index[15] USBDEV_CONFIGIN4 | 
|  | 4'b 1111, // index[16] USBDEV_CONFIGIN5 | 
|  | 4'b 1111, // index[17] USBDEV_CONFIGIN6 | 
|  | 4'b 1111, // index[18] USBDEV_CONFIGIN7 | 
|  | 4'b 1111, // index[19] USBDEV_CONFIGIN8 | 
|  | 4'b 1111, // index[20] USBDEV_CONFIGIN9 | 
|  | 4'b 1111, // index[21] USBDEV_CONFIGIN10 | 
|  | 4'b 1111  // index[22] USBDEV_CONFIGIN11 | 
|  | }; | 
|  | endpackage | 
|  |  |