@@ -143,6 +143,9 @@ module hci
143
143
input logic set_dasa_valid_i,
144
144
input logic set_dasa_virtual_device_i,
145
145
input logic rstdaa_i,
146
+ input logic [6 : 0 ] newda_i,
147
+ input logic set_newda_i,
148
+ input logic set_newda_virtual_device_i,
146
149
147
150
input logic [7 : 0 ] rst_action_i,
148
151
input logic rst_action_valid_i
@@ -307,15 +310,37 @@ module hci
307
310
308
311
always_comb begin : wire_address_setting
309
312
// Target address
310
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .we = (set_dasa_valid_i | rstdaa_i) && ~ (set_dasa_virtual_device_i);
311
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .next = (rstdaa_i && ~ (set_dasa_virtual_device_i)) ? '0 : set_dasa_valid_i;
312
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .we = (set_dasa_valid_i | rstdaa_i) && ~ (set_dasa_virtual_device_i);
313
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .next = (rstdaa_i && ~ (set_dasa_virtual_device_i)) ? 1'b0 : set_dasa_i;
314
- // Virtual device address
315
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
316
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .next = rstdaa_i && set_dasa_virtual_device_i ? '0 : set_dasa_valid_i;
317
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
318
- hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .next = rstdaa_i && set_dasa_virtual_device_i ? 1'b0 : set_dasa_i;
313
+ if (set_dasa_valid_i | rstdaa_i) begin
314
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .we = (set_dasa_valid_i | rstdaa_i) && ~ (set_dasa_virtual_device_i);
315
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .next = (rstdaa_i && ~ (set_dasa_virtual_device_i)) ? '0 : set_dasa_valid_i;
316
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .we = (set_dasa_valid_i | rstdaa_i) && ~ (set_dasa_virtual_device_i);
317
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .next = (rstdaa_i && ~ (set_dasa_virtual_device_i)) ? 1'b0 : set_dasa_i;
318
+ // Virtual device address
319
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
320
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .next = rstdaa_i && set_dasa_virtual_device_i ? '0 : set_dasa_valid_i;
321
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
322
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .next = rstdaa_i && set_dasa_virtual_device_i ? 1'b0 : set_dasa_i;
323
+ end else if (set_newda_i | set_newda_virtual_device_i) begin
324
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .we = set_newda_i;
325
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .next = 1'b1 ;
326
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .we = set_newda_i;
327
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .next = newda_i;
328
+ // Virtual device address
329
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .we = set_newda_virtual_device_i;
330
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .next = 1'b1 ;
331
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .we = set_newda_virtual_device_i;
332
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .next = newda_i;
333
+ end else begin
334
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .we = 1'b0 ;
335
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR_VALID .next = '0 ;
336
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .we = 1'b0 ;
337
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_DEVICE_ADDR .DYNAMIC_ADDR .next = '0 ;
338
+ // Virtual device address
339
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .we = 1'b0 ;
340
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR_VALID .next = '0 ;
341
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .we = 1'b0 ;
342
+ hwif_in.I3C_EC .StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR .VIRT_DYNAMIC_ADDR .next = '0 ;
343
+ end
319
344
end
320
345
321
346
I3CCSR i3c_csr (
0 commit comments