Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

SimpleBus (その7)

Verification Engineerの戯言

SimpleLTInitiator3(_DMI)クラスでは、nb_transportメソッドを使わないモデルです。
では、どのようにしてnb_transportメソッドの代わりを行うのでしょう!
runメソッドtlm::TLM_ACCEPTEDtlm::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)を
定義することで対応しています。