Vengineerの妄想

人生を妄想しています。

VMM : vmm_tlm_analysis_portクラス

Verification Engineerの戯言 : SystemVerilogの世界へようこそ

vmm_tlm_analysis_portクラスは、オブザーバークラス(スコアボードやカバレッジ)へのトランザクションをブロードキャストする場合に使います。

vmm_tlm_analysis_portクラスの定義は、次のようになります。
vmm_tlm_analysis_portクラスは、2つのパラメータ(INITIATORDATA)を持ちます。
    class vmm_tlm_analysis_port#(type INITIATOR = vmm_tlm_xactor,
                                   type DATA = vmm_data)
                                   extends vmm_tlm_analysis_port_base#(DATA);

vmm_tlm_analysis_portクラスは、次のようにトランザクタクラスの中でインスタンス化します。
    class tlm_consumer extends vmm_xactor;
      
      vmm_tlm_analysis_port#(tlm_consumer, my_trans) analysis_port = new(this,"consumer_analysis");

      function b_transport(int id=-1,my_trans trans, ref int delay);
        this.analysis_port.write(trans);
      endfunction
    endclass
この例では、INITIATORをデフォルトのvmm_tlm_xactorクラスからtlm_comsumerクラスに変えています。
また、DATAをデフォルトのvmm_dataクラスからmy_transクラスに変えています。
b_transport関数の中で、write関数にてトランザクションデータ(trans)をブロードキャストしています。

b_transport関数は、VMM : b_transportで説明しました。

vmm_tlm_analysis_portクラスは、vmm_tlm_b_transport_portクラスと同じようにtlm_bindtlm_unbindが使えます。

検証、Verification、SystemVerilog、VMM、Verification Methodology Manual