@@ -74,6 +74,7 @@ module tti
74
74
output logic tx_data_queue_reg_rst_o,
75
75
input logic tx_data_queue_reg_rst_we_i,
76
76
input logic tx_data_queue_reg_rst_data_i,
77
+ input logic tx_data_queue_full_i,
77
78
78
79
// In-band Interrupt queue
79
80
output logic ibi_queue_req_o,
@@ -84,6 +85,8 @@ module tti
84
85
input logic ibi_queue_reg_rst_we_i,
85
86
input logic ibi_queue_reg_rst_data_i,
86
87
88
+ input logic bypass_i3c_core_i,
89
+
87
90
// IBI status
88
91
input logic [1 : 0 ] ibi_status_i,
89
92
input logic ibi_status_we_i,
@@ -150,6 +153,15 @@ module tti
150
153
ibi_queue_ready_thld_o = IbiThldWidth ' (hwif_tti_i.QUEUE_THLD_CTRL .IBI_THLD .value);
151
154
end : wire_hwif_thld
152
155
156
+ logic tx_data_queue_full_r;
157
+ always_ff @ (posedge clk_i or negedge rst_ni) begin : register_fifo_status
158
+ if (~ rst_ni) begin
159
+ tx_data_queue_full_r <= '0 ;
160
+ end else begin
161
+ tx_data_queue_full_r <= tx_data_queue_full_i;
162
+ end
163
+ end
164
+
153
165
always_comb begin : wire_hwif_xfer
154
166
rx_desc_queue_req_o = hwif_tti_i.RX_DESC_QUEUE_PORT .req;
155
167
hwif_tti_o.RX_DESC_QUEUE_PORT .rd_ack = rx_desc_queue_ack_i;
@@ -169,9 +181,15 @@ module tti
169
181
hwif_tti_o.RESET_CONTROL .RX_DATA_RST .we = rx_data_queue_reg_rst_we_i;
170
182
hwif_tti_o.RESET_CONTROL .RX_DATA_RST .next = rx_data_queue_reg_rst_data_i;
171
183
172
- tx_data_queue_req_o = hwif_tti_i.TX_DATA_PORT .req & hwif_tti_i.TX_DATA_PORT .req_is_wr;
173
- tx_data_queue_data_o = hwif_tti_i.TX_DATA_PORT .wr_data;
174
- hwif_tti_o.TX_DATA_PORT .wr_ack = tx_data_queue_ack_i;
184
+ if (bypass_i3c_core_i & tx_data_queue_full_r) begin
185
+ tx_data_queue_req_o = '0 ;
186
+ tx_data_queue_data_o = '0 ;
187
+ hwif_tti_o.TX_DATA_PORT .wr_ack = hwif_tti_i.TX_DATA_PORT .req & hwif_tti_i.TX_DATA_PORT .req_is_wr;
188
+ end else begin
189
+ tx_data_queue_req_o = hwif_tti_i.TX_DATA_PORT .req & hwif_tti_i.TX_DATA_PORT .req_is_wr;
190
+ tx_data_queue_data_o = hwif_tti_i.TX_DATA_PORT .wr_data;
191
+ hwif_tti_o.TX_DATA_PORT .wr_ack = tx_data_queue_ack_i;
192
+ end
175
193
hwif_tti_o.RESET_CONTROL .TX_DATA_RST .we = tx_data_queue_reg_rst_we_i;
176
194
hwif_tti_o.RESET_CONTROL .TX_DATA_RST .next = tx_data_queue_reg_rst_data_i;
177
195
0 commit comments