Hi sir:
I am trying to integrated the chi here into a system, while I readed the implementation of the chi protocol , I found for a read transaction with seperate response (which is RespSepData and DataSepResp), if the DataSepResp comes first and we get all the data the transaction requested , the m_gotRspSepData will be set to true in HandleRxDat.
this may result in a TLM_GENERIC_ERROR_RESPONSE response when the RespSepData came sometime later after the DataSepResp in cache_chi::b_transport_rxrsp ?
virtual void b_transport_rxrsp(tlm::tlm_generic_payload& trans, sc_time& delay)
{
trans.set_response_status(tlm::TLM_GENERIC_ERROR_RESPONSE);
.....
ret = t->HandleRxRsp(trans, chiattr); // return false. see the comment blow
m_transmitter.Process(t);
}
// false here, so the trans respoonse will he TLM_GENERIC_ERROR_RESPONSE
// which is set at the first line of b_transport_rxrsp
if (ret) {
trans.set_response_status(
tlm::TLM_OK_RESPONSE);
}
Hi sir:
I am trying to integrated the chi here into a system, while I readed the implementation of the chi protocol , I found for a read transaction with seperate response (which is RespSepData and DataSepResp), if the DataSepResp comes first and we get all the data the transaction requested , the m_gotRspSepData will be set to true in HandleRxDat.
this may result in a TLM_GENERIC_ERROR_RESPONSE response when the RespSepData came sometime later after the DataSepResp in cache_chi::b_transport_rxrsp ?
libsystemctlm-soc/tlm-modules/private/chi/txns-rn.h
Line 477 in 42aa8ed
virtual void b_transport_rxrsp(tlm::tlm_generic_payload& trans, sc_time& delay)