Verification Engineerの戯言
TLM 2.0 draft #2では、blocking transport interfaceとnon-blocking transport interfaceがあります。
blocking transport interfaceは、ユーザーマニュアルのPage.13に次のように定義されています。
blocking transport interfaceでは、ブロッキングされるので、引数に時間を指定していません。
non-blocking transport interfaceでは、第3引数のsc_timeのリファレンス型の引数が必要になります。
blocking transport interfaceは、ユーザーマニュアルのPage.13に次のように定義されています。
namespace tlm { template <typename TRANS = tlm_generic_payload> class tlm_blocking_transport_if : public virtual sc_core::sc_interface { public: virtual void b_transport(TRANS& trans) = 0; }; } // namespace tlm一方、non-blocking transport interfaceは、ユーザーマニュアルのPage.15に次のように定義されています。
namespace tlm { enum tlm_phase { BEGIN_REQ, END_REQ, BEGIN_RESP, END_RESP }; enum tlm_sync_enum { TLM_REJECTED = 0, TLM_ACCEPTED = 1, TLM_UPDATED = 2, TLM_COMPLETED = 3 }; template <typename TRANS = tlm_generic_payload, typename PHASE = tlm_phase> class tlm_nonblocking_transport_if : public virtual sc_core::sc_interface { public: virtual tlm_sync_enum nb_transport(TRANS& trans, PHASE& phase, sc_core::sc_time& t) = 0; }; } // namespace tlmTRANS、PHASEは、templateになっていますので、ユーザ定義できます。
blocking transport interfaceでは、ブロッキングされるので、引数に時間を指定していません。
non-blocking transport interfaceでは、第3引数のsc_timeのリファレンス型の引数が必要になります。