@@ -58,62 +58,60 @@ pzcorebus_response_last sresp_last;
58
58
packer[info.lsb+ : ((info.width> 0 )? info.width: 1 )]
59
59
60
60
`define pzcorebus_if_define_request_api (BUS_CONFIG ) \
61
- localparam pzcorebus_if_command_position_list COMMAND_POSITION_LIST = build_command_position_list (BUS_CONFIG ); \
62
- localparam int COMMAND_PACKER_WIDTH = get_command_packer_width (COMMAND_POSITION_LIST ); \
63
- localparam pzcorebus_if_write_data_position_list WRITE_DATA_POSITION_LIST = build_write_data_position_list (BUS_CONFIG ); \
64
- localparam int WRITE_DATA_PACKER_WIDTH = get_write_data_packer_width (WRITE_DATA_POSITION_LIST ); \
61
+ localparam shortint COMMAND_PACKER_WIDTH = BUS_CONFIG .mcmd_info.mcmd_packed_width + 1 ; \
62
+ localparam shortint WRITE_DATA_PACKER_WIDTH = BUS_CONFIG .mdata_info.mdata_packed_width + 1 ; \
65
63
\
66
64
function automatic pzcorebus_packed_command get_packed_command (); \
67
65
logic [COMMAND_PACKER_WIDTH - 1 : 0 ] packer; \
68
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . mcmd) = mcmd; \
69
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . mid) = mid; \
70
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . maddr) = maddr; \
71
- if (COMMAND_POSITION_LIST .mlength.width > 0 ) begin \
72
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . mlength) = mlength; \
66
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. mcmd) = mcmd; \
67
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. mid) = mid; \
68
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. maddr) = maddr; \
69
+ if (BUS_CONFIG .mcmd_info .mlength.width > 0 ) begin \
70
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. mlength) = mlength; \
73
71
end \
74
- if (COMMAND_POSITION_LIST .mparam.width > 0 ) begin \
75
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . mparam) = mparam; \
72
+ if (BUS_CONFIG .mcmd_info .mparam.width > 0 ) begin \
73
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. mparam) = mparam; \
76
74
end \
77
- if (COMMAND_POSITION_LIST .minfo.width > 0 ) begin \
78
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . minfo) = minfo; \
75
+ if (BUS_CONFIG .mcmd_info .minfo.width > 0 ) begin \
76
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. minfo) = minfo; \
79
77
end \
80
- if (COMMAND_POSITION_LIST .mdata.width > 0 ) begin \
81
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . mdata) = mdata; \
78
+ if (BUS_CONFIG .mcmd_info .mdata.width > 0 ) begin \
79
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. mdata) = mdata; \
82
80
end \
83
- if (COMMAND_POSITION_LIST .mdata_byteen.width > 0 ) begin \
84
- `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST . mdata_byteen) = mdata_byteen; \
81
+ if (BUS_CONFIG .mcmd_info .mdata_byteen.width > 0 ) begin \
82
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info. mdata_byteen) = mdata_byteen; \
85
83
end \
86
84
return pzcorebus_packed_command ' (packer); \
87
85
endfunction \
88
86
\
89
87
function automatic void put_packed_command (pzcorebus_packed_command command); \
90
88
logic [COMMAND_PACKER_WIDTH - 1 : 0 ] packer; \
91
89
packer = COMMAND_PACKER_WIDTH ' (command); \
92
- mcmd = pzcorebus_command_type ' (`pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .mcmd)); \
93
- mid = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .mid); \
94
- maddr = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .maddr); \
90
+ mcmd = pzcorebus_command_type ' (`pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .mcmd)); \
91
+ mid = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .mid); \
92
+ maddr = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .maddr); \
95
93
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
96
- mlength = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .mlength); \
94
+ mlength = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .mlength); \
97
95
end \
98
96
else begin \
99
97
mlength = '0 ; \
100
98
end \
101
- if (COMMAND_POSITION_LIST .mparam.width > 0 ) begin \
102
- mparam = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .mparam); \
99
+ if (BUS_CONFIG .mcmd_info .mparam.width > 0 ) begin \
100
+ mparam = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .mparam); \
103
101
end \
104
102
else begin \
105
103
mparam = '0 ; \
106
104
end \
107
- if (COMMAND_POSITION_LIST .minfo.width > 0 ) begin \
108
- minfo = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .minfo); \
105
+ if (BUS_CONFIG .mcmd_info .minfo.width > 0 ) begin \
106
+ minfo = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .minfo); \
109
107
end \
110
108
else begin \
111
109
minfo = '0 ; \
112
110
end \
113
111
if (`pzcorebus_csr_profile (BUS_CONFIG )) begin \
114
- mdata = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .mdata); \
112
+ mdata = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .mdata); \
115
113
if (BUS_CONFIG .use_byte_enable) begin \
116
- mdata_byteen = `pzcorebus_if_get_packer (packer, COMMAND_POSITION_LIST .mdata_byteen); \
114
+ mdata_byteen = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mcmd_info .mdata_byteen); \
117
115
end \
118
116
else begin \
119
117
mdata_byteen = '0 ; \
@@ -123,22 +121,22 @@ endfunction \
123
121
\
124
122
function automatic pzcorebus_command get_command (); \
125
123
pzcorebus_command command; \
126
- command.command = mcmd; \
127
- command.id = mid; \
128
- command.address = maddr; \
124
+ command.command = mcmd; \
125
+ command.id = mid; \
126
+ command.address = maddr; \
129
127
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
130
128
command.length = mlength; \
131
129
end \
132
130
else begin \
133
131
command.length = '0 ; \
134
132
end \
135
- if (COMMAND_POSITION_LIST .mparam.width > 0 ) begin \
133
+ if (BUS_CONFIG .mcmd_info .mparam.width > 0 ) begin \
136
134
command.param = mparam; \
137
135
end \
138
136
else begin \
139
137
command.param = '0 ; \
140
138
end \
141
- if (COMMAND_POSITION_LIST .minfo.width > 0 ) begin \
139
+ if (BUS_CONFIG .mcmd_info .minfo.width > 0 ) begin \
142
140
command.info = minfo; \
143
141
end \
144
142
else begin \
@@ -169,13 +167,13 @@ function automatic void put_command(pzcorebus_command command); \
169
167
else begin \
170
168
mlength = '0 ; \
171
169
end \
172
- if (COMMAND_POSITION_LIST .mparam.width > 0 ) begin \
170
+ if (BUS_CONFIG .mcmd_info .mparam.width > 0 ) begin \
173
171
mparam = command.param; \
174
172
end \
175
173
else begin \
176
174
mparam = '0 ; \
177
175
end \
178
- if (COMMAND_POSITION_LIST .minfo.width > 0 ) begin \
176
+ if (BUS_CONFIG .mcmd_info .minfo.width > 0 ) begin \
179
177
minfo = command.info; \
180
178
end \
181
179
else begin \
@@ -195,10 +193,10 @@ endfunction \
195
193
function automatic pzcorebus_packed_write_data get_packed_write_data (); \
196
194
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
197
195
logic [WRITE_DATA_PACKER_WIDTH - 1 : 0 ] packer; \
198
- `pzcorebus_if_get_packer (packer, WRITE_DATA_POSITION_LIST . mdata_last) = mdata_last; \
199
- `pzcorebus_if_get_packer (packer, WRITE_DATA_POSITION_LIST . mdata) = mdata; \
196
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mdata_info. mdata_last) = mdata_last; \
197
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mdata_info. mdata) = mdata; \
200
198
if (BUS_CONFIG .use_byte_enable) begin \
201
- `pzcorebus_if_get_packer (packer, WRITE_DATA_POSITION_LIST . mdata_byteen) = mdata_byteen; \
199
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .mdata_info. mdata_byteen) = mdata_byteen; \
202
200
end \
203
201
return pzcorebus_packed_write_data ' (packer); \
204
202
end \
@@ -211,10 +209,10 @@ function automatic void put_packed_write_data(pzcorebus_packed_write_data write_
211
209
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
212
210
logic [WRITE_DATA_PACKER_WIDTH - 1 : 0 ] packer; \
213
211
packer = WRITE_DATA_PACKER_WIDTH ' (write_data); \
214
- mdata_last = `pzcorebus_if_get_packer (packer, WRITE_DATA_POSITION_LIST .mdata_last); \
215
- mdata = `pzcorebus_if_get_packer (packer, WRITE_DATA_POSITION_LIST .mdata); \
212
+ mdata_last = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mdata_info .mdata_last); \
213
+ mdata = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mdata_info .mdata); \
216
214
if (BUS_CONFIG .use_byte_enable) begin \
217
- mdata_byteen = `pzcorebus_if_get_packer (packer, WRITE_DATA_POSITION_LIST .mdata_byteen); \
215
+ mdata_byteen = `pzcorebus_if_get_packer (packer, BUS_CONFIG .mdata_info .mdata_byteen); \
218
216
end \
219
217
else begin \
220
218
mdata_byteen = '0 ; \
@@ -247,8 +245,8 @@ endfunction \
247
245
\
248
246
function automatic void put_write_data (pzcorebus_write_data write_data); \
249
247
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
250
- mdata_last = write_data.last; \
251
- mdata = write_data.data; \
248
+ mdata_last = write_data.last; \
249
+ mdata = write_data.data; \
252
250
if (BUS_CONFIG .use_byte_enable) begin \
253
251
mdata_byteen = write_data.byte_enable; \
254
252
end \
@@ -412,9 +410,8 @@ function automatic pzcorebus_unpacked_length unpack_length(); \
412
410
end \
413
411
endfunction \
414
412
\
415
- localparam int DATA_SIZE = BUS_CONFIG .data_width / BUS_CONFIG .unit_data_width; \
416
413
localparam int LENGTH_OFFSET_LSB = $clog2 (BUS_CONFIG .unit_data_width / 8 ); \
417
- localparam int LENGTH_OFFSET_WIDTH = (DATA_SIZE > 1 ) ? $clog2 (DATA_SIZE ) : 1 ; \
414
+ localparam int LENGTH_OFFSET_WIDTH = (BUS_CONFIG .data_size > 1 ) ? $clog2 (BUS_CONFIG .data_size ) : 1 ; \
418
415
\
419
416
function automatic pzcorebus_unpacked_length get_length (); \
420
417
case (1'b1 ) \
@@ -426,7 +423,7 @@ endfunction \
426
423
\
427
424
function automatic pzcorebus_unpacked_length get_aligned_length (); \
428
425
pzcorebus_unpacked_length offset; \
429
- if ((DATA_SIZE == 1 ) || is_atomic_command () || is_message_command ()) begin \
426
+ if ((BUS_CONFIG .data_size == 1 ) || is_atomic_command () || is_message_command ()) begin \
430
427
offset = pzcorebus_unpacked_length ' (0 ); \
431
428
end \
432
429
else begin \
@@ -436,13 +433,13 @@ function automatic pzcorebus_unpacked_length get_aligned_length(); \
436
433
endfunction \
437
434
\
438
435
function automatic pzcorebus_burst_length get_burst_length (); \
439
- if ((DATA_SIZE == 1 ) || `pzcorebus_csr_profile (BUS_CONFIG )) begin \
436
+ if ((BUS_CONFIG .data_size == 1 ) || `pzcorebus_csr_profile (BUS_CONFIG )) begin \
440
437
return pzcorebus_burst_length ' (get_length ()); \
441
438
end \
442
439
else begin \
443
440
pzcorebus_unpacked_length length; \
444
- length = get_aligned_length () + pzcorebus_unpacked_length ' (DATA_SIZE - 1 ); \
445
- return pzcorebus_burst_length ' (length / DATA_SIZE ); \
441
+ length = get_aligned_length () + pzcorebus_unpacked_length ' (BUS_CONFIG .data_size - 1 ); \
442
+ return pzcorebus_burst_length ' (length / BUS_CONFIG .data_size ); \
446
443
end \
447
444
endfunction \
448
445
\
@@ -451,53 +448,52 @@ function automatic pzcorebus_unpacked_length get_response_length(); \
451
448
is_posted_command (): return pzcorebus_unpacked_length ' (0 ); \
452
449
is_read_command (), \
453
450
is_atomic_command (): return unpack_length (); \
454
- default : return pzcorebus_unpacked_length ' (DATA_SIZE ); \
451
+ default : return pzcorebus_unpacked_length ' (BUS_CONFIG .data_size ); \
455
452
endcase \
456
453
endfunction
457
454
458
455
`define pzcorebus_if_define_response_api (BUS_CONFIG ) \
459
- localparam pzcorebus_if_response_position_list RESPONSE_POSITION_LIST = build_response_position_list (BUS_CONFIG ); \
460
- localparam int RESPONSE_PACKER_WIDTH = get_response_packer_width (RESPONSE_POSITION_LIST ); \
456
+ localparam shortint RESPONSE_PACKER_WIDTH = BUS_CONFIG .sresp_info.sresp_packed_width + 1 ; \
461
457
\
462
458
function automatic pzcorebus_packed_response get_packed_response (); \
463
459
logic [RESPONSE_PACKER_WIDTH - 1 : 0 ] packer; \
464
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . sresp) = sresp; \
465
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . sid) = sid; \
466
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . serror) = serror; \
467
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . sdata) = sdata; \
468
- if (RESPONSE_POSITION_LIST .sinfo.width > 0 ) begin \
469
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . sinfo) = sinfo; \
460
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. sresp) = sresp; \
461
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. sid) = sid; \
462
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. serror) = serror; \
463
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. sdata) = sdata; \
464
+ if (BUS_CONFIG .sresp_info .sinfo.width > 0 ) begin \
465
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. sinfo) = sinfo; \
470
466
end \
471
467
if (`pzcorebus_memoy_h_profile (BUS_CONFIG )) begin \
472
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . sresp_uniten) = sresp_uniten; \
468
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. sresp_uniten) = sresp_uniten; \
473
469
end \
474
470
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
475
- `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST . sresp_last) = sresp_last; \
471
+ `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info. sresp_last) = sresp_last; \
476
472
end \
477
473
return pzcorebus_packed_response ' (packer); \
478
474
endfunction \
479
475
\
480
476
function automatic void put_packed_response (pzcorebus_packed_response response); \
481
477
logic [RESPONSE_PACKER_WIDTH - 1 : 0 ] packer; \
482
478
packer = RESPONSE_PACKER_WIDTH ' (response); \
483
- sresp = pzcorebus_response_type ' (`pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .sresp)); \
484
- sid = `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .sid); \
485
- serror = `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .serror); \
486
- sdata = `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .sdata); \
487
- if (RESPONSE_POSITION_LIST .sinfo.width > 0 ) begin \
488
- sinfo = `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .sinfo); \
479
+ sresp = pzcorebus_response_type ' (`pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .sresp)); \
480
+ sid = `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .sid); \
481
+ serror = `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .serror); \
482
+ sdata = `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .sdata); \
483
+ if (BUS_CONFIG .sresp_info .sinfo.width > 0 ) begin \
484
+ sinfo = `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .sinfo); \
489
485
end \
490
486
else begin \
491
487
sinfo = '0 ; \
492
488
end \
493
489
if (`pzcorebus_memoy_h_profile (BUS_CONFIG )) begin \
494
- sresp_uniten = `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .sresp_uniten); \
490
+ sresp_uniten = `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .sresp_uniten); \
495
491
end \
496
492
else begin \
497
493
sresp_uniten = '0 ; \
498
494
end \
499
495
if (`pzcorebus_memoy_profile (BUS_CONFIG )) begin \
500
- sresp_last = `pzcorebus_if_get_packer (packer, RESPONSE_POSITION_LIST .sresp_last); \
496
+ sresp_last = `pzcorebus_if_get_packer (packer, BUS_CONFIG .sresp_info .sresp_last); \
501
497
end \
502
498
else begin \
503
499
sresp_last = '0 ; \
@@ -510,7 +506,7 @@ function automatic pzcorebus_response get_response(); \
510
506
response.id = sid; \
511
507
response.error = serror; \
512
508
response.data = sdata; \
513
- response.info = (RESPONSE_POSITION_LIST . sinfo.width > 0 ) ? sinfo : '0 ; \
509
+ response.info = (BUS_CONFIG .sresp_info. sinfo.width > 0 ) ? sinfo : '0 ; \
514
510
response.unit_enable = (`pzcorebus_memoy_h_profile (BUS_CONFIG )) ? sresp_uniten : '0 ; \
515
511
response.last = (`pzcorebus_memoy_profile (BUS_CONFIG ) ) ? sresp_last : '0 ; \
516
512
return response; \
@@ -521,7 +517,7 @@ function automatic void put_response(pzcorebus_response response); \
521
517
sid = response.id; \
522
518
serror = response.error; \
523
519
sdata = response.data; \
524
- if (RESPONSE_POSITION_LIST .sinfo.width > 0 ) begin \
520
+ if (BUS_CONFIG .sresp_info .sinfo.width > 0 ) begin \
525
521
sinfo = response.info; \
526
522
end \
527
523
else begin \
0 commit comments