../src/lowrisc_top_earlgrey_padctrl_reg_0.1/rtl/autogen/padctrl_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 padctrl_reg_pkg;
8:
9: // Param list
10: parameter int NDioPads = 15;
11: parameter int NMioPads = 32;
12: parameter int AttrDw = 8;
13:
14: ////////////////////////////
15: // Typedefs for registers //
16: ////////////////////////////
17: typedef struct packed {
18: logic [7:0] q;
19: logic qe;
20: } padctrl_reg2hw_dio_pads_mreg_t;
21:
22: typedef struct packed {
23: logic [7:0] q;
24: logic qe;
25: } padctrl_reg2hw_mio_pads_mreg_t;
26:
27:
28: typedef struct packed {
29: logic [7:0] d;
30: } padctrl_hw2reg_dio_pads_mreg_t;
31:
32: typedef struct packed {
33: logic [7:0] d;
34: } padctrl_hw2reg_mio_pads_mreg_t;
35:
36:
37: ///////////////////////////////////////
38: // Register to internal design logic //
39: ///////////////////////////////////////
40: typedef struct packed {
41: padctrl_reg2hw_dio_pads_mreg_t [14:0] dio_pads; // [422:288]
42: padctrl_reg2hw_mio_pads_mreg_t [31:0] mio_pads; // [287:0]
43: } padctrl_reg2hw_t;
44:
45: ///////////////////////////////////////
46: // Internal design logic to register //
47: ///////////////////////////////////////
48: typedef struct packed {
49: padctrl_hw2reg_dio_pads_mreg_t [14:0] dio_pads; // [375:256]
50: padctrl_hw2reg_mio_pads_mreg_t [31:0] mio_pads; // [255:0]
51: } padctrl_hw2reg_t;
52:
53: // Register Address
54: parameter logic [5:0] PADCTRL_REGEN_OFFSET = 6'h 0;
55: parameter logic [5:0] PADCTRL_DIO_PADS0_OFFSET = 6'h 4;
56: parameter logic [5:0] PADCTRL_DIO_PADS1_OFFSET = 6'h 8;
57: parameter logic [5:0] PADCTRL_DIO_PADS2_OFFSET = 6'h c;
58: parameter logic [5:0] PADCTRL_DIO_PADS3_OFFSET = 6'h 10;
59: parameter logic [5:0] PADCTRL_MIO_PADS0_OFFSET = 6'h 14;
60: parameter logic [5:0] PADCTRL_MIO_PADS1_OFFSET = 6'h 18;
61: parameter logic [5:0] PADCTRL_MIO_PADS2_OFFSET = 6'h 1c;
62: parameter logic [5:0] PADCTRL_MIO_PADS3_OFFSET = 6'h 20;
63: parameter logic [5:0] PADCTRL_MIO_PADS4_OFFSET = 6'h 24;
64: parameter logic [5:0] PADCTRL_MIO_PADS5_OFFSET = 6'h 28;
65: parameter logic [5:0] PADCTRL_MIO_PADS6_OFFSET = 6'h 2c;
66: parameter logic [5:0] PADCTRL_MIO_PADS7_OFFSET = 6'h 30;
67:
68:
69: // Register Index
70: typedef enum int {
71: PADCTRL_REGEN,
72: PADCTRL_DIO_PADS0,
73: PADCTRL_DIO_PADS1,
74: PADCTRL_DIO_PADS2,
75: PADCTRL_DIO_PADS3,
76: PADCTRL_MIO_PADS0,
77: PADCTRL_MIO_PADS1,
78: PADCTRL_MIO_PADS2,
79: PADCTRL_MIO_PADS3,
80: PADCTRL_MIO_PADS4,
81: PADCTRL_MIO_PADS5,
82: PADCTRL_MIO_PADS6,
83: PADCTRL_MIO_PADS7
84: } padctrl_id_e;
85:
86: // Register width information to check illegal writes
87: parameter logic [3:0] PADCTRL_PERMIT [13] = '{
88: 4'b 0001, // index[ 0] PADCTRL_REGEN
89: 4'b 1111, // index[ 1] PADCTRL_DIO_PADS0
90: 4'b 1111, // index[ 2] PADCTRL_DIO_PADS1
91: 4'b 1111, // index[ 3] PADCTRL_DIO_PADS2
92: 4'b 0111, // index[ 4] PADCTRL_DIO_PADS3
93: 4'b 1111, // index[ 5] PADCTRL_MIO_PADS0
94: 4'b 1111, // index[ 6] PADCTRL_MIO_PADS1
95: 4'b 1111, // index[ 7] PADCTRL_MIO_PADS2
96: 4'b 1111, // index[ 8] PADCTRL_MIO_PADS3
97: 4'b 1111, // index[ 9] PADCTRL_MIO_PADS4
98: 4'b 1111, // index[10] PADCTRL_MIO_PADS5
99: 4'b 1111, // index[11] PADCTRL_MIO_PADS6
100: 4'b 1111 // index[12] PADCTRL_MIO_PADS7
101: };
102: endpackage
103:
104: