blob: 72f2c275b50902b17c4d3864bf3e516cc0dd787c [file] [log] [blame]
// 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 usbuart_reg_pkg;
// Address width within the block
parameter int BlockAw = 6;
////////////////////////////
// Typedefs for registers //
////////////////////////////
typedef struct packed {
struct packed {
logic q;
} tx_watermark;
struct packed {
logic q;
} rx_watermark;
struct packed {
logic q;
} tx_overflow;
struct packed {
logic q;
} rx_overflow;
struct packed {
logic q;
} rx_frame_err;
struct packed {
logic q;
} rx_break_err;
struct packed {
logic q;
} rx_timeout;
struct packed {
logic q;
} rx_parity_err;
} usbuart_reg2hw_intr_state_reg_t;
typedef struct packed {
struct packed {
logic q;
} tx_watermark;
struct packed {
logic q;
} rx_watermark;
struct packed {
logic q;
} tx_overflow;
struct packed {
logic q;
} rx_overflow;
struct packed {
logic q;
} rx_frame_err;
struct packed {
logic q;
} rx_break_err;
struct packed {
logic q;
} rx_timeout;
struct packed {
logic q;
} rx_parity_err;
} usbuart_reg2hw_intr_enable_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} tx_watermark;
struct packed {
logic q;
logic qe;
} rx_watermark;
struct packed {
logic q;
logic qe;
} tx_overflow;
struct packed {
logic q;
logic qe;
} rx_overflow;
struct packed {
logic q;
logic qe;
} rx_frame_err;
struct packed {
logic q;
logic qe;
} rx_break_err;
struct packed {
logic q;
logic qe;
} rx_timeout;
struct packed {
logic q;
logic qe;
} rx_parity_err;
} usbuart_reg2hw_intr_test_reg_t;
typedef struct packed {
struct packed {
logic q;
} tx;
struct packed {
logic q;
} rx;
struct packed {
logic q;
} nf;
struct packed {
logic q;
} slpbk;
struct packed {
logic q;
} llpbk;
struct packed {
logic q;
} parity_en;
struct packed {
logic q;
} parity_odd;
struct packed {
logic [1:0] q;
} rxblvl;
struct packed {
logic [15:0] q;
} nco;
} usbuart_reg2hw_ctrl_reg_t;
typedef struct packed {
logic [7:0] q;
logic re;
} usbuart_reg2hw_rdata_reg_t;
typedef struct packed {
logic [7:0] q;
logic qe;
} usbuart_reg2hw_wdata_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} rxrst;
struct packed {
logic q;
logic qe;
} txrst;
struct packed {
logic [2:0] q;
logic qe;
} rxilvl;
struct packed {
logic [1:0] q;
logic qe;
} txilvl;
} usbuart_reg2hw_fifo_ctrl_reg_t;
typedef struct packed {
struct packed {
logic q;
} txen;
struct packed {
logic q;
} txval;
} usbuart_reg2hw_ovrd_reg_t;
typedef struct packed {
struct packed {
logic [23:0] q;
} val;
struct packed {
logic q;
} en;
} usbuart_reg2hw_timeout_ctrl_reg_t;
typedef struct packed {
struct packed {
logic d;
logic de;
} tx_watermark;
struct packed {
logic d;
logic de;
} rx_watermark;
struct packed {
logic d;
logic de;
} tx_overflow;
struct packed {
logic d;
logic de;
} rx_overflow;
struct packed {
logic d;
logic de;
} rx_frame_err;
struct packed {
logic d;
logic de;
} rx_break_err;
struct packed {
logic d;
logic de;
} rx_timeout;
struct packed {
logic d;
logic de;
} rx_parity_err;
} usbuart_hw2reg_intr_state_reg_t;
typedef struct packed {
struct packed {
logic d;
} txfull;
struct packed {
logic d;
} rxfull;
struct packed {
logic d;
} txempty;
struct packed {
logic d;
} txidle;
struct packed {
logic d;
} rxidle;
struct packed {
logic d;
} rxempty;
} usbuart_hw2reg_status_reg_t;
typedef struct packed {
logic [7:0] d;
} usbuart_hw2reg_rdata_reg_t;
typedef struct packed {
struct packed {
logic d;
logic de;
} rxrst;
struct packed {
logic d;
logic de;
} txrst;
struct packed {
logic [2:0] d;
logic de;
} rxilvl;
struct packed {
logic [1:0] d;
logic de;
} txilvl;
} usbuart_hw2reg_fifo_ctrl_reg_t;
typedef struct packed {
struct packed {
logic [5:0] d;
} txlvl;
struct packed {
logic [5:0] d;
} rxlvl;
} usbuart_hw2reg_fifo_status_reg_t;
typedef struct packed {
logic [15:0] d;
} usbuart_hw2reg_val_reg_t;
typedef struct packed {
struct packed {
logic [10:0] d;
} frame;
struct packed {
logic d;
} host_timeout;
struct packed {
logic d;
} host_lost;
struct packed {
logic [6:0] d;
} device_address;
} usbuart_hw2reg_usbstat_reg_t;
typedef struct packed {
struct packed {
logic [15:0] d;
} baud_req;
struct packed {
logic [1:0] d;
} parity_req;
} usbuart_hw2reg_usbparam_reg_t;
///////////////////////////////////////
// Register to internal design logic //
///////////////////////////////////////
typedef struct packed {
usbuart_reg2hw_intr_state_reg_t intr_state; // [112:105]
usbuart_reg2hw_intr_enable_reg_t intr_enable; // [104:97]
usbuart_reg2hw_intr_test_reg_t intr_test; // [96:81]
usbuart_reg2hw_ctrl_reg_t ctrl; // [80:56]
usbuart_reg2hw_rdata_reg_t rdata; // [55:47]
usbuart_reg2hw_wdata_reg_t wdata; // [46:38]
usbuart_reg2hw_fifo_ctrl_reg_t fifo_ctrl; // [37:27]
usbuart_reg2hw_ovrd_reg_t ovrd; // [26:25]
usbuart_reg2hw_timeout_ctrl_reg_t timeout_ctrl; // [24:0]
} usbuart_reg2hw_t;
///////////////////////////////////////
// Internal design logic to register //
///////////////////////////////////////
typedef struct packed {
usbuart_hw2reg_intr_state_reg_t intr_state; // [106:91]
usbuart_hw2reg_status_reg_t status; // [90:85]
usbuart_hw2reg_rdata_reg_t rdata; // [84:77]
usbuart_hw2reg_fifo_ctrl_reg_t fifo_ctrl; // [76:66]
usbuart_hw2reg_fifo_status_reg_t fifo_status; // [65:54]
usbuart_hw2reg_val_reg_t val; // [53:38]
usbuart_hw2reg_usbstat_reg_t usbstat; // [37:18]
usbuart_hw2reg_usbparam_reg_t usbparam; // [17:0]
} usbuart_hw2reg_t;
// Register Address
parameter logic [BlockAw-1:0] USBUART_INTR_STATE_OFFSET = 6'h 0;
parameter logic [BlockAw-1:0] USBUART_INTR_ENABLE_OFFSET = 6'h 4;
parameter logic [BlockAw-1:0] USBUART_INTR_TEST_OFFSET = 6'h 8;
parameter logic [BlockAw-1:0] USBUART_CTRL_OFFSET = 6'h c;
parameter logic [BlockAw-1:0] USBUART_STATUS_OFFSET = 6'h 10;
parameter logic [BlockAw-1:0] USBUART_RDATA_OFFSET = 6'h 14;
parameter logic [BlockAw-1:0] USBUART_WDATA_OFFSET = 6'h 18;
parameter logic [BlockAw-1:0] USBUART_FIFO_CTRL_OFFSET = 6'h 1c;
parameter logic [BlockAw-1:0] USBUART_FIFO_STATUS_OFFSET = 6'h 20;
parameter logic [BlockAw-1:0] USBUART_OVRD_OFFSET = 6'h 24;
parameter logic [BlockAw-1:0] USBUART_VAL_OFFSET = 6'h 28;
parameter logic [BlockAw-1:0] USBUART_TIMEOUT_CTRL_OFFSET = 6'h 2c;
parameter logic [BlockAw-1:0] USBUART_USBSTAT_OFFSET = 6'h 30;
parameter logic [BlockAw-1:0] USBUART_USBPARAM_OFFSET = 6'h 34;
// Reset values for hwext registers and their fields
parameter logic [7:0] USBUART_INTR_TEST_RESVAL = 8'h 0;
parameter logic [0:0] USBUART_INTR_TEST_TX_WATERMARK_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_RX_WATERMARK_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_TX_OVERFLOW_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_RX_OVERFLOW_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_RX_FRAME_ERR_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_RX_BREAK_ERR_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_RX_TIMEOUT_RESVAL = 1'h 0;
parameter logic [0:0] USBUART_INTR_TEST_RX_PARITY_ERR_RESVAL = 1'h 0;
parameter logic [5:0] USBUART_STATUS_RESVAL = 6'h 0;
parameter logic [7:0] USBUART_RDATA_RESVAL = 8'h 0;
parameter logic [21:0] USBUART_FIFO_STATUS_RESVAL = 22'h 0;
parameter logic [15:0] USBUART_VAL_RESVAL = 16'h 0;
parameter logic [22:0] USBUART_USBSTAT_RESVAL = 23'h 0;
parameter logic [17:0] USBUART_USBPARAM_RESVAL = 18'h 0;
// Register Index
typedef enum int {
USBUART_INTR_STATE,
USBUART_INTR_ENABLE,
USBUART_INTR_TEST,
USBUART_CTRL,
USBUART_STATUS,
USBUART_RDATA,
USBUART_WDATA,
USBUART_FIFO_CTRL,
USBUART_FIFO_STATUS,
USBUART_OVRD,
USBUART_VAL,
USBUART_TIMEOUT_CTRL,
USBUART_USBSTAT,
USBUART_USBPARAM
} usbuart_id_e;
// Register width information to check illegal writes
parameter logic [3:0] USBUART_PERMIT [14] = '{
4'b 0001, // index[ 0] USBUART_INTR_STATE
4'b 0001, // index[ 1] USBUART_INTR_ENABLE
4'b 0001, // index[ 2] USBUART_INTR_TEST
4'b 1111, // index[ 3] USBUART_CTRL
4'b 0001, // index[ 4] USBUART_STATUS
4'b 0001, // index[ 5] USBUART_RDATA
4'b 0001, // index[ 6] USBUART_WDATA
4'b 0001, // index[ 7] USBUART_FIFO_CTRL
4'b 0111, // index[ 8] USBUART_FIFO_STATUS
4'b 0001, // index[ 9] USBUART_OVRD
4'b 0011, // index[10] USBUART_VAL
4'b 1111, // index[11] USBUART_TIMEOUT_CTRL
4'b 0111, // index[12] USBUART_USBSTAT
4'b 0111 // index[13] USBUART_USBPARAM
};
endpackage