Vengineerの戯言

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

ovm_env::run_testタスクおよびrun_testタスクの実装(OVM 1.1の場合)

Verification Engineerの戯言

OVM 1.1では、ovm_rootクラスが導入されたことによりovm_envクラスの実装がシンプルになりました。
ovm_env:run_testタスクは、ovm_rootクラスrun_testタスクを呼ぶようになりました。
    task ovm_env::run_test(string name="");
      ovm_top.run_test(name);
    endtask

ovm_topインスタンスは、src/base/ovm_root.svhファイルで次のようにovm_rootクラスインスタンスとして定義しています。
(ovm_topインスタンスは、どのクラスにも属さないトップ階層になります。)
    `const ovm_root ovm_top = ovm_root::get();

従って、ovm_env::run_testタスクは次のovm_root::run_testタスクを呼ぶことになります。
ovm_root:run_testタスクの内容は、OVM 1.0/1.0.1のovm_env::run_testタスクと基本的に同じです(詳細は、コードを見てください)。

グローバルなrun_testタスクovm_rootクラスを使うように変更されました。
    task run_test (string test_name="");
      ovm_root top;
      top = ovm_root::get();
      top.run_test(test_name);
    endtask

OVM 1.0/1.0.1とOVM 1.1では、ovm_env::run_testタスクおよびrun_testタスクの実装は違っていますが、
APIは同じであるのでユーザからみると同じになり、互換性を保つことができています。

検証、Verification、SystemVerilog、OVM、Open Verification Methodology