次のように、コマンドラインオーバーライドをovm_sequenceオブジェクトに適用したいと思います。
+ovm_set_config_int=*,max_timeout,100000
max_timeout
フィールドはovm_sequence_utils
マクロ内で宣言されます。
それを行う方法はありますか?私の理解では、ovmシーケンスはovm階層の一部ではないため、コマンドラインから変更できない可能性があります。
次のように、コマンドラインオーバーライドをovm_sequenceオブジェクトに適用したいと思います。
+ovm_set_config_int=*,max_timeout,100000
max_timeout
フィールドはovm_sequence_utils
マクロ内で宣言されます。
それを行う方法はありますか?私の理解では、ovmシーケンスはovm階層の一部ではないため、コマンドラインから変更できない可能性があります。
コマンドラインからそのような設定スペースを設定できるメカニズムを私は知りません。OVMソースの簡単なgrepでも、何も表示されません。
の簡単なコメント
ovmシーケンスはovm階層の一部ではありません
それらはビルド時に構築されません、それは正しいです。これらはシーケンサーでの実行を開始する直前に作成されますが、ovm_objectベースのクラスはget_config_int()を介して構成整数を問い合わせることができます。
通常、このような場合はplus-argを使用し、そのplus-argに基づいて基本テストクラスのconfigintを設定します。たとえば、コマンドラインには次のようになります。
+max_timeout=100000
...そして、私のすべてのテストが継承する基本テストクラスで:
function void build();
int timeout;
[....]
if ($value$plusargs("max_timeout=%d", timeout)) begin
`ovm_info(get_type_name(), "Setting timeout", OVM_MEDIUM);
set_config_int("*", "max_timeout", timeout");
end
[....]
endfunction
通常、私の使用法はそれほど文字通りではなく、複数の値を設定するフラグがありますが、それが基本です。
私はそれを動作させました(http://www.testbench.in/OT_10_OVM_SEQUENCE_5.htmlからの指示に従って):以下を私のovm_sequenceに追加しますtask body()
:
if(!(p_sequencer.get_config_int("max_timeout",max_timeout)))
max_timeout = ... // some default value
ここで重要なのは、シーケンサーのコマンドライン構成を設定する必要があり、シーケンスは上記のコードを使用してその構成を取得できることです。