From 5661f7982529a3d0b2da85c7b6a9bf36c16c7545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20=C3=96rtenberg?= Date: Fri, 16 May 2025 20:59:02 +0200 Subject: [PATCH] socbridge: fixed small race con bug and added fallback when reading empty buf --- src/socbridge/socbridge_driver.vhd | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/socbridge/socbridge_driver.vhd b/src/socbridge/socbridge_driver.vhd index 1b824b0..845089f 100644 --- a/src/socbridge/socbridge_driver.vhd +++ b/src/socbridge/socbridge_driver.vhd @@ -238,7 +238,11 @@ begin when TX_W_BODY => if st.tx_stage > 0 then socbridge_driver_to_ip.ready <= '1'; - local_next_data_out := ip_to_socbridge_driver.data; + if ip_to_socbridge_driver.valid = '1' then + local_next_data_out := ip_to_socbridge_driver.data; + else + local_next_data_out := (others => '0'); + end if; end if; when TX_R_BODY => if st.tx_stage > 0 then @@ -316,7 +320,10 @@ begin end case; case trans_st.read.curr_state is when IDLE => - if st.curr_rx_transaction = READ or st.curr_rx_transaction = READ_ADD + if next_rx_transaction = READ or next_rx_transaction = READ_ADD + or next_rx_transaction = WRITE or next_rx_transaction = WRITE_ADD then + trans_read_next_state <= IDLE; + elsif st.curr_rx_transaction = READ or st.curr_rx_transaction = READ_ADD or st.curr_rx_transaction = WRITE or st.curr_rx_transaction = WRITE_ADD then trans_read_next_state <= IDLE; elsif trans_st.read.curr_inst.request = '1' then