@@ -1425,6 +1425,10 @@ module I3CCSR (
1425
1425
logic next;
1426
1426
logic load_next;
1427
1427
} TRANSFER_ABORT_STAT;
1428
+ struct packed{
1429
+ logic next;
1430
+ logic load_next;
1431
+ } TX_DESC_COMPLETE;
1428
1432
struct packed{
1429
1433
logic next;
1430
1434
logic load_next;
@@ -1475,6 +1479,10 @@ module I3CCSR (
1475
1479
logic next;
1476
1480
logic load_next;
1477
1481
} TRANSFER_ABORT_STAT_EN;
1482
+ struct packed{
1483
+ logic next;
1484
+ logic load_next;
1485
+ } TX_DESC_COMPLETE_EN;
1478
1486
struct packed{
1479
1487
logic next;
1480
1488
logic load_next;
@@ -1525,6 +1533,10 @@ module I3CCSR (
1525
1533
logic next;
1526
1534
logic load_next;
1527
1535
} TRANSFER_ABORT_STAT_FORCE;
1536
+ struct packed{
1537
+ logic next;
1538
+ logic load_next;
1539
+ } TX_DESC_COMPLETE_FORCE;
1528
1540
struct packed{
1529
1541
logic next;
1530
1542
logic load_next;
@@ -2554,6 +2566,9 @@ module I3CCSR (
2554
2566
struct packed{
2555
2567
logic value;
2556
2568
} TRANSFER_ABORT_STAT;
2569
+ struct packed{
2570
+ logic value;
2571
+ } TX_DESC_COMPLETE;
2557
2572
struct packed{
2558
2573
logic value;
2559
2574
} TRANSFER_ERR_STAT;
@@ -2592,6 +2607,9 @@ module I3CCSR (
2592
2607
struct packed{
2593
2608
logic value;
2594
2609
} TRANSFER_ABORT_STAT_EN;
2610
+ struct packed{
2611
+ logic value;
2612
+ } TX_DESC_COMPLETE_EN;
2595
2613
struct packed{
2596
2614
logic value;
2597
2615
} TRANSFER_ERR_STAT_EN;
@@ -2630,6 +2648,9 @@ module I3CCSR (
2630
2648
struct packed{
2631
2649
logic value;
2632
2650
} TRANSFER_ABORT_STAT_FORCE;
2651
+ struct packed{
2652
+ logic value;
2653
+ } TX_DESC_COMPLETE_FORCE;
2633
2654
struct packed{
2634
2655
logic value;
2635
2656
} TRANSFER_ERR_STAT_FORCE;
@@ -8321,6 +8342,32 @@ module I3CCSR (
8321
8342
end
8322
8343
end
8323
8344
assign hwif_out.I3C_EC.TTI.INTERRUPT_STATUS.TRANSFER_ABORT_STAT.value = field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TRANSFER_ABORT_STAT.value;
8345
+ // Field: I3CCSR.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE
8346
+ always_comb begin
8347
+ automatic logic [0:0] next_c;
8348
+ automatic logic load_next_c;
8349
+ next_c = field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value;
8350
+ load_next_c = '0;
8351
+ if(decoded_reg_strb.I3C_EC.TTI.INTERRUPT_STATUS && decoded_req_is_wr) begin // SW write 1 clear
8352
+ next_c = field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value & ~(decoded_wr_data[26:26] & decoded_wr_biten[26:26]);
8353
+ load_next_c = '1;
8354
+ end else if(hwif_in.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.we) begin // HW Write - we
8355
+ next_c = hwif_in.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.next;
8356
+ load_next_c = '1;
8357
+ end
8358
+ field_combo.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.next = next_c;
8359
+ field_combo.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.load_next = load_next_c;
8360
+ end
8361
+ always_ff @(posedge clk or negedge hwif_in.rst_ni) begin
8362
+ if(~hwif_in.rst_ni) begin
8363
+ field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value <= 1'h0;
8364
+ end else begin
8365
+ if(field_combo.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.load_next) begin
8366
+ field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value <= field_combo.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.next;
8367
+ end
8368
+ end
8369
+ end
8370
+ assign hwif_out.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value = field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value;
8324
8371
// Field: I3CCSR.I3C_EC.TTI.INTERRUPT_STATUS.TRANSFER_ERR_STAT
8325
8372
always_comb begin
8326
8373
automatic logic [0:0] next_c;
@@ -8600,6 +8647,29 @@ module I3CCSR (
8600
8647
end
8601
8648
end
8602
8649
assign hwif_out.I3C_EC.TTI.INTERRUPT_ENABLE.TRANSFER_ABORT_STAT_EN.value = field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TRANSFER_ABORT_STAT_EN.value;
8650
+ // Field: I3CCSR.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN
8651
+ always_comb begin
8652
+ automatic logic [0:0] next_c;
8653
+ automatic logic load_next_c;
8654
+ next_c = field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value;
8655
+ load_next_c = '0;
8656
+ if(decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && decoded_req_is_wr) begin // SW write
8657
+ next_c = (field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value & ~decoded_wr_biten[26:26]) | (decoded_wr_data[26:26] & decoded_wr_biten[26:26]);
8658
+ load_next_c = '1;
8659
+ end
8660
+ field_combo.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.next = next_c;
8661
+ field_combo.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.load_next = load_next_c;
8662
+ end
8663
+ always_ff @(posedge clk or negedge hwif_in.rst_ni) begin
8664
+ if(~hwif_in.rst_ni) begin
8665
+ field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value <= 1'h0;
8666
+ end else begin
8667
+ if(field_combo.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.load_next) begin
8668
+ field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value <= field_combo.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.next;
8669
+ end
8670
+ end
8671
+ end
8672
+ assign hwif_out.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value = field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value;
8603
8673
// Field: I3CCSR.I3C_EC.TTI.INTERRUPT_ENABLE.TRANSFER_ERR_STAT_EN
8604
8674
always_comb begin
8605
8675
automatic logic [0:0] next_c;
@@ -8876,6 +8946,29 @@ module I3CCSR (
8876
8946
end
8877
8947
end
8878
8948
assign hwif_out.I3C_EC.TTI.INTERRUPT_FORCE.TRANSFER_ABORT_STAT_FORCE.value = field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TRANSFER_ABORT_STAT_FORCE.value;
8949
+ // Field: I3CCSR.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE
8950
+ always_comb begin
8951
+ automatic logic [0:0] next_c;
8952
+ automatic logic load_next_c;
8953
+ next_c = field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value;
8954
+ load_next_c = '0;
8955
+ if(decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && decoded_req_is_wr) begin // SW write
8956
+ next_c = (field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value & ~decoded_wr_biten[26:26]) | (decoded_wr_data[26:26] & decoded_wr_biten[26:26]);
8957
+ load_next_c = '1;
8958
+ end
8959
+ field_combo.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.next = next_c;
8960
+ field_combo.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.load_next = load_next_c;
8961
+ end
8962
+ always_ff @(posedge clk or negedge hwif_in.rst_ni) begin
8963
+ if(~hwif_in.rst_ni) begin
8964
+ field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value <= 1'h0;
8965
+ end else begin
8966
+ if(field_combo.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.load_next) begin
8967
+ field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value <= field_combo.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.next;
8968
+ end
8969
+ end
8970
+ end
8971
+ assign hwif_out.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value = field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value;
8879
8972
// Field: I3CCSR.I3C_EC.TTI.INTERRUPT_FORCE.TRANSFER_ERR_STAT_FORCE
8880
8973
always_comb begin
8881
8974
automatic logic [0:0] next_c;
@@ -10261,7 +10354,8 @@ module I3CCSR (
10261
10354
assign readback_array[78][18:15] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_STATUS && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_STATUS.PENDING_INTERRUPT.value : '0;
10262
10355
assign readback_array[78][24:19] = '0;
10263
10356
assign readback_array[78][25:25] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_STATUS && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TRANSFER_ABORT_STAT.value : '0;
10264
- assign readback_array[78][30:26] = '0;
10357
+ assign readback_array[78][26:26] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_STATUS && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TX_DESC_COMPLETE.value : '0;
10358
+ assign readback_array[78][30:27] = '0;
10265
10359
assign readback_array[78][31:31] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_STATUS && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_STATUS.TRANSFER_ERR_STAT.value : '0;
10266
10360
assign readback_array[79][0:0] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.RX_DESC_STAT_EN.value : '0;
10267
10361
assign readback_array[79][1:1] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_STAT_EN.value : '0;
@@ -10276,7 +10370,8 @@ module I3CCSR (
10276
10370
assign readback_array[79][13:13] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.IBI_DONE_EN.value : '0;
10277
10371
assign readback_array[79][24:14] = '0;
10278
10372
assign readback_array[79][25:25] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TRANSFER_ABORT_STAT_EN.value : '0;
10279
- assign readback_array[79][30:26] = '0;
10373
+ assign readback_array[79][26:26] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TX_DESC_COMPLETE_EN.value : '0;
10374
+ assign readback_array[79][30:27] = '0;
10280
10375
assign readback_array[79][31:31] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_ENABLE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_ENABLE.TRANSFER_ERR_STAT_EN.value : '0;
10281
10376
assign readback_array[80][0:0] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_FORCE.RX_DESC_STAT_FORCE.value : '0;
10282
10377
assign readback_array[80][1:1] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_STAT_FORCE.value : '0;
@@ -10291,7 +10386,8 @@ module I3CCSR (
10291
10386
assign readback_array[80][13:13] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_FORCE.IBI_DONE_FORCE.value : '0;
10292
10387
assign readback_array[80][24:14] = '0;
10293
10388
assign readback_array[80][25:25] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TRANSFER_ABORT_STAT_FORCE.value : '0;
10294
- assign readback_array[80][30:26] = '0;
10389
+ assign readback_array[80][26:26] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TX_DESC_COMPLETE_FORCE.value : '0;
10390
+ assign readback_array[80][30:27] = '0;
10295
10391
assign readback_array[80][31:31] = (decoded_reg_strb.I3C_EC.TTI.INTERRUPT_FORCE && !decoded_req_is_wr) ? field_storage.I3C_EC.TTI.INTERRUPT_FORCE.TRANSFER_ERR_STAT_FORCE.value : '0;
10296
10392
assign readback_array[81] = hwif_in.I3C_EC.TTI.RX_DESC_QUEUE_PORT.rd_ack ? hwif_in.I3C_EC.TTI.RX_DESC_QUEUE_PORT.rd_data : '0;
10297
10393
assign readback_array[82] = hwif_in.I3C_EC.TTI.RX_DATA_PORT.rd_ack ? hwif_in.I3C_EC.TTI.RX_DATA_PORT.rd_data : '0;
0 commit comments