Verification Engineerの戯言
OVM 1.1では、ovm_rootクラスが導入されたことによりovm_envクラスの実装がシンプルになりました。
ovm_env:run_testタスクは、ovm_rootクラスのrun_testタスクを呼ぶようになりました。
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インスタンスは、どのクラスにも属さないトップ階層になります。)
(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タスクと基本的に同じです(詳細は、コードを見てください)。
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は同じであるのでユーザからみると同じになり、互換性を保つことができています。
APIは同じであるのでユーザからみると同じになり、互換性を保つことができています。
検証、Verification、SystemVerilog、OVM、Open Verification Methodology