Vengineerの戯言

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

URM:BFM, Driver, Monitor Class

Verification Engineerの戯言

Agent Classには、BFM, Driver, Monitor Classのインスタンスを持ちます。

  ・BFM     Classは、urm_unit  クラスを継承する
  ・Driver  Classは、urm_driverクラスを継承する
  ・Monitor Classは、うううう、わからない(urm_monitorのようだだ)

BFM Classでは、runタスクを定義するようだ。


    task XXX_bfm:run();
      fork
        get_and_drive();
        monitor_readack();
        reset_signals();
      join
    endtask : run

で、3つのタスクが平行動作する。その中でもget_and_driveタスクがメインになり、
次のようになっています。

    task XXX_bfm::get_and_drive();
      // リセット待ち

      forever begin
        driver.get_next_item(item);           // ここでDriverらのデータを受け取る
        $cast( this_master_deb_txn, item );   // データを型変換する
        do_transaction( this_master_deb_txn );// BFMによるトランザクション実行
        driver.item_done_trigger();           // Driverへ終了トリガを伝える 
      end

    endtask : get_and_drive

たぶん、this_master_deb_txnはurm_sequence_itemクラスの子クラスのインスタンスなので、
$castを使ったデータの型変換ができるわけです。

$castは、子クラスのインスタンスへの型変換に使います