1 |
11 |
dinesha |
/// Copyright by Syntacore LLC © 2016-2021. See LICENSE for details
|
2 |
|
|
/// @file
|
3 |
|
|
/// @brief SCU header file
|
4 |
|
|
///
|
5 |
|
|
|
6 |
|
|
`ifndef SCR1_INCLUDE_SCU_DEFS
|
7 |
|
|
`define SCR1_INCLUDE_SCU_DEFS
|
8 |
|
|
|
9 |
|
|
//`include "scr1_arch_description.svh"
|
10 |
|
|
|
11 |
|
|
`ifdef SCR1_DBG_EN
|
12 |
|
|
|
13 |
|
|
//==============================================================================
|
14 |
|
|
// Parameters
|
15 |
|
|
//==============================================================================
|
16 |
|
|
localparam int unsigned SCR1_SCU_DR_SYSCTRL_OP_WIDTH = 2;
|
17 |
|
|
localparam int unsigned SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH = 2;
|
18 |
|
|
localparam int unsigned SCR1_SCU_DR_SYSCTRL_DATA_WIDTH = 4;
|
19 |
21 |
dinesha |
localparam int unsigned SCR1_SCU_DR_SYSCTRL_WIDTH = SCR1_SCU_DR_SYSCTRL_OP_WIDTH+SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH+SCR1_SCU_DR_SYSCTRL_DATA_WIDTH; // cp.3
|
20 |
11 |
dinesha |
|
21 |
|
|
//==============================================================================
|
22 |
|
|
// Types
|
23 |
|
|
//==============================================================================
|
24 |
|
|
typedef enum logic [SCR1_SCU_DR_SYSCTRL_OP_WIDTH-1:0] {
|
25 |
|
|
SCR1_SCU_SYSCTRL_OP_WRITE = 2'h0,
|
26 |
|
|
SCR1_SCU_SYSCTRL_OP_READ = 2'h1,
|
27 |
|
|
SCR1_SCU_SYSCTRL_OP_SETBITS = 2'h2,
|
28 |
|
|
SCR1_SCU_SYSCTRL_OP_CLRBITS = 2'h3
|
29 |
|
|
`ifdef SCR1_XPROP_EN
|
30 |
|
|
,
|
31 |
|
|
SCR1_SCU_SYSCTRL_OP_XXX = 'X
|
32 |
|
|
`endif // SCR1_XPROP_EN
|
33 |
|
|
} type_scr1_scu_sysctrl_op_e;
|
34 |
|
|
|
35 |
|
|
typedef enum logic [SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH-1:0] {
|
36 |
|
|
SCR1_SCU_SYSCTRL_ADDR_CONTROL = 2'h0,
|
37 |
|
|
SCR1_SCU_SYSCTRL_ADDR_MODE = 2'h1,
|
38 |
|
|
SCR1_SCU_SYSCTRL_ADDR_STATUS = 2'h2,
|
39 |
|
|
SCR1_SCU_SYSCTRL_ADDR_STICKY = 2'h3
|
40 |
|
|
`ifdef SCR1_XPROP_EN
|
41 |
|
|
,
|
42 |
|
|
SCR1_SCU_SYSCTRL_ADDR_XXX = 'X
|
43 |
|
|
`endif // SCR1_XPROP_EN
|
44 |
|
|
} type_scr1_scu_sysctrl_addr_e;
|
45 |
|
|
|
46 |
|
|
typedef struct packed {
|
47 |
|
|
logic [SCR1_SCU_DR_SYSCTRL_DATA_WIDTH-1:0] data;
|
48 |
|
|
logic [SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH-1:0] addr;
|
49 |
|
|
logic [SCR1_SCU_DR_SYSCTRL_OP_WIDTH-1:0] op;
|
50 |
|
|
} type_scr1_scu_sysctrl_dr_s;
|
51 |
|
|
|
52 |
|
|
typedef enum int unsigned {
|
53 |
|
|
SCR1_SCU_DR_SYSCTRL_OP_BIT_R = 'h0,
|
54 |
|
|
SCR1_SCU_DR_SYSCTRL_OP_BIT_L = SCR1_SCU_DR_SYSCTRL_OP_WIDTH-1,
|
55 |
|
|
SCR1_SCU_DR_SYSCTRL_ADDR_BIT_R = SCR1_SCU_DR_SYSCTRL_OP_WIDTH,
|
56 |
|
|
SCR1_SCU_DR_SYSCTRL_ADDR_BIT_L = SCR1_SCU_DR_SYSCTRL_OP_WIDTH +
|
57 |
|
|
SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH - 1,
|
58 |
|
|
SCR1_SCU_DR_SYSCTRL_DATA_BIT_R = SCR1_SCU_DR_SYSCTRL_OP_WIDTH +
|
59 |
|
|
SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH,
|
60 |
|
|
SCR1_SCU_DR_SYSCTRL_DATA_BIT_L = SCR1_SCU_DR_SYSCTRL_OP_WIDTH +
|
61 |
|
|
SCR1_SCU_DR_SYSCTRL_ADDR_WIDTH +
|
62 |
|
|
SCR1_SCU_DR_SYSCTRL_DATA_WIDTH - 1
|
63 |
|
|
} type_scr1_scu_sysctrl_dr_bits_e;
|
64 |
|
|
|
65 |
|
|
typedef struct packed {
|
66 |
|
|
logic [1:0] rsrv;
|
67 |
|
|
logic core_reset;
|
68 |
|
|
logic sys_reset;
|
69 |
|
|
} type_scr1_scu_sysctrl_control_reg_s;
|
70 |
|
|
|
71 |
|
|
typedef struct packed {
|
72 |
|
|
logic [1:0] rsrv;
|
73 |
|
|
logic hdu_rst_bhv;
|
74 |
|
|
logic dm_rst_bhv;
|
75 |
|
|
} type_scr1_scu_sysctrl_mode_reg_s;
|
76 |
|
|
|
77 |
21 |
dinesha |
localparam bit [31:0] SCR1_SCU_SYSCTRL_STATUS_REG_WIDTH = 4; // cp.3
|
78 |
11 |
dinesha |
typedef struct packed {
|
79 |
|
|
logic hdu_reset;
|
80 |
|
|
logic dm_reset;
|
81 |
|
|
logic core_reset;
|
82 |
|
|
logic sys_reset;
|
83 |
|
|
} type_scr1_scu_sysctrl_status_reg_s;
|
84 |
|
|
|
85 |
|
|
`endif // SCR1_DBG_EN
|
86 |
|
|
`endif // SCR1_INCLUDE_SCU_DEFS
|