@@ -4,6 +4,8 @@ pub proto package axi4_prototype {
44 const DATA_WIDTH_BYTES: u32;
55 const NUM_BURSTS_LEN : u32;
66 const LOCK_LEN : u32;
7+ const QOS_LEN : u32;
8+ const REGION_LEN : u32;
79 const ID_LENGTH : u32;
810 const AWUSER_LENGTH : u32;
911 const WUSER_LENGTH : u32;
@@ -16,16 +18,21 @@ pub proto package axi4_prototype {
1618 type strb_t ;
1719 type num_bursts_t;
1820 type lock_t ;
21+ type qos_t ;
22+ type region_t ;
1923 type id_t ;
2024 type awuser_t ;
2125 type wuser_t ;
2226 type buser_t ;
2327 type aruser_t ;
2428 type ruser_t ;
2529
26- type size_t ;
27- type burst_t;
28- type resp_t ;
30+ type size_t ;
31+ type burst_t ;
32+ type wcache_t;
33+ type rcache_t;
34+ type proto_t ;
35+ type resp_t ;
2936}
3037
3138///### AXI3 bus package prototype
@@ -45,6 +52,8 @@ pub proto package axi3_prototype {
4552
4653 type size_t ;
4754 type burst_t;
55+ type cache_t;
56+ type proto_t;
4857 type resp_t ;
4958}
5059
@@ -56,6 +65,7 @@ pub proto package axi4_lite_prototype {
5665 type data_t ;
5766 type strb_t ;
5867 type id_t ;
68+ type proto_t ;
5969 type resp_t ;
6070}
6171
@@ -80,23 +90,23 @@ pub package axi4_config {
8090 }
8191
8292 struct awcache_bits {
83- AWCACHE_ALLOCATE : logic,
84- AWCACHE_OTHER_ALLOCATE : logic,
85- AWCACHE_MODIFIABLE : logic,
86- AWCACHE_BUFFERABLE : logic,
93+ allocate : logic,
94+ other_allocate : logic,
95+ modifiable : logic,
96+ bufferable : logic,
8797 }
8898
8999 struct arcache_bits {
90- ARCACHE_OTHER_ALLOCATE : logic,
91- ARCACHE_ALLOCATE : logic,
92- ARCACHE_MODIFIABLE : logic,
93- ARCACHE_BUFFERABLE : logic,
100+ other_allocate : logic,
101+ allocate : logic,
102+ modifiable : logic,
103+ bufferable : logic,
94104 }
95105
96106 struct axprot_bits {
97- AXPROT_INSTRUCTION_ACCESS : logic,
98- AXPROT_NON_SECURE : logic,
99- AXPROT_PRIVILEGED : logic,
107+ instruction_access : logic,
108+ non_secure : logic,
109+ privileged : logic,
100110 }
101111
102112 enum resp_variants: logic<2> {
@@ -114,6 +124,8 @@ pub package axi4_pkg::<ADDR_W: u32, DATA_W_BYTES: u32, ID_W: u32, AWUSER_W: u32,
114124 const DATA_WIDTH_BYTES: u32 = DATA_W_BYTES;
115125 const NUM_BURSTS_LEN : u32 = 8;
116126 const LOCK_LEN : u32 = 1;
127+ const QOS_LEN : u32 = 4;
128+ const REGION_LEN : u32 = 4;
117129 const ID_LENGTH : u32 = ID_W;
118130 const AWUSER_LENGTH : u32 = AWUSER_W;
119131 const WUSER_LENGTH : u32 = WUSER_W;
@@ -126,16 +138,21 @@ pub package axi4_pkg::<ADDR_W: u32, DATA_W_BYTES: u32, ID_W: u32, AWUSER_W: u32,
126138 type strb_t = logic<DATA_WIDTH_BYTES> ;
127139 type num_bursts_t = logic<NUM_BURSTS_LEN> ;
128140 type lock_t = logic<LOCK_LEN> ;
141+ type qos_t = logic<QOS_LEN> ;
142+ type region_t = logic<REGION_LEN> ;
129143 type id_t = logic<ID_LENGTH> ;
130144 type awuser_t = logic<AWUSER_LENGTH> ;
131145 type wuser_t = logic<WUSER_LENGTH> ;
132146 type buser_t = logic<BUSER_LENGTH> ;
133147 type aruser_t = logic<ARUSER_LENGTH> ;
134148 type ruser_t = logic<RUSER_LENGTH> ;
135149
136- type size_t = axi4_config::axsize_variants ;
137- type burst_t = axi4_config::axburst_variants;
138- type resp_t = axi4_config::resp_variants ;
150+ type size_t = axi4_config::axsize_variants ;
151+ type burst_t = axi4_config::axburst_variants;
152+ type wcache_t = axi4_config::awcache_bits ;
153+ type rcache_t = axi4_config::arcache_bits ;
154+ type proto_t = axi4_config::axprot_bits ;
155+ type resp_t = axi4_config::resp_variants ;
139156
140157}
141158
@@ -160,16 +177,16 @@ pub package axi3_config {
160177 }
161178
162179 struct axcache_bits {
163- AXCACHE_WRITE_ALLOCATE : logic,
164- AXCACHE_READ_ALLOCATE : logic,
165- AXCACHE_CACHEABLE : logic,
166- AXCACHE_BUFFERABLE : logic,
180+ write_allocate : logic,
181+ read_allocate : logic,
182+ cacheable : logic,
183+ bufferable : logic,
167184 }
168185
169186 struct axprot_bits {
170- AXPROT_INSTRUCTION_ACCESS : logic,
171- AXPROT_NON_SECURE : logic,
172- AXPROT_PRIVILEGED : logic,
187+ instruction_access : logic,
188+ non_secure : logic,
189+ privileged : logic,
173190 }
174191
175192 enum resp_variants: logic<2> {
@@ -198,16 +215,18 @@ pub package axi3_pkg::<ADDR_W: u32, DATA_W_BYTES: u32, ID_W: u32> for axi3_proto
198215
199216 type size_t = axi3_config::axsize_variants ;
200217 type burst_t = axi3_config::axburst_variants;
218+ type cache_t = axi3_config::axcache_bits ;
219+ type proto_t = axi3_config::axprot_bits ;
201220 type resp_t = axi3_config::resp_variants ;
202221}
203222
204223///### AXI4-Lite configuration definitions
205224pub package axi4_lite_config {
206225
207226 struct axprot_bits {
208- AXPROT_INSTRUCTION_ACCESS : logic,
209- AXPROT_NON_SECURE : logic,
210- AXPROT_PRIVILEGED : logic,
227+ instruction_access : logic,
228+ non_secure : logic,
229+ privileged : logic,
211230 }
212231
213232 enum resp_variants: logic<2> {
@@ -231,6 +250,7 @@ pub package axi4_lite_pkg::<ADDR_W: u32, DATA_W_BYTES: u32, ID_W: u32> for axi4_
231250
232251 type id_t = logic<ID_LENGTH>;
233252
234- type resp_t = axi4_lite_config::resp_variants;
253+ type proto_t = axi4_lite_config::axprot_bits ;
254+ type resp_t = axi4_lite_config::resp_variants;
235255
236256}
0 commit comments