1

次のように、コマンドラインオーバーライドをovm_sequenceオブジェクトに適用したいと思います。

+ovm_set_config_int=*,max_timeout,100000

max_timeoutフィールドはovm_sequence_utilsマクロ内で宣言されます。

それを行う方法はありますか?私の理解では、ovmシーケンスはovm階層の一部ではないため、コマンドラインから変更できない可能性があります。

4

2 に答える 2

2

コマンドラインからそのような設定スペースを設定できるメカニズムを私は知りません。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

通常、私の使用法はそれほど文字通りではなく、複数の値を設定するフラグがありますが、それが基本です。

于 2012-03-13T11:04:44.197 に答える
2

私はそれを動作させました(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

ここで重要なのは、シーケンサーのコマンドライン構成を設定する必要があり、シーケンスは上記のコードを使用してその構成を取得できることです。

于 2012-03-13T15:57:02.110 に答える