Lines Matching refs:trans

199     tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay)
204 nb_transport_fw_pre_checks( trans, phase, delay );
207 status = initiator_socket->nb_transport_fw( trans, phase, delay );
210 nb_transport_fw_post_checks( trans, start_phase, phase, delay, status );
216 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay)
219 nb_transport_bw_pre_checks( trans, phase, delay );
222 status = target_socket->nb_transport_bw( trans, phase, delay );
225 nb_transport_bw_post_checks( trans, phase, delay, status );
230 virtual void b_transport( tlm::tlm_generic_payload& trans, sc_core::sc_time& delay )
233 b_transport_pre_checks( trans, delay );
235 initiator_socket->b_transport( trans, delay );
238 b_transport_post_checks( trans, delay );
241 virtual bool get_direct_mem_ptr(tlm::tlm_generic_payload& trans,
244 get_direct_mem_ptr_pre_checks( trans, dmi_data );
247 status = initiator_socket->get_direct_mem_ptr( trans, dmi_data );
249 get_direct_mem_ptr_post_checks( trans, dmi_data );
259 virtual unsigned int transport_dbg(tlm::tlm_generic_payload& trans)
261 transport_dbg_pre_checks( trans );
264 count = initiator_socket->transport_dbg( trans );
266 transport_dbg_post_checks( trans, count );
272 void b_transport_pre_checks( tlm::tlm_generic_payload& trans, sc_core::sc_time& delay);
274 void b_transport_post_checks( tlm::tlm_generic_payload& trans, sc_core::sc_time& delay);
277 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay);
280 tlm::tlm_generic_payload& trans, tlm::tlm_phase& start_phase, tlm::tlm_phase& phase,
284 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay);
287 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay,
291 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay,
294 void check_initial_state( tlm::tlm_generic_payload& trans, const char* txt2 );
295 void check_trans_not_modified( tlm::tlm_generic_payload& trans, const char* txt2 );
296 void check_response_path( tlm::tlm_generic_payload& trans, const char* txt2 );
297 void remember_gp_option( tlm::tlm_generic_payload& trans );
299 void get_direct_mem_ptr_pre_checks( tlm::tlm_generic_payload& trans, tlm::tlm_dmi& dmi_data );
301 void get_direct_mem_ptr_post_checks( tlm::tlm_generic_payload& trans, tlm::tlm_dmi& dmi_data );
303 void transport_dbg_pre_checks( tlm::tlm_generic_payload& trans );
305 void transport_dbg_post_checks( tlm::tlm_generic_payload& trans, unsigned int count );
307 void tlm2error( tlm::tlm_generic_payload& trans, const char* ref, bool warning = false );
346 tlm::tlm_generic_payload& trans, sc_core::sc_time& delay)
348 ++ m_map[&trans].b_call;
350 if ( trans.has_mm() && trans.get_ref_count() == 0)
353 tlm2error(trans, "14.5 t)");
355 check_initial_state(trans, "b_transport");
361 tlm2error(trans, "11.1.1.4 b)");
365 if (m_map[&trans].ph > 0 && m_map[&trans].ph < 4)
368 tlm2error(trans, "15.2.10 c)");
375 tlm::tlm_generic_payload& trans, sc_core::sc_time& delay)
377 check_response_path(trans, "b_transport");
378 check_trans_not_modified(trans, "b_transport");
379 -- m_map[&trans].b_call;
385 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay)
387 if ( !trans.has_mm() )
390 tlm2error(trans, "14.5 i)");
392 if ( trans.get_ref_count() == 0)
395 tlm2error(trans, "14.5 t)");
401 check_initial_state(trans, "nb_transport_fw");
403 if (m_map[&trans].ph > 0 && m_map[&trans].ph < 4) // END_RESP -> BEGIN_REQ is legal
406 tlm2error(trans, "15.2.4");
412 tlm2error(trans, "15.2.6 e)");
414 m_request_in_progress = &trans;
416 if (m_map[&trans].b_call)
419 tlm2error(trans, "15.2.10 c)");
427 tlm2error(trans, " 15.2.3 c)");
431 if (m_map[&trans].ph != tlm::BEGIN_RESP)
434 tlm2error(trans, "15.2.4");
441 m_map[&trans].ph = phase;
443 if (sc_core::sc_time_stamp() + delay < m_map[&trans].time)
447 << ", sc_time_stamp() + delay from previous call = " << m_map[&trans].time;
448 tlm2error(trans, "15.2.7 c)");
450 m_map[&trans].time = sc_core::sc_time_stamp() + delay;
456 tlm::tlm_generic_payload& trans, tlm::tlm_phase& start_phase, tlm::tlm_phase& phase,
462 trans, phase, delay, "(forward) return", "Return from nb_transport_fw", "nb_transport_fw");
467 check_response_path(trans, "nb_transport_fw");
469 m_map[&trans].ph = tlm::UNINITIALIZED_PHASE;
477 check_trans_not_modified(trans, txt.str().c_str());
484 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay)
486 if ( !trans.has_mm() )
489 tlm2error(trans, "14.5 i)");
491 if ( trans.get_ref_count() == 0)
494 tlm2error(trans, "14.5 t)");
497 trans, phase, delay, "backward", "nb_transport_bw called", "nb_transport_bw");
503 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay,
512 tlm2error(trans, "15.2.4");
519 tlm2error(trans, "15.2.3 c)");
523 if (m_map[&trans].ph != tlm::BEGIN_RESP)
526 tlm2error(trans, "15.2.4");
534 m_map[&trans].ph = phase;
536 if (sc_core::sc_time_stamp() + delay < m_map[&trans].time)
540 << ", sc_time_stamp() + delay from previous call = " << m_map[&trans].time;
541 tlm2error(trans, "15.2.7 c)");
543 m_map[&trans].time = sc_core::sc_time_stamp() + delay;
548 m_map[&trans].ph = tlm::UNINITIALIZED_PHASE;
556 check_trans_not_modified(trans, txt.str().c_str());
563 tlm::tlm_generic_payload& trans, tlm::tlm_phase& phase, sc_core::sc_time& delay,
566 if (trans.is_response_ok())
567 if (shared_map[&trans].response_in_progress && !shared_map[&trans].ok_response)
571 tlm2error(trans, "14.7");
582 tlm2error(trans, "15.2.3 c)");
586 if (m_map[&trans].ph != tlm::BEGIN_REQ)
590 tlm2error(trans, "15.2.4");
597 if (m_map[&trans].ph != tlm::BEGIN_REQ && m_map[&trans].ph != tlm::END_REQ)
601 tlm2error(trans, "15.2.4");
604 if (&trans == m_request_in_progress)
611 tlm2error(trans, "15.2.6 f)");
613 m_response_in_progress = &trans;
615 check_response_path(trans, txt4);
620 m_map[&trans].ph = phase;
622 if (sc_core::sc_time_stamp() + delay < m_map[&trans].time)
626 << ", sc_time_stamp() + delay from previous call = " << m_map[&trans].time;
627 tlm2error(trans, "15.2.7 c)");
629 m_map[&trans].time = sc_core::sc_time_stamp() + delay;
635 tlm::tlm_generic_payload& trans, const char* txt2 )
644 if ( trans.has_mm() && trans.get_ref_count() > 1 && shared_map[&trans].path.empty() )
647 << trans.get_ref_count();
648 tlm2error(trans, "14.5 t)", true);
650 if (trans.get_data_ptr() == 0 && trans.get_command() != tlm::TLM_IGNORE_COMMAND)
653 tlm2error(trans, "14.11 e)");
655 if (trans.get_data_length() == 0 && trans.get_command() != tlm::TLM_IGNORE_COMMAND)
658 tlm2error(trans, "14.12 d)");
660 if (trans.get_byte_enable_ptr() != 0 && trans.get_byte_enable_length() == 0)
664 tlm2error(trans, "14.14 f)");
666 if (trans.get_streaming_width() == 0)
669 tlm2error(trans, "14.15 f)");
671 if (trans.is_dmi_allowed())
674 tlm2error(trans, "14.16");
676 if (trans.get_response_status() != tlm::TLM_INCOMPLETE_RESPONSE)
679 tlm2error(trans, "14.17 e)");
681 if (trans.get_gp_option() != tlm::TLM_MIN_PAYLOAD)
684 tlm2error(trans, "14.8 g)");
688 tlm::tlm_generic_payload* gp = m_map[&trans].gp;
696 gp->set_data_ptr( new uchar_t[trans.get_data_length()] );
697 m_map[&trans].data_ptr = trans.get_data_ptr();
701 if (trans.get_byte_enable_ptr())
702 gp->set_byte_enable_ptr( new uchar_t[trans.get_byte_enable_length()] );
705 m_map[&trans].byte_enable_ptr = trans.get_byte_enable_ptr();
707 gp->deep_copy_from(trans);
708 m_map[&trans].gp = gp;
709 m_map[&trans].time = sc_core::SC_ZERO_TIME;
710 m_map[&trans].has_mm = trans.has_mm();
713 if (shared_map[&trans].resp_data_ptr)
715 delete [] shared_map[&trans].resp_data_ptr;
716 shared_map[&trans].resp_data_ptr = 0;
718 if (shared_map[&trans].response_in_progress)
721 tlm2error(trans, "14.5 x)");
723 shared_map[&trans].ok_response = false;
724 shared_map[&trans].path.push_back(this);
730 tlm::tlm_generic_payload& trans)
733 tlm::tlm_generic_payload* gp = m_map[&trans].gp;
736 gp->set_gp_option( trans.get_gp_option() );
737 m_map[&trans].gp = gp;
743 tlm::tlm_generic_payload& trans, const char* txt2 )
745 tlm::tlm_generic_payload* init = m_map[&trans].gp;
747 if (trans.get_command() != init->get_command())
750 tlm2error(trans, "14.7");
752 if (trans.get_data_ptr() != m_map[&trans].data_ptr)
755 tlm2error(trans, "14.7");
757 if (trans.get_data_length() != init->get_data_length())
760 tlm2error(trans, "14.7");
762 if (trans.get_command() == tlm::TLM_WRITE_COMMAND)
764 if (trans.get_data_ptr()[i] != init->get_data_ptr()[i])
767 tlm2error(trans, "14.7");
769 if (trans.get_byte_enable_ptr() != m_map[&trans].byte_enable_ptr)
772 tlm2error(trans, "14.7");
774 if (trans.get_byte_enable_length() != init->get_byte_enable_length())
777 tlm2error(trans, "14.7");
779 if (trans.get_byte_enable_ptr())
781 if (trans.get_byte_enable_ptr()[i] != init->get_byte_enable_ptr()[i])
784 tlm2error(trans, "14.7");
786 if (trans.get_streaming_width() != init->get_streaming_width())
789 tlm2error(trans, "14.7");
791 if (init->get_gp_option() == tlm::TLM_MIN_PAYLOAD && trans.get_gp_option() != tlm::TLM_MIN_PAYLOAD)
794 tlm2error(trans, "14.8 g)");
796 if ( !m_map[&trans].has_mm )
798 if (trans.has_mm())
801 tlm2error(trans, "14.5 aa)");
807 if (trans.get_extension(i))
808 if ( !m_map[&trans].gp->get_extension(i) )
811 tlm2error(trans, "14.5 aa)");
815 uchar_t* resp_data_ptr = shared_map[&trans].resp_data_ptr;
817 for (unsigned int i = 0; i < trans.get_data_length(); i++)
818 if (trans.get_data_ptr()[i] != resp_data_ptr[i])
821 tlm2error(trans, "14.7");
828 tlm::tlm_generic_payload& trans, const char* txt2 )
830 if ( !shared_map[&trans].path.empty() )
832 if ( this != shared_map[&trans].path.back() )
836 deque_t path = shared_map[&trans].path;
840 tlm2error(trans, "15.2.11 a)");
842 shared_map[&trans].path.pop_back();
843 shared_map[&trans].response_in_progress = !shared_map[&trans].path.empty();
844 shared_map[&trans].ok_response = trans.is_response_ok();
847 if ( !shared_map[&trans].resp_data_ptr )
849 shared_map[&trans].resp_data_ptr = new uchar_t[trans.get_data_length()];
850 memcpy(shared_map[&trans].resp_data_ptr, trans.get_data_ptr(), trans.get_data_length());
858 tlm::tlm_generic_payload& trans, tlm::tlm_dmi& dmi_data )
860 remember_gp_option(trans);
865 tlm2error(trans, "11.2.5 f)");
870 tlm2error(trans, "11.2.5 a)");
875 tlm2error(trans, "11.2.5 u)");
880 tlm2error(trans, "11.2.5 u)");
885 tlm2error(trans, "11.2.5 ac)");
890 tlm2error(trans, "11.2.5 ac)");
893 if (trans.get_gp_option() == tlm::TLM_FULL_PAYLOAD)
896 if (trans.is_dmi_allowed()) // Would be rather brutal to flag dmi_allowed as an arror for a DMI transaction!
899 tlm2error(trans, "14.8 e) & 14.16");
902 if (trans.get_response_status() != tlm::TLM_INCOMPLETE_RESPONSE)
905 tlm2error(trans, "14.8 e) & 14.17 e)");
908 else if (trans.get_gp_option() == tlm::TLM_FULL_PAYLOAD_ACCEPTED)
911 tlm2error(trans, "14.8 c) & e) & j)");
917 get_direct_mem_ptr_post_checks( tlm::tlm_generic_payload& trans, tlm::tlm_dmi& dmi_data )
919 tlm::tlm_generic_payload* init = m_map[&trans].gp;
921 if (init->get_gp_option() == tlm::TLM_MIN_PAYLOAD && trans.get_gp_option() != tlm::TLM_MIN_PAYLOAD)
924 tlm2error(trans, "14.8 h)");
926 else if (init->get_gp_option() == tlm::TLM_FULL_PAYLOAD && trans.get_gp_option() == tlm::TLM_MIN_PAYLOAD)
929 tlm2error(trans, "14.8 j)");
935 transport_dbg_pre_checks( tlm::tlm_generic_payload& trans )
937 remember_gp_option(trans);
939 if (trans.get_data_length() > 0 && trans.get_data_ptr() == 0)
942 tlm2error(trans, "11.3.4 l)");
945 if (trans.get_gp_option() == tlm::TLM_FULL_PAYLOAD)
947 if (trans.get_byte_enable_ptr() != 0 && trans.get_byte_enable_length() == 0)
951 tlm2error(trans, "14.8 f) & 14.14 f)");
953 if (trans.get_streaming_width() == 0)
956 tlm2error(trans, "14.8 f) & 14.15 f)");
958 if (trans.is_dmi_allowed())
961 tlm2error(trans, "14.8 f) & 14.16");
963 if (trans.get_response_status() != tlm::TLM_INCOMPLETE_RESPONSE)
966 tlm2error(trans, "14.8 f) & 14.17 e)");
969 else if (trans.get_gp_option() == tlm::TLM_FULL_PAYLOAD_ACCEPTED)
972 tlm2error(trans, "14.8 c) & f) & l)");
977 transport_dbg_post_checks( tlm::tlm_generic_payload& trans, unsigned int count )
979 tlm::tlm_generic_payload* init = m_map[&trans].gp;
981 if (trans.get_data_length() > 0 && trans.get_data_ptr() == 0)
984 tlm2error(trans, "11.3.4 l)");
986 if (count > trans.get_data_length())
989 tlm2error(trans, "11.3.4 s)");
992 if (init->get_gp_option() == tlm::TLM_MIN_PAYLOAD && trans.get_gp_option() != tlm::TLM_MIN_PAYLOAD)
995 tlm2error(trans, "14.8 h)");
997 else if (init->get_gp_option() == tlm::TLM_FULL_PAYLOAD && trans.get_gp_option() == tlm::TLM_MIN_PAYLOAD)
1000 tlm2error(trans, "14.8 l)");
1005 tlm2error( tlm::tlm_generic_payload& trans, const char* ref, bool warning )
1010 txt << "\n has_mm = " << dec << trans.has_mm() << " (bool)";
1011 txt << "\n ref_count = " << dec << trans.get_ref_count() << " (int)";
1013 (trans.get_gp_option() == tlm::TLM_MIN_PAYLOAD ? "TLM_MIN_PAYLOAD"
1014 :trans.get_gp_option() == tlm::TLM_FULL_PAYLOAD ? "TLM_FULL_PAYLOAD"
1017 (trans.get_command() == tlm::TLM_READ_COMMAND ? "TLM_READ_COMMAND"
1018 :trans.get_command() == tlm::TLM_WRITE_COMMAND ? "TLM_WRITE_COMMAND"
1020 txt << "\n address = " << hex << trans.get_address() << " (hex)";
1022 << reinterpret_cast<int*>(trans.get_data_ptr()) << " (hex)";
1023 txt << "\n data_length = " << hex << trans.get_data_length() << " (hex)";
1024 txt << "\n streaming_width = " << hex << trans.get_streaming_width() << " (hex)";
1026 << reinterpret_cast<int*>(trans.get_byte_enable_ptr()) << " (hex)";
1027 txt << "\n byte_enable_length = " << hex << trans.get_byte_enable_length() << " (hex)";
1028 txt << "\n dmi_allowed = " << dec << trans.is_dmi_allowed() << " (bool)";
1029 txt << "\n response_status = " << trans.get_response_string();
1034 tlm::tlm_extension_base* ext = trans.get_extension(i);