Verification Engineerの戯言
SimpleLTInitiator3(_DMI)クラスでは、nb_transportメソッドを使わないモデルです。
では、どのようにしてnb_transportメソッドの代わりを行うのでしょう!
runメソッドのtlm::TLM_ACCEPTEDとtlm::TLM_UPDATEDのところでmEndEventのイベント待ちの部分を
socket.getEndEvendに置き換えていることで対応しています。
socketはSimpleInitiatorSocketクラスのインスタンスです。
SimpleInitiatorSocketクラスのgetEndEventメソッドは、次のようになっています。
SimpleLTInitiator1(_DMI)と同じ働きをすることになります。
では、どのようにしてnb_transportメソッドの代わりを行うのでしょう!
runメソッドのtlm::TLM_ACCEPTEDとtlm::TLM_UPDATEDのところでmEndEventのイベント待ちの部分を
socket.getEndEvendに置き換えていることで対応しています。
socketはSimpleInitiatorSocketクラスのインスタンスです。
SimpleInitiatorSocketクラスのgetEndEventメソッドは、次のようになっています。
sc_core::sc_event& getEndEvent() { return mEndEvent; }mEndEventは、ターゲット側からの応答(BEGIN_RESP)が来たときにnotifyされるので、
SimpleLTInitiator1(_DMI)と同じ働きをすることになります。
ちょっと複雑ですが、SimpleInitiatorSocketクラスのコードを見れば、そんな感じになっています。
ここでは説明しませんが、SimpleInitiatorSocketクラスでは内部にローカルなクラス(Process)を
定義することで対応しています。
ここでは説明しませんが、SimpleInitiatorSocketクラスでは内部にローカルなクラス(Process)を
定義することで対応しています。