77package system_info_reg_pkg ;
88
99 // Address widths within the block
10- parameter int BlockAw = 5 ;
10+ parameter int BlockAw = 6 ;
1111
1212 // //////////////////////////
1313 // Typedefs for registers //
1414 // //////////////////////////
1515
16+ typedef struct packed {
17+ logic q;
18+ logic qe;
19+ } system_info_reg2hw_dna_capture_reg_t ;
20+
21+ typedef struct packed {
22+ logic q;
23+ logic re;
24+ } system_info_reg2hw_dna_reg_t ;
25+
1626 typedef struct packed {
1727 logic [31 : 0 ] d;
1828 } system_info_hw2reg_rtl_commit_hash_0_reg_t ;
@@ -45,27 +55,58 @@ package system_info_reg_pkg;
4555 logic [7 : 0 ] d;
4656 } system_info_hw2reg_spi_info_reg_t ;
4757
58+ typedef struct packed {
59+ logic d;
60+ } system_info_hw2reg_dna_reg_t ;
61+
62+ typedef struct packed {
63+ logic [31 : 0 ] d;
64+ } system_info_hw2reg_mem_size_reg_t ;
65+
66+ typedef struct packed {
67+ logic [31 : 0 ] d;
68+ } system_info_hw2reg_hyperram_size_reg_t ;
69+
70+ typedef struct packed {
71+ logic [31 : 0 ] d;
72+ } system_info_hw2reg_hyperram_tag_size_reg_t ;
73+
74+ // Register -> HW type
75+ typedef struct packed {
76+ system_info_reg2hw_dna_capture_reg_t dna_capture; // [3:2]
77+ system_info_reg2hw_dna_reg_t dna; // [1:0]
78+ } system_info_reg2hw_t ;
79+
4880 // HW -> register type
4981 typedef struct packed {
50- system_info_hw2reg_rtl_commit_hash_0_reg_t rtl_commit_hash_0; // [128:97]
51- system_info_hw2reg_rtl_commit_hash_1_reg_t rtl_commit_hash_1; // [96:65]
52- system_info_hw2reg_rtl_commit_dirty_reg_t rtl_commit_dirty; // [64:64]
53- system_info_hw2reg_system_frequency_reg_t system_frequency; // [63:32]
54- system_info_hw2reg_gpio_info_reg_t gpio_info; // [31:24]
55- system_info_hw2reg_uart_info_reg_t uart_info; // [23:16]
56- system_info_hw2reg_i2c_info_reg_t i2c_info; // [15:8]
57- system_info_hw2reg_spi_info_reg_t spi_info; // [7:0]
82+ system_info_hw2reg_rtl_commit_hash_0_reg_t rtl_commit_hash_0; // [225:194]
83+ system_info_hw2reg_rtl_commit_hash_1_reg_t rtl_commit_hash_1; // [193:162]
84+ system_info_hw2reg_rtl_commit_dirty_reg_t rtl_commit_dirty; // [161:161]
85+ system_info_hw2reg_system_frequency_reg_t system_frequency; // [160:129]
86+ system_info_hw2reg_gpio_info_reg_t gpio_info; // [128:121]
87+ system_info_hw2reg_uart_info_reg_t uart_info; // [120:113]
88+ system_info_hw2reg_i2c_info_reg_t i2c_info; // [112:105]
89+ system_info_hw2reg_spi_info_reg_t spi_info; // [104:97]
90+ system_info_hw2reg_dna_reg_t dna; // [96:96]
91+ system_info_hw2reg_mem_size_reg_t mem_size; // [95:64]
92+ system_info_hw2reg_hyperram_size_reg_t hyperram_size; // [63:32]
93+ system_info_hw2reg_hyperram_tag_size_reg_t hyperram_tag_size; // [31:0]
5894 } system_info_hw2reg_t ;
5995
6096 // Register offsets
61- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_RTL_COMMIT_HASH_0_OFFSET = 5'h 0 ;
62- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_RTL_COMMIT_HASH_1_OFFSET = 5'h 4 ;
63- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_RTL_COMMIT_DIRTY_OFFSET = 5'h 8 ;
64- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_SYSTEM_FREQUENCY_OFFSET = 5'h c ;
65- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_GPIO_INFO_OFFSET = 5'h 10 ;
66- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_UART_INFO_OFFSET = 5'h 14 ;
67- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_I2C_INFO_OFFSET = 5'h 18 ;
68- parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_SPI_INFO_OFFSET = 5'h 1c ;
97+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_RTL_COMMIT_HASH_0_OFFSET = 6'h 0 ;
98+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_RTL_COMMIT_HASH_1_OFFSET = 6'h 4 ;
99+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_RTL_COMMIT_DIRTY_OFFSET = 6'h 8 ;
100+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_SYSTEM_FREQUENCY_OFFSET = 6'h c ;
101+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_GPIO_INFO_OFFSET = 6'h 10 ;
102+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_UART_INFO_OFFSET = 6'h 14 ;
103+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_I2C_INFO_OFFSET = 6'h 18 ;
104+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_SPI_INFO_OFFSET = 6'h 1c ;
105+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_DNA_CAPTURE_OFFSET = 6'h 20 ;
106+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_DNA_OFFSET = 6'h 24 ;
107+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_MEM_SIZE_OFFSET = 6'h 28 ;
108+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_HYPERRAM_SIZE_OFFSET = 6'h 2c ;
109+ parameter logic [BlockAw- 1 : 0 ] SYSTEM_INFO_HYPERRAM_TAG_SIZE_OFFSET = 6'h 30 ;
69110
70111 // Reset values for hwext registers and their fields
71112 parameter logic [31 : 0 ] SYSTEM_INFO_RTL_COMMIT_HASH_0_RESVAL = 32'h 0 ;
@@ -77,6 +118,11 @@ package system_info_reg_pkg;
77118 parameter logic [7 : 0 ] SYSTEM_INFO_UART_INFO_RESVAL = 8'h 0 ;
78119 parameter logic [7 : 0 ] SYSTEM_INFO_I2C_INFO_RESVAL = 8'h 0 ;
79120 parameter logic [7 : 0 ] SYSTEM_INFO_SPI_INFO_RESVAL = 8'h 0 ;
121+ parameter logic [0 : 0 ] SYSTEM_INFO_DNA_CAPTURE_RESVAL = 1'h 0 ;
122+ parameter logic [0 : 0 ] SYSTEM_INFO_DNA_RESVAL = 1'h 0 ;
123+ parameter logic [31 : 0 ] SYSTEM_INFO_MEM_SIZE_RESVAL = 32'h 0 ;
124+ parameter logic [31 : 0 ] SYSTEM_INFO_HYPERRAM_SIZE_RESVAL = 32'h 0 ;
125+ parameter logic [31 : 0 ] SYSTEM_INFO_HYPERRAM_TAG_SIZE_RESVAL = 32'h 0 ;
80126
81127 // Register index
82128 typedef enum int {
@@ -87,19 +133,29 @@ package system_info_reg_pkg;
87133 SYSTEM_INFO_GPIO_INFO ,
88134 SYSTEM_INFO_UART_INFO ,
89135 SYSTEM_INFO_I2C_INFO ,
90- SYSTEM_INFO_SPI_INFO
136+ SYSTEM_INFO_SPI_INFO ,
137+ SYSTEM_INFO_DNA_CAPTURE ,
138+ SYSTEM_INFO_DNA ,
139+ SYSTEM_INFO_MEM_SIZE ,
140+ SYSTEM_INFO_HYPERRAM_SIZE ,
141+ SYSTEM_INFO_HYPERRAM_TAG_SIZE
91142 } system_info_id_e ;
92143
93144 // Register width information to check illegal writes
94- parameter logic [3 : 0 ] SYSTEM_INFO_PERMIT [8 ] = '{
95- 4'b 1111 , // index[0] SYSTEM_INFO_RTL_COMMIT_HASH_0
96- 4'b 1111 , // index[1] SYSTEM_INFO_RTL_COMMIT_HASH_1
97- 4'b 0001 , // index[2] SYSTEM_INFO_RTL_COMMIT_DIRTY
98- 4'b 1111 , // index[3] SYSTEM_INFO_SYSTEM_FREQUENCY
99- 4'b 0001 , // index[4] SYSTEM_INFO_GPIO_INFO
100- 4'b 0001 , // index[5] SYSTEM_INFO_UART_INFO
101- 4'b 0001 , // index[6] SYSTEM_INFO_I2C_INFO
102- 4'b 0001 // index[7] SYSTEM_INFO_SPI_INFO
145+ parameter logic [3 : 0 ] SYSTEM_INFO_PERMIT [13 ] = '{
146+ 4'b 1111 , // index[ 0] SYSTEM_INFO_RTL_COMMIT_HASH_0
147+ 4'b 1111 , // index[ 1] SYSTEM_INFO_RTL_COMMIT_HASH_1
148+ 4'b 0001 , // index[ 2] SYSTEM_INFO_RTL_COMMIT_DIRTY
149+ 4'b 1111 , // index[ 3] SYSTEM_INFO_SYSTEM_FREQUENCY
150+ 4'b 0001 , // index[ 4] SYSTEM_INFO_GPIO_INFO
151+ 4'b 0001 , // index[ 5] SYSTEM_INFO_UART_INFO
152+ 4'b 0001 , // index[ 6] SYSTEM_INFO_I2C_INFO
153+ 4'b 0001 , // index[ 7] SYSTEM_INFO_SPI_INFO
154+ 4'b 0001 , // index[ 8] SYSTEM_INFO_DNA_CAPTURE
155+ 4'b 0001 , // index[ 9] SYSTEM_INFO_DNA
156+ 4'b 1111 , // index[10] SYSTEM_INFO_MEM_SIZE
157+ 4'b 1111 , // index[11] SYSTEM_INFO_HYPERRAM_SIZE
158+ 4'b 1111 // index[12] SYSTEM_INFO_HYPERRAM_TAG_SIZE
103159 } ;
104160
105161endpackage
0 commit comments